@ecodev/natural 70.0.0 → 70.2.0

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Component, Injectable, DestroyRef, Directive, InjectionToken, ElementRef, viewChild, ViewEncapsulation, Injector, Input, input, PLATFORM_ID, signal, makeEnvironmentProviders, provideAppInitializer, DOCUMENT, computed, effect, output, Pipe, LOCALE_ID, contentChild, TemplateRef, EnvironmentInjector, createEnvironmentInjector, createComponent, runInInjectionContext, forwardRef, ChangeDetectionStrategy, linkedSignal, ErrorHandler, importProvidersFrom } from '@angular/core';
2
+ import { inject, Component, Injectable, DestroyRef, Directive, InjectionToken, ElementRef, viewChild, ViewEncapsulation, Injector, input, Input, PLATFORM_ID, signal, makeEnvironmentProviders, provideAppInitializer, DOCUMENT, computed, effect, output, Pipe, LOCALE_ID, contentChild, TemplateRef, EnvironmentInjector, createEnvironmentInjector, createComponent, runInInjectionContext, forwardRef, ChangeDetectionStrategy, linkedSignal, ErrorHandler, importProvidersFrom } from '@angular/core';
3
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';
@@ -10,7 +10,7 @@ import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
10
10
  import { MatButton, MatIconButton, MatFabButton } from '@angular/material/button';
11
11
  import { Observable, switchMap, take, BehaviorSubject, of, timer, tap, endWith, last, EMPTY, finalize, Subject, merge as merge$1, startWith, first as first$1, takeUntil as takeUntil$1, map as map$1, ReplaySubject, debounceTime, raceWith, mergeMap, shareReplay, catchError, forkJoin, combineLatest, from, fromEvent, filter as filter$1, asyncScheduler, throwError } from 'rxjs';
12
12
  import { takeUntilDestroyed, toSignal, outputFromObservable } from '@angular/core/rxjs-interop';
13
- import { filter, switchMap as switchMap$1, first, map, takeUntil, takeWhile, debounceTime as debounceTime$1, tap as tap$1, shareReplay as shareReplay$1, startWith as startWith$1, distinctUntilChanged, finalize as finalize$1, throttleTime } from 'rxjs/operators';
13
+ import { filter, switchMap as switchMap$1, first, map, takeUntil, tap as tap$1, takeWhile, debounceTime as debounceTime$1, shareReplay as shareReplay$1, startWith as startWith$1, distinctUntilChanged, finalize as finalize$1, throttleTime } from 'rxjs/operators';
14
14
  import { mergeWith, defaultsDeep, pick, defaults, isEmpty, isEqual as isEqual$1 } from 'es-toolkit/compat';
15
15
  import { MatTableDataSource, MatCellDef, MatTable, MatHeaderCellDef, MatHeaderRowDef, MatColumnDef, MatRowDef, MatHeaderCell, MatCell, MatHeaderRow, MatRow } from '@angular/material/table';
16
16
  import { DataSource, SelectionModel } from '@angular/cdk/collections';
@@ -3858,6 +3858,7 @@ class NaturalAbstractList extends NaturalAbstractPanel {
3858
3858
  this.applyForcedVariables(variables);
3859
3859
  }
3860
3860
  }
3861
+ resetSelectionOnChange = input(true, ...(ngDevMode ? [{ debugName: "resetSelectionOnChange" }] : []));
3861
3862
  /**
3862
3863
  * If change, check DocumentsComponent that overrides this function without calling super.ngOnInit().
3863
3864
  */
@@ -4047,9 +4048,11 @@ class NaturalAbstractList extends NaturalAbstractPanel {
4047
4048
  // Here the casting is a bit unfortunate but required because NaturalAbstractNavigableList
4048
4049
  // breaks the data structure convention (by wrapping items in a structure). Ideally we should remove
4049
4050
  // the casting and resolve things in a better way, but that's too much work for now
4050
- return this.service
4051
- .watchAll(this.variablesManager)
4052
- .pipe(takeUntilDestroyed(this.destroyRef));
4051
+ return this.service.watchAll(this.variablesManager).pipe(takeUntilDestroyed(this.destroyRef), tap$1(() => {
4052
+ if (this.resetSelectionOnChange()) {
4053
+ this.selection.clear();
4054
+ }
4055
+ }));
4053
4056
  }
