@ecodev/natural 53.3.2 → 54.0.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.
- package/esm2022/lib/classes/apollo-utils.mjs +22 -1
- package/esm2022/lib/classes/signing.mjs +36 -0
- package/esm2022/lib/directives/http-prefix.directive.mjs +5 -7
- package/esm2022/lib/modules/dropdown-components/type-boolean/type-boolean.component.mjs +31 -46
- package/esm2022/lib/modules/dropdown-components/type-options/type-options.component.mjs +4 -5
- package/esm2022/public-api.mjs +3 -2
- package/fesm2022/ecodev-natural.mjs +93 -57
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/classes/apollo-utils.d.ts +10 -1
- package/lib/classes/signing.d.ts +7 -0
- package/lib/directives/http-prefix.directive.d.ts +2 -4
- package/lib/modules/dropdown-components/type-boolean/type-boolean.component.d.ts +4 -20
- package/lib/modules/dropdown-components/type-options/type-options.component.d.ts +2 -3
- package/package.json +3 -1
- package/public-api.d.ts +2 -1
|
@@ -37,9 +37,11 @@ import * as i3$1 from '@angular/material/select';
|
|
|
37
37
|
import { MatSelectModule } from '@angular/material/select';
|
|
38
38
|
import * as i3 from '@angular/material/form-field';
|
|
39
39
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
40
|
+
import { ApolloLink, NetworkStatus } from '@apollo/client/core';
|
|
41
|
+
import extractFiles from 'extract-files/extractFiles.mjs';
|
|
42
|
+
import isExtractableFile from 'extract-files/isExtractableFile.mjs';
|
|
40
43
|
import * as i1$4 from 'apollo-angular';
|
|
41
44
|
import { gql } from 'apollo-angular';
|
|
42
|
-
import { NetworkStatus } from '@apollo/client/core';
|
|
43
45
|
import * as i1$6 from '@angular/cdk/layout';
|
|
44
46
|
import { Breakpoints } from '@angular/cdk/layout';
|
|
45
47
|
import * as i6$1 from '@angular/material/tooltip';
|
|
@@ -73,6 +75,7 @@ import * as i2$6 from '@angular/material/sidenav';
|
|
|
73
75
|
import { MatSidenavContainer, MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
|
|
74
76
|
import * as i1$9 from '@angular/common/http';
|
|
75
77
|
import { HttpHeaders } from '@angular/common/http';
|
|
78
|
+
import { HmacSHA256 } from 'crypto-es/lib/sha256';
|
|
76
79
|
|
|
77
80
|
class NaturalAbstractController {
|
|
78
81
|
constructor() {
|
|
@@ -4152,6 +4155,20 @@ function hasFilesAndProcessDate(variables) {
|
|
|
4152
4155
|
function isMutation(query) {
|
|
4153
4156
|
return query.definitions.some(definition => definition.kind === 'OperationDefinition' && definition.operation === 'mutation');
|
|
4154
4157
|
}
|
|
4158
|
+
const naturalExtractFiles = body => extractFiles(body, isExtractableFile);
|
|
4159
|
+
/**
|
|
4160
|
+
* Create an Apollo link that supports batched queries and file uploads.
|
|
4161
|
+
*
|
|
4162
|
+
* File uploads and mutations are never batched.
|
|
4163
|
+
*/
|
|
4164
|
+
function createHttpLink(httpLink, httpBatchLink, options) {
|
|
4165
|
+
// If the query has no file, batch it, otherwise upload only that query
|
|
4166
|
+
return ApolloLink.split(operation => hasFilesAndProcessDate(operation.variables) || isMutation(operation.query), httpLink.create({
|
|
4167
|
+
...options,
|
|
4168
|
+
useMultipart: true,
|
|
4169
|
+
extractFiles: naturalExtractFiles,
|
|
4170
|
+
}), httpBatchLink.create(options));
|
|
4171
|
+
}
|
|
4155
4172
|
|
|
4156
4173
|
/**
|
|
4157
4174
|
* Behave like setTimeout(), but with a mandatory cancel mechanism.
|
|
@@ -8194,56 +8211,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
8194
8211
|
args: [MAT_DATE_FORMATS]
|
|
8195
8212
|
}] }]; } });
|
|
8196
8213
|
|
|
8197
|
-
class
|
|
8198
|
-
constructor(data) {
|
|
8199
|
-
super();
|
|
8200
|
-
this.renderedValue = new BehaviorSubject('');
|
|
8201
|
-
this.formControl = new FormControl(true, { nonNullable: true });
|
|
8202
|
-
this.defaults = {
|
|
8203
|
-
displayWhenActive: '',
|
|
8204
|
-
displayWhenInactive: '',
|
|
8205
|
-
};
|
|
8206
|
-
this.configuration = { ...this.defaults, ...data.configuration };
|
|
8207
|
-
const updateDisplay = (value) => this.renderedValue.next(value ? this.configuration.displayWhenActive : this.configuration.displayWhenInactive);
|
|
8208
|
-
if (data.condition?.equal) {
|
|
8209
|
-
this.formControl.setValue(!!data.condition.equal.value);
|
|
8210
|
-
}
|
|
8211
|
-
// Update rendered value
|
|
8212
|
-
this.formControl.valueChanges.subscribe(value => updateDisplay(value));
|
|
8213
|
-
updateDisplay(this.formControl.value);
|
|
8214
|
-
}
|
|
8215
|
-
getCondition() {
|
|
8216
|
-
if (!this.isValid()) {
|
|
8217
|
-
return {};
|
|
8218
|
-
}
|
|
8219
|
-
return { equal: { value: this.formControl.value } };
|
|
8220
|
-
}
|
|
8221
|
-
/**
|
|
8222
|
-
* Always valid because checked and unchecked are both valid values
|
|
8223
|
-
*/
|
|
8224
|
-
isValid() {
|
|
8225
|
-
return true;
|
|
8226
|
-
}
|
|
8227
|
-
/**
|
|
8228
|
-
* Always dirty because even on dropdown opening, the default value is accepted as intentional. There is no "default/empty" state
|
|
8229
|
-
*/
|
|
8230
|
-
isDirty() {
|
|
8231
|
-
return true;
|
|
8232
|
-
}
|
|
8233
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: TypeBooleanComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: TypeBooleanComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<mat-checkbox [formControl]=\"formControl\">{{ renderedValue.value }}</mat-checkbox>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] }); }
|
|
8235
|
-
}
|
|
8236
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: TypeBooleanComponent, decorators: [{
|
|
8237
|
-
type: Component,
|
|
8238
|
-
args: [{ standalone: true, imports: [FormsModule, ReactiveFormsModule, NgIf, NgFor, MatCheckboxModule], template: "<mat-checkbox [formControl]=\"formControl\">{{ renderedValue.value }}</mat-checkbox>\n" }]
|
|
8239
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
8240
|
-
type: Inject,
|
|
8241
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
8242
|
-
}] }]; } });
|
|
8243
|
-
|
|
8244
|
-
class TypeOptionsComponent extends NaturalAbstractController {
|
|
8214
|
+
class TypeOptionsComponent {
|
|
8245
8215
|
constructor(data, dropdownRef) {
|
|
8246
|
-
|
|
8216
|
+
this.data = data;
|
|
8247
8217
|
this.dropdownRef = dropdownRef;
|
|
8248
8218
|
this.renderedValue = new BehaviorSubject('');
|
|
8249
8219
|
this.formControl = new FormControl({}, { nonNullable: true });
|
|
@@ -8283,7 +8253,7 @@ class TypeOptionsComponent extends NaturalAbstractController {
|
|
|
8283
8253
|
return this.formControl.dirty;
|
|
8284
8254
|
}
|
|
8285
8255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: TypeOptionsComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }, { token: NaturalDropdownRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8286
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: TypeOptionsComponent, isStandalone: true, selector: "ng-component",
|
|
8256
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: TypeOptionsComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-button-toggle-group [formControl]=\"formControl\">\n <mat-button-toggle *ngFor=\"let option of configuration.options\" [value]=\"option\">{{\n option.display\n }}</mat-button-toggle>\n</mat-button-toggle-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i3$4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3$4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: CommonModule }] }); }
|
|
8287
8257
|
}
|
|
8288
8258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: TypeOptionsComponent, decorators: [{
|
|
8289
8259
|
type: Component,
|
|
@@ -8293,6 +8263,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
8293
8263
|
args: [NATURAL_DROPDOWN_DATA]
|
|
8294
8264
|
}] }, { type: NaturalDropdownRef }]; } });
|
|
8295
8265
|
|
|
8266
|
+
class TypeBooleanComponent extends TypeOptionsComponent {
|
|
8267
|
+
constructor(data, dropdownRef) {
|
|
8268
|
+
// Set up options from hardcoded conditions with custom labels from config
|
|
8269
|
+
const configuration = {
|
|
8270
|
+
options: [
|
|
8271
|
+
{
|
|
8272
|
+
display: data.configuration.displayWhenActive,
|
|
8273
|
+
condition: { equal: { value: true } },
|
|
8274
|
+
},
|
|
8275
|
+
{
|
|
8276
|
+
display: data.configuration.displayWhenInactive,
|
|
8277
|
+
condition: { equal: { value: false } },
|
|
8278
|
+
},
|
|
8279
|
+
],
|
|
8280
|
+
};
|
|
8281
|
+
const typeOptionsData = {
|
|
8282
|
+
...data,
|
|
8283
|
+
...{ configuration: configuration },
|
|
8284
|
+
};
|
|
8285
|
+
super(typeOptionsData, dropdownRef);
|
|
8286
|
+
}
|
|
8287
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: TypeBooleanComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }, { token: NaturalDropdownRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8288
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: TypeBooleanComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<mat-button-toggle-group [formControl]=\"formControl\">\n <mat-button-toggle *ngFor=\"let option of configuration.options\" [value]=\"option\">{{\n option.display\n }}</mat-button-toggle>\n</mat-button-toggle-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i3$4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3$4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: CommonModule }] }); }
|
|
8289
|
+
}
|
|
8290
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: TypeBooleanComponent, decorators: [{
|
|
8291
|
+
type: Component,
|
|
8292
|
+
args: [{ standalone: true, imports: [FormsModule, ReactiveFormsModule, NgIf, NgFor, MatButtonToggleModule, CommonModule], template: "<mat-button-toggle-group [formControl]=\"formControl\">\n <mat-button-toggle *ngFor=\"let option of configuration.options\" [value]=\"option\">{{\n option.display\n }}</mat-button-toggle>\n</mat-button-toggle-group>\n" }]
|
|
8293
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
8294
|
+
type: Inject,
|
|
8295
|
+
args: [NATURAL_DROPDOWN_DATA]
|
|
8296
|
+
}] }, { type: NaturalDropdownRef }]; } });
|
|
8297
|
+
|
|
8296
8298
|
/*
|
|
8297
8299
|
* Public API Surface of natural-search dropdown components
|
|
8298
8300
|
*/
|
|
@@ -11148,7 +11150,7 @@ function provideErrorHandler(url, extraService) {
|
|
|
11148
11150
|
*/
|
|
11149
11151
|
|
|
11150
11152
|
/**
|
|
11151
|
-
* Need to add
|
|
11153
|
+
* Need to add http:// prefix if we don't have prefix already AND we don't have part of it
|
|
11152
11154
|
*/
|
|
11153
11155
|
function ensureHttpPrefix(value) {
|
|
11154
11156
|
if (!value) {
|
|
@@ -11166,9 +11168,8 @@ function ensureHttpPrefix(value) {
|
|
|
11166
11168
|
/**
|
|
11167
11169
|
* This directive only supports ReactiveForms due to ngModel/ngControl encapsulation and changes emissions.
|
|
11168
11170
|
*/
|
|
11169
|
-
class NaturalHttpPrefixDirective
|
|
11171
|
+
class NaturalHttpPrefixDirective {
|
|
11170
11172
|
constructor() {
|
|
11171
|
-
super();
|
|
11172
11173
|
this.naturalHttpPrefix = null;
|
|
11173
11174
|
}
|
|
11174
11175
|
httpize($event) {
|
|
@@ -11180,7 +11181,7 @@ class NaturalHttpPrefixDirective extends NaturalAbstractController {
|
|
|
11180
11181
|
}
|
|
11181
11182
|
}
|
|
11182
11183
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalHttpPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11183
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.2", type: NaturalHttpPrefixDirective, isStandalone: true, selector: "[naturalHttpPrefix]", inputs: { naturalHttpPrefix: "naturalHttpPrefix" }, host: { listeners: { "ngModelChange": "httpize($event)" } },
|
|
11184
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.2", type: NaturalHttpPrefixDirective, isStandalone: true, selector: "[naturalHttpPrefix]", inputs: { naturalHttpPrefix: "naturalHttpPrefix" }, host: { listeners: { "ngModelChange": "httpize($event)" } }, ngImport: i0 }); }
|
|
11184
11185
|
}
|
|
11185
11186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalHttpPrefixDirective, decorators: [{
|
|
11186
11187
|
type: Directive,
|
|
@@ -11188,7 +11189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
11188
11189
|
selector: '[naturalHttpPrefix]',
|
|
11189
11190
|
standalone: true,
|
|
11190
11191
|
}]
|
|
11191
|
-
}],
|
|
11192
|
+
}], propDecorators: { naturalHttpPrefix: [{
|
|
11192
11193
|
type: Input
|
|
11193
11194
|
}], httpize: [{
|
|
11194
11195
|
type: HostListener,
|
|
@@ -11204,11 +11205,46 @@ const naturalProviders = [
|
|
|
11204
11205
|
localStorageProvider,
|
|
11205
11206
|
];
|
|
11206
11207
|
|
|
11208
|
+
function getOperations(req) {
|
|
11209
|
+
if (req.body instanceof FormData) {
|
|
11210
|
+
const operations = req.body.get('operations');
|
|
11211
|
+
if (typeof operations !== 'string') {
|
|
11212
|
+
throw new Error('Cannot sign a GraphQL query that is using FormData but that is missing the key `operations`');
|
|
11213
|
+
}
|
|
11214
|
+
return operations;
|
|
11215
|
+
}
|
|
11216
|
+
else {
|
|
11217
|
+
return JSON.stringify(req.body);
|
|
11218
|
+
}
|
|
11219
|
+
}
|
|
11220
|
+
/**
|
|
11221
|
+
* Sign all HTTP POST requests that are GraphQL queries against `/graphql` endpoint with a custom signature.
|
|
11222
|
+
*
|
|
11223
|
+
* The server will validate the signature before executing the GraphQL query.
|
|
11224
|
+
*/
|
|
11225
|
+
function graphqlQuerySigner(key) {
|
|
11226
|
+
return (req, next) => {
|
|
11227
|
+
const mustSign = req.method === 'POST' && req.url.match(/\/graphql(\?|$)/);
|
|
11228
|
+
if (!mustSign) {
|
|
11229
|
+
return next(req);
|
|
11230
|
+
}
|
|
11231
|
+
const operations = getOperations(req);
|
|
11232
|
+
const timestamp = Math.round(Date.now() / 1000);
|
|
11233
|
+
const payload = timestamp + operations;
|
|
11234
|
+
const hash = HmacSHA256(payload, key).toString();
|
|
11235
|
+
const header = `v1.${timestamp}.${hash}`;
|
|
11236
|
+
const signedRequest = req.clone({
|
|
11237
|
+
headers: req.headers.set('Authorization', header),
|
|
11238
|
+
});
|
|
11239
|
+
return next(signedRequest);
|
|
11240
|
+
};
|
|
11241
|
+
}
|
|
11242
|
+
|
|
11207
11243
|
// Load `$localize` onto the global scope - to be able to use that function to translate strings in components/services.
|
|
11208
11244
|
|
|
11209
11245
|
/**
|
|
11210
11246
|
* Generated bundle index. Do not edit.
|
|
11211
11247
|
*/
|
|
11212
11248
|
|
|
11213
|
-
export { AvatarService, LOCAL_STORAGE, NATURAL_DROPDOWN_DATA, NATURAL_ICONS_CONFIG, NATURAL_PERSISTENCE_VALIDATOR, NATURAL_SEO_CONFIG, NaturalAbstractController, NaturalAbstractDetail, NaturalAbstractEditableList, NaturalAbstractList, NaturalAbstractModelService, NaturalAbstractNavigableList, NaturalAbstractPanel, NaturalAlertService, NaturalAvatarComponent, 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, NaturalSwissDatePipe, NaturalSwissParsingDateAdapter, NaturalTableButtonComponent, NaturalTimeAgoPipe, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, available, cancellableTimeout, cleanSameValues, collectErrors, copyToClipboard, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor,
|
|
11249
|
+
export { AvatarService, LOCAL_STORAGE, NATURAL_DROPDOWN_DATA, NATURAL_ICONS_CONFIG, NATURAL_PERSISTENCE_VALIDATOR, NATURAL_SEO_CONFIG, NaturalAbstractController, NaturalAbstractDetail, NaturalAbstractEditableList, NaturalAbstractList, NaturalAbstractModelService, NaturalAbstractNavigableList, NaturalAbstractPanel, NaturalAlertService, NaturalAvatarComponent, 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, NaturalSwissDatePipe, NaturalSwissParsingDateAdapter, NaturalTableButtonComponent, NaturalTimeAgoPipe, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, available, cancellableTimeout, cleanSameValues, collectErrors, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, graphqlQuerySigner, ifValid, integer, localStorageFactory, localStorageProvider, lowerCaseFirstLetter, makePlural, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, provideErrorHandler, provideIcons, providePanels, provideSeo, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, sessionStorageFactory, sessionStorageProvider, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, upperCaseFirstLetter, urlValidator, validTlds, validateAllFormControls, wrapLike };
|
|
11214
11250
|
//# sourceMappingURL=ecodev-natural.mjs.map
|