@ecodev/natural 64.0.0 → 64.0.2
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/fesm2022/ecodev-natural-vanilla.mjs.map +1 -1
- package/fesm2022/ecodev-natural.mjs +355 -570
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/index.d.ts +61 -129
- package/package.json +4 -4
|
@@ -1,82 +1,61 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Component, Injectable, DestroyRef, HostListener, HostBinding, Directive, InjectionToken, ElementRef, viewChild, ViewEncapsulation, Injector, Input, input, PLATFORM_ID, signal, computed, effect, output, Pipe, DOCUMENT, LOCALE_ID, provideAppInitializer, contentChild, TemplateRef, EnvironmentInjector, createEnvironmentInjector, createComponent, Inject, runInInjectionContext, ChangeDetectionStrategy, linkedSignal, ErrorHandler, importProvidersFrom } from '@angular/core';
|
|
3
|
-
import * as i1$
|
|
3
|
+
import * as i1$1 from '@angular/forms';
|
|
4
4
|
import { FormGroup, FormArray, Validators, UntypedFormGroup, UntypedFormArray, FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl, NgControl, FormControlDirective, FormControlName } from '@angular/forms';
|
|
5
5
|
import { NavigationStart, NavigationEnd, ActivatedRoute, Router, RouteConfigLoadStart, RouteConfigLoadEnd, PRIMARY_OUTLET, RouterLink, NavigationError, DefaultUrlSerializer, UrlTree } from '@angular/router';
|
|
6
6
|
import { pickBy, cloneDeepWith, cloneDeep, uniq, groupBy, omit, isEqual, kebabCase, merge, clone, pick as pick$1, intersection, flatten, differenceWith } from 'es-toolkit';
|
|
7
7
|
import * as i1 from '@angular/material/dialog';
|
|
8
8
|
import { MAT_DIALOG_DATA, MatDialogModule, MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
9
9
|
import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
|
|
10
|
-
import
|
|
11
|
-
import { MatButtonModule, MatButton, MatIconButton } from '@angular/material/button';
|
|
10
|
+
import { MatButton, MatIconButton, MatFabButton } from '@angular/material/button';
|
|
12
11
|
import { Observable, switchMap, take, BehaviorSubject, of, timer, tap, endWith, last, EMPTY, finalize, Subject, merge as merge$1, first as first$1, takeUntil as takeUntil$1, map as map$1, ReplaySubject, debounceTime, raceWith, mergeMap, shareReplay, catchError, forkJoin, combineLatest, from, filter as filter$1, startWith as startWith$1, asyncScheduler, throwError } from 'rxjs';
|
|
13
12
|
import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
|
|
14
13
|
import { filter, switchMap as switchMap$1, first, map, 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
14
|
import { mergeWith, defaultsDeep, pick, defaults, isEmpty, isEqual as isEqual$1 } from 'es-toolkit/compat';
|
|
16
|
-
import
|
|
17
|
-
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
15
|
+
import { MatTableDataSource, MatTable, MatHeaderCellDef, MatHeaderRowDef, MatColumnDef, MatCellDef, MatRowDef, MatHeaderCell, MatCell, MatHeaderRow, MatRow } from '@angular/material/table';
|
|
18
16
|
import { DataSource, SelectionModel } from '@angular/cdk/collections';
|
|
19
|
-
import
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import * as i1$1 from '@angular/cdk/portal';
|
|
23
|
-
import { BasePortalOutlet, CdkPortalOutlet, PortalModule, ComponentPortal } from '@angular/cdk/portal';
|
|
17
|
+
import { DateAdapter, MAT_DATE_FORMATS, MatOption, NativeDateAdapter, ErrorStateMatcher, MatRipple } from '@angular/material/core';
|
|
18
|
+
import { createOverlayRef, OverlayConfig, createFlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';
|
|
19
|
+
import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';
|
|
24
20
|
import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
|
|
25
|
-
import
|
|
26
|
-
import {
|
|
27
|
-
import
|
|
28
|
-
import {
|
|
29
|
-
import
|
|
30
|
-
import { MatInputModule } from '@angular/material/input';
|
|
31
|
-
import * as i3 from '@angular/material/select';
|
|
32
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
33
|
-
import * as i1$3 from '@angular/material/form-field';
|
|
34
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
21
|
+
import { MatCheckbox } from '@angular/material/checkbox';
|
|
22
|
+
import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';
|
|
23
|
+
import { MatInput } from '@angular/material/input';
|
|
24
|
+
import { MatSelect } from '@angular/material/select';
|
|
25
|
+
import { MatFormField, MatLabel, MatError, MatSuffix, MatHint, MatPrefix } from '@angular/material/form-field';
|
|
35
26
|
import { ApolloLink, NetworkStatus } from '@apollo/client/core';
|
|
36
27
|
import extractFiles from 'extract-files/extractFiles.mjs';
|
|
37
28
|
import isExtractableFile from 'extract-files/isExtractableFile.mjs';
|
|
38
29
|
import { Kind, OperationTypeNode } from 'graphql/language';
|
|
39
|
-
import
|
|
40
|
-
import { isPlatformBrowser, CommonModule, DatePipe } from '@angular/common';
|
|
30
|
+
import { isPlatformBrowser, AsyncPipe, NgTemplateOutlet, NgClass, UpperCasePipe, DatePipe, NgStyle } from '@angular/common';
|
|
41
31
|
import { Apollo, gql } from 'apollo-angular';
|
|
42
32
|
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
|
43
|
-
import
|
|
44
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
45
|
-
import * as i2$1 from '@angular/material/icon';
|
|
46
|
-
import { MatIconRegistry, MatIcon, MatIconModule } from '@angular/material/icon';
|
|
33
|
+
import { MatIconRegistry, MatIcon } from '@angular/material/icon';
|
|
47
34
|
import { DomSanitizer, Title, Meta } from '@angular/platform-browser';
|
|
48
|
-
import
|
|
49
|
-
import {
|
|
35
|
+
import { MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
|
|
36
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
50
37
|
import { MatTabGroup } from '@angular/material/tabs';
|
|
51
|
-
import
|
|
52
|
-
import {
|
|
53
|
-
import * as i1$5 from '@angular/material/autocomplete';
|
|
54
|
-
import { MatAutocompleteTrigger, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
38
|
+
import { MatSelectionList, MatListOption, MatNavList, MatListItem } from '@angular/material/list';
|
|
39
|
+
import { MatAutocompleteTrigger, MatAutocomplete } from '@angular/material/autocomplete';
|
|
55
40
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
56
|
-
import
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import
|
|
60
|
-
import {
|
|
61
|
-
import
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import * as i2$3 from '@angular/material/button-toggle';
|
|
65
|
-
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
66
|
-
import * as i6$2 from '@angular/material/paginator';
|
|
67
|
-
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
68
|
-
import * as i1$6 from '@angular/material/sidenav';
|
|
69
|
-
import { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
|
|
41
|
+
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
42
|
+
import { MatChipAvatar, MatChipListbox, MatChipOption, MatChipRemove } from '@angular/material/chips';
|
|
43
|
+
import { MatRadioButton } from '@angular/material/radio';
|
|
44
|
+
import { MatTreeNestedDataSource, MatNestedTreeNode, MatTreeNodeDef, MatTreeNodePadding, MatTreeNodeToggle, MatTree, MatTreeNodeOutlet } from '@angular/material/tree';
|
|
45
|
+
import { MatDivider } from '@angular/material/divider';
|
|
46
|
+
import { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';
|
|
47
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
48
|
+
import { MatSidenav, MatSidenavContainer, MatSidenavContent } from '@angular/material/sidenav';
|
|
70
49
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
71
50
|
|
|
72
51
|
class NaturalConfirmComponent {
|
|
73
52
|
data = inject(MAT_DIALOG_DATA);
|
|
74
53
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", 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-button [mat-dialog-close]=\"false\">{{ data.cancelText }}</button>\n <button mat-stroked-button cdkFocusInitial [mat-dialog-close]=\"true\">{{ 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: "
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", 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-button [mat-dialog-close]=\"false\">{{ data.cancelText }}</button>\n <button mat-stroked-button cdkFocusInitial [mat-dialog-close]=\"true\">{{ 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: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
|
|
76
55
|
}
|
|
77
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalConfirmComponent, decorators: [{
|
|
78
57
|
type: Component,
|
|
79
|
-
args: [{ imports: [MatDialogModule,
|
|
58
|
+
args: [{ imports: [MatDialogModule, MatButton], 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-button [mat-dialog-close]=\"false\">{{ data.cancelText }}</button>\n <button mat-stroked-button cdkFocusInitial [mat-dialog-close]=\"true\">{{ data.confirmText }}</button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-content{max-width:40em}\n"] }]
|
|
80
59
|
}] });
|
|
81
60
|
|
|
82
61
|
class NaturalAlertService {
|
|
@@ -186,8 +165,7 @@ class NaturalAbstractPanel {
|
|
|
186
165
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: NaturalAbstractPanel, isStandalone: true, host: { listeners: { "click": "clickPanel()" }, properties: { "class.isFrontPanel": "this.isFrontPanel", "class.isPanel": "this.isPanel" } }, ngImport: i0 });
|
|
187
166
|
}
|
|
188
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalAbstractPanel, decorators: [{
|
|
189
|
-
type: Directive
|
|
190
|
-
args: [{ standalone: true }]
|
|
168
|
+
type: Directive
|
|
191
169
|
}], propDecorators: { isFrontPanel: [{
|
|
192
170
|
type: HostBinding,
|
|
193
171
|
args: ['class.isFrontPanel']
|
|
@@ -739,7 +717,6 @@ const validTlds = [
|
|
|
739
717
|
'author',
|
|
740
718
|
'auto',
|
|
741
719
|
'autos',
|
|
742
|
-
'avianca',
|
|
743
720
|
'aw',
|
|
744
721
|
'aws',
|
|
745
722
|
'ax',
|
|
@@ -750,7 +727,6 @@ const validTlds = [
|
|
|
750
727
|
'baby',
|
|
751
728
|
'baidu',
|
|
752
729
|
'banamex',
|
|
753
|
-
'bananarepublic',
|
|
754
730
|
'band',
|
|
755
731
|
'bank',
|
|
756
732
|
'bar',
|
|
@@ -867,7 +843,6 @@ const validTlds = [
|
|
|
867
843
|
'cba',
|
|
868
844
|
'cbn',
|
|
869
845
|
'cbre',
|
|
870
|
-
'cbs',
|
|
871
846
|
'cc',
|
|
872
847
|
'cd',
|
|
873
848
|
'center',
|
|
@@ -896,7 +871,6 @@ const validTlds = [
|
|
|
896
871
|
'citi',
|
|
897
872
|
'citic',
|
|
898
873
|
'city',
|
|
899
|
-
'cityeats',
|
|
900
874
|
'ck',
|
|
901
875
|
'cl',
|
|
902
876
|
'claims',
|
|
@@ -917,7 +891,6 @@ const validTlds = [
|
|
|
917
891
|
'college',
|
|
918
892
|
'cologne',
|
|
919
893
|
'com',
|
|
920
|
-
'comcast',
|
|
921
894
|
'commbank',
|
|
922
895
|
'community',
|
|
923
896
|
'company',
|
|
@@ -1035,7 +1008,6 @@ const validTlds = [
|
|
|
1035
1008
|
'esq',
|
|
1036
1009
|
'estate',
|
|
1037
1010
|
'et',
|
|
1038
|
-
'etisalat',
|
|
1039
1011
|
'eu',
|
|
1040
1012
|
'eurovision',
|
|
1041
1013
|
'eus',
|
|
@@ -1098,7 +1070,6 @@ const validTlds = [
|
|
|
1098
1070
|
'fresenius',
|
|
1099
1071
|
'frl',
|
|
1100
1072
|
'frogans',
|
|
1101
|
-
'frontdoor',
|
|
1102
1073
|
'frontier',
|
|
1103
1074
|
'ftr',
|
|
1104
1075
|
'fujitsu',
|
|
@@ -1170,7 +1141,6 @@ const validTlds = [
|
|
|
1170
1141
|
'gs',
|
|
1171
1142
|
'gt',
|
|
1172
1143
|
'gu',
|
|
1173
|
-
'guardian',
|
|
1174
1144
|
'gucci',
|
|
1175
1145
|
'guge',
|
|
1176
1146
|
'guide',
|
|
@@ -1299,7 +1269,6 @@ const validTlds = [
|
|
|
1299
1269
|
'kia',
|
|
1300
1270
|
'kids',
|
|
1301
1271
|
'kim',
|
|
1302
|
-
'kinder',
|
|
1303
1272
|
'kindle',
|
|
1304
1273
|
'kitchen',
|
|
1305
1274
|
'kiwi',
|
|
@@ -1465,7 +1434,6 @@ const validTlds = [
|
|
|
1465
1434
|
'nab',
|
|
1466
1435
|
'nagoya',
|
|
1467
1436
|
'name',
|
|
1468
|
-
'natura',
|
|
1469
1437
|
'navy',
|
|
1470
1438
|
'nba',
|
|
1471
1439
|
'nc',
|
|
@@ -1514,7 +1482,6 @@ const validTlds = [
|
|
|
1514
1482
|
'okinawa',
|
|
1515
1483
|
'olayan',
|
|
1516
1484
|
'olayangroup',
|
|
1517
|
-
'oldnavy',
|
|
1518
1485
|
'ollo',
|
|
1519
1486
|
'om',
|
|
1520
1487
|
'omega',
|
|
@@ -1641,7 +1608,6 @@ const validTlds = [
|
|
|
1641
1608
|
'rio',
|
|
1642
1609
|
'rip',
|
|
1643
1610
|
'ro',
|
|
1644
|
-
'rocher',
|
|
1645
1611
|
'rocks',
|
|
1646
1612
|
'rodeo',
|
|
1647
1613
|
'rogers',
|
|
@@ -1676,7 +1642,6 @@ const validTlds = [
|
|
|
1676
1642
|
'sbi',
|
|
1677
1643
|
'sbs',
|
|
1678
1644
|
'sc',
|
|
1679
|
-
'sca',
|
|
1680
1645
|
'scb',
|
|
1681
1646
|
'schaeffler',
|
|
1682
1647
|
'schmidt',
|
|
@@ -1705,7 +1670,6 @@ const validTlds = [
|
|
|
1705
1670
|
'sh',
|
|
1706
1671
|
'shangrila',
|
|
1707
1672
|
'sharp',
|
|
1708
|
-
'shaw',
|
|
1709
1673
|
'shell',
|
|
1710
1674
|
'shia',
|
|
1711
1675
|
'shiksha',
|
|
@@ -1714,7 +1678,6 @@ const validTlds = [
|
|
|
1714
1678
|
'shopping',
|
|
1715
1679
|
'shouji',
|
|
1716
1680
|
'show',
|
|
1717
|
-
'showtime',
|
|
1718
1681
|
'si',
|
|
1719
1682
|
'silk',
|
|
1720
1683
|
'sina',
|
|
@@ -1895,7 +1858,6 @@ const validTlds = [
|
|
|
1895
1858
|
'vlaanderen',
|
|
1896
1859
|
'vn',
|
|
1897
1860
|
'vodka',
|
|
1898
|
-
'volkswagen',
|
|
1899
1861
|
'volvo',
|
|
1900
1862
|
'vote',
|
|
1901
1863
|
'voting',
|
|
@@ -1939,7 +1901,6 @@ const validTlds = [
|
|
|
1939
1901
|
'wtf',
|
|
1940
1902
|
'xbox',
|
|
1941
1903
|
'xerox',
|
|
1942
|
-
'xfinity',
|
|
1943
1904
|
'xihuan',
|
|
1944
1905
|
'xin',
|
|
1945
1906
|
'कॉम',
|
|
@@ -2030,7 +1991,6 @@ const validTlds = [
|
|
|
2030
1991
|
'ارامكو',
|
|
2031
1992
|
'ایران',
|
|
2032
1993
|
'العليان',
|
|
2033
|
-
'اتصالات',
|
|
2034
1994
|
'امارات',
|
|
2035
1995
|
'بازار',
|
|
2036
1996
|
'موريتانيا',
|
|
@@ -2182,13 +2142,8 @@ function collectErrors(control) {
|
|
|
2182
2142
|
* touched and are invalid.
|
|
2183
2143
|
*/
|
|
2184
2144
|
function validateAllFormControls(control) {
|
|
2185
|
-
control.
|
|
2186
|
-
control.
|
|
2187
|
-
if (control instanceof FormGroup || control instanceof FormArray) {
|
|
2188
|
-
for (const [, child] of Object.entries(control.controls)) {
|
|
2189
|
-
validateAllFormControls(child);
|
|
2190
|
-
}
|
|
2191
|
-
}
|
|
2145
|
+
control.markAllAsDirty();
|
|
2146
|
+
control.markAllAsTouched();
|
|
2192
2147
|
}
|
|
2193
2148
|
function isValid(status) {
|
|
2194
2149
|
return status === 'VALID';
|
|
@@ -2204,7 +2159,7 @@ function ifValid(control) {
|
|
|
2204
2159
|
const observable = control.pending ? control.statusChanges.pipe(first()) : of(control.status);
|
|
2205
2160
|
return observable.pipe(filter(isValid));
|
|
2206
2161
|
}
|
|
2207
|
-
// This is
|
|
2162
|
+
// This is an approximation of RFC_5322 where the hostname:
|
|
2208
2163
|
//
|
|
2209
2164
|
// - is too strict because it rejects IP address
|
|
2210
2165
|
// - is too lax because it accepts pretty much anything else
|
|
@@ -2565,8 +2520,7 @@ class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
2565
2520
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: NaturalAbstractDetail, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
2566
2521
|
}
|
|
2567
2522
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalAbstractDetail, decorators: [{
|
|
2568
|
-
type: Directive
|
|
2569
|
-
args: [{ standalone: true }]
|
|
2523
|
+
type: Directive
|
|
2570
2524
|
}], ctorParameters: () => [{ type: undefined }, { type: undefined }] });
|
|
2571
2525
|
|
|
2572
2526
|
/**
|
|
@@ -2659,8 +2613,7 @@ class NaturalAbstractEditableList {
|
|
|
2659
2613
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: NaturalAbstractEditableList, isStandalone: true, ngImport: i0 });
|
|
2660
2614
|
}
|
|
2661
2615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalAbstractEditableList, decorators: [{
|
|
2662
|
-
type: Directive
|
|
2663
|
-
args: [{ standalone: true }]
|
|
2616
|
+
type: Directive
|
|
2664
2617
|
}], ctorParameters: () => [{ type: undefined }] });
|
|
2665
2618
|
|
|
2666
2619
|
/**
|
|
@@ -2894,11 +2847,11 @@ class NaturalDropdownContainerComponent extends BasePortalOutlet {
|
|
|
2894
2847
|
}
|
|
2895
2848
|
}
|
|
2896
2849
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2897
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalDropdownContainerComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n [class.mat-menu-panel-exit-animation]=\"panelAnimationState === 'void'\"\n (animationend)=\"onAnimationDone($event.animationName)\"\n (animationcancel)=\"onAnimationDone($event.animationName)\"\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 color=\"primary\" mat-raised-button i18n (click)=\"close()\">Valider</button>\n </div>\n }\n</div>\n", styles: ["@keyframes _mat-menu-enter{0%{transform:scale(.8);opacity:0}to{transform:none;opacity:1}}@keyframes _mat-menu-exit{0%{opacity:1}to{opacity:0}}.natural-dropdown-container{display:flex;flex-direction:column;animation:_mat-menu-enter .12s cubic-bezier(0,0,.2,1);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}.natural-dropdown-container.mat-menu-panel-exit-animation{animation:_mat-menu-exit .1s 25ms linear forwards}\n"], dependencies: [{ kind: "
|
|
2850
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalDropdownContainerComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n [class.mat-menu-panel-exit-animation]=\"panelAnimationState === 'void'\"\n (animationend)=\"onAnimationDone($event.animationName)\"\n (animationcancel)=\"onAnimationDone($event.animationName)\"\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 color=\"primary\" mat-raised-button i18n (click)=\"close()\">Valider</button>\n </div>\n }\n</div>\n", styles: ["@keyframes _mat-menu-enter{0%{transform:scale(.8);opacity:0}to{transform:none;opacity:1}}@keyframes _mat-menu-exit{0%{opacity:1}to{opacity:0}}.natural-dropdown-container{display:flex;flex-direction:column;animation:_mat-menu-enter .12s cubic-bezier(0,0,.2,1);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}.natural-dropdown-container.mat-menu-panel-exit-animation{animation:_mat-menu-exit .1s 25ms linear forwards}\n"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
2898
2851
|
}
|
|
2899
2852
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, decorators: [{
|
|
2900
2853
|
type: Component,
|
|
2901
|
-
args: [{ imports: [
|
|
2854
|
+
args: [{ imports: [CdkPortalOutlet, MatButton], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n [class.mat-menu-panel-exit-animation]=\"panelAnimationState === 'void'\"\n (animationend)=\"onAnimationDone($event.animationName)\"\n (animationcancel)=\"onAnimationDone($event.animationName)\"\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 color=\"primary\" mat-raised-button i18n (click)=\"close()\">Valider</button>\n </div>\n }\n</div>\n", styles: ["@keyframes _mat-menu-enter{0%{transform:scale(.8);opacity:0}to{transform:none;opacity:1}}@keyframes _mat-menu-exit{0%{opacity:1}to{opacity:0}}.natural-dropdown-container{display:flex;flex-direction:column;animation:_mat-menu-enter .12s cubic-bezier(0,0,.2,1);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}.natural-dropdown-container.mat-menu-panel-exit-animation{animation:_mat-menu-exit .1s 25ms linear forwards}\n"] }]
|
|
2902
2855
|
}] });
|
|
2903
2856
|
|
|
2904
2857
|
class NaturalDropdownRef {
|
|
@@ -2924,7 +2877,6 @@ class NaturalDropdownRef {
|
|
|
2924
2877
|
|
|
2925
2878
|
const NATURAL_DROPDOWN_DATA = new InjectionToken('NaturalDropdownData');
|
|
2926
2879
|
class NaturalDropdownService {
|
|
2927
|
-
overlay = inject(Overlay);
|
|
2928
2880
|
injector = inject(Injector);
|
|
2929
2881
|
open(component, connectedElement, customProviders, showValidateButton) {
|
|
2930
2882
|
// Container data
|
|
@@ -2939,7 +2891,7 @@ class NaturalDropdownService {
|
|
|
2939
2891
|
];
|
|
2940
2892
|
const containerInjector = Injector.create({ providers: injectionTokens, parent: this.injector });
|
|
2941
2893
|
// Container
|
|
2942
|
-
const overlayRef = this.
|
|
2894
|
+
const overlayRef = createOverlayRef(this.injector, this.getOverlayConfig(connectedElement));
|
|
2943
2895
|
const containerPortal = new ComponentPortal(NaturalDropdownContainerComponent, undefined, containerInjector);
|
|
2944
2896
|
const containerRef = overlayRef.attach(containerPortal);
|
|
2945
2897
|
const dropdownContainer = containerRef.instance;
|
|
@@ -2977,9 +2929,7 @@ class NaturalDropdownService {
|
|
|
2977
2929
|
});
|
|
2978
2930
|
}
|
|
2979
2931
|
getPosition(element) {
|
|
2980
|
-
return this.
|
|
2981
|
-
.position()
|
|
2982
|
-
.flexibleConnectedTo(element)
|
|
2932
|
+
return createFlexibleConnectedPositionStrategy(this.injector, element)
|
|
2983
2933
|
.withFlexibleDimensions(true)
|
|
2984
2934
|
.withViewportMargin(30)
|
|
2985
2935
|
.withPush(false)
|
|
@@ -3215,19 +3165,24 @@ class TypeDateComponent {
|
|
|
3215
3165
|
}
|
|
3216
3166
|
}
|
|
3217
3167
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3218
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 matInput\n [formControl]=\"valueCtrl\"\n [matDatepicker]=\"value\"\n [max]=\"configuration.max\"\n [min]=\"configuration.min\"\n [required]=\"true\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"value\" />\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 i18n [formControl]=\"todayCtrl\">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$
|
|
3168
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 matInput\n [formControl]=\"valueCtrl\"\n [matDatepicker]=\"value\"\n [max]=\"configuration.max\"\n [min]=\"configuration.min\"\n [required]=\"true\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"value\" />\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 i18n [formControl]=\"todayCtrl\">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$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.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$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] });
|
|
3219
3169
|
}
|
|
3220
3170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeDateComponent, decorators: [{
|
|
3221
3171
|
type: Component,
|
|
3222
3172
|
args: [{ imports: [
|
|
3223
3173
|
FormsModule,
|
|
3224
3174
|
ReactiveFormsModule,
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3175
|
+
MatFormField,
|
|
3176
|
+
MatLabel,
|
|
3177
|
+
MatError,
|
|
3178
|
+
MatSuffix,
|
|
3179
|
+
MatSelect,
|
|
3180
|
+
MatOption,
|
|
3181
|
+
MatInput,
|
|
3182
|
+
MatDatepicker,
|
|
3183
|
+
MatDatepickerInput,
|
|
3184
|
+
MatDatepickerToggle,
|
|
3185
|
+
MatCheckbox,
|
|
3231
3186
|
], template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 matInput\n [formControl]=\"valueCtrl\"\n [matDatepicker]=\"value\"\n [max]=\"configuration.max\"\n [min]=\"configuration.min\"\n [required]=\"true\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"value\" />\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 i18n [formControl]=\"todayCtrl\">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"] }]
|
|
3232
3187
|
}], ctorParameters: () => [] });
|
|
3233
3188
|
|
|
@@ -4103,8 +4058,7 @@ class NaturalAbstractList extends NaturalAbstractPanel {
|
|
|
4103
4058
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: NaturalAbstractList, isStandalone: true, inputs: { persistSearch: "persistSearch", availableColumns: "availableColumns", selectedColumns: "selectedColumns", forcedVariables: "forcedVariables" }, usesInheritance: true, ngImport: i0 });
|
|
4104
4059
|
}
|
|
4105
4060
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalAbstractList, decorators: [{
|
|
4106
|
-
type: Directive
|
|
4107
|
-
args: [{ standalone: true }]
|
|
4061
|
+
type: Directive
|
|
4108
4062
|
}], ctorParameters: () => [{ type: undefined }], propDecorators: { persistSearch: [{
|
|
4109
4063
|
type: Input
|
|
4110
4064
|
}], availableColumns: [{
|
|
@@ -4236,8 +4190,7 @@ class NaturalAbstractNavigableList extends NaturalAbstractList {
|
|
|
4236
4190
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.0", type: NaturalAbstractNavigableList, isStandalone: true, inputs: { ancestorRelationName: { classPropertyName: "ancestorRelationName", publicName: "ancestorRelationName", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
4237
4191
|
}
|
|
4238
4192
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalAbstractNavigableList, decorators: [{
|
|
4239
|
-
type: Directive
|
|
4240
|
-
args: [{ standalone: true }]
|
|
4193
|
+
type: Directive
|
|
4241
4194
|
}], ctorParameters: () => [{ type: undefined }] });
|
|
4242
4195
|
|
|
4243
4196
|
/**
|
|
@@ -5425,7 +5378,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5425
5378
|
type: Directive,
|
|
5426
5379
|
args: [{
|
|
5427
5380
|
selector: 'mat-icon[naturalIcon]',
|
|
5428
|
-
standalone: true,
|
|
5429
5381
|
host: {
|
|
5430
5382
|
'[style.font-size.px]': 'size()',
|
|
5431
5383
|
'[style.min-height.px]': 'size()',
|
|
@@ -5536,20 +5488,23 @@ class NaturalColumnsPickerComponent {
|
|
|
5536
5488
|
}
|
|
5537
5489
|
}
|
|
5538
5490
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalColumnsPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5539
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalColumnsPickerComponent, isStandalone: true, selector: "natural-columns-picker", inputs: { buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null }, availableColumns: { classPropertyName: "availableColumns", publicName: "availableColumns", isSignal: false, isRequired: false, transformFunction: null }, selections: { classPropertyName: "selections", publicName: "selections", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/cyclomatic-complexity -->\n<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 (defaultTrue(button.show)) {\n @if (button.href) {\n <a\n mat-menu-item\n [href]=\"button.href\"\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </a>\n } @else if (button.buttons) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subMenu\"\n [ngClass]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\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 } @else {\n <button\n mat-menu-item\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n }\n }\n }\n\n @if (displayedColumns.length) {\n <button mat-menu-item [matMenuTriggerFor]=\"columnMenu\" [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 (defaultTrue(button.show)) {\n @if (button.href) {\n <a\n mat-icon-button\n [href]=\"button.href\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </a>\n } @else if (button.buttons) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\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 } @else {\n <button\n mat-icon-button\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n }\n }\n }\n\n @if (displayedColumns.length) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner les colonnes\"\n [matMenuTriggerFor]=\"columnMenu\"\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 mat-menu-item (click)=\"menuItemClicked($event, column)\">\n <mat-checkbox\n [(ngModel)]=\"column.checked\"\n (click)=\"checkboxClicked($event, column)\"\n (change)=\"updateColumns()\"\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: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: i2$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: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "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"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] });
|
|
5491
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalColumnsPickerComponent, isStandalone: true, selector: "natural-columns-picker", inputs: { buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null }, availableColumns: { classPropertyName: "availableColumns", publicName: "availableColumns", isSignal: false, isRequired: false, transformFunction: null }, selections: { classPropertyName: "selections", publicName: "selections", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/cyclomatic-complexity -->\n<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 (defaultTrue(button.show)) {\n @if (button.href) {\n <a\n mat-menu-item\n [href]=\"button.href\"\n [disabled]=\"button.disabled\"\n [class]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </a>\n } @else if (button.buttons) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subMenu\"\n [class]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\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 } @else {\n <button\n mat-menu-item\n [disabled]=\"button.disabled\"\n [class]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n }\n }\n }\n\n @if (displayedColumns.length) {\n <button mat-menu-item [matMenuTriggerFor]=\"columnMenu\" [class]=\"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 (defaultTrue(button.show)) {\n @if (button.href) {\n <a\n mat-icon-button\n [href]=\"button.href\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </a>\n } @else if (button.buttons) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\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 } @else {\n <button\n mat-icon-button\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n }\n }\n }\n\n @if (displayedColumns.length) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner les colonnes\"\n [matMenuTriggerFor]=\"columnMenu\"\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 mat-menu-item (click)=\"menuItemClicked($event, column)\">\n <mat-checkbox\n [(ngModel)]=\"column.checked\"\n (click)=\"checkboxClicked($event, column)\"\n (change)=\"updateColumns()\"\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: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
5540
5492
|
}
|
|
5541
5493
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalColumnsPickerComponent, decorators: [{
|
|
5542
5494
|
type: Component,
|
|
5543
5495
|
args: [{ selector: 'natural-columns-picker', imports: [
|
|
5544
|
-
|
|
5545
|
-
MatButtonModule,
|
|
5546
|
-
MatMenuModule,
|
|
5547
|
-
MatIconModule,
|
|
5548
|
-
NaturalIconDirective,
|
|
5549
|
-
MatCheckboxModule,
|
|
5550
|
-
MatTooltipModule,
|
|
5496
|
+
AsyncPipe,
|
|
5551
5497
|
FormsModule,
|
|
5552
|
-
|
|
5498
|
+
MatCheckbox,
|
|
5499
|
+
MatIcon,
|
|
5500
|
+
MatIconButton,
|
|
5501
|
+
MatMenu,
|
|
5502
|
+
MatMenuContent,
|
|
5503
|
+
MatMenuItem,
|
|
5504
|
+
MatMenuTrigger,
|
|
5505
|
+
MatTooltip,
|
|
5506
|
+
NaturalIconDirective,
|
|
5507
|
+
], template: "<!-- eslint-disable @angular-eslint/template/cyclomatic-complexity -->\n<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 (defaultTrue(button.show)) {\n @if (button.href) {\n <a\n mat-menu-item\n [href]=\"button.href\"\n [disabled]=\"button.disabled\"\n [class]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </a>\n } @else if (button.buttons) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subMenu\"\n [class]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\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 } @else {\n <button\n mat-menu-item\n [disabled]=\"button.disabled\"\n [class]=\"needMargin(button)\"\n (click)=\"button.click?.(button, $event)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n }\n }\n }\n\n @if (displayedColumns.length) {\n <button mat-menu-item [matMenuTriggerFor]=\"columnMenu\" [class]=\"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 (defaultTrue(button.show)) {\n @if (button.href) {\n <a\n mat-icon-button\n [href]=\"button.href\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </a>\n } @else if (button.buttons) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\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 } @else {\n <button\n mat-icon-button\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n (click)=\"button.click?.(button, $event)\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n }\n }\n }\n\n @if (displayedColumns.length) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner les colonnes\"\n [matMenuTriggerFor]=\"columnMenu\"\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 mat-menu-item (click)=\"menuItemClicked($event, column)\">\n <mat-checkbox\n [(ngModel)]=\"column.checked\"\n (click)=\"checkboxClicked($event, column)\"\n (change)=\"updateColumns()\"\n >{{ column.label }}</mat-checkbox\n >\n </div>\n }\n </ng-template>\n</mat-menu>\n", styles: [".align-with-checkbox{padding-left:61px}\n"] }]
|
|
5553
5508
|
}], propDecorators: { availableColumns: [{
|
|
5554
5509
|
type: Input
|
|
5555
5510
|
}], selections: [{
|
|
@@ -5641,7 +5596,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5641
5596
|
type: Directive,
|
|
5642
5597
|
args: [{
|
|
5643
5598
|
selector: 'mat-tab-group[naturalLinkableTab]',
|
|
5644
|
-
standalone: true,
|
|
5645
5599
|
}]
|
|
5646
5600
|
}], ctorParameters: () => [] });
|
|
5647
5601
|
|
|
@@ -5662,7 +5616,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5662
5616
|
type: Pipe,
|
|
5663
5617
|
args: [{
|
|
5664
5618
|
name: 'capitalize',
|
|
5665
|
-
standalone: true,
|
|
5666
5619
|
}]
|
|
5667
5620
|
}] });
|
|
5668
5621
|
|
|
@@ -5677,7 +5630,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5677
5630
|
type: Pipe,
|
|
5678
5631
|
args: [{
|
|
5679
5632
|
name: 'ellipsis',
|
|
5680
|
-
standalone: true,
|
|
5681
5633
|
}]
|
|
5682
5634
|
}] });
|
|
5683
5635
|
|
|
@@ -5698,7 +5650,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5698
5650
|
type: Pipe,
|
|
5699
5651
|
args: [{
|
|
5700
5652
|
name: 'enum',
|
|
5701
|
-
standalone: true,
|
|
5702
5653
|
}]
|
|
5703
5654
|
}] });
|
|
5704
5655
|
|
|
@@ -5828,7 +5779,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5828
5779
|
type: Pipe,
|
|
5829
5780
|
args: [{
|
|
5830
5781
|
name: 'timeAgo',
|
|
5831
|
-
standalone: true,
|
|
5832
5782
|
}]
|
|
5833
5783
|
}] });
|
|
5834
5784
|
|
|
@@ -5899,7 +5849,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5899
5849
|
type: Directive,
|
|
5900
5850
|
args: [{
|
|
5901
5851
|
selector: 'img[naturalSrcDensity]',
|
|
5902
|
-
standalone: true,
|
|
5903
5852
|
}]
|
|
5904
5853
|
}], ctorParameters: () => [] });
|
|
5905
5854
|
|
|
@@ -5960,7 +5909,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
5960
5909
|
type: Directive,
|
|
5961
5910
|
args: [{
|
|
5962
5911
|
selector: '[naturalBackgroundDensity]',
|
|
5963
|
-
standalone: true,
|
|
5964
5912
|
}]
|
|
5965
5913
|
}], ctorParameters: () => [] });
|
|
5966
5914
|
|
|
@@ -6027,7 +5975,6 @@ class NaturalDialogTriggerComponent {
|
|
|
6027
5975
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalDialogTriggerComponent, decorators: [{
|
|
6028
5976
|
type: Component,
|
|
6029
5977
|
args: [{
|
|
6030
|
-
standalone: true,
|
|
6031
5978
|
template: '',
|
|
6032
5979
|
}]
|
|
6033
5980
|
}], ctorParameters: () => [] });
|
|
@@ -6326,11 +6273,11 @@ class NaturalDetailHeaderComponent {
|
|
|
6326
6273
|
return this.getRootLink().concat([id]);
|
|
6327
6274
|
}
|
|
6328
6275
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalDetailHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6329
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalDetailHeaderComponent, isStandalone: true, selector: "natural-detail-header", inputs: { currentBaseUrl: { classPropertyName: "currentBaseUrl", publicName: "currentBaseUrl", isSignal: true, isRequired: false, transformFunction: null }, isPanel: { classPropertyName: "isPanel", publicName: "isPanel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, rootLabel: { classPropertyName: "rootLabel", publicName: "rootLabel", isSignal: false, isRequired: false, transformFunction: null }, newLabel: { classPropertyName: "newLabel", publicName: "newLabel", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: false, isRequired: true, transformFunction: null }, breadcrumbs: { classPropertyName: "breadcrumbs", publicName: "breadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, listRoute: { classPropertyName: "listRoute", publicName: "listRoute", isSignal: true, isRequired: false, transformFunction: null }, listFragment: { classPropertyName: "listFragment", publicName: "listFragment", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a color=\"primary\" mat-button [routerLink]=\"isPanel() ? [] : getRootLink()\" [fragment]=\"listFragment()\">{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs(); track parent.id) {\n /\n <a color=\"primary\" mat-button [routerLink]=\"isPanel() ? [] : getLink(parent.id)\">\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: "
|
|
6276
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalDetailHeaderComponent, isStandalone: true, selector: "natural-detail-header", inputs: { currentBaseUrl: { classPropertyName: "currentBaseUrl", publicName: "currentBaseUrl", isSignal: true, isRequired: false, transformFunction: null }, isPanel: { classPropertyName: "isPanel", publicName: "isPanel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, rootLabel: { classPropertyName: "rootLabel", publicName: "rootLabel", isSignal: false, isRequired: false, transformFunction: null }, newLabel: { classPropertyName: "newLabel", publicName: "newLabel", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: false, isRequired: true, transformFunction: null }, breadcrumbs: { classPropertyName: "breadcrumbs", publicName: "breadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, listRoute: { classPropertyName: "listRoute", publicName: "listRoute", isSignal: true, isRequired: false, transformFunction: null }, listFragment: { classPropertyName: "listFragment", publicName: "listFragment", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a color=\"primary\" mat-button [routerLink]=\"isPanel() ? [] : getRootLink()\" [fragment]=\"listFragment()\">{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs(); track parent.id) {\n /\n <a color=\"primary\" mat-button [routerLink]=\"isPanel() ? [] : getLink(parent.id)\">\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: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }] });
|
|
6330
6277
|
}
|
|
6331
6278
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalDetailHeaderComponent, decorators: [{
|
|
6332
6279
|
type: Component,
|
|
6333
|
-
args: [{ selector: 'natural-detail-header', imports: [
|
|
6280
|
+
args: [{ selector: 'natural-detail-header', imports: [MatButton, RouterLink, MatIcon, NaturalIconDirective], template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a color=\"primary\" mat-button [routerLink]=\"isPanel() ? [] : getRootLink()\" [fragment]=\"listFragment()\">{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs(); track parent.id) {\n /\n <a color=\"primary\" mat-button [routerLink]=\"isPanel() ? [] : getLink(parent.id)\">\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"] }]
|
|
6334
6281
|
}], propDecorators: { icon: [{
|
|
6335
6282
|
type: Input
|
|
6336
6283
|
}], label: [{
|
|
@@ -6495,11 +6442,20 @@ class TypeSelectComponent {
|
|
|
6495
6442
|
}
|
|
6496
6443
|
}
|
|
6497
6444
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6498
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: TypeSelectComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "list", first: true, predicate: MatSelectionList, descendants: true, isSignal: 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 togglePosition=\"before\" [value]=\"getId(item)\">\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$
|
|
6445
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: TypeSelectComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "list", first: true, predicate: MatSelectionList, descendants: true, isSignal: 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 togglePosition=\"before\" [value]=\"getId(item)\">\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$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.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$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] });
|
|
6499
6446
|
}
|
|
6500
6447
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeSelectComponent, decorators: [{
|
|
6501
6448
|
type: Component,
|
|
6502
|
-
args: [{ imports: [
|
|
6449
|
+
args: [{ imports: [
|
|
6450
|
+
FormsModule,
|
|
6451
|
+
ReactiveFormsModule,
|
|
6452
|
+
MatFormField,
|
|
6453
|
+
MatLabel,
|
|
6454
|
+
MatSelect,
|
|
6455
|
+
MatOption,
|
|
6456
|
+
MatSelectionList,
|
|
6457
|
+
MatListOption,
|
|
6458
|
+
], 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 togglePosition=\"before\" [value]=\"getId(item)\">\n {{ getDisplay(item) }}\n </mat-list-option>\n }\n </mat-selection-list>\n }\n</form>\n" }]
|
|
6503
6459
|
}], ctorParameters: () => [] });
|
|
6504
6460
|
|
|
6505
6461
|
class AbstractAssociationSelectComponent {
|
|
@@ -6589,8 +6545,7 @@ class AbstractAssociationSelectComponent {
|
|
|
6589
6545
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: AbstractAssociationSelectComponent, isStandalone: true, ngImport: i0 });
|
|
6590
6546
|
}
|
|
6591
6547
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AbstractAssociationSelectComponent, decorators: [{
|
|
6592
|
-
type: Directive
|
|
6593
|
-
args: [{ standalone: true }]
|
|
6548
|
+
type: Directive
|
|
6594
6549
|
}], ctorParameters: () => [] });
|
|
6595
6550
|
|
|
6596
6551
|
/**
|
|
@@ -6794,8 +6749,7 @@ class AbstractSelect {
|
|
|
6794
6749
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.0", type: AbstractSelect, isStandalone: true, inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, navigateTo: { classPropertyName: "navigateTo", publicName: "navigateTo", isSignal: false, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", blur: "blur" }, ngImport: i0 });
|
|
6795
6750
|
}
|
|
6796
6751
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AbstractSelect, decorators: [{
|
|
6797
|
-
type: Directive
|
|
6798
|
-
args: [{ standalone: true }]
|
|
6752
|
+
type: Directive
|
|
6799
6753
|
}], ctorParameters: () => [], propDecorators: { error: [{
|
|
6800
6754
|
type: Input
|
|
6801
6755
|
}], required: [{
|
|
@@ -7050,24 +7004,32 @@ class NaturalSelectComponent extends AbstractSelect {
|
|
|
7050
7004
|
return this.variablesManager.variables.value;
|
|
7051
7005
|
}
|
|
7052
7006
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
7053
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSelectComponent, isStandalone: true, selector: "natural-select", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: true, isRequired: true, transformFunction: null }, optionRequired: { classPropertyName: "optionRequired", publicName: "optionRequired", isSignal: true, isRequired: false, transformFunction: null }, searchField: { classPropertyName: "searchField", publicName: "searchField", isSignal: false, isRequired: false, transformFunction: null }, searchOperator: { classPropertyName: "searchOperator", publicName: "searchOperator", isSignal: false, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: false, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "autoTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/cyclomatic-complexity -->\n<!-- Autocomplete menu -->\n<mat-autocomplete\n #ac=\"matAutocomplete\"\n panelWidth=\"auto !important\"\n [displayWith]=\"getDisplayFn()\"\n (optionSelected)=\"propagateValue($event.option.value)\"\n>\n @for (item of items | async; track $index) {\n <mat-option [value]=\"item\">\n @let customTemplate = itemTemplate();\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"customTemplate ? customTemplate : 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 [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n\n <input\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [formControl]=\"internalCtrl\"\n [matAutocomplete]=\"ac\"\n [errorStateMatcher]=\"matcher\"\n (blur)=\"onBlur()\"\n (change)=\"onInternalFormChange()\"\n (click)=\"autoTrigger().openPanel()\"\n (focus)=\"startSearch()\"\n (keydown.esc)=\"reset()\"\n (keydown.enter)=\"onKeyEnter()\"\n />\n\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <!-- Meta data -->\n @if (!loading && showIcon()) {\n <mat-icon matIconPrefix [naturalIcon]=\"icon()\" />\n }\n\n @if (loading) {\n <div class=\"loading-wrapper\" matIconPrefix>\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"21\" [strokeWidth]=\"5\" />\n </div>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.pristine && internalCtrl.value && internalCtrl.enabled && !clearLabel()) {\n <button mat-icon-button i18n-matTooltip matTooltip=\"D\u00E9s\u00E9lectionner\" (click)=\"clear()\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.dirty && internalCtrl.enabled && optionRequired()) {\n <button mat-icon-button i18n-matTooltip matTooltip=\"Annuler la recherche\" (click)=\"reset()\">\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n @if (internalCtrl.pristine && internalCtrl.value && navigateTo) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\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 } @else if (error) {\n <mat-error>{{ error }}</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 color=\"warn\" mat-button (click)=\"clear()\">{{ 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: i3.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: "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: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], 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: i2$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[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] });
|
|
7007
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSelectComponent, isStandalone: true, selector: "natural-select", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: true, isRequired: true, transformFunction: null }, optionRequired: { classPropertyName: "optionRequired", publicName: "optionRequired", isSignal: true, isRequired: false, transformFunction: null }, searchField: { classPropertyName: "searchField", publicName: "searchField", isSignal: false, isRequired: false, transformFunction: null }, searchOperator: { classPropertyName: "searchOperator", publicName: "searchOperator", isSignal: false, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: false, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "autoTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/cyclomatic-complexity -->\n<!-- Autocomplete menu -->\n<mat-autocomplete\n #ac=\"matAutocomplete\"\n panelWidth=\"auto !important\"\n [displayWith]=\"getDisplayFn()\"\n (optionSelected)=\"propagateValue($event.option.value)\"\n>\n @for (item of items | async; track $index) {\n <mat-option [value]=\"item\">\n @let customTemplate = itemTemplate();\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"customTemplate ? customTemplate : 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 [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n\n <input\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [formControl]=\"internalCtrl\"\n [matAutocomplete]=\"ac\"\n [errorStateMatcher]=\"matcher\"\n (blur)=\"onBlur()\"\n (change)=\"onInternalFormChange()\"\n (click)=\"autoTrigger().openPanel()\"\n (focus)=\"startSearch()\"\n (keydown.esc)=\"reset()\"\n (keydown.enter)=\"onKeyEnter()\"\n />\n\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <!-- Meta data -->\n @if (!loading && showIcon()) {\n <mat-icon matIconPrefix [naturalIcon]=\"icon()\" />\n }\n\n @if (loading) {\n <div class=\"loading-wrapper\" matIconPrefix>\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"21\" [strokeWidth]=\"5\" />\n </div>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.pristine && internalCtrl.value && internalCtrl.enabled && !clearLabel()) {\n <button mat-icon-button i18n-matTooltip matTooltip=\"D\u00E9s\u00E9lectionner\" (click)=\"clear()\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.dirty && internalCtrl.enabled && optionRequired()) {\n <button mat-icon-button i18n-matTooltip matTooltip=\"Annuler la recherche\" (click)=\"reset()\">\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n @if (internalCtrl.pristine && internalCtrl.value && navigateTo) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\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 } @else if (error) {\n <mat-error>{{ error }}</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 color=\"warn\" mat-button (click)=\"clear()\">{{ 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: "component", type: 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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: 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"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
7054
7008
|
}
|
|
7055
7009
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSelectComponent, decorators: [{
|
|
7056
7010
|
type: Component,
|
|
7057
7011
|
args: [{ selector: 'natural-select', imports: [
|
|
7058
|
-
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7012
|
+
MatAutocomplete,
|
|
7013
|
+
NgTemplateOutlet,
|
|
7014
|
+
AsyncPipe,
|
|
7015
|
+
MatOption,
|
|
7016
|
+
MatFormField,
|
|
7017
|
+
MatLabel,
|
|
7018
|
+
MatError,
|
|
7019
|
+
MatHint,
|
|
7020
|
+
MatPrefix,
|
|
7021
|
+
MatSuffix,
|
|
7022
|
+
MatInput,
|
|
7063
7023
|
FormsModule,
|
|
7064
7024
|
ReactiveFormsModule,
|
|
7065
|
-
|
|
7025
|
+
MatIcon,
|
|
7066
7026
|
NaturalIconDirective,
|
|
7067
|
-
|
|
7068
|
-
|
|
7069
|
-
|
|
7027
|
+
MatProgressSpinner,
|
|
7028
|
+
MatButton,
|
|
7029
|
+
MatIconButton,
|
|
7030
|
+
MatTooltip,
|
|
7070
7031
|
RouterLink,
|
|
7032
|
+
MatAutocompleteTrigger,
|
|
7071
7033
|
], template: "<!-- eslint-disable @angular-eslint/template/cyclomatic-complexity -->\n<!-- Autocomplete menu -->\n<mat-autocomplete\n #ac=\"matAutocomplete\"\n panelWidth=\"auto !important\"\n [displayWith]=\"getDisplayFn()\"\n (optionSelected)=\"propagateValue($event.option.value)\"\n>\n @for (item of items | async; track $index) {\n <mat-option [value]=\"item\">\n @let customTemplate = itemTemplate();\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"customTemplate ? customTemplate : 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 [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n\n <input\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [formControl]=\"internalCtrl\"\n [matAutocomplete]=\"ac\"\n [errorStateMatcher]=\"matcher\"\n (blur)=\"onBlur()\"\n (change)=\"onInternalFormChange()\"\n (click)=\"autoTrigger().openPanel()\"\n (focus)=\"startSearch()\"\n (keydown.esc)=\"reset()\"\n (keydown.enter)=\"onKeyEnter()\"\n />\n\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <!-- Meta data -->\n @if (!loading && showIcon()) {\n <mat-icon matIconPrefix [naturalIcon]=\"icon()\" />\n }\n\n @if (loading) {\n <div class=\"loading-wrapper\" matIconPrefix>\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"21\" [strokeWidth]=\"5\" />\n </div>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.pristine && internalCtrl.value && internalCtrl.enabled && !clearLabel()) {\n <button mat-icon-button i18n-matTooltip matTooltip=\"D\u00E9s\u00E9lectionner\" (click)=\"clear()\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.dirty && internalCtrl.enabled && optionRequired()) {\n <button mat-icon-button i18n-matTooltip matTooltip=\"Annuler la recherche\" (click)=\"reset()\">\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n @if (internalCtrl.pristine && internalCtrl.value && navigateTo) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\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 } @else if (error) {\n <mat-error>{{ error }}</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 color=\"warn\" mat-button (click)=\"clear()\">{{ 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"] }]
|
|
7072
7034
|
}], propDecorators: { searchField: [{
|
|
7073
7035
|
type: Input
|
|
@@ -7100,18 +7062,11 @@ class TypeNaturalSelectComponent extends AbstractAssociationSelectComponent {
|
|
|
7100
7062
|
return selectedName;
|
|
7101
7063
|
}
|
|
7102
7064
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeNaturalSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
7103
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 [pageSize]=\"configuration.pageSize || 10\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$
|
|
7065
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 [pageSize]=\"configuration.pageSize || 10\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.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$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: NaturalSelectComponent, selector: "natural-select", inputs: ["service", "optionRequired", "searchField", "searchOperator", "filter", "pageSize", "disabled"] }] });
|
|
7104
7066
|
}
|
|
7105
7067
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeNaturalSelectComponent, decorators: [{
|
|
7106
7068
|
type: Component,
|
|
7107
|
-
args: [{ imports: [
|
|
7108
|
-
FormsModule,
|
|
7109
|
-
ReactiveFormsModule,
|
|
7110
|
-
MatFormFieldModule,
|
|
7111
|
-
MatSelectModule,
|
|
7112
|
-
MatOptionModule,
|
|
7113
|
-
NaturalSelectComponent,
|
|
7114
|
-
], 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 [pageSize]=\"configuration.pageSize || 10\"\n />\n }\n</form>\n" }]
|
|
7069
|
+
args: [{ imports: [FormsModule, ReactiveFormsModule, MatFormField, MatLabel, MatSelect, MatOption, NaturalSelectComponent], 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 [pageSize]=\"configuration.pageSize || 10\"\n />\n }\n</form>\n" }]
|
|
7115
7070
|
}] });
|
|
7116
7071
|
|
|
7117
7072
|
/**
|
|
@@ -7158,11 +7113,11 @@ class TypeTextComponent {
|
|
|
7158
7113
|
}
|
|
7159
7114
|
}
|
|
7160
7115
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7161
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: TypeTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n matInput\n type=\"text\"\n autocomplete=\"off\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n (keydown.enter)=\"close()\"\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: "
|
|
7116
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: TypeTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n matInput\n type=\"text\"\n autocomplete=\"off\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n (keydown.enter)=\"close()\"\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: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.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$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
7162
7117
|
}
|
|
7163
7118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeTextComponent, decorators: [{
|
|
7164
7119
|
type: Component,
|
|
7165
|
-
args: [{ imports: [
|
|
7120
|
+
args: [{ imports: [MatFormField, MatLabel, MatError, MatInput, FormsModule, ReactiveFormsModule], template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n matInput\n type=\"text\"\n autocomplete=\"off\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n (keydown.enter)=\"close()\"\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"] }]
|
|
7166
7121
|
}], ctorParameters: () => [] });
|
|
7167
7122
|
|
|
7168
7123
|
class TypeNumberComponent {
|
|
@@ -7250,11 +7205,11 @@ class TypeNumberComponent {
|
|
|
7250
7205
|
}
|
|
7251
7206
|
}
|
|
7252
7207
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7253
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 matInput\n type=\"number\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"valueCtrl\"\n [attr.max]=\"configuration.max\"\n [attr.min]=\"configuration.min\"\n [required]=\"true\"\n [step]=\"configuration.step\"\n (keydown.enter)=\"close()\"\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$
|
|
7208
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 matInput\n type=\"number\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"valueCtrl\"\n [attr.max]=\"configuration.max\"\n [attr.min]=\"configuration.min\"\n [required]=\"true\"\n [step]=\"configuration.step\"\n (keydown.enter)=\"close()\"\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$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.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$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }] });
|
|
7254
7209
|
}
|
|
7255
7210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeNumberComponent, decorators: [{
|
|
7256
7211
|
type: Component,
|
|
7257
|
-
args: [{ imports: [FormsModule, ReactiveFormsModule,
|
|
7212
|
+
args: [{ imports: [FormsModule, ReactiveFormsModule, MatFormField, MatLabel, MatError, MatSelect, MatOption, MatInput], 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 matInput\n type=\"number\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"valueCtrl\"\n [attr.max]=\"configuration.max\"\n [attr.min]=\"configuration.min\"\n [required]=\"true\"\n [step]=\"configuration.step\"\n (keydown.enter)=\"close()\"\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"] }]
|
|
7258
7213
|
}], ctorParameters: () => [] });
|
|
7259
7214
|
|
|
7260
7215
|
class FacetSelectorComponent {
|
|
@@ -7288,11 +7243,11 @@ class FacetSelectorComponent {
|
|
|
7288
7243
|
return true;
|
|
7289
7244
|
}
|
|
7290
7245
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: FacetSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7291
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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: "
|
|
7246
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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: "component", type: MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }] });
|
|
7292
7247
|
}
|
|
7293
7248
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: FacetSelectorComponent, decorators: [{
|
|
7294
7249
|
type: Component,
|
|
7295
|
-
args: [{ imports: [
|
|
7250
|
+
args: [{ imports: [MatNavList, MatListItem], 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"] }]
|
|
7296
7251
|
}] });
|
|
7297
7252
|
|
|
7298
7253
|
// Required to check invalid fields when initializing natural-search
|
|
@@ -7603,19 +7558,22 @@ class NaturalInputComponent {
|
|
|
7603
7558
|
return selection;
|
|
7604
7559
|
}
|
|
7605
7560
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7606
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalInputComponent, isStandalone: true, selector: "natural-input", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, searchFieldName: { classPropertyName: "searchFieldName", publicName: "searchFieldName", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: false, isRequired: false, transformFunction: null }, facets: { classPropertyName: "facets", publicName: "facets", isSignal: true, isRequired: true, transformFunction: null }, dropdownTitle: { classPropertyName: "dropdownTitle", publicName: "dropdownTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", cleared: "cleared" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "ripple", first: true, predicate: MatRipple, descendants: true, isSignal: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: 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 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 autocomplete=\"off\"\n matInput\n type=\"text\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n />\n\n @if (!facet && !selection) {\n <mat-icon naturalIcon=\"search\" matIconPrefix />\n }\n\n @if (selection) {\n <button mat-icon-button matIconSuffix (click)=\"clear()\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n\n @if (facet && !selection) {\n <button mat-icon-button matIconSuffix (click)=\"clear()\">\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: "
|
|
7561
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalInputComponent, isStandalone: true, selector: "natural-input", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, searchFieldName: { classPropertyName: "searchFieldName", publicName: "searchFieldName", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: false, isRequired: false, transformFunction: null }, facets: { classPropertyName: "facets", publicName: "facets", isSignal: true, isRequired: true, transformFunction: null }, dropdownTitle: { classPropertyName: "dropdownTitle", publicName: "dropdownTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", cleared: "cleared" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "ripple", first: true, predicate: MatRipple, descendants: true, isSignal: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: 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 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 autocomplete=\"off\"\n matInput\n type=\"text\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n />\n\n @if (!facet && !selection) {\n <mat-icon naturalIcon=\"search\" matIconPrefix />\n }\n\n @if (selection) {\n <button mat-icon-button matIconSuffix (click)=\"clear()\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n\n @if (facet && !selection) {\n <button mat-icon-button matIconSuffix (click)=\"clear()\">\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: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }] });
|
|
7607
7562
|
}
|
|
7608
7563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalInputComponent, decorators: [{
|
|
7609
7564
|
type: Component,
|
|
7610
7565
|
args: [{ selector: 'natural-input', imports: [
|
|
7611
|
-
|
|
7612
|
-
|
|
7613
|
-
|
|
7566
|
+
MatFormField,
|
|
7567
|
+
MatLabel,
|
|
7568
|
+
MatPrefix,
|
|
7569
|
+
MatSuffix,
|
|
7570
|
+
MatRipple,
|
|
7571
|
+
MatInput,
|
|
7614
7572
|
FormsModule,
|
|
7615
7573
|
ReactiveFormsModule,
|
|
7616
|
-
|
|
7574
|
+
MatIcon,
|
|
7617
7575
|
NaturalIconDirective,
|
|
7618
|
-
|
|
7576
|
+
MatIconButton,
|
|
7619
7577
|
], template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-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 autocomplete=\"off\"\n matInput\n type=\"text\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n />\n\n @if (!facet && !selection) {\n <mat-icon naturalIcon=\"search\" matIconPrefix />\n }\n\n @if (selection) {\n <button mat-icon-button matIconSuffix (click)=\"clear()\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n\n @if (facet && !selection) {\n <button mat-icon-button matIconSuffix (click)=\"clear()\">\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"] }]
|
|
7620
7578
|
}], propDecorators: { placeholder: [{
|
|
7621
7579
|
type: Input
|
|
@@ -7730,18 +7688,19 @@ class NaturalSearchComponent {
|
|
|
7730
7688
|
this.selectionChange.emit(selections);
|
|
7731
7689
|
}
|
|
7732
7690
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7733
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSearchComponent, isStandalone: true, selector: "natural-search", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, facets: { classPropertyName: "facets", publicName: "facets", isSignal: false, isRequired: false, transformFunction: null }, multipleGroups: { classPropertyName: "multipleGroups", publicName: "multipleGroups", isSignal: true, isRequired: false, transformFunction: null }, dropdownTitle: { classPropertyName: "dropdownTitle", publicName: "dropdownTitle", isSignal: true, isRequired: false, transformFunction: null }, selections: { classPropertyName: "selections", publicName: "selections", isSignal: false, isRequired: false, transformFunction: null } }, 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 [facets]=\"facets\"\n [placeholder]=\"placeholder()\"\n [selections]=\"groupSelections\"\n [dropdownTitle]=\"dropdownTitle()\"\n (selectionChange)=\"updateGroup($event, $index)\"\n />\n <div class=\"endOfRowButton\">\n @if ($count > 1) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Supprimer ce groupe\"\n (click)=\"removeGroup($index)\"\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 mat-icon-button i18n-matTooltip matTooltip=\"Ajouter un groupe logique OU\" (click)=\"addGroup()\">\n <mat-icon naturalIcon=\"add\" />\n </button>\n }\n\n <button\n mat-icon-button\n class=\"clear-button\"\n i18n-matTooltip\n matTooltip=\"Annuler la recherche\"\n (click)=\"clear()\"\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: "
|
|
7691
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSearchComponent, isStandalone: true, selector: "natural-search", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, facets: { classPropertyName: "facets", publicName: "facets", isSignal: false, isRequired: false, transformFunction: null }, multipleGroups: { classPropertyName: "multipleGroups", publicName: "multipleGroups", isSignal: true, isRequired: false, transformFunction: null }, dropdownTitle: { classPropertyName: "dropdownTitle", publicName: "dropdownTitle", isSignal: true, isRequired: false, transformFunction: null }, selections: { classPropertyName: "selections", publicName: "selections", isSignal: false, isRequired: false, transformFunction: null } }, 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 [facets]=\"facets\"\n [placeholder]=\"placeholder()\"\n [selections]=\"groupSelections\"\n [dropdownTitle]=\"dropdownTitle()\"\n (selectionChange)=\"updateGroup($event, $index)\"\n />\n <div class=\"endOfRowButton\">\n @if ($count > 1) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Supprimer ce groupe\"\n (click)=\"removeGroup($index)\"\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 mat-icon-button i18n-matTooltip matTooltip=\"Ajouter un groupe logique OU\" (click)=\"addGroup()\">\n <mat-icon naturalIcon=\"add\" />\n </button>\n }\n\n <button\n mat-icon-button\n class=\"clear-button\"\n i18n-matTooltip\n matTooltip=\"Annuler la recherche\"\n (click)=\"clear()\"\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: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NaturalGroupComponent, selector: "natural-group", inputs: ["dropdownTitle", "placeholder", "facets", "selections"], outputs: ["selectionChange"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
7734
7692
|
}
|
|
7735
7693
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSearchComponent, decorators: [{
|
|
7736
7694
|
type: Component,
|
|
7737
7695
|
args: [{ selector: 'natural-search', imports: [
|
|
7738
|
-
|
|
7696
|
+
NgClass,
|
|
7697
|
+
AsyncPipe,
|
|
7739
7698
|
NaturalGroupComponent,
|
|
7740
|
-
|
|
7741
|
-
|
|
7742
|
-
|
|
7699
|
+
MatIconButton,
|
|
7700
|
+
MatTooltip,
|
|
7701
|
+
MatIcon,
|
|
7743
7702
|
NaturalIconDirective,
|
|
7744
|
-
|
|
7703
|
+
MatDivider,
|
|
7745
7704
|
], 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 [facets]=\"facets\"\n [placeholder]=\"placeholder()\"\n [selections]=\"groupSelections\"\n [dropdownTitle]=\"dropdownTitle()\"\n (selectionChange)=\"updateGroup($event, $index)\"\n />\n <div class=\"endOfRowButton\">\n @if ($count > 1) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Supprimer ce groupe\"\n (click)=\"removeGroup($index)\"\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 mat-icon-button i18n-matTooltip matTooltip=\"Ajouter un groupe logique OU\" (click)=\"addGroup()\">\n <mat-icon naturalIcon=\"add\" />\n </button>\n }\n\n <button\n mat-icon-button\n class=\"clear-button\"\n i18n-matTooltip\n matTooltip=\"Annuler la recherche\"\n (click)=\"clear()\"\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"] }]
|
|
7746
7705
|
}], propDecorators: { facets: [{
|
|
7747
7706
|
type: Input
|
|
@@ -7749,91 +7708,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
7749
7708
|
type: Input
|
|
7750
7709
|
}] } });
|
|
7751
7710
|
|
|
7752
|
-
|
|
7753
|
-
|
|
7754
|
-
|
|
7755
|
-
|
|
7756
|
-
expandable;
|
|
7757
|
-
selectable;
|
|
7758
|
-
deselectable;
|
|
7759
|
-
loading = false;
|
|
7760
|
-
constructor(node, name, level = 0, expandable = false, selectable = true, deselectable = true) {
|
|
7761
|
-
this.node = node;
|
|
7762
|
-
this.name = name;
|
|
7763
|
-
this.level = level;
|
|
7764
|
-
this.expandable = expandable;
|
|
7765
|
-
this.selectable = selectable;
|
|
7766
|
-
this.deselectable = deselectable;
|
|
7767
|
-
}
|
|
7768
|
-
}
|
|
7769
|
-
|
|
7770
|
-
class HierarchicModelNode {
|
|
7711
|
+
/**
|
|
7712
|
+
* Wrapper for the original model from the DB with specific metadata for tree
|
|
7713
|
+
*/
|
|
7714
|
+
class ModelNode {
|
|
7771
7715
|
model;
|
|
7772
7716
|
config;
|
|
7773
7717
|
childrenChange = new BehaviorSubject([]);
|
|
7718
|
+
isLoading = false;
|
|
7719
|
+
isExpandable = false;
|
|
7720
|
+
isSelectable = false;
|
|
7774
7721
|
constructor(model, config) {
|
|
7775
7722
|
this.model = model;
|
|
7776
7723
|
this.config = config;
|
|
7777
7724
|
}
|
|
7778
7725
|
get children() {
|
|
7779
|
-
return this.childrenChange.
|
|
7726
|
+
return this.childrenChange.asObservable();
|
|
7727
|
+
}
|
|
7728
|
+
get hasChildren() {
|
|
7729
|
+
return this.childrenChange.value?.length > 0;
|
|
7780
7730
|
}
|
|
7781
7731
|
}
|
|
7782
7732
|
|
|
7783
7733
|
class NaturalHierarchicSelectorService {
|
|
7784
7734
|
injector = inject(Injector);
|
|
7785
7735
|
/**
|
|
7786
|
-
*
|
|
7787
|
-
* This observable contains Node.
|
|
7788
|
-
* When it's updated, the TreeController and TreeFlattener process the new array to generate the flat tree.
|
|
7789
|
-
*/
|
|
7790
|
-
dataChange = new BehaviorSubject([]);
|
|
7791
|
-
/**
|
|
7792
|
-
* Configuration for relations and selection constraints
|
|
7793
|
-
*
|
|
7794
|
-
* The list should be sorted in the order of the hierarchic (list first parent rules, then child rules)
|
|
7795
|
-
*/
|
|
7796
|
-
configuration = [];
|
|
7797
|
-
/**
|
|
7798
|
-
* Init component by saving the complete configuration, and then retrieving root elements.
|
|
7799
|
-
* Updates **another** observable (this.dataChange) when data is retrieved.
|
|
7800
|
-
*/
|
|
7801
|
-
init(config, contextFilter = null, searchVariables = null) {
|
|
7802
|
-
this.validateConfiguration(config);
|
|
7803
|
-
this.configuration = config;
|
|
7804
|
-
return this.getList(null, contextFilter, searchVariables).pipe(map(data => this.dataChange.next(data)));
|
|
7805
|
-
}
|
|
7806
|
-
/**
|
|
7807
|
-
* Get list of children, considering given FlatNode id as a parent.
|
|
7808
|
-
* Mark loading status individually on nodes.
|
|
7736
|
+
* We use cache because dataSource has nested data and would require recursive search
|
|
7809
7737
|
*/
|
|
7810
|
-
|
|
7811
|
-
|
|
7812
|
-
|
|
7813
|
-
// Prevents a bug where grand children were lost if closing root
|
|
7814
|
-
if (flatNode.node.children.length) {
|
|
7815
|
-
return;
|
|
7816
|
-
}
|
|
7817
|
-
flatNode.loading = true;
|
|
7818
|
-
this.getList(flatNode, contextFilter)
|
|
7819
|
-
.pipe(finalize$1(() => (flatNode.loading = false)))
|
|
7820
|
-
.subscribe(items => {
|
|
7821
|
-
flatNode.node.childrenChange.next(items);
|
|
7822
|
-
this.dataChange.next(this.dataChange.value);
|
|
7823
|
-
});
|
|
7824
|
-
}
|
|
7825
|
-
search(searchVariables, contextFilter = null) {
|
|
7826
|
-
this.getList(null, contextFilter, searchVariables).subscribe(items => {
|
|
7827
|
-
this.dataChange.next(items);
|
|
7828
|
-
});
|
|
7738
|
+
nodeCache = new Map();
|
|
7739
|
+
isTooBig() {
|
|
7740
|
+
return this.nodeCache.size >= 999;
|
|
7829
7741
|
}
|
|
7830
7742
|
/**
|
|
7831
7743
|
* Retrieve elements from the server
|
|
7832
7744
|
* Get root elements if node is null, or child elements if node is given
|
|
7833
7745
|
*/
|
|
7834
|
-
getList(node = null,
|
|
7835
|
-
const
|
|
7836
|
-
const observables =
|
|
7746
|
+
getList(node = null, filters = null, variables = null, configurations) {
|
|
7747
|
+
const configs = this.getContextualizedConfigs(node, filters, variables, configurations);
|
|
7748
|
+
const observables = configs.map(c => c.injectedService.getAll(c.variablesManager));
|
|
7837
7749
|
// Fire queries, and merge results, transforming apollo items into Node Object.
|
|
7838
7750
|
return forkJoin(observables).pipe(map(results => {
|
|
7839
7751
|
const listing = [];
|
|
@@ -7841,29 +7753,34 @@ class NaturalHierarchicSelectorService {
|
|
|
7841
7753
|
for (let i = 0; i < results.length; i++) {
|
|
7842
7754
|
// For each item of the result, convert into Node object
|
|
7843
7755
|
for (const item of results[i].items) {
|
|
7844
|
-
|
|
7756
|
+
const node = this.getOrCreateNode(item, configs[i].configuration);
|
|
7757
|
+
listing.push(node);
|
|
7758
|
+
this.countChildren(node, filters, configurations);
|
|
7759
|
+
const isSelectable = node.config.isSelectableCallback
|
|
7760
|
+
? node.config.isSelectableCallback(node.model)
|
|
7761
|
+
: true;
|
|
7762
|
+
node.isSelectable = !!node.config.selectableAtKey && isSelectable;
|
|
7845
7763
|
}
|
|
7846
7764
|
}
|
|
7847
7765
|
return listing;
|
|
7848
7766
|
}));
|
|
7849
7767
|
}
|
|
7850
|
-
|
|
7851
|
-
const
|
|
7852
|
-
const observables =
|
|
7768
|
+
countChildren(node, filters = null, configurations) {
|
|
7769
|
+
const configs = this.getContextualizedConfigs(node, filters, null, configurations);
|
|
7770
|
+
const observables = configs.map(c => c.injectedService.count(c.variablesManager).pipe(first$1()));
|
|
7853
7771
|
forkJoin(observables).subscribe(results => {
|
|
7854
|
-
|
|
7855
|
-
node.expandable = totalItems > 0;
|
|
7772
|
+
node.isExpandable = results.reduce((total, length) => total + length, 0) > 0;
|
|
7856
7773
|
});
|
|
7857
7774
|
}
|
|
7858
|
-
getContextualizedConfigs(node = null, contextFilters = null, searchVariables = null) {
|
|
7775
|
+
getContextualizedConfigs(node = null, contextFilters = null, searchVariables = null, configurations) {
|
|
7859
7776
|
const configsAndServices = [];
|
|
7860
7777
|
// Considering the whole configuration may cause queries with no/wrong results we have imperatively to avoid !
|
|
7861
|
-
// e.g there are cross dependencies between equipments and taxonomies filters. Both have "parents" and
|
|
7862
|
-
// When clicking on a equipment, the configuration of taxonomies with match "parents"
|
|
7863
|
-
// To fix this, we should only consider configuration after the one
|
|
7864
|
-
// That would mean : no child can affect parent.
|
|
7865
|
-
//
|
|
7866
|
-
const configs = node ? this.getNextConfigs(node.
|
|
7778
|
+
// e.g there are cross dependencies between equipments and taxonomies filters. Both have "parents" and
|
|
7779
|
+
// "taxonomies" filters... When clicking on a equipment, the configuration of taxonomies with match "parents"
|
|
7780
|
+
// filter, but use the id of the equipment To fix this, we should only consider configuration after the one
|
|
7781
|
+
// given by the node passed as argument. That would mean : no child can affect parent. That would mean :
|
|
7782
|
+
// sorting in the configuration have semantic/hierarchy implications
|
|
7783
|
+
const configs = node ? this.getNextConfigs(node.config, configurations) : configurations;
|
|
7867
7784
|
const pagination = { pageIndex: 0, pageSize: 999 };
|
|
7868
7785
|
for (const config of configs) {
|
|
7869
7786
|
const contextFilter = this.getFilterByService(config, contextFilters);
|
|
@@ -7890,8 +7807,8 @@ class NaturalHierarchicSelectorService {
|
|
|
7890
7807
|
* Return models matching given FlatNodes
|
|
7891
7808
|
* Returns a Literal of models grouped by their configuration attribute "selectableAtKey"
|
|
7892
7809
|
*/
|
|
7893
|
-
toOrganizedSelection(nodes) {
|
|
7894
|
-
const selection =
|
|
7810
|
+
toOrganizedSelection(nodes, configurations) {
|
|
7811
|
+
const selection = configurations.reduce((group, config) => {
|
|
7895
7812
|
if (config.selectableAtKey) {
|
|
7896
7813
|
group[config.selectableAtKey] = [];
|
|
7897
7814
|
}
|
|
@@ -7907,16 +7824,16 @@ class NaturalHierarchicSelectorService {
|
|
|
7907
7824
|
/**
|
|
7908
7825
|
* Transforms an OrganizedModelSelection into a list of ModelNodes
|
|
7909
7826
|
*/
|
|
7910
|
-
fromOrganizedSelection(organizedModelSelection) {
|
|
7827
|
+
fromOrganizedSelection(organizedModelSelection, configurations) {
|
|
7911
7828
|
if (!organizedModelSelection) {
|
|
7912
7829
|
return [];
|
|
7913
7830
|
}
|
|
7914
7831
|
const result = [];
|
|
7915
7832
|
for (const selectableAtKey of Object.keys(organizedModelSelection)) {
|
|
7916
|
-
const config = this.getConfigurationBySelectableKey(selectableAtKey);
|
|
7833
|
+
const config = this.getConfigurationBySelectableKey(selectableAtKey, configurations);
|
|
7917
7834
|
if (config) {
|
|
7918
7835
|
for (const model of organizedModelSelection[selectableAtKey]) {
|
|
7919
|
-
result.push(
|
|
7836
|
+
result.push(this.getOrCreateNode(model, config));
|
|
7920
7837
|
}
|
|
7921
7838
|
}
|
|
7922
7839
|
}
|
|
@@ -7933,9 +7850,8 @@ class NaturalHierarchicSelectorService {
|
|
|
7933
7850
|
if (keyIndex === -1 && config.selectableAtKey) {
|
|
7934
7851
|
selectableAtKeyAttributes.push(config.selectableAtKey);
|
|
7935
7852
|
}
|
|
7936
|
-
//
|
|
7937
|
-
//
|
|
7938
|
-
// keys
|
|
7853
|
+
// This behavior maybe dangerous in case we re-open hierarchical selector with the last returned config
|
|
7854
|
+
// having non-unique keys
|
|
7939
7855
|
if (keyIndex < -1) {
|
|
7940
7856
|
console.warn('Invalid hierarchic configuration : selectableAtKey attribute should be unique');
|
|
7941
7857
|
}
|
|
@@ -7945,17 +7861,17 @@ class NaturalHierarchicSelectorService {
|
|
|
7945
7861
|
/**
|
|
7946
7862
|
* Return configurations setup in the list after the given one
|
|
7947
7863
|
*/
|
|
7948
|
-
getNextConfigs(
|
|
7949
|
-
const configIndex =
|
|
7950
|
-
return
|
|
7864
|
+
getNextConfigs(nodeConfig, configurations) {
|
|
7865
|
+
const configIndex = configurations.findIndex(c => c === nodeConfig);
|
|
7866
|
+
return configurations.slice(configIndex);
|
|
7951
7867
|
}
|
|
7952
7868
|
/**
|
|
7953
7869
|
* Builds queryVariables filter for children query
|
|
7954
7870
|
*/
|
|
7955
|
-
getServiceFilter(
|
|
7871
|
+
getServiceFilter(node, config, contextFilter = null, allDeeps = false) {
|
|
7956
7872
|
const fieldCondition = {};
|
|
7957
7873
|
// if no parent, filter empty elements
|
|
7958
|
-
if (!
|
|
7874
|
+
if (!node) {
|
|
7959
7875
|
if (!config.parentsRelationNames) {
|
|
7960
7876
|
return contextFilter ? contextFilter : {};
|
|
7961
7877
|
}
|
|
@@ -7966,14 +7882,14 @@ class NaturalHierarchicSelectorService {
|
|
|
7966
7882
|
}
|
|
7967
7883
|
}
|
|
7968
7884
|
else {
|
|
7969
|
-
if (!
|
|
7885
|
+
if (!node.config.childrenRelationNames || !config.parentsRelationNames) {
|
|
7970
7886
|
return null;
|
|
7971
7887
|
}
|
|
7972
|
-
const matchingFilters = intersection(
|
|
7888
|
+
const matchingFilters = intersection(node.config.childrenRelationNames, config.parentsRelationNames);
|
|
7973
7889
|
if (!matchingFilters.length) {
|
|
7974
7890
|
return null;
|
|
7975
7891
|
}
|
|
7976
|
-
fieldCondition[matchingFilters[0]] = { have: { values: [
|
|
7892
|
+
fieldCondition[matchingFilters[0]] = { have: { values: [node.model.id] } };
|
|
7977
7893
|
}
|
|
7978
7894
|
const filters = { groups: [{ conditions: [fieldCondition] }] };
|
|
7979
7895
|
// todo : is it right ? shouldn't it be managed with QueryVariablesManager's channels ? ?
|
|
@@ -7998,15 +7914,31 @@ class NaturalHierarchicSelectorService {
|
|
|
7998
7914
|
/**
|
|
7999
7915
|
* Search in configurations.selectableAtKey attribute to find given key and return the configuration
|
|
8000
7916
|
*/
|
|
8001
|
-
getConfigurationBySelectableKey(key) {
|
|
8002
|
-
if (!
|
|
7917
|
+
getConfigurationBySelectableKey(key, configurations) {
|
|
7918
|
+
if (!configurations) {
|
|
8003
7919
|
return null;
|
|
8004
7920
|
}
|
|
8005
|
-
return
|
|
7921
|
+
return configurations.find(conf => conf.selectableAtKey === key) || null;
|
|
8006
7922
|
}
|
|
8007
|
-
|
|
8008
|
-
const
|
|
8009
|
-
|
|
7923
|
+
getOrCreateNode(model, configurations) {
|
|
7924
|
+
const key = this.getCacheKey(model);
|
|
7925
|
+
let node = this.nodeCache.get(key);
|
|
7926
|
+
if (node) {
|
|
7927
|
+
return node;
|
|
7928
|
+
}
|
|
7929
|
+
node = new ModelNode(model, configurations);
|
|
7930
|
+
this.nodeCache.set(key, node);
|
|
7931
|
+
return node;
|
|
7932
|
+
}
|
|
7933
|
+
/**
|
|
7934
|
+
* Returns an identifier key for map cache
|
|
7935
|
+
* As many object types can be used, this function considers typename and ID to return something like document-123
|
|
7936
|
+
*/
|
|
7937
|
+
getCacheKey(model) {
|
|
7938
|
+
return model.__typename + '-' + model.id;
|
|
7939
|
+
}
|
|
7940
|
+
getAllFetchedNodes() {
|
|
7941
|
+
return Array.from(this.nodeCache.values());
|
|
8010
7942
|
}
|
|
8011
7943
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalHierarchicSelectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8012
7944
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalHierarchicSelectorService, providedIn: 'root' });
|
|
@@ -8017,7 +7949,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
8017
7949
|
}] });
|
|
8018
7950
|
|
|
8019
7951
|
class NaturalHierarchicSelectorComponent {
|
|
8020
|
-
destroyRef = inject(DestroyRef);
|
|
8021
7952
|
hierarchicSelectorService = inject(NaturalHierarchicSelectorService);
|
|
8022
7953
|
/**
|
|
8023
7954
|
* Function that receives a model and returns a string for display value
|
|
@@ -8036,10 +7967,6 @@ class NaturalHierarchicSelectorComponent {
|
|
|
8036
7967
|
* Organized by key, containing each an array of selected items of same type
|
|
8037
7968
|
*/
|
|
8038
7969
|
selected = input({}, ...(ngDevMode ? [{ debugName: "selected" }] : []));
|
|
8039
|
-
/**
|
|
8040
|
-
* Whether selectable elements can be unselected
|
|
8041
|
-
*/
|
|
8042
|
-
allowUnselect = input(true, ...(ngDevMode ? [{ debugName: "allowUnselect" }] : []));
|
|
8043
7970
|
/**
|
|
8044
7971
|
* Filters that apply to each query
|
|
8045
7972
|
*/
|
|
@@ -8064,33 +7991,20 @@ class NaturalHierarchicSelectorComponent {
|
|
|
8064
7991
|
* Emits when natural-search selections change
|
|
8065
7992
|
*/
|
|
8066
7993
|
searchSelectionChange = output();
|
|
8067
|
-
/**
|
|
8068
|
-
* Inner representation of selected @Input() to allow flat listing as mat-chip.
|
|
8069
|
-
*/
|
|
8070
|
-
selectedNodes = [];
|
|
8071
7994
|
/**
|
|
8072
7995
|
* Emits selection change
|
|
8073
7996
|
* Returns a Literal where selected models are organized by key
|
|
8074
7997
|
*/
|
|
8075
7998
|
selectionChange = output();
|
|
8076
7999
|
/**
|
|
8077
|
-
*
|
|
8000
|
+
* List selected items (right listing)
|
|
8078
8001
|
*/
|
|
8079
|
-
|
|
8080
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8081
|
-
treeControl;
|
|
8082
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8083
|
-
treeFlattener;
|
|
8084
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8085
|
-
dataSource;
|
|
8086
|
-
loading = false;
|
|
8002
|
+
selection;
|
|
8087
8003
|
/**
|
|
8088
|
-
*
|
|
8004
|
+
* Data source for result listing (left listing)
|
|
8089
8005
|
*/
|
|
8090
|
-
|
|
8091
|
-
|
|
8092
|
-
return this.flatNodeMap().size === 999;
|
|
8093
|
-
}, ...(ngDevMode ? [{ debugName: "tooBig" }] : []));
|
|
8006
|
+
dataSource = new MatTreeNestedDataSource();
|
|
8007
|
+
loading = false;
|
|
8094
8008
|
/**
|
|
8095
8009
|
* Angular OnChange implementation
|
|
8096
8010
|
*/
|
|
@@ -8099,93 +8013,43 @@ class NaturalHierarchicSelectorComponent {
|
|
|
8099
8013
|
this.updateInnerSelection(this.selected());
|
|
8100
8014
|
}
|
|
8101
8015
|
if (changes.filters && !changes.filters.firstChange) {
|
|
8102
|
-
this.
|
|
8016
|
+
this.loadRoot();
|
|
8103
8017
|
}
|
|
8104
8018
|
}
|
|
8105
|
-
/**
|
|
8106
|
-
* Angular OnInit implementation
|
|
8107
|
-
*/
|
|
8108
8019
|
ngOnInit() {
|
|
8109
|
-
|
|
8110
|
-
this.
|
|
8111
|
-
// Tree controllers and manipulators
|
|
8112
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8113
|
-
this.treeFlattener = new MatTreeFlattener(this.transformer(), this.getLevel(), this.isExpandable(), this.getChildren());
|
|
8114
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8115
|
-
this.treeControl = new FlatTreeControl(this.getLevel(), this.isExpandable());
|
|
8116
|
-
// The dataSource contains a nested ModelNodes list. Each ModelNode has a child attribute that returns an observable.
|
|
8117
|
-
// The dataSource contains a flat representation of the nested ModelNodes that is generated by the treeFlattener related functions
|
|
8118
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8119
|
-
this.dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);
|
|
8120
|
-
// Update dataSource when receiving new list -> we assign the whole tree
|
|
8121
|
-
// The treeControl and treeFlattener will generate the displayed tree
|
|
8122
|
-
this.hierarchicSelectorService.dataChange
|
|
8123
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
8124
|
-
.subscribe(data => (this.dataSource.data = data));
|
|
8020
|
+
this.hierarchicSelectorService.validateConfiguration(this.config());
|
|
8021
|
+
this.selection = new SelectionModel(this.multiple());
|
|
8125
8022
|
// Prevent empty screen on first load and init NaturalHierarchicSelectorService with inputted configuration
|
|
8126
8023
|
let variables;
|
|
8127
8024
|
const searchSelections = this.searchSelections();
|
|
8128
8025
|
if (searchSelections.some(s => s.length)) {
|
|
8129
8026
|
variables = { filter: toGraphQLDoctrineFilter(this.searchFacets(), searchSelections) };
|
|
8130
8027
|
}
|
|
8131
|
-
this.
|
|
8028
|
+
this.loadRoot(variables);
|
|
8132
8029
|
// OrganizedSelection into list usable by template
|
|
8133
8030
|
this.updateInnerSelection(this.selected());
|
|
8134
8031
|
}
|
|
8135
8032
|
/**
|
|
8136
|
-
* Toggle selection of a
|
|
8033
|
+
* Toggle selection of a node, considering if multiple selection is activated or not
|
|
8137
8034
|
*/
|
|
8138
|
-
|
|
8139
|
-
|
|
8140
|
-
|
|
8141
|
-
// Is multiple allowed, just toggle element
|
|
8142
|
-
if (this.flatNodesSelection.isSelected(flatNode)) {
|
|
8143
|
-
this.unselectFlatNode(flatNode);
|
|
8144
|
-
}
|
|
8145
|
-
else {
|
|
8146
|
-
this.selectFlatNode(flatNode);
|
|
8147
|
-
}
|
|
8148
|
-
}
|
|
8149
|
-
else if (!multiple) {
|
|
8150
|
-
if (this.flatNodesSelection.isSelected(flatNode)) {
|
|
8151
|
-
this.unselectSingleFlatNode();
|
|
8152
|
-
}
|
|
8153
|
-
else {
|
|
8154
|
-
// If not multiple, and we want to select an element, unselect everything before to keep a single selection
|
|
8155
|
-
this.selectSingleFlatNode(flatNode);
|
|
8156
|
-
}
|
|
8157
|
-
}
|
|
8035
|
+
toggleSelection(node) {
|
|
8036
|
+
this.selection.toggle(node);
|
|
8037
|
+
this.updateSelection();
|
|
8158
8038
|
}
|
|
8159
8039
|
selectAll() {
|
|
8160
|
-
this.
|
|
8161
|
-
|
|
8162
|
-
this.selectFlatNode(flatNode);
|
|
8163
|
-
}
|
|
8040
|
+
this.hierarchicSelectorService.getAllFetchedNodes().forEach(node => {
|
|
8041
|
+
this.selection.select(node);
|
|
8164
8042
|
});
|
|
8165
|
-
this.updateSelection(
|
|
8043
|
+
this.updateSelection();
|
|
8166
8044
|
}
|
|
8167
8045
|
/**
|
|
8168
|
-
* When unselecting an element from the mat-chips, it can be deep in the hierarchy, and the tree element may not
|
|
8046
|
+
* When unselecting an element from the mat-chips, it can be deep in the hierarchy, and the tree element may not
|
|
8047
|
+
* exist...
|
|
8169
8048
|
* ... but we still need to remove the element from the mat-chips list.
|
|
8170
8049
|
*/
|
|
8171
|
-
|
|
8172
|
-
|
|
8173
|
-
|
|
8174
|
-
this.unselectFlatNode(flatNode);
|
|
8175
|
-
}
|
|
8176
|
-
else {
|
|
8177
|
-
// Remove from chips list only if no flatNode, because unselectFlatNode() already deals with it.
|
|
8178
|
-
this.removeModelNode(node);
|
|
8179
|
-
this.updateSelection(this.selectedNodes);
|
|
8180
|
-
}
|
|
8181
|
-
}
|
|
8182
|
-
isNodeTogglable(flatNode) {
|
|
8183
|
-
if (this.isNodeSelected(flatNode.node)) {
|
|
8184
|
-
return flatNode.deselectable;
|
|
8185
|
-
}
|
|
8186
|
-
else {
|
|
8187
|
-
return flatNode.selectable;
|
|
8188
|
-
}
|
|
8050
|
+
unselect(node) {
|
|
8051
|
+
this.selection.deselect(node);
|
|
8052
|
+
this.updateSelection();
|
|
8189
8053
|
}
|
|
8190
8054
|
getDisplayFn(config) {
|
|
8191
8055
|
if (config.displayWith) {
|
|
@@ -8197,206 +8061,90 @@ class NaturalHierarchicSelectorComponent {
|
|
|
8197
8061
|
}
|
|
8198
8062
|
return item => (item ? item.fullName || item.name : '');
|
|
8199
8063
|
}
|
|
8200
|
-
|
|
8201
|
-
|
|
8202
|
-
|
|
8203
|
-
|
|
8204
|
-
|
|
8205
|
-
|
|
8206
|
-
|
|
8207
|
-
|
|
8208
|
-
// public loadChildren(flatNode: HierarchicFlatNode) {
|
|
8209
|
-
// if (this.treeControl.isExpanded(flatNode)) {
|
|
8210
|
-
//
|
|
8211
|
-
// const cachedFlatNode = this.getFlatNode(flatNode.node);
|
|
8212
|
-
// if (cachedFlatNode) {
|
|
8213
|
-
// this.hierarchicSelectorService.loadChildren(cachedFlatNode, this.filters);
|
|
8214
|
-
//
|
|
8215
|
-
// // Close children
|
|
8216
|
-
// cachedFlatNode.node.children.forEach(child => {
|
|
8217
|
-
// const childNode = this.getFlatNode(child);
|
|
8218
|
-
// if (childNode) {
|
|
8219
|
-
// this.treeControl.collapse(childNode);
|
|
8220
|
-
// }
|
|
8221
|
-
// });
|
|
8222
|
-
// }
|
|
8223
|
-
// }
|
|
8224
|
-
// }
|
|
8225
|
-
getChildren() {
|
|
8226
|
-
return (node) => {
|
|
8227
|
-
return node.childrenChange;
|
|
8228
|
-
};
|
|
8229
|
-
}
|
|
8230
|
-
/**
|
|
8231
|
-
* Transforms a HierarchicModelNode into a FlatNode
|
|
8232
|
-
*/
|
|
8233
|
-
transformer() {
|
|
8234
|
-
return (node, level) => {
|
|
8235
|
-
return this.getOrCreateFlatNode(node, level);
|
|
8236
|
-
};
|
|
8237
|
-
}
|
|
8238
|
-
/**
|
|
8239
|
-
* Return deep of the node in the tree
|
|
8240
|
-
*/
|
|
8241
|
-
getLevel() {
|
|
8242
|
-
return (node) => {
|
|
8243
|
-
return node.level;
|
|
8244
|
-
};
|
|
8245
|
-
}
|
|
8246
|
-
/**
|
|
8247
|
-
* Is always expandable because we load on demand, we don't know if there are children yet
|
|
8248
|
-
*/
|
|
8249
|
-
isExpandable() {
|
|
8250
|
-
return (node) => {
|
|
8251
|
-
return node.expandable;
|
|
8252
|
-
};
|
|
8253
|
-
}
|
|
8254
|
-
getOrCreateFlatNode(node, level) {
|
|
8255
|
-
// Return FlatNode if exists
|
|
8256
|
-
const flatNode = this.getFlatNode(node);
|
|
8257
|
-
if (flatNode) {
|
|
8258
|
-
return flatNode;
|
|
8259
|
-
}
|
|
8260
|
-
// Return new FlatNode
|
|
8261
|
-
return this.createFlatNode(node, level);
|
|
8064
|
+
loadRoot(searchVariables) {
|
|
8065
|
+
this.loading = true;
|
|
8066
|
+
this.hierarchicSelectorService
|
|
8067
|
+
.getList(null, this.filters(), searchVariables, this.config())
|
|
8068
|
+
.pipe(finalize$1(() => (this.loading = false)))
|
|
8069
|
+
.subscribe(items => {
|
|
8070
|
+
this.dataSource.data = items;
|
|
8071
|
+
});
|
|
8262
8072
|
}
|
|
8263
8073
|
search(selections) {
|
|
8264
8074
|
this.searchSelectionChange.emit(selections);
|
|
8265
8075
|
if (selections.some(s => s.length)) {
|
|
8266
8076
|
const variables = { filter: toGraphQLDoctrineFilter(this.searchFacets(), selections) };
|
|
8267
|
-
this.hierarchicSelectorService.
|
|
8077
|
+
this.hierarchicSelectorService.getList(null, this.filters(), variables, this.config()).subscribe(items => {
|
|
8078
|
+
this.dataSource.data = items;
|
|
8079
|
+
});
|
|
8268
8080
|
}
|
|
8269
8081
|
else {
|
|
8270
|
-
this.
|
|
8082
|
+
this.loadRoot();
|
|
8271
8083
|
}
|
|
8272
8084
|
}
|
|
8273
|
-
|
|
8274
|
-
|
|
8275
|
-
|
|
8085
|
+
/**
|
|
8086
|
+
* Get list of children, considering given FlatNode id as a parent.
|
|
8087
|
+
* Mark loading status individually on nodes.
|
|
8088
|
+
*/
|
|
8089
|
+
loadChildren(node, contextFilter = null) {
|
|
8090
|
+
if (node.hasChildren) {
|
|
8091
|
+
return;
|
|
8092
|
+
}
|
|
8093
|
+
node.isLoading = true;
|
|
8276
8094
|
this.hierarchicSelectorService
|
|
8277
|
-
.
|
|
8278
|
-
.pipe(finalize$1(() => (
|
|
8279
|
-
.subscribe();
|
|
8095
|
+
.getList(node, contextFilter, null, this.config())
|
|
8096
|
+
.pipe(finalize$1(() => (node.isLoading = false)))
|
|
8097
|
+
.subscribe(items => node.childrenChange.next(items));
|
|
8280
8098
|
}
|
|
8099
|
+
childrenAccessor = (node) => {
|
|
8100
|
+
return node.children;
|
|
8101
|
+
};
|
|
8281
8102
|
/**
|
|
8282
8103
|
* Sync inner selection (tree and mat-chips) according to selected input attribute
|
|
8283
8104
|
*/
|
|
8284
8105
|
updateInnerSelection(selected) {
|
|
8285
8106
|
// Transform an OrganizedModelSelection into a ModelNode list that is used in the selected zone of the component (see template)
|
|
8286
|
-
|
|
8287
|
-
this.
|
|
8288
|
-
for (const node of
|
|
8289
|
-
|
|
8290
|
-
if (flatNode) {
|
|
8291
|
-
this.flatNodesSelection.select(flatNode);
|
|
8292
|
-
}
|
|
8107
|
+
const selectedNodes = this.hierarchicSelectorService.fromOrganizedSelection(selected, this.config());
|
|
8108
|
+
this.selection.clear();
|
|
8109
|
+
for (const node of selectedNodes) {
|
|
8110
|
+
this.selection.select(node);
|
|
8293
8111
|
}
|
|
8294
8112
|
}
|
|
8295
|
-
/**
|
|
8296
|
-
* Unselect a node, keeping the rest of the selected untouched
|
|
8297
|
-
*/
|
|
8298
|
-
unselectFlatNode(flatNode) {
|
|
8299
|
-
this.flatNodesSelection.deselect(flatNode);
|
|
8300
|
-
this.removeModelNode(flatNode.node);
|
|
8301
|
-
this.updateSelection(this.selectedNodes);
|
|
8302
|
-
}
|
|
8303
|
-
/**
|
|
8304
|
-
* Remove a node from chip lists
|
|
8305
|
-
*/
|
|
8306
|
-
removeModelNode(node) {
|
|
8307
|
-
const key = this.getMapKey(node.model);
|
|
8308
|
-
const selectionIndex = this.selectedNodes.findIndex(n => this.getMapKey(n.model) === key);
|
|
8309
|
-
this.selectedNodes.splice(selectionIndex, 1);
|
|
8310
|
-
}
|
|
8311
|
-
/**
|
|
8312
|
-
* Select a node, keeping th rest of the selected untouched
|
|
8313
|
-
*/
|
|
8314
|
-
selectFlatNode(flatNode) {
|
|
8315
|
-
this.flatNodesSelection.select(flatNode);
|
|
8316
|
-
this.selectedNodes.push(flatNode.node);
|
|
8317
|
-
this.updateSelection(this.selectedNodes);
|
|
8318
|
-
}
|
|
8319
|
-
/**
|
|
8320
|
-
* Clear all selected and select the given node
|
|
8321
|
-
*/
|
|
8322
|
-
selectSingleFlatNode(flatNode) {
|
|
8323
|
-
this.flatNodesSelection.clear();
|
|
8324
|
-
this.flatNodesSelection.select(flatNode);
|
|
8325
|
-
this.selectedNodes = [flatNode.node];
|
|
8326
|
-
this.updateSelection(this.selectedNodes);
|
|
8327
|
-
}
|
|
8328
|
-
/**
|
|
8329
|
-
* Clear all selected and select the given node
|
|
8330
|
-
*/
|
|
8331
|
-
unselectSingleFlatNode() {
|
|
8332
|
-
this.flatNodesSelection.clear();
|
|
8333
|
-
this.selectedNodes = [];
|
|
8334
|
-
this.updateSelection(this.selectedNodes);
|
|
8335
|
-
}
|
|
8336
8113
|
/**
|
|
8337
8114
|
* Transform the given elements into the organized selection that is emitted to output
|
|
8338
8115
|
*/
|
|
8339
|
-
updateSelection(
|
|
8340
|
-
const organizedFlatNodesSelection = this.hierarchicSelectorService.toOrganizedSelection(selected);
|
|
8116
|
+
updateSelection() {
|
|
8117
|
+
const organizedFlatNodesSelection = this.hierarchicSelectorService.toOrganizedSelection(this.selection.selected, this.config());
|
|
8341
8118
|
replaceObjectKeepingReference(this.selected(), organizedFlatNodesSelection);
|
|
8342
8119
|
this.selectionChange.emit(organizedFlatNodesSelection);
|
|
8343
8120
|
}
|
|
8344
|
-
isNodeSelected(modelNode) {
|
|
8345
|
-
const key = this.getMapKey(modelNode.model);
|
|
8346
|
-
return this.selectedNodes.some(n => this.getMapKey(n.model) === key);
|
|
8347
|
-
}
|
|
8348
|
-
getFlatNode(node) {
|
|
8349
|
-
const key = this.getMapKey(node.model);
|
|
8350
|
-
return this.flatNodeMap().get(key) || null;
|
|
8351
|
-
}
|
|
8352
|
-
createFlatNode(node, level) {
|
|
8353
|
-
const key = this.getMapKey(node.model);
|
|
8354
|
-
const name = this.getDisplayFn(node.config)(node.model);
|
|
8355
|
-
const expandable = false;
|
|
8356
|
-
const isCustomSelectable = node.config.isSelectableCallback
|
|
8357
|
-
? node.config.isSelectableCallback(node.model)
|
|
8358
|
-
: true;
|
|
8359
|
-
const isSelectable = !!node.config.selectableAtKey && isCustomSelectable;
|
|
8360
|
-
const flatNode = new HierarchicFlatNode(node, name, level, expandable, isSelectable);
|
|
8361
|
-
this.hierarchicSelectorService.countItems(flatNode, this.filters());
|
|
8362
|
-
// Mark node as selected if needed (checks the selected processed input)
|
|
8363
|
-
if (this.isNodeSelected(node)) {
|
|
8364
|
-
if (!this.allowUnselect()) {
|
|
8365
|
-
flatNode.deselectable = false;
|
|
8366
|
-
}
|
|
8367
|
-
this.flatNodesSelection.select(flatNode);
|
|
8368
|
-
}
|
|
8369
|
-
// Cache FlatNode
|
|
8370
|
-
this.flatNodeMap.update(map => {
|
|
8371
|
-
map.set(key, flatNode);
|
|
8372
|
-
return map;
|
|
8373
|
-
});
|
|
8374
|
-
return flatNode;
|
|
8375
|
-
}
|
|
8376
|
-
/**
|
|
8377
|
-
* Returns an identifier key for map cache
|
|
8378
|
-
* As many object types can be used, this function considers typename and ID to return something like document-123
|
|
8379
|
-
*/
|
|
8380
|
-
getMapKey(model) {
|
|
8381
|
-
return model.__typename + '-' + model.id;
|
|
8382
|
-
}
|
|
8383
8121
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalHierarchicSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8384
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalHierarchicSelectorComponent, isStandalone: true, selector: "natural-hierarchic-selector", inputs: { displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null },
|
|
8122
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalHierarchicSelectorComponent, isStandalone: true, selector: "natural-hierarchic-selector", inputs: { displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, searchFacets: { classPropertyName: "searchFacets", publicName: "searchFacets", isSignal: true, isRequired: false, transformFunction: null }, searchSelections: { classPropertyName: "searchSelections", publicName: "searchSelections", isSignal: true, isRequired: false, transformFunction: null }, allowSelectAll: { classPropertyName: "allowSelectAll", publicName: "allowSelectAll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchSelectionChange: "searchSelectionChange", selectionChange: "selectionChange" }, providers: [NaturalHierarchicSelectorService], usesOnChanges: true, ngImport: i0, template: "<ng-template #displayTemplate let-node>\n <div class=\"nat-horizontal nat-gap-5\">\n @if (node.config.icon) {\n <mat-icon [naturalIcon]=\"node.config.icon\" />\n }\n <span>{{ getDisplayFn(node.config)(node.model) }}</span>\n </div>\n</ng-template>\n\n<div [style.margin-bottom.px]=\"20\">\n <natural-search [facets]=\"searchFacets()\" [selections]=\"searchSelections()\" (selectionChange)=\"search($event)\" />\n</div>\n\n@if (allowSelectAll() && multiple()) {\n <div\n class=\"select-all\"\n i18n-matTooltip\n matTooltip=\"Trop de r\u00E9sultats, veuillez affiner la recherche\"\n [matTooltipDisabled]=\"!hierarchicSelectorService.isTooBig()\"\n >\n <a i18n mat-button [disabled]=\"hierarchicSelectorService.isTooBig()\" (click)=\"selectAll()\">Tout s\u00E9lectionner</a>\n </div>\n}\n\n<div class=\"body\">\n @if (loading) {\n <mat-progress-spinner mode=\"indeterminate\" style=\"margin: 10px\" [diameter]=\"36\" />\n }\n\n <mat-tree #tree [dataSource]=\"dataSource\" [childrenAccessor]=\"childrenAccessor\">\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodePadding\n [class.leaf]=\"!node.isExpandable\"\n (expandedChange)=\"$event ? loadChildren(node) : null\"\n >\n <div class=\"wrapper nat-horizontal nat-align\" [class.unexpandable]=\"!node.isExpandable\">\n @if (node.isExpandable) {\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"`toggle ${node.model.name}`\">\n @if (node.isLoading) {\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"24\" [strokeWidth]=\"5\" />\n } @else {\n <mat-icon [naturalIcon]=\"tree.isExpanded(node) ? 'expand_more' : 'chevron_right'\" />\n }\n </button>\n }\n\n @if (multiple()) {\n <mat-checkbox\n class=\"selection\"\n [checked]=\"selection.isSelected(node)\"\n [disabled]=\"!node.isSelectable\"\n (change)=\"toggleSelection(node)\"\n >\n <ng-template *ngTemplateOutlet=\"displayTemplate; context: {$implicit: node}\" />\n </mat-checkbox>\n } @else {\n <mat-radio-button\n class=\"selection\"\n [checked]=\"selection.isSelected(node)\"\n [disabled]=\"!node.isSelectable\"\n (change)=\"toggleSelection(node)\"\n >\n <ng-template *ngTemplateOutlet=\"displayTemplate; context: {$implicit: node}\" />\n </mat-radio-button>\n }\n </div>\n <div class=\"children\" [class.invisible]=\"!tree.isExpanded(node)\">\n <ng-container matTreeNodeOutlet />\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n\n <mat-chip-listbox aria-orientation=\"vertical\" class=\"mat-mdc-chip-set-stacked\">\n @for (node of selection.selected; track node.model.id) {\n <mat-chip-option [removable]=\"true\" [selectable]=\"false\" (removed)=\"unselect(node)\">\n @if (node.config.icon) {\n <mat-icon matChipAvatar [naturalIcon]=\"node.config.icon\" />\n }\n {{ node.model.name || node.model.fullName }}\n <button matChipRemove>\n <mat-icon naturalIcon=\"cancel\" />\n </button>\n </mat-chip-option>\n } @empty {\n <p class=\"mat-body nat-padding-horizontal\" i18n>Aucune s\u00E9lection</p>\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}mat-icon{width:18px;height:18px;font-size:18px}.select-all{display:inline-block;margin-top:-15px;margin-bottom:5px}.mat-tree-node.leaf{margin-left:48px}.body{display:flex;flex-direction:row;justify-content:space-between}.body mat-tree{flex:66;flex-shrink:0}.body mat-chip-listbox{flex:33;margin-left:10px}mat-nested-tree-node{display:block}mat-nested-tree-node,mat-nested-tree-node .wrapper{min-height:48px}mat-nested-tree-node mat-nested-tree-node{display:block;padding-left:40px!important}.invisible{display:none}.unexpandable{padding-left:48px}.selection,.selection .mat-icon{margin-right:10px}\n"], dependencies: [{ kind: "component", type: NaturalSearchComponent, selector: "natural-search", inputs: ["placeholder", "facets", "multipleGroups", "dropdownTitle", "selections"], outputs: ["selectionChange"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], outputs: ["activation", "expandedChange"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "component", type: MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
8385
8123
|
}
|
|
8386
8124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalHierarchicSelectorComponent, decorators: [{
|
|
8387
8125
|
type: Component,
|
|
8388
8126
|
args: [{ selector: 'natural-hierarchic-selector', imports: [
|
|
8389
8127
|
NaturalSearchComponent,
|
|
8390
|
-
|
|
8391
|
-
|
|
8392
|
-
|
|
8393
|
-
|
|
8394
|
-
|
|
8128
|
+
MatProgressSpinner,
|
|
8129
|
+
MatNestedTreeNode,
|
|
8130
|
+
MatTreeNodeDef,
|
|
8131
|
+
MatTreeNodePadding,
|
|
8132
|
+
MatTreeNodeToggle,
|
|
8133
|
+
MatTree,
|
|
8134
|
+
MatTreeNodeOutlet,
|
|
8135
|
+
MatButton,
|
|
8136
|
+
MatIconButton,
|
|
8137
|
+
MatIcon,
|
|
8395
8138
|
NaturalIconDirective,
|
|
8396
|
-
|
|
8397
|
-
|
|
8398
|
-
|
|
8399
|
-
|
|
8139
|
+
MatCheckbox,
|
|
8140
|
+
MatChipAvatar,
|
|
8141
|
+
MatChipListbox,
|
|
8142
|
+
MatChipOption,
|
|
8143
|
+
MatChipRemove,
|
|
8144
|
+
MatTooltip,
|
|
8145
|
+
MatRadioButton,
|
|
8146
|
+
NgTemplateOutlet,
|
|
8147
|
+
], providers: [NaturalHierarchicSelectorService], template: "<ng-template #displayTemplate let-node>\n <div class=\"nat-horizontal nat-gap-5\">\n @if (node.config.icon) {\n <mat-icon [naturalIcon]=\"node.config.icon\" />\n }\n <span>{{ getDisplayFn(node.config)(node.model) }}</span>\n </div>\n</ng-template>\n\n<div [style.margin-bottom.px]=\"20\">\n <natural-search [facets]=\"searchFacets()\" [selections]=\"searchSelections()\" (selectionChange)=\"search($event)\" />\n</div>\n\n@if (allowSelectAll() && multiple()) {\n <div\n class=\"select-all\"\n i18n-matTooltip\n matTooltip=\"Trop de r\u00E9sultats, veuillez affiner la recherche\"\n [matTooltipDisabled]=\"!hierarchicSelectorService.isTooBig()\"\n >\n <a i18n mat-button [disabled]=\"hierarchicSelectorService.isTooBig()\" (click)=\"selectAll()\">Tout s\u00E9lectionner</a>\n </div>\n}\n\n<div class=\"body\">\n @if (loading) {\n <mat-progress-spinner mode=\"indeterminate\" style=\"margin: 10px\" [diameter]=\"36\" />\n }\n\n <mat-tree #tree [dataSource]=\"dataSource\" [childrenAccessor]=\"childrenAccessor\">\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodePadding\n [class.leaf]=\"!node.isExpandable\"\n (expandedChange)=\"$event ? loadChildren(node) : null\"\n >\n <div class=\"wrapper nat-horizontal nat-align\" [class.unexpandable]=\"!node.isExpandable\">\n @if (node.isExpandable) {\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"`toggle ${node.model.name}`\">\n @if (node.isLoading) {\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"24\" [strokeWidth]=\"5\" />\n } @else {\n <mat-icon [naturalIcon]=\"tree.isExpanded(node) ? 'expand_more' : 'chevron_right'\" />\n }\n </button>\n }\n\n @if (multiple()) {\n <mat-checkbox\n class=\"selection\"\n [checked]=\"selection.isSelected(node)\"\n [disabled]=\"!node.isSelectable\"\n (change)=\"toggleSelection(node)\"\n >\n <ng-template *ngTemplateOutlet=\"displayTemplate; context: {$implicit: node}\" />\n </mat-checkbox>\n } @else {\n <mat-radio-button\n class=\"selection\"\n [checked]=\"selection.isSelected(node)\"\n [disabled]=\"!node.isSelectable\"\n (change)=\"toggleSelection(node)\"\n >\n <ng-template *ngTemplateOutlet=\"displayTemplate; context: {$implicit: node}\" />\n </mat-radio-button>\n }\n </div>\n <div class=\"children\" [class.invisible]=\"!tree.isExpanded(node)\">\n <ng-container matTreeNodeOutlet />\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n\n <mat-chip-listbox aria-orientation=\"vertical\" class=\"mat-mdc-chip-set-stacked\">\n @for (node of selection.selected; track node.model.id) {\n <mat-chip-option [removable]=\"true\" [selectable]=\"false\" (removed)=\"unselect(node)\">\n @if (node.config.icon) {\n <mat-icon matChipAvatar [naturalIcon]=\"node.config.icon\" />\n }\n {{ node.model.name || node.model.fullName }}\n <button matChipRemove>\n <mat-icon naturalIcon=\"cancel\" />\n </button>\n </mat-chip-option>\n } @empty {\n <p class=\"mat-body nat-padding-horizontal\" i18n>Aucune s\u00E9lection</p>\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}mat-icon{width:18px;height:18px;font-size:18px}.select-all{display:inline-block;margin-top:-15px;margin-bottom:5px}.mat-tree-node.leaf{margin-left:48px}.body{display:flex;flex-direction:row;justify-content:space-between}.body mat-tree{flex:66;flex-shrink:0}.body mat-chip-listbox{flex:33;margin-left:10px}mat-nested-tree-node{display:block}mat-nested-tree-node,mat-nested-tree-node .wrapper{min-height:48px}mat-nested-tree-node mat-nested-tree-node{display:block;padding-left:40px!important}.invisible{display:none}.unexpandable{padding-left:48px}.selection,.selection .mat-icon{margin-right:10px}\n"] }]
|
|
8400
8148
|
}] });
|
|
8401
8149
|
|
|
8402
8150
|
class TypeHierarchicSelectorComponent extends AbstractAssociationSelectComponent {
|
|
@@ -8450,16 +8198,17 @@ class TypeHierarchicSelectorComponent extends AbstractAssociationSelectComponent
|
|
|
8450
8198
|
return selection[this.configuration.key].length ? selection : null;
|
|
8451
8199
|
}
|
|
8452
8200
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeHierarchicSelectorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
8453
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 style=\"margin-right: 20px\"\n [config]=\"configuration.config\"\n [filters]=\"configuration.filters\"\n [multiple]=\"true\"\n [selected]=\"valueCtrl.value || {}\"\n (selectionChange)=\"selectionChange($event)\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$
|
|
8201
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 style=\"margin-right: 20px\"\n [config]=\"configuration.config\"\n [filters]=\"configuration.filters\"\n [multiple]=\"true\"\n [selected]=\"valueCtrl.value || {}\"\n (selectionChange)=\"selectionChange($event)\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.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$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: NaturalHierarchicSelectorComponent, selector: "natural-hierarchic-selector", inputs: ["displayWith", "config", "multiple", "selected", "filters", "searchFacets", "searchSelections", "allowSelectAll"], outputs: ["searchSelectionChange", "selectionChange"] }] });
|
|
8454
8202
|
}
|
|
8455
8203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeHierarchicSelectorComponent, decorators: [{
|
|
8456
8204
|
type: Component,
|
|
8457
8205
|
args: [{ imports: [
|
|
8458
8206
|
FormsModule,
|
|
8459
8207
|
ReactiveFormsModule,
|
|
8460
|
-
|
|
8461
|
-
|
|
8462
|
-
|
|
8208
|
+
MatFormField,
|
|
8209
|
+
MatLabel,
|
|
8210
|
+
MatSelect,
|
|
8211
|
+
MatOption,
|
|
8463
8212
|
NaturalHierarchicSelectorComponent,
|
|
8464
8213
|
], 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 panelWidth=\"\" [formControl]=\"operatorCtrl\" [required]=\"true\">\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 style=\"margin-right: 20px\"\n [config]=\"configuration.config\"\n [filters]=\"configuration.filters\"\n [multiple]=\"true\"\n [selected]=\"valueCtrl.value || {}\"\n (selectionChange)=\"selectionChange($event)\"\n />\n }\n</form>\n" }]
|
|
8465
8214
|
}] });
|
|
@@ -8577,11 +8326,21 @@ class TypeDateRangeComponent {
|
|
|
8577
8326
|
}
|
|
8578
8327
|
}
|
|
8579
8328
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeDateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8580
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: TypeDateRangeComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <input\n matInput\n placeholder=\"De\"\n i18n-placeholder\n [matDatepicker]=\"from\"\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 placeholder=\"\u00E0\"\n i18n-placeholder\n [matDatepicker]=\"to\"\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$
|
|
8329
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: TypeDateRangeComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <input\n matInput\n placeholder=\"De\"\n i18n-placeholder\n [matDatepicker]=\"from\"\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 placeholder=\"\u00E0\"\n i18n-placeholder\n [matDatepicker]=\"to\"\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$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] });
|
|
8581
8330
|
}
|
|
8582
8331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeDateRangeComponent, decorators: [{
|
|
8583
8332
|
type: Component,
|
|
8584
|
-
args: [{ imports: [
|
|
8333
|
+
args: [{ imports: [
|
|
8334
|
+
FormsModule,
|
|
8335
|
+
ReactiveFormsModule,
|
|
8336
|
+
MatFormField,
|
|
8337
|
+
MatError,
|
|
8338
|
+
MatSuffix,
|
|
8339
|
+
MatInput,
|
|
8340
|
+
MatDatepicker,
|
|
8341
|
+
MatDatepickerInput,
|
|
8342
|
+
MatDatepickerToggle,
|
|
8343
|
+
], template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <input\n matInput\n placeholder=\"De\"\n i18n-placeholder\n [matDatepicker]=\"from\"\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 placeholder=\"\u00E0\"\n i18n-placeholder\n [matDatepicker]=\"to\"\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" }]
|
|
8585
8344
|
}], ctorParameters: () => [] });
|
|
8586
8345
|
|
|
8587
8346
|
class TypeOptionsComponent {
|
|
@@ -8630,11 +8389,11 @@ class TypeOptionsComponent {
|
|
|
8630
8389
|
return this.formControl.dirty;
|
|
8631
8390
|
}
|
|
8632
8391
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeOptionsComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
8633
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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$
|
|
8392
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }] });
|
|
8634
8393
|
}
|
|
8635
8394
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeOptionsComponent, decorators: [{
|
|
8636
8395
|
type: Component,
|
|
8637
|
-
args: [{ imports: [FormsModule, ReactiveFormsModule,
|
|
8396
|
+
args: [{ imports: [FormsModule, ReactiveFormsModule, MatButtonToggleGroup, MatButtonToggle], 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" }]
|
|
8638
8397
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
8639
8398
|
type: Inject,
|
|
8640
8399
|
args: [NATURAL_DROPDOWN_DATA]
|
|
@@ -8663,17 +8422,23 @@ class TypeBooleanComponent extends TypeOptionsComponent {
|
|
|
8663
8422
|
super(typeOptionsData);
|
|
8664
8423
|
}
|
|
8665
8424
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeBooleanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8666
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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$
|
|
8425
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }] });
|
|
8667
8426
|
}
|
|
8668
8427
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TypeBooleanComponent, decorators: [{
|
|
8669
8428
|
type: Component,
|
|
8670
|
-
args: [{ imports: [FormsModule, ReactiveFormsModule,
|
|
8429
|
+
args: [{ imports: [FormsModule, ReactiveFormsModule, MatButtonToggleGroup, MatButtonToggle], 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" }]
|
|
8671
8430
|
}], ctorParameters: () => [] });
|
|
8672
8431
|
|
|
8673
8432
|
/*
|
|
8674
8433
|
* Public API Surface of natural-search dropdown components
|
|
8675
8434
|
*/
|
|
8676
8435
|
|
|
8436
|
+
/**
|
|
8437
|
+
* Common image mime type that are supported by Felix out of the box.
|
|
8438
|
+
*
|
|
8439
|
+
* Should be kept in sync with `\Ecodev\Felix\Model\Traits\Image::getAcceptedMimeTypes`
|
|
8440
|
+
*/
|
|
8441
|
+
const commonImageMimeTypes = 'image/avif,image/bmp,image/x-ms-bmp,image/gif,image/heic,image/heif,image/jpeg,image/pjpeg,image/png,image/svg+xml,image/svg,image/webp';
|
|
8677
8442
|
function acceptType(accept, type, filename) {
|
|
8678
8443
|
if (!accept.trim()) {
|
|
8679
8444
|
return true;
|
|
@@ -9043,8 +8808,7 @@ class NaturalAbstractFile {
|
|
|
9043
8808
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.0", type: NaturalAbstractFile, isStandalone: true, inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, fileSelectionDisabled: { classPropertyName: "fileSelectionDisabled", publicName: "fileSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, broadcast: { classPropertyName: "broadcast", publicName: "broadcast", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { fileChange: "fileChange", filesChange: "filesChange" }, host: { listeners: { "change": "onChange($event)" } }, usesOnChanges: true, ngImport: i0 });
|
|
9044
8809
|
}
|
|
9045
8810
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalAbstractFile, decorators: [{
|
|
9046
|
-
type: Directive
|
|
9047
|
-
args: [{ standalone: true }]
|
|
8811
|
+
type: Directive
|
|
9048
8812
|
}], propDecorators: { broadcast: [{
|
|
9049
8813
|
type: Input
|
|
9050
8814
|
}], onChange: [{
|
|
@@ -9133,7 +8897,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
9133
8897
|
type: Directive,
|
|
9134
8898
|
args: [{
|
|
9135
8899
|
selector: ':not([naturalFileSelect])[naturalFileDrop]',
|
|
9136
|
-
standalone: true,
|
|
9137
8900
|
}]
|
|
9138
8901
|
}], propDecorators: { fileOverClass: [{
|
|
9139
8902
|
type: HostBinding,
|
|
@@ -9166,7 +8929,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
9166
8929
|
type: Directive,
|
|
9167
8930
|
args: [{
|
|
9168
8931
|
selector: ':not([naturalFileDrop])[naturalFileSelect]',
|
|
9169
|
-
standalone: true,
|
|
9170
8932
|
}]
|
|
9171
8933
|
}] });
|
|
9172
8934
|
|
|
@@ -9186,7 +8948,7 @@ class NaturalFileComponent {
|
|
|
9186
8948
|
*
|
|
9187
8949
|
* See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
|
|
9188
8950
|
*/
|
|
9189
|
-
accept = input(
|
|
8951
|
+
accept = input(commonImageMimeTypes, ...(ngDevMode ? [{ debugName: "accept" }] : []));
|
|
9190
8952
|
/**
|
|
9191
8953
|
* If given, it will be called when a new file is selected. The callback should typically upload the file
|
|
9192
8954
|
* to the server and link the newly uploaded file to the existing related object.
|
|
@@ -9299,15 +9061,15 @@ class NaturalFileComponent {
|
|
|
9299
9061
|
return subject.asObservable();
|
|
9300
9062
|
}
|
|
9301
9063
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9302
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalFileComponent, isStandalone: true, selector: "natural-file", inputs: { height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, backgroundSize: { classPropertyName: "backgroundSize", publicName: "backgroundSize", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, uploader: { classPropertyName: "uploader", publicName: "uploader", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: false, isRequired: false, transformFunction: null }, formCtrl: { classPropertyName: "formCtrl", publicName: "formCtrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { modelChange: "modelChange" }, host: { properties: { "style.height.px": "height()" } }, usesOnChanges: true, ngImport: i0, template: "<a\n naturalFileDrop\n matRipple\n target=\"_blank\"\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 (fileChange)=\"upload($event)\"\n>\n @if (filePreview) {\n <div class=\"file-preview\" [style.font-size.px]=\"fontSize()\">\n <mat-icon naturalIcon=\"attachment\" [size]=\"iconHeight()\" />\n {{ filePreview | uppercase }}\n </div>\n }\n\n <div class=\"action-overlay\" [style.font-size.px]=\"fontSize()\">\n @if (action() === 'upload') {\n <mat-icon naturalIcon=\"cloud_upload\" [size]=\"iconHeight()\" />\n }\n @if (action() === 'download') {\n <mat-icon naturalIcon=\"get_app\" [size]=\"iconHeight()\" />\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: "
|
|
9064
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalFileComponent, isStandalone: true, selector: "natural-file", inputs: { height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, backgroundSize: { classPropertyName: "backgroundSize", publicName: "backgroundSize", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, uploader: { classPropertyName: "uploader", publicName: "uploader", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: false, isRequired: false, transformFunction: null }, formCtrl: { classPropertyName: "formCtrl", publicName: "formCtrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { modelChange: "modelChange" }, host: { properties: { "style.height.px": "height()" } }, usesOnChanges: true, ngImport: i0, template: "<a\n naturalFileDrop\n matRipple\n target=\"_blank\"\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 (fileChange)=\"upload($event)\"\n>\n @if (filePreview) {\n <div class=\"file-preview\" [style.font-size.px]=\"fontSize()\">\n <mat-icon naturalIcon=\"attachment\" [size]=\"iconHeight()\" />\n {{ filePreview | uppercase }}\n </div>\n }\n\n <div class=\"action-overlay\" [style.font-size.px]=\"fontSize()\">\n @if (action() === 'upload') {\n <mat-icon naturalIcon=\"cloud_upload\" [size]=\"iconHeight()\" />\n }\n @if (action() === 'download') {\n <mat-icon naturalIcon=\"get_app\" [size]=\"iconHeight()\" />\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: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "directive", type: NaturalBackgroundDensityDirective, selector: "[naturalBackgroundDensity]", inputs: ["naturalBackgroundDensity"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: NaturalCapitalizePipe, name: "capitalize" }] });
|
|
9303
9065
|
}
|
|
9304
9066
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalFileComponent, decorators: [{
|
|
9305
9067
|
type: Component,
|
|
9306
9068
|
args: [{ selector: 'natural-file', imports: [
|
|
9307
9069
|
NaturalFileDropDirective,
|
|
9308
|
-
|
|
9309
|
-
|
|
9310
|
-
|
|
9070
|
+
MatRipple,
|
|
9071
|
+
UpperCasePipe,
|
|
9072
|
+
MatIcon,
|
|
9311
9073
|
NaturalIconDirective,
|
|
9312
9074
|
NaturalCapitalizePipe,
|
|
9313
9075
|
NaturalBackgroundDensityDirective,
|
|
@@ -9328,11 +9090,11 @@ class NaturalFixedButtonComponent {
|
|
|
9328
9090
|
color = input('accent', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
9329
9091
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
9330
9092
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalFixedButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9331
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.0", type: NaturalFixedButtonComponent, isStandalone: true, selector: "natural-fixed-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button mat-fab [color]=\"color()\" [disabled]=\"disabled()\" [routerLink]=\"link()\">\n <mat-icon [naturalIcon]=\"icon()\" />\n</button>\n", styles: [":host{position:fixed!important;right:32px;bottom:32px;z-index:999}\n"], dependencies: [{ kind: "
|
|
9093
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.0", type: NaturalFixedButtonComponent, isStandalone: true, selector: "natural-fixed-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button mat-fab [color]=\"color()\" [disabled]=\"disabled()\" [routerLink]=\"link()\">\n <mat-icon [naturalIcon]=\"icon()\" />\n</button>\n", styles: [":host{position:fixed!important;right:32px;bottom:32px;z-index:999}\n"], dependencies: [{ kind: "component", type: MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }] });
|
|
9332
9094
|
}
|
|
9333
9095
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalFixedButtonComponent, decorators: [{
|
|
9334
9096
|
type: Component,
|
|
9335
|
-
args: [{ selector: 'natural-fixed-button', imports: [
|
|
9097
|
+
args: [{ selector: 'natural-fixed-button', imports: [MatFabButton, RouterLink, MatIcon, NaturalIconDirective], template: "<button mat-fab [color]=\"color()\" [disabled]=\"disabled()\" [routerLink]=\"link()\">\n <mat-icon [naturalIcon]=\"icon()\" />\n</button>\n", styles: [":host{position:fixed!important;right:32px;bottom:32px;z-index:999}\n"] }]
|
|
9336
9098
|
}] });
|
|
9337
9099
|
|
|
9338
9100
|
/*
|
|
@@ -9371,11 +9133,11 @@ class NaturalFixedButtonDetailComponent {
|
|
|
9371
9133
|
}
|
|
9372
9134
|
}
|
|
9373
9135
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalFixedButtonDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9374
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 class=\"detail-speed-dial\"\n icon=\"save\"\n [disabled]=\"form.disabled\"\n [color]=\"form.valid ? 'accent' : 'warn'\"\n (click)=\"clickCreate()\"\n />\n}\n\n@if (!isCreation && (!model.permissions || model.permissions.delete)) {\n <natural-fixed-button\n class=\"detail-speed-dial\"\n color=\"warn\"\n icon=\"delete_forever\"\n i18n-matTooltip\n matTooltip=\"Supprimer d\u00E9finitivement\"\n matTooltipPosition=\"left\"\n [disabled]=\"form.disabled\"\n (click)=\"clickDelete()\"\n />\n}\n", styles: [""], dependencies: [{ kind: "component", type: NaturalFixedButtonComponent, selector: "natural-fixed-button", inputs: ["icon", "link", "color", "disabled"] }, { kind: "
|
|
9136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", 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 class=\"detail-speed-dial\"\n icon=\"save\"\n [disabled]=\"form.disabled\"\n [color]=\"form.valid ? 'accent' : 'warn'\"\n (click)=\"clickCreate()\"\n />\n}\n\n@if (!isCreation && (!model.permissions || model.permissions.delete)) {\n <natural-fixed-button\n class=\"detail-speed-dial\"\n color=\"warn\"\n icon=\"delete_forever\"\n i18n-matTooltip\n matTooltip=\"Supprimer d\u00E9finitivement\"\n matTooltipPosition=\"left\"\n [disabled]=\"form.disabled\"\n (click)=\"clickDelete()\"\n />\n}\n", styles: [""], dependencies: [{ kind: "component", type: NaturalFixedButtonComponent, selector: "natural-fixed-button", inputs: ["icon", "link", "color", "disabled"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
9375
9137
|
}
|
|
9376
9138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalFixedButtonDetailComponent, decorators: [{
|
|
9377
9139
|
type: Component,
|
|
9378
|
-
args: [{ selector: 'natural-fixed-button-detail', imports: [NaturalFixedButtonComponent,
|
|
9140
|
+
args: [{ selector: 'natural-fixed-button-detail', imports: [NaturalFixedButtonComponent, MatTooltip], template: "@if (isCreation) {\n <natural-fixed-button\n class=\"detail-speed-dial\"\n icon=\"save\"\n [disabled]=\"form.disabled\"\n [color]=\"form.valid ? 'accent' : 'warn'\"\n (click)=\"clickCreate()\"\n />\n}\n\n@if (!isCreation && (!model.permissions || model.permissions.delete)) {\n <natural-fixed-button\n class=\"detail-speed-dial\"\n color=\"warn\"\n icon=\"delete_forever\"\n i18n-matTooltip\n matTooltip=\"Supprimer d\u00E9finitivement\"\n matTooltipPosition=\"left\"\n [disabled]=\"form.disabled\"\n (click)=\"clickDelete()\"\n />\n}\n" }]
|
|
9379
9141
|
}], ctorParameters: () => [], propDecorators: { model: [{
|
|
9380
9142
|
type: Input,
|
|
9381
9143
|
args: [{ required: true }]
|
|
@@ -9400,7 +9162,7 @@ class NaturalHierarchicSelectorDialogComponent {
|
|
|
9400
9162
|
searchSelectionsOutput;
|
|
9401
9163
|
constructor() {
|
|
9402
9164
|
const data = inject(MAT_DIALOG_DATA);
|
|
9403
|
-
this.config = defaults(data, { multiple: true
|
|
9165
|
+
this.config = defaults(data, { multiple: true });
|
|
9404
9166
|
this.searchSelectionsOutput = this.config.searchSelections;
|
|
9405
9167
|
}
|
|
9406
9168
|
close(selected) {
|
|
@@ -9411,11 +9173,11 @@ class NaturalHierarchicSelectorDialogComponent {
|
|
|
9411
9173
|
this.dialogRef.close(result);
|
|
9412
9174
|
}
|
|
9413
9175
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalHierarchicSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9414
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", 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 [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [
|
|
9176
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", 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 [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [allowSelectAll]=\"config.allowSelectAll ?? false\"\n [searchFacets]=\"config.searchFacets ?? []\"\n [searchSelections]=\"config.searchSelections ?? []\"\n (selectionChange)=\"config.hierarchicSelection = $event\"\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 color=\"primary\" mat-raised-button (click)=\"close(config.hierarchicSelection)\"\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", "filters", "searchFacets", "searchSelections", "allowSelectAll"], outputs: ["searchSelectionChange", "selectionChange"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
|
|
9415
9177
|
}
|
|
9416
9178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalHierarchicSelectorDialogComponent, decorators: [{
|
|
9417
9179
|
type: Component,
|
|
9418
|
-
args: [{ imports: [MatDialogModule, NaturalHierarchicSelectorComponent,
|
|
9180
|
+
args: [{ imports: [MatDialogModule, NaturalHierarchicSelectorComponent, MatButton], template: "<h2 i18n mat-dialog-title>S\u00E9lection</h2>\n\n<mat-dialog-content>\n <natural-hierarchic-selector\n [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [allowSelectAll]=\"config.allowSelectAll ?? false\"\n [searchFacets]=\"config.searchFacets ?? []\"\n [searchSelections]=\"config.searchSelections ?? []\"\n (selectionChange)=\"config.hierarchicSelection = $event\"\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 color=\"primary\" mat-raised-button (click)=\"close(config.hierarchicSelection)\"\n ><span i18n>Valider</span>\n </button>\n</mat-dialog-actions>\n" }]
|
|
9419
9181
|
}], ctorParameters: () => [] });
|
|
9420
9182
|
|
|
9421
9183
|
class NaturalHierarchicSelectorDialogService {
|
|
@@ -9899,7 +9661,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
9899
9661
|
type: Component,
|
|
9900
9662
|
args: [{
|
|
9901
9663
|
selector: 'natural-panels',
|
|
9902
|
-
standalone: true,
|
|
9903
9664
|
template: '',
|
|
9904
9665
|
}]
|
|
9905
9666
|
}], ctorParameters: () => [] });
|
|
@@ -10114,19 +9875,29 @@ class NaturalRelationsComponent {
|
|
|
10114
9875
|
return hierarchicSelectorConfig.find(c => !!c.selectableAtKey)?.selectableAtKey;
|
|
10115
9876
|
}
|
|
10116
9877
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalRelationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10117
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalRelationsComponent, isStandalone: true, selector: "natural-relations", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: false, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, autocompleteSelectorFilter: { classPropertyName: "autocompleteSelectorFilter", publicName: "autocompleteSelectorFilter", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, main: { classPropertyName: "main", publicName: "main", isSignal: false, isRequired: true, transformFunction: null }, hierarchicSelectorFilters: { classPropertyName: "hierarchicSelectorFilters", publicName: "hierarchicSelectorFilters", isSignal: true, isRequired: false, transformFunction: null }, hierarchicSelectorConfig: { classPropertyName: "hierarchicSelectorConfig", publicName: "hierarchicSelectorConfig", isSignal: true, isRequired: false, transformFunction: null }, otherName: { classPropertyName: "otherName", publicName: "otherName", isSignal: false, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: false, isRequired: false, transformFunction: null }, sorting: { classPropertyName: "sorting", publicName: "sorting", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "select", first: true, predicate: NaturalSelectComponent, descendants: true, isSignal: 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 class=\"natural-row-click\" mat-table [dataSource]=\"dataSource\">\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 @let customTemplate = itemTemplate();\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"customTemplate ? customTemplate : 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 color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n [disabled]=\"removing.has(element)\"\n (click)=\"removeRelation(element)\"\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 [length]=\"dataSource.data.length || 0\"\n [pageIndex]=\"dataSource.data.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource.data.pageSize || 0\"\n (page)=\"pagination($event)\"\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 class=\"loading\" mode=\"indeterminate\" [diameter]=\"40\" />\n }\n</div>\n\n@if (!disabled) {\n @if (hierarchicSelectorConfig()) {\n <div>\n <button color=\"primary\" mat-flat-button (click)=\"openNaturalHierarchicSelector()\">{{\n placeholder()\n }}</button>\n </div>\n } @else {\n <natural-select\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter()\"\n [placeholder]=\"placeholder()\"\n [service]=\"service\"\n [showIcon]=\"false\"\n (selectionChange)=\"addRelations([$event])\"\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: "
|
|
9878
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalRelationsComponent, isStandalone: true, selector: "natural-relations", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: false, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, autocompleteSelectorFilter: { classPropertyName: "autocompleteSelectorFilter", publicName: "autocompleteSelectorFilter", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, main: { classPropertyName: "main", publicName: "main", isSignal: false, isRequired: true, transformFunction: null }, hierarchicSelectorFilters: { classPropertyName: "hierarchicSelectorFilters", publicName: "hierarchicSelectorFilters", isSignal: true, isRequired: false, transformFunction: null }, hierarchicSelectorConfig: { classPropertyName: "hierarchicSelectorConfig", publicName: "hierarchicSelectorConfig", isSignal: true, isRequired: false, transformFunction: null }, otherName: { classPropertyName: "otherName", publicName: "otherName", isSignal: false, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: false, isRequired: false, transformFunction: null }, sorting: { classPropertyName: "sorting", publicName: "sorting", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "select", first: true, predicate: NaturalSelectComponent, descendants: true, isSignal: 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 class=\"natural-row-click\" mat-table [dataSource]=\"dataSource\">\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 @let customTemplate = itemTemplate();\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"customTemplate ? customTemplate : 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 color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n [disabled]=\"removing.has(element)\"\n (click)=\"removeRelation(element)\"\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 [length]=\"dataSource.data.length || 0\"\n [pageIndex]=\"dataSource.data.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource.data.pageSize || 0\"\n (page)=\"pagination($event)\"\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 class=\"loading\" mode=\"indeterminate\" [diameter]=\"40\" />\n }\n</div>\n\n@if (!disabled) {\n @if (hierarchicSelectorConfig()) {\n <div>\n <button color=\"primary\" mat-flat-button (click)=\"openNaturalHierarchicSelector()\">{{\n placeholder()\n }}</button>\n </div>\n } @else {\n <natural-select\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter()\"\n [placeholder]=\"placeholder()\"\n [service]=\"service\"\n [showIcon]=\"false\"\n (selectionChange)=\"addRelations([$event])\"\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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: 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", "pageSize", "disabled"] }] });
|
|
10118
9879
|
}
|
|
10119
9880
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalRelationsComponent, decorators: [{
|
|
10120
9881
|
type: Component,
|
|
10121
9882
|
args: [{ selector: 'natural-relations', imports: [
|
|
10122
|
-
|
|
10123
|
-
|
|
10124
|
-
|
|
10125
|
-
|
|
10126
|
-
|
|
9883
|
+
NgTemplateOutlet,
|
|
9884
|
+
MatTable,
|
|
9885
|
+
MatHeaderCellDef,
|
|
9886
|
+
MatHeaderRowDef,
|
|
9887
|
+
MatColumnDef,
|
|
9888
|
+
MatCellDef,
|
|
9889
|
+
MatRowDef,
|
|
9890
|
+
MatHeaderCell,
|
|
9891
|
+
MatCell,
|
|
9892
|
+
MatHeaderRow,
|
|
9893
|
+
MatRow,
|
|
9894
|
+
MatButton,
|
|
9895
|
+
MatIconButton,
|
|
9896
|
+
MatTooltip,
|
|
9897
|
+
MatIcon,
|
|
10127
9898
|
NaturalIconDirective,
|
|
10128
|
-
|
|
10129
|
-
|
|
9899
|
+
MatPaginator,
|
|
9900
|
+
MatProgressSpinner,
|
|
10130
9901
|
NaturalSelectComponent,
|
|
10131
9902
|
], template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n <table class=\"natural-row-click\" mat-table [dataSource]=\"dataSource\">\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 @let customTemplate = itemTemplate();\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"customTemplate ? customTemplate : 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 color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n [disabled]=\"removing.has(element)\"\n (click)=\"removeRelation(element)\"\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 [length]=\"dataSource.data.length || 0\"\n [pageIndex]=\"dataSource.data.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource.data.pageSize || 0\"\n (page)=\"pagination($event)\"\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 class=\"loading\" mode=\"indeterminate\" [diameter]=\"40\" />\n }\n</div>\n\n@if (!disabled) {\n @if (hierarchicSelectorConfig()) {\n <div>\n <button color=\"primary\" mat-flat-button (click)=\"openNaturalHierarchicSelector()\">{{\n placeholder()\n }}</button>\n </div>\n } @else {\n <natural-select\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter()\"\n [placeholder]=\"placeholder()\"\n [service]=\"service\"\n [showIcon]=\"false\"\n (selectionChange)=\"addRelations([$event])\"\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"] }]
|
|
10132
9903
|
}], propDecorators: { service: [{
|
|
@@ -10176,11 +9947,21 @@ class NaturalSelectEnumComponent extends AbstractSelect {
|
|
|
10176
9947
|
throw new Error('This should never be called');
|
|
10177
9948
|
}
|
|
10178
9949
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSelectEnumComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10179
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSelectEnumComponent, isStandalone: true, selector: "natural-select-enum", inputs: { enumName: { classPropertyName: "enumName", publicName: "enumName", isSignal: true, isRequired: true, transformFunction: null }, nullLabel: { classPropertyName: "nullLabel", publicName: "nullLabel", isSignal: false, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n <mat-select\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n [multiple]=\"multiple()\"\n (selectionChange)=\"propagateValue($event.value)\"\n (blur)=\"onBlur()\"\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 } @else if (error) {\n <mat-error>{{ error }}</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "
|
|
9950
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSelectEnumComponent, isStandalone: true, selector: "natural-select-enum", inputs: { enumName: { classPropertyName: "enumName", publicName: "enumName", isSignal: true, isRequired: true, transformFunction: null }, nullLabel: { classPropertyName: "nullLabel", publicName: "nullLabel", isSignal: false, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n <mat-select\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n [multiple]=\"multiple()\"\n (selectionChange)=\"propagateValue($event.value)\"\n (blur)=\"onBlur()\"\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 } @else if (error) {\n <mat-error>{{ error }}</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
10180
9951
|
}
|
|
10181
9952
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSelectEnumComponent, decorators: [{
|
|
10182
9953
|
type: Component,
|
|
10183
|
-
args: [{ selector: 'natural-select-enum', imports: [
|
|
9954
|
+
args: [{ selector: 'natural-select-enum', imports: [
|
|
9955
|
+
MatFormField,
|
|
9956
|
+
MatLabel,
|
|
9957
|
+
MatError,
|
|
9958
|
+
MatHint,
|
|
9959
|
+
MatSelect,
|
|
9960
|
+
FormsModule,
|
|
9961
|
+
ReactiveFormsModule,
|
|
9962
|
+
AsyncPipe,
|
|
9963
|
+
MatOption,
|
|
9964
|
+
], template: "<mat-form-field [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n <mat-select\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n [multiple]=\"multiple()\"\n (selectionChange)=\"propagateValue($event.value)\"\n (blur)=\"onBlur()\"\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 } @else if (error) {\n <mat-error>{{ error }}</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
|
|
10184
9965
|
}], propDecorators: { nullLabel: [{
|
|
10185
9966
|
type: Input
|
|
10186
9967
|
}], optionDisabled: [{
|
|
@@ -10302,19 +10083,25 @@ class NaturalSelectHierarchicComponent extends AbstractSelect {
|
|
|
10302
10083
|
return this.config?.find(c => !!c.selectableAtKey)?.selectableAtKey;
|
|
10303
10084
|
}
|
|
10304
10085
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSelectHierarchicComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10305
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSelectHierarchicComponent, isStandalone: true, selector: "natural-select-hierarchic", inputs: { selectLabel: { classPropertyName: "selectLabel", publicName: "selectLabel", isSignal: false, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: false, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n />\n\n <!-- Meta data -->\n @if (showIcon()) {\n <mat-icon matIconPrefix [naturalIcon]=\"icon()\" />\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 mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n (click)=\"clear(); $event.stopPropagation()\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\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 } @else if (error) {\n <mat-error>{{ error }}</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 color=\"primary\" mat-flat-button (click)=\"openDialog()\">{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button color=\"warn\" mat-button (click)=\"clear()\">{{ 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: "
|
|
10086
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: NaturalSelectHierarchicComponent, isStandalone: true, selector: "natural-select-hierarchic", inputs: { selectLabel: { classPropertyName: "selectLabel", publicName: "selectLabel", isSignal: false, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: false, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n />\n\n <!-- Meta data -->\n @if (showIcon()) {\n <mat-icon matIconPrefix [naturalIcon]=\"icon()\" />\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 mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n (click)=\"clear(); $event.stopPropagation()\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\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 } @else if (error) {\n <mat-error>{{ error }}</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 color=\"primary\" mat-flat-button (click)=\"openDialog()\">{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button color=\"warn\" mat-button (click)=\"clear()\">{{ 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: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: 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"] }] });
|
|
10306
10087
|
}
|
|
10307
10088
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSelectHierarchicComponent, decorators: [{
|
|
10308
10089
|
type: Component,
|
|
10309
10090
|
args: [{ selector: 'natural-select-hierarchic', imports: [
|
|
10310
|
-
|
|
10311
|
-
|
|
10091
|
+
MatFormField,
|
|
10092
|
+
MatLabel,
|
|
10093
|
+
MatError,
|
|
10094
|
+
MatHint,
|
|
10095
|
+
MatPrefix,
|
|
10096
|
+
MatSuffix,
|
|
10097
|
+
MatInput,
|
|
10312
10098
|
FormsModule,
|
|
10313
10099
|
ReactiveFormsModule,
|
|
10314
|
-
|
|
10100
|
+
MatIcon,
|
|
10315
10101
|
NaturalIconDirective,
|
|
10316
|
-
|
|
10317
|
-
|
|
10102
|
+
MatButton,
|
|
10103
|
+
MatIconButton,
|
|
10104
|
+
MatTooltip,
|
|
10318
10105
|
RouterLink,
|
|
10319
10106
|
], template: "<mat-form-field [subscriptSizing]=\"subscriptSizing()\">\n <mat-label>{{ placeholder() }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n />\n\n <!-- Meta data -->\n @if (showIcon()) {\n <mat-icon matIconPrefix [naturalIcon]=\"icon()\" />\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 mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n (click)=\"clear(); $event.stopPropagation()\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\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 } @else if (error) {\n <mat-error>{{ error }}</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 color=\"primary\" mat-flat-button (click)=\"openDialog()\">{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button color=\"warn\" mat-button (click)=\"clear()\">{{ 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"] }]
|
|
10320
10107
|
}], propDecorators: { selectLabel: [{
|
|
@@ -10570,7 +10357,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
10570
10357
|
type: Component,
|
|
10571
10358
|
args: [{
|
|
10572
10359
|
selector: 'natural-sidenav',
|
|
10573
|
-
standalone: true,
|
|
10574
10360
|
template: '<ng-content />',
|
|
10575
10361
|
}]
|
|
10576
10362
|
}] });
|
|
@@ -10634,11 +10420,11 @@ class NaturalSidenavContainerComponent {
|
|
|
10634
10420
|
this.sidenavService.toggleMinimized();
|
|
10635
10421
|
}
|
|
10636
10422
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSidenavContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10637
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.0", type: NaturalSidenavContainerComponent, isStandalone: true, selector: "natural-sidenav-container", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, mobileAutoClose: { classPropertyName: "mobileAutoClose", publicName: "mobileAutoClose", isSignal: true, isRequired: false, transformFunction: null }, minimizedWidth: { classPropertyName: "minimizedWidth", publicName: "minimizedWidth", isSignal: true, isRequired: false, transformFunction: null }, noScroll: { classPropertyName: "noScroll", publicName: "noScroll", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.no-scroll": "this.noScroll" } }, providers: [NaturalSidenavService], viewQueries: [{ propertyName: "menuSidenav", first: true, predicate: MatSidenav, descendants: true, isSignal: true }], ngImport: i0, template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [class.menuMinimized]=\"sidenavService.isMinimized\"\n [class.modeSide]=\"sidenavService.activeMode === 'side'\"\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: "
|
|
10423
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.0", type: NaturalSidenavContainerComponent, isStandalone: true, selector: "natural-sidenav-container", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, mobileAutoClose: { classPropertyName: "mobileAutoClose", publicName: "mobileAutoClose", isSignal: true, isRequired: false, transformFunction: null }, minimizedWidth: { classPropertyName: "minimizedWidth", publicName: "minimizedWidth", isSignal: true, isRequired: false, transformFunction: null }, noScroll: { classPropertyName: "noScroll", publicName: "noScroll", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.no-scroll": "this.noScroll" } }, providers: [NaturalSidenavService], viewQueries: [{ propertyName: "menuSidenav", first: true, predicate: MatSidenav, descendants: true, isSignal: true }], ngImport: i0, template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [class.menuMinimized]=\"sidenavService.isMinimized\"\n [class.modeSide]=\"sidenavService.activeMode === 'side'\"\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: "component", type: MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: MatSidenavContent, selector: "mat-sidenav-content" }] });
|
|
10638
10424
|
}
|
|
10639
10425
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSidenavContainerComponent, decorators: [{
|
|
10640
10426
|
type: Component,
|
|
10641
|
-
args: [{ selector: 'natural-sidenav-container', imports: [
|
|
10427
|
+
args: [{ selector: 'natural-sidenav-container', imports: [MatSidenav, MatSidenavContainer, MatSidenavContent], providers: [NaturalSidenavService], template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [class.menuMinimized]=\"sidenavService.isMinimized\"\n [class.modeSide]=\"sidenavService.activeMode === 'side'\"\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"] }]
|
|
10642
10428
|
}], propDecorators: { noScroll: [{
|
|
10643
10429
|
type: HostBinding,
|
|
10644
10430
|
args: ['attr.no-scroll']
|
|
@@ -10652,7 +10438,7 @@ class NaturalSidenavContentComponent {
|
|
|
10652
10438
|
}
|
|
10653
10439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalSidenavContentComponent, decorators: [{
|
|
10654
10440
|
type: Component,
|
|
10655
|
-
args: [{ selector: 'natural-sidenav-content',
|
|
10441
|
+
args: [{ selector: 'natural-sidenav-content', template: '<ng-content />', styles: [":host{display:flex;flex:1;flex-direction:column;overflow:auto}\n"] }]
|
|
10656
10442
|
}] });
|
|
10657
10443
|
|
|
10658
10444
|
/*
|
|
@@ -11019,11 +10805,11 @@ class NaturalAvatarComponent {
|
|
|
11019
10805
|
}
|
|
11020
10806
|
}
|
|
11021
10807
|
</div>
|
|
11022
|
-
`, 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: "
|
|
10808
|
+
`, 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: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11023
10809
|
}
|
|
11024
10810
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NaturalAvatarComponent, decorators: [{
|
|
11025
10811
|
type: Component,
|
|
11026
|
-
args: [{ selector: 'natural-avatar', imports: [
|
|
10812
|
+
args: [{ selector: 'natural-avatar', imports: [NgStyle, AsyncPipe], template: `
|
|
11027
10813
|
@let source = currentSource();
|
|
11028
10814
|
<div class="avatar-container" [style.height.px]="size()" [style.width.px]="size()">
|
|
11029
10815
|
@if (source && source?.isTextual()) {
|
|
@@ -11293,7 +11079,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
|
|
|
11293
11079
|
type: Directive,
|
|
11294
11080
|
args: [{
|
|
11295
11081
|
selector: '[naturalHttpPrefix]',
|
|
11296
|
-
standalone: true,
|
|
11297
11082
|
}]
|
|
11298
11083
|
}], propDecorators: { httpize: [{
|
|
11299
11084
|
type: HostListener,
|
|
@@ -11359,5 +11144,5 @@ function graphqlQuerySigner(key) {
|
|
|
11359
11144
|
* Generated bundle index. Do not edit.
|
|
11360
11145
|
*/
|
|
11361
11146
|
|
|
11362
|
-
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, NetworkActivityService, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, activityInterceptor, available, cancellableTimeout, cloneDeepButSkipFile, collectErrors, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, graphqlQuerySigner, hasFilesAndProcessDate, ifValid, integer, isFile, localStorageFactory, localStorageProvider, makePlural, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, onHistoryEvent, possibleComparableOperators, provideErrorHandler, provideIcons, providePanels, provideSeo, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, rgbToHex, sessionStorageFactory, sessionStorageProvider, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, upperCaseFirstLetter, urlValidator, validTlds, validateAllFormControls, validateColumns, validatePagination, validateSorting, wrapLike, wrapPrefix, wrapSuffix };
|
|
11147
|
+
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, NetworkActivityService, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, activityInterceptor, available, cancellableTimeout, cloneDeepButSkipFile, collectErrors, commonImageMimeTypes, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, graphqlQuerySigner, hasFilesAndProcessDate, ifValid, integer, isFile, localStorageFactory, localStorageProvider, makePlural, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, onHistoryEvent, possibleComparableOperators, provideErrorHandler, provideIcons, providePanels, provideSeo, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, rgbToHex, sessionStorageFactory, sessionStorageProvider, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, upperCaseFirstLetter, urlValidator, validTlds, validateAllFormControls, validateColumns, validatePagination, validateSorting, wrapLike, wrapPrefix, wrapSuffix };
|
|
11363
11148
|
//# sourceMappingURL=ecodev-natural.mjs.map
|