4054
4057
  initFromPersisted() {
4055
4058
  if (!this.persistSearch || this.isPanel) {
@@ -4142,7 +4145,7 @@ class NaturalAbstractList extends NaturalAbstractPanel {
4142
4145
  }
4143
4146
  }
4144
4147
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NaturalAbstractList, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
4145
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: NaturalAbstractList, isStandalone: true, inputs: { persistSearch: "persistSearch", availableColumns: "availableColumns", selectedColumns: "selectedColumns", forcedVariables: "forcedVariables" }, usesInheritance: true, ngImport: i0 });
4148
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: NaturalAbstractList, isStandalone: true, inputs: { persistSearch: { classPropertyName: "persistSearch", publicName: "persistSearch", isSignal: false, isRequired: false, transformFunction: null }, availableColumns: { classPropertyName: "availableColumns", publicName: "availableColumns", isSignal: false, isRequired: false, transformFunction: null }, selectedColumns: { classPropertyName: "selectedColumns", publicName: "selectedColumns", isSignal: false, isRequired: false, transformFunction: null }, forcedVariables: { classPropertyName: "forcedVariables", publicName: "forcedVariables", isSignal: false, isRequired: false, transformFunction: null }, resetSelectionOnChange: { classPropertyName: "resetSelectionOnChange", publicName: "resetSelectionOnChange", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
4146
4149
  }
4147
4150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NaturalAbstractList, decorators: [{
4148
4151
  type: Directive
@@ -4154,7 +4157,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
4154
4157
  type: Input
4155
4158
  }], forcedVariables: [{
4156
4159
  type: Input
4157
- }] } });
4160
+ }], resetSelectionOnChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetSelectionOnChange", required: false }] }] } });
4158
4161
 
4159
4162
  /**
4160
4163
  * This class helps managing a list of paginated items that can be filtered,
@@ -6754,6 +6757,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
6754
6757
  ], template: "<form [formGroup]=\"form\">\n @if (configuration.operators) {\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\" subscriptSizing=\"dynamic\">\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\" [multiple]=\"configuration.multiple\">\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" }]
6755
6758
  }], ctorParameters: () => [] });
6756
6759
 
6760
+ // If you use this to set it to false, then you **MUST** call the init method in your constructor
6761
+ const DO_INIT = new InjectionToken('Must be true', {
6762
+ factory: () => true,
6763
+ });
6757
6764
  class AbstractAssociationSelectComponent {
6758
6765
  configuration;
6759
6766
  renderedValue = new BehaviorSubject('');
@@ -6766,7 +6773,12 @@ class AbstractAssociationSelectComponent {
6766
6773
  value: this.valueCtrl,
6767
6774
  });
6768
6775
  constructor() {
6769
- const data = inject(NATURAL_DROPDOWN_DATA);
6776
+ if (inject(DO_INIT)) {
6777
+ const data = inject(NATURAL_DROPDOWN_DATA);
6778
+ this.init(data);
6779
+ }
6780
+ }
6781
+ init(data) {
6770
6782
  this.configuration = data.configuration;
6771
6783
  // Immediately initValidators and everytime the operator change later
6772
6784
  this.operatorCtrl.valueChanges.pipe(startWith$1(null)).subscribe(() => this.initValidators());
@@ -6823,16 +6835,16 @@ class AbstractAssociationSelectComponent {
6823
6835
  }
6824
6836
  return 'is';
6825
6837
  }
6826
- operatorKeyToCondition(key, values) {
6838
+ operatorKeyToCondition(key, values, extra = {}) {
6827
6839
  switch (key) {
6828
6840
  case 'is':
6829
- return { have: { values: values } };
6841
+ return { have: { values: values, ...extra } };
6830
6842
  case 'isnot':
6831
- return { have: { values: values, not: true } };
6843
+ return { have: { values: values, not: true, ...extra } };
6832
6844
  case 'any':
6833
- return { empty: { not: true } };
6845
+ return { empty: { not: true, ...extra } };
6834
6846
  case 'none':
6835
- return { empty: { not: false } };
6847
+ return { empty: { not: false, ...extra } };
6836
6848
  default:
6837
6849
  throw new Error('Unsupported operator key: ' + key);
6838
6850
  }
@@ -8521,6 +8533,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
8521
8533
  ], template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\" subscriptSizing=\"dynamic\">\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" }]
8522
8534
  }] });
8523
8535
 
8536
+ const possibleWhere = [
8537
+ {
8538
+ key: 'DebitOrCredit',
8539
+ label: $localize `Débit ou crédit`,
8540
+ render: ``,
8541
+ },
8542
+ {
8543
+ key: 'Debit',
8544
+ label: $localize `Débit`,
8545
+ render: $localize `au débit`,
8546
+ },
8547
+ {
8548
+ key: 'Credit',
8549
+ label: $localize `Crédit`,
8550
+ render: $localize `au crédit`,
8551
+ },
8552
+ ];
8553
+ /**
8554
+ * This is a specialized facet for Account model with extra fields specific to the specialized operator on the server side.
8555
+ */
8556
+ class TypeAccountSelectorComponent extends TypeHierarchicSelectorComponent {
8557
+ whereCtrl = new FormControl('DebitOrCredit', {
8558
+ nonNullable: true,
8559
+ validators: Validators.required,
8560
+ });
8561
+ recursiveCtrl = new FormControl(false, {
8562
+ nonNullable: true,
8563
+ validators: Validators.required,
8564
+ });
8565
+ possibleWhere = possibleWhere;
8566
+ constructor() {
8567
+ super();
8568
+ // We can reload extra condition only after calling ou parent constructor
8569
+ const data = inject(NATURAL_DROPDOWN_DATA);
8570
+ this.init(data);
8571
+ this.form.addControl('where', this.whereCtrl);
8572
+ this.form.addControl('recursive', this.recursiveCtrl);
8573
+ this.operatorCtrl.valueChanges
8574
+ .pipe(takeUntilDestroyed(), startWith$1(this.operatorCtrl.value))
8575
+ .subscribe(operator => {
8576
+ if (['is', 'isnot'].includes(operator)) {
8577
+ this.recursiveCtrl.enable();
8578
+ }
8579
+ else {
8580
+ this.recursiveCtrl.setValue(false);
8581
+ this.recursiveCtrl.disable();
8582
+ }
8583
+ });
8584
+ }
8585
+ operatorKeyToCondition(key, values) {
8586
+ return super.operatorKeyToCondition(key, values, {
8587
+ where: this.whereCtrl.value,
8588
+ recursive: this.recursiveCtrl.getRawValue(),
8589
+ });
8590
+ }
8591
+ reloadCondition(condition) {
8592
+ if (condition) {
8593
+ const q = (condition.have ? condition.have : condition.empty);
8594
+ this.recursiveCtrl.setValue(q?.recursive ?? false);
8595
+ this.whereCtrl.setValue(q?.where ?? 'DebitOrCredit');
8596
+ }
8597
+ super.reloadCondition(condition);
8598
+ }
8599
+ getRenderedValue() {
8600
+ const operator = this.operators.find(v => v.key === this.operatorCtrl.value);
8601
+ const where = this.possibleWhere.find(v => v.key === this.whereCtrl.value);
8602
+ if (!operator || !where || !this.isValid()) {
8603
+ return '';
8604
+ }
8605
+ const selection = this.renderValueWithoutOperator();
8606
+ const recursive = this.recursiveCtrl.value ? $localize `(inclut sous-comptes)` : '';
8607
+ const parts = ['is', 'isnot'].includes(operator.key)
8608
+ ? [where.render, operator.label, selection, recursive]
8609
+ : [operator.label, where.render];
8610
+ return parts.filter(v => v).join(' ');
8611
+ }
8612
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TypeAccountSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8613
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: TypeAccountSelectorComponent, isStandalone: true, selector: "ng-component", providers: [
8614
+ {
8615
+ provide: DO_INIT,
8616
+ useValue: false,
8617
+ },
8618
+ ], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 12em; margin-right: 1em\">\n <mat-label i18n>Compte</mat-label>\n <mat-select panelWidth=\"\" [formControl]=\"whereCtrl\">\n @for (item of possibleWhere; 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 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 <mat-checkbox i18n [formControl]=\"recursiveCtrl\">inclure les sous-comptes</mat-checkbox>\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],[formArray],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"] }, { 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"] }] });
8619
+ }
8620
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TypeAccountSelectorComponent, decorators: [{
8621
+ type: Component,
8622
+ args: [{ imports: [
8623
+ FormsModule,
8624
+ ReactiveFormsModule,
8625
+ MatFormField,
8626
+ MatLabel,
8627
+ MatSelect,
8628
+ MatOption,
8629
+ NaturalHierarchicSelectorComponent,
8630
+ MatCheckbox,
8631
+ ], providers: [
8632
+ {
8633
+ provide: DO_INIT,
8634
+ useValue: false,
8635
+ },
8636
+ ], template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 12em; margin-right: 1em\">\n <mat-label i18n>Compte</mat-label>\n <mat-select panelWidth=\"\" [formControl]=\"whereCtrl\">\n @for (item of possibleWhere; 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 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 <mat-checkbox i18n [formControl]=\"recursiveCtrl\">inclure les sous-comptes</mat-checkbox>\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" }]
8637
+ }], ctorParameters: () => [] });
8638
+
8524
8639
  class InvalidWithValueStateMatcher {
8525
8640
  isErrorState(control, form) {
8526
8641
  return (form && form.invalid && (form.value.to || form.value.from)) || control?.invalid;
@@ -11579,5 +11694,5 @@ function graphqlQuerySigner(key) {
11579
11694
  * Generated bundle index. Do not edit.
11580
11695
  */
11581
11696
 
11582
- export { AvatarService, ColorScheme, 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, NaturalColorSchemerComponent, NaturalColumnsPickerComponent, NaturalCompactColorSchemerComponent, NaturalConfirmComponent, NaturalDataSource, NaturalDebounceService, NaturalDetailHeaderComponent, NaturalDialogTriggerComponent, NaturalDropdownRef, NaturalEllipsisPipe, NaturalEnumPipe, NaturalEnumService, NaturalErrorHandler, NaturalErrorMessagePipe, 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, NaturalThemeChangerComponent, NaturalThemeService, NaturalTimeAgoPipe, NetworkActivityService, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, TypedMatCellDef, activityInterceptor, available, cancellableTimeout, cloneDeepButSkipFile, collectErrors, commonImageMimeTypes, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, getNumberRows, getVisibleSelections, graphqlQuerySigner, greaterThan, hasFilesAndProcessDate, ifValid, integer, isAllVisibleSelected, isFile, isPartiallyVisibleSelected, localStorageFactory, localStorageProvider, makePlural, masterToggleVisible, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, nfcCardHex, onHistoryEvent, possibleComparableOperators, possibleNullComparableOperators, provideErrorHandler, provideIcons, providePanels, provideSeo, provideThemes, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, rgbToHex, selectVisible, sessionStorageFactory, sessionStorageProvider, time, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, unselectVisible, upperCaseFirstLetter, url, urlPattern, validTlds, validateAllFormControls, validateColumns, validatePagination, validateSorting, wrapLike, wrapPrefix, wrapSuffix };
11697
+ export { AvatarService, ColorScheme, 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, NaturalColorSchemerComponent, NaturalColumnsPickerComponent, NaturalCompactColorSchemerComponent, NaturalConfirmComponent, NaturalDataSource, NaturalDebounceService, NaturalDetailHeaderComponent, NaturalDialogTriggerComponent, NaturalDropdownRef, NaturalEllipsisPipe, NaturalEnumPipe, NaturalEnumService, NaturalErrorHandler, NaturalErrorMessagePipe, 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, NaturalThemeChangerComponent, NaturalThemeService, NaturalTimeAgoPipe, NetworkActivityService, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeAccountSelectorComponent, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, TypedMatCellDef, activityInterceptor, available, cancellableTimeout, cloneDeepButSkipFile, collectErrors, commonImageMimeTypes, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, getNumberRows, getVisibleSelections, graphqlQuerySigner, greaterThan, hasFilesAndProcessDate, ifValid, integer, isAllVisibleSelected, isFile, isPartiallyVisibleSelected, localStorageFactory, localStorageProvider, makePlural, masterToggleVisible, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, nfcCardHex, onHistoryEvent, possibleComparableOperators, possibleNullComparableOperators, provideErrorHandler, provideIcons, providePanels, provideSeo, provideThemes, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, rgbToHex, selectVisible, sessionStorageFactory, sessionStorageProvider, time, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, unselectVisible, upperCaseFirstLetter, url, urlPattern, validTlds, validateAllFormControls, validateColumns, validatePagination, validateSorting, wrapLike, wrapPrefix, wrapSuffix };
11583
11698
  //# sourceMappingURL=ecodev-natural.mjs.map