@mediusinc/mng-commons 5.2.0-rc.0 → 5.2.0-rc.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/core/components/notification/notification-wrapper.component.d.ts +3 -1
- package/core/error/error-helpers.d.ts +5 -0
- package/core/error/error.model.d.ts +6 -0
- package/core/helpers/route.d.ts +1 -1
- package/core/models/menu.model.d.ts +2 -1
- package/core/router/route-builder.d.ts +0 -1
- package/core/security/permission.service.d.ts +13 -5
- package/core/security/permissions.model.d.ts +27 -2
- package/esm2022/core/components/notification/notification-wrapper.component.mjs +6 -5
- package/esm2022/core/error/error-helpers.mjs +8 -1
- package/esm2022/core/error/error.model.mjs +2 -1
- package/esm2022/core/models/menu.model.mjs +1 -1
- package/esm2022/core/router/route-builder.mjs +1 -24
- package/esm2022/core/rxjs/map-data-list-result-operator.mjs +4 -1
- package/esm2022/core/security/permission.guard.mjs +2 -2
- package/esm2022/core/security/permission.service.mjs +65 -15
- package/esm2022/core/security/permissions.model.mjs +1 -1
- package/esm2022/form/components/date-range/date-range.component.mjs +9 -3
- package/esm2022/form/components/number-range/number-range.component.mjs +106 -0
- package/esm2022/form/index.mjs +2 -1
- package/esm2022/model/descriptors/enum.descriptor.mjs +1 -1
- package/esm2022/model/helpers/i18n.mjs +2 -2
- package/esm2022/table/api/descriptors/column.descriptor.mjs +8 -19
- package/esm2022/table/api/descriptors/table.descriptor.mjs +13 -9
- package/esm2022/table/api/helpers/table-descriptor-helpers.mjs +3 -2
- package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +72 -10
- package/esm2022/table/helpers/notification.mjs +2 -2
- package/esm2022/tableview/action/components/action/action.component.mjs +6 -7
- package/esm2022/tableview/action/helpers/i18n.mjs +4 -4
- package/esm2022/tableview/action/services/action-executor.service.mjs +6 -3
- package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +2 -2
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +5 -4
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +2 -3
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +2 -3
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +14 -7
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +1 -1
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +12 -4
- package/fesm2022/mediusinc-mng-commons-core.mjs +82 -42
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +109 -3
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model.mjs +1 -1
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +21 -27
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +72 -10
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +20 -13
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +23 -14
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/form/components/date-range/date-range.component.d.ts +4 -2
- package/form/components/number-range/number-range.component.d.ts +30 -0
- package/form/index.d.ts +1 -0
- package/i18n/en.json +1 -1
- package/i18n/sl.json +1 -1
- package/model/descriptors/enum.descriptor.d.ts +1 -1
- package/package.json +7 -7
- package/table/api/descriptors/column.descriptor.d.ts +4 -10
- package/table/api/descriptors/table.descriptor.d.ts +2 -1
- package/table/components/column-filter-full/column-filter-full.component.d.ts +3 -2
- package/tableview/action/components/action/action.component.d.ts +0 -1
- package/tableview/action/services/action-executor.service.d.ts +1 -0
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +12 -7
- package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +5 -5
- package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +1 -0
- package/version-info.json +6 -6
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
|
|
2
2
|
import { FieldWrapper, FormlyModule } from '@ngx-formly/core';
|
|
3
3
|
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { getI18nTypePropertyKey } from '@mediusinc/mng-commons/core';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@ngx-translate/core";
|
|
6
7
|
import * as i2 from "@ngx-formly/core";
|
|
7
8
|
export class FormlyFieldWrapperComponent extends FieldWrapper {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.label = signal(undefined);
|
|
12
|
+
}
|
|
8
13
|
ngOnInit() {
|
|
9
14
|
const descriptor = this.props?.['descriptor'];
|
|
15
|
+
if (descriptor.label !== null) {
|
|
16
|
+
this.label.set(descriptor.label ?? getI18nTypePropertyKey(descriptor.editor.model.i18nBaseKey ?? descriptor.editor.model.typeName, descriptor.property));
|
|
17
|
+
}
|
|
10
18
|
if (this.formState.disabled && descriptor.isLocalized) {
|
|
11
19
|
this.addMissingTranslationHelperText();
|
|
12
20
|
}
|
|
@@ -21,10 +29,10 @@ export class FormlyFieldWrapperComponent extends FieldWrapper {
|
|
|
21
29
|
}
|
|
22
30
|
}
|
|
23
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: FormlyFieldWrapperComponent, isStandalone: true, selector: "mng-formly-field-wrapper", usesInheritance: true, ngImport: i0, template: "<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field'\">\n <div class=\"grid mt-0\">\n @if (
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: FormlyFieldWrapperComponent, isStandalone: true, selector: "mng-formly-field-wrapper", usesInheritance: true, ngImport: i0, template: "<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field'\">\n <div class=\"grid mt-0\">\n @if (label(); as label) {\n <label [for]=\"key\" class=\"col\" [class]=\"props['descriptor']?.['labelClassName'] ?? ''\"\n >{{ label | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n </div>\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError) {\n <small class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25
33
|
}
|
|
26
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldWrapperComponent, decorators: [{
|
|
27
35
|
type: Component,
|
|
28
|
-
args: [{ standalone: true, selector: 'mng-formly-field-wrapper', imports: [TranslateModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field'\">\n <div class=\"grid mt-0\">\n @if (
|
|
36
|
+
args: [{ standalone: true, selector: 'mng-formly-field-wrapper', imports: [TranslateModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field'\">\n <div class=\"grid mt-0\">\n @if (label(); as label) {\n <label [for]=\"key\" class=\"col\" [class]=\"props['descriptor']?.['labelClassName'] ?? ''\"\n >{{ label | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n </div>\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError) {\n <small class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n" }]
|
|
29
37
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L3NyYy9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvd3JhcHBlcnMvZm9ybWx5LWZpZWxkLXdyYXBwZXIvZm9ybWx5LWZpZWxkLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L3NyYy9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvd3JhcHBlcnMvZm9ybWx5LWZpZWxkLXdyYXBwZXIvZm9ybWx5LWZpZWxkLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFVbkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLFlBQVk7SUFQN0Q7O1FBUVcsVUFBSyxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7S0FxQnhEO0lBbkJVLFFBQVE7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUErQixDQUFDO1FBQzVFLElBQUksVUFBVSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0osQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRU8sK0JBQStCO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksZ0NBQWdDLENBQUM7UUFDN0QsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDTCxDQUFDOzhHQXJCUSwyQkFBMkI7a0dBQTNCLDJCQUEyQiwyR0NmeEMsKzBCQXFCQSwyQ0RUYyxlQUFlLDJGQUFFLFlBQVk7OzJGQUc5QiwyQkFBMkI7a0JBUHZDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDBCQUEwQixXQUUzQixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsbUJBQ3ZCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtGaWVsZFdyYXBwZXIsIEZvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7Z2V0STE4blR5cGVQcm9wZXJ0eUtleX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1mb3JtbHktZmllbGQtd3JhcHBlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBGb3JtbHlNb2R1bGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkV3JhcHBlckNvbXBvbmVudCBleHRlbmRzIEZpZWxkV3JhcHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIGxhYmVsID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHRoaXMucHJvcHM/LlsnZGVzY3JpcHRvciddIGFzIEFGaWVsZERlc2NyaXB0b3I8YW55LCBhbnk+O1xuICAgICAgICBpZiAoZGVzY3JpcHRvci5sYWJlbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5sYWJlbC5zZXQoZGVzY3JpcHRvci5sYWJlbCA/PyBnZXRJMThuVHlwZVByb3BlcnR5S2V5KGRlc2NyaXB0b3IuZWRpdG9yLm1vZGVsLmkxOG5CYXNlS2V5ID8/IGRlc2NyaXB0b3IuZWRpdG9yLm1vZGVsLnR5cGVOYW1lLCBkZXNjcmlwdG9yLnByb3BlcnR5KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlzYWJsZWQgJiYgZGVzY3JpcHRvci5pc0xvY2FsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5hZGRNaXNzaW5nVHJhbnNsYXRpb25IZWxwZXJUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE1pc3NpbmdUcmFuc2xhdGlvbkhlbHBlclRleHQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2RlbFt0aGlzLnByb3BzPy5bJ2Rlc2NyaXB0b3InXS5wcm9wZXJ0eSArICdUcmFuc2xhdGVkJ10gJiYgdGhpcy5wcm9wcz8uWydkZXNjcmlwdG9yJ10/LnByb3BlcnR5ICE9PSAnaWQnKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzPy5bJ2Rlc2NyaXB0b3InXT8ud2l0aEhlbHBUZXh0KCdtbmdFZGl0b3IubG9jYWxpemF0aW9ucy5taXNzaW5nVHJhbnNsYXRpb24nKTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQuY2xhc3NOYW1lICs9ICcgbG9jYWxpemVkLWlucHV0LWJvcmRlci1vcmFuZ2UnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9wcz8uWydkZXNjcmlwdG9yJ10/LndpdGhIZWxwVGV4dCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IFtjbGFzc109XCJwcm9wc1snZGVzY3JpcHRvciddPy5bJ2ZpZWxkQ2xhc3NOYW1lJ10gPz8gJ2ZpZWxkJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJncmlkIG10LTBcIj5cbiAgICAgICAgQGlmIChsYWJlbCgpOyBhcyBsYWJlbCkge1xuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwia2V5XCIgY2xhc3M9XCJjb2xcIiBbY2xhc3NdPVwicHJvcHNbJ2Rlc2NyaXB0b3InXT8uWydsYWJlbENsYXNzTmFtZSddID8/ICcnXCJcbiAgICAgICAgICAgICAgICA+e3sgbGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnJlcXVpcmVkICYmIHByb3BzWydoaWRlUmVxdWlyZWRNYXJrZXInXSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICNmaWVsZENvbXBvbmVudD48L25nLWNvbnRhaW5lcj5cbiAgICBAaWYgKHByb3BzWydkZXNjcmlwdG9yJ10/LlsnaGVscFRleHQnXSkge1xuICAgICAgICA8c21hbGwgY2xhc3M9XCJibG9ja1wiPnt7IHByb3BzWydkZXNjcmlwdG9yJ10/LlsnaGVscFRleHQnXSB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgfVxuICAgIEBpZiAoc2hvd0Vycm9yKSB7XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cInAtZXJyb3IgYmxvY2tcIj5cbiAgICAgICAgICAgIDxmb3JtbHktdmFsaWRhdGlvbi1tZXNzYWdlIFtmaWVsZF09XCJmaWVsZFwiPjwvZm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZT5cbiAgICAgICAgPC9zbWFsbD5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -13,7 +13,7 @@ import { PrimeNGConfig, MessageService, ConfirmationService } from 'primeng/api'
|
|
|
13
13
|
import { Router, NavigationEnd, RouterLink, NavigationStart, RouteConfigLoadStart, RouteConfigLoadEnd, NavigationCancel, NavigationError } from '@angular/router';
|
|
14
14
|
import * as i2$1 from 'primeng/button';
|
|
15
15
|
import { ButtonModule } from 'primeng/button';
|
|
16
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
16
|
+
import { takeUntilDestroyed, toObservable as toObservable$1 } from '@angular/core/rxjs-interop';
|
|
17
17
|
import { Title } from '@angular/platform-browser';
|
|
18
18
|
import { filter, map, first, catchError } from 'rxjs/operators';
|
|
19
19
|
import { DatePipe } from '@angular/common';
|
|
@@ -27,14 +27,15 @@ class NotificationWrapperComponent {
|
|
|
27
27
|
this.notificationCutoff = 70;
|
|
28
28
|
this.isDialogNotificationVisible = computed(() => this.dialogNotification() !== null);
|
|
29
29
|
this.dialogNotification = signal(null);
|
|
30
|
+
this.dialogNotificationIconClass = computed(() => this.getMessageIcon(this.dialogNotification()));
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
+
getMessageIcon(message) {
|
|
32
33
|
if (message?.icon)
|
|
33
34
|
return message.icon;
|
|
34
35
|
switch (message?.severity) {
|
|
35
36
|
case 'info':
|
|
36
37
|
return 'pi-info-circle';
|
|
37
|
-
case '
|
|
38
|
+
case 'warn':
|
|
38
39
|
return 'pi-exclamation-triangle';
|
|
39
40
|
case 'error':
|
|
40
41
|
return 'pi-times-circle';
|
|
@@ -53,11 +54,11 @@ class NotificationWrapperComponent {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: NotificationWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: NotificationWrapperComponent, isStandalone: true, selector: "mng-notification-wrapper", ngImport: i0, template: "<ng-content></ng-content>\n<p-confirmDialog appendTo=\"body\" [baseZIndex]=\"50\"></p-confirmDialog>\n\n<p-toast [baseZIndex]=\"50\">\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' +
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: NotificationWrapperComponent, isStandalone: true, selector: "mng-notification-wrapper", ngImport: i0, template: "<ng-content></ng-content>\n<p-confirmDialog appendTo=\"body\" [baseZIndex]=\"50\"></p-confirmDialog>\n\n<p-toast [baseZIndex]=\"50\">\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getMessageIcon(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n @if (message.detail) {\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n @if (message.detail.length > notificationCutoff) {\n <div (click)=\"onShowNotificationInDialog(message)\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n }\n }\n </div>\n </ng-template>\n</p-toast>\n\n<p-dialog\n [visible]=\"isDialogNotificationVisible()\"\n (visibleChange)=\"onDialogNotificationVisibilityChange($event)\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (dialogNotification()?.severity ?? '')\"\n appendTo=\"body\"\n draggable=\"false\"\n modal=\"true\">\n <ng-template pTemplate=\"header\" mngDialogKeydownHandler>\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + dialogNotificationIconClass()\"></span>\n {{ dialogNotification()?.summary ?? '' }}\n </span>\n </ng-template>\n <div class=\"mng-notification-details\">\n {{ dialogNotification()?.detail ?? '' }}\n </div>\n</p-dialog>\n", styles: [".mng-notification-details{white-space:pre-wrap;word-wrap:break-word}\n"], dependencies: [{ kind: "ngmodule", type: ToastModule }, { kind: "component", type: i1.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i3.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i5.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
57
58
|
}
|
|
58
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: NotificationWrapperComponent, decorators: [{
|
|
59
60
|
type: Component,
|
|
60
|
-
args: [{ selector: 'mng-notification-wrapper', standalone: true, imports: [ToastModule, ConfirmDialogModule, TranslateModule, DialogModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n<p-confirmDialog appendTo=\"body\" [baseZIndex]=\"50\"></p-confirmDialog>\n\n<p-toast [baseZIndex]=\"50\">\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' +
|
|
61
|
+
args: [{ selector: 'mng-notification-wrapper', standalone: true, imports: [ToastModule, ConfirmDialogModule, TranslateModule, DialogModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n<p-confirmDialog appendTo=\"body\" [baseZIndex]=\"50\"></p-confirmDialog>\n\n<p-toast [baseZIndex]=\"50\">\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getMessageIcon(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n @if (message.detail) {\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n @if (message.detail.length > notificationCutoff) {\n <div (click)=\"onShowNotificationInDialog(message)\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n }\n }\n </div>\n </ng-template>\n</p-toast>\n\n<p-dialog\n [visible]=\"isDialogNotificationVisible()\"\n (visibleChange)=\"onDialogNotificationVisibilityChange($event)\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (dialogNotification()?.severity ?? '')\"\n appendTo=\"body\"\n draggable=\"false\"\n modal=\"true\">\n <ng-template pTemplate=\"header\" mngDialogKeydownHandler>\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + dialogNotificationIconClass()\"></span>\n {{ dialogNotification()?.summary ?? '' }}\n </span>\n </ng-template>\n <div class=\"mng-notification-details\">\n {{ dialogNotification()?.detail ?? '' }}\n </div>\n</p-dialog>\n", styles: [".mng-notification-details{white-space:pre-wrap;word-wrap:break-word}\n"] }]
|
|
61
62
|
}] });
|
|
62
63
|
|
|
63
64
|
class ACommonsErrorBase extends Error {
|
|
@@ -69,6 +70,7 @@ class ACommonsErrorBase extends Error {
|
|
|
69
70
|
this.cause = options?.cause;
|
|
70
71
|
this.stack = options?.stack ?? (options?.cause ? options.cause.stack : new Error(message).stack);
|
|
71
72
|
this.details = options?.details;
|
|
73
|
+
this.notification = options?.notification;
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
class CommonsInternalError extends ACommonsErrorBase {
|
|
@@ -1692,6 +1694,13 @@ function getHttpErrorResponse(error) {
|
|
|
1692
1694
|
function getHttpErrorResponseStatus(error) {
|
|
1693
1695
|
return getHttpErrorResponse(error)?.status ?? null;
|
|
1694
1696
|
}
|
|
1697
|
+
/**
|
|
1698
|
+
* Gets HttpErrorResponse status text from error (Angular or Commons).
|
|
1699
|
+
* @param error Error.
|
|
1700
|
+
*/
|
|
1701
|
+
function getHttpErrorResponseStatusText(error) {
|
|
1702
|
+
return getHttpErrorResponse(error)?.statusText ?? null;
|
|
1703
|
+
}
|
|
1695
1704
|
/**
|
|
1696
1705
|
* Get error log level. All is error, except if error is http error with status >=400 and <500.
|
|
1697
1706
|
* @param error Error.
|
|
@@ -2753,37 +2762,88 @@ function isRbacPermitted(permissions, userRoles) {
|
|
|
2753
2762
|
|
|
2754
2763
|
class PermissionService {
|
|
2755
2764
|
constructor() {
|
|
2756
|
-
this.router = inject(Router);
|
|
2757
2765
|
this.injector = inject(Injector);
|
|
2758
2766
|
this.commons = inject(CommonsService);
|
|
2759
2767
|
this.logger = inject(LoggerService).create('AuthorizationService');
|
|
2760
|
-
this.userRoles$ = toObservable(this.commons.userRoles
|
|
2768
|
+
this.userRoles$ = toObservable$1(this.commons.userRoles);
|
|
2769
|
+
}
|
|
2770
|
+
canActivateRoute(permissions, route) {
|
|
2771
|
+
switch (permissions.authorizationType) {
|
|
2772
|
+
case PermissionTypeEnum.All:
|
|
2773
|
+
return this.canActivateRouteAll(permissions, route);
|
|
2774
|
+
case PermissionTypeEnum.Any:
|
|
2775
|
+
return this.canActivateRouteAny(permissions, route);
|
|
2776
|
+
case PermissionTypeEnum.Service:
|
|
2777
|
+
return this.canActivateRouteService(permissions, route);
|
|
2778
|
+
default:
|
|
2779
|
+
return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));
|
|
2780
|
+
}
|
|
2781
|
+
}
|
|
2782
|
+
canActivateRouteAll(permission, route) {
|
|
2783
|
+
return combineLatest(permission.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.every(ip => ip === true)));
|
|
2784
|
+
}
|
|
2785
|
+
canActivateRouteAny(permissions, route) {
|
|
2786
|
+
return combineLatest(permissions.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.some(ip => ip === true)));
|
|
2787
|
+
}
|
|
2788
|
+
canActivateRouteService(permission, route) {
|
|
2789
|
+
const serviceInstance = this.injector.get(permission.service);
|
|
2790
|
+
if (!serviceInstance) {
|
|
2791
|
+
this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);
|
|
2792
|
+
return of(false);
|
|
2793
|
+
}
|
|
2794
|
+
return serviceInstance.canActivateRoute(route);
|
|
2761
2795
|
}
|
|
2762
|
-
|
|
2796
|
+
isMenuItemVisible(permissions, menuItem) {
|
|
2763
2797
|
switch (permissions.authorizationType) {
|
|
2764
2798
|
case PermissionTypeEnum.All:
|
|
2765
|
-
return this.
|
|
2799
|
+
return this.isMenuItemVisibleAll(permissions, menuItem);
|
|
2766
2800
|
case PermissionTypeEnum.Any:
|
|
2767
|
-
return this.
|
|
2801
|
+
return this.isMenuItemVisibleAny(permissions, menuItem);
|
|
2768
2802
|
case PermissionTypeEnum.Service:
|
|
2769
|
-
return this.
|
|
2803
|
+
return this.isMenuItemVisibleService(permissions, menuItem);
|
|
2804
|
+
default:
|
|
2805
|
+
return this.userRoles$.pipe(map(role => isPermitted(permissions, role)));
|
|
2806
|
+
}
|
|
2807
|
+
}
|
|
2808
|
+
isMenuItemVisibleAll(permission, menuItem) {
|
|
2809
|
+
return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.every(ip => ip === true)));
|
|
2810
|
+
}
|
|
2811
|
+
isMenuItemVisibleAny(permission, menuItem) {
|
|
2812
|
+
return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.some(ip => ip === true)));
|
|
2813
|
+
}
|
|
2814
|
+
isMenuItemVisibleService(permission, menuItem) {
|
|
2815
|
+
const serviceInstance = this.injector.get(permission.service);
|
|
2816
|
+
if (!serviceInstance) {
|
|
2817
|
+
this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);
|
|
2818
|
+
return of(false);
|
|
2819
|
+
}
|
|
2820
|
+
return serviceInstance.isMenuitemVisible(menuItem);
|
|
2821
|
+
}
|
|
2822
|
+
isActionVisible(permissions, actionCtx, route) {
|
|
2823
|
+
switch (permissions.authorizationType) {
|
|
2824
|
+
case PermissionTypeEnum.All:
|
|
2825
|
+
return this.isActionVisibleAll(permissions, actionCtx, route);
|
|
2826
|
+
case PermissionTypeEnum.Any:
|
|
2827
|
+
return this.isActionVisibleAny(permissions, actionCtx, route);
|
|
2828
|
+
case PermissionTypeEnum.Service:
|
|
2829
|
+
return this.isActionVisibleService(permissions, actionCtx, route);
|
|
2770
2830
|
default:
|
|
2771
2831
|
return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));
|
|
2772
2832
|
}
|
|
2773
2833
|
}
|
|
2774
|
-
|
|
2775
|
-
return combineLatest(permission.permissions.map(p => this.
|
|
2834
|
+
isActionVisibleAll(permission, actionCtx, route) {
|
|
2835
|
+
return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.every(ip => ip === true)));
|
|
2776
2836
|
}
|
|
2777
|
-
|
|
2778
|
-
return combineLatest(permission.permissions.map(p => this.
|
|
2837
|
+
isActionVisibleAny(permission, actionCtx, route) {
|
|
2838
|
+
return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.some(ip => ip === true)));
|
|
2779
2839
|
}
|
|
2780
|
-
|
|
2840
|
+
isActionVisibleService(permission, actionCtx, route) {
|
|
2781
2841
|
const serviceInstance = this.injector.get(permission.service);
|
|
2782
2842
|
if (!serviceInstance) {
|
|
2783
2843
|
this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);
|
|
2784
2844
|
return of(false);
|
|
2785
2845
|
}
|
|
2786
|
-
return serviceInstance.
|
|
2846
|
+
return serviceInstance.isActionVisible(actionCtx, route);
|
|
2787
2847
|
}
|
|
2788
2848
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2789
2849
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PermissionService }); }
|
|
@@ -2796,7 +2856,7 @@ const permissionGuard = (route) => {
|
|
|
2796
2856
|
const permission = inject(PermissionService);
|
|
2797
2857
|
const data = route.data;
|
|
2798
2858
|
if (data.permissions) {
|
|
2799
|
-
return permission.
|
|
2859
|
+
return permission.canActivateRoute(data.permissions).pipe(first());
|
|
2800
2860
|
}
|
|
2801
2861
|
else {
|
|
2802
2862
|
return of(true);
|
|
@@ -3134,34 +3194,11 @@ class RouteBuilder {
|
|
|
3134
3194
|
if (menuItemChildrenBuild.length > 0) {
|
|
3135
3195
|
menuItemBuild.items = menuItemChildrenBuild;
|
|
3136
3196
|
}
|
|
3137
|
-
if (!menuItemBuild.guards) {
|
|
3138
|
-
const guards = this.findMenuItemGuards();
|
|
3139
|
-
if (guards.length > 0) {
|
|
3140
|
-
menuItemBuild.guards = guards;
|
|
3141
|
-
}
|
|
3142
|
-
}
|
|
3143
3197
|
if (!menuItemBuild.permissions) {
|
|
3144
3198
|
menuItemBuild.permissions = this.findMenuItemPermissions();
|
|
3145
3199
|
}
|
|
3146
3200
|
return [menuItemBuild];
|
|
3147
3201
|
}
|
|
3148
|
-
findMenuItemGuards() {
|
|
3149
|
-
const guards = [];
|
|
3150
|
-
if (this.route.canActivate?.length) {
|
|
3151
|
-
guards.push(...this.route.canActivate);
|
|
3152
|
-
}
|
|
3153
|
-
if (this.parent) {
|
|
3154
|
-
// Check for parent guards that should be included in decision to hide menu item!
|
|
3155
|
-
// Some parent routes might have guards, but no menu items, so this guards must be taken into account here,
|
|
3156
|
-
// because there is no parent menu item to hide.
|
|
3157
|
-
this.parent.findMenuItemGuards().forEach(g => {
|
|
3158
|
-
if (guards.indexOf(g) < 0) {
|
|
3159
|
-
guards.push(g);
|
|
3160
|
-
}
|
|
3161
|
-
});
|
|
3162
|
-
}
|
|
3163
|
-
return guards;
|
|
3164
|
-
}
|
|
3165
3202
|
findMenuItemPermissions() {
|
|
3166
3203
|
if (this.menuItem?.permissions) {
|
|
3167
3204
|
return this.menuItem.permissions;
|
|
@@ -3311,6 +3348,9 @@ function mapToDataList() {
|
|
|
3311
3348
|
data: value.data ?? [],
|
|
3312
3349
|
totalCount: value.totalCount ?? value.data?.length ?? 0
|
|
3313
3350
|
});
|
|
3351
|
+
},
|
|
3352
|
+
error: err => {
|
|
3353
|
+
subscriber.error(err);
|
|
3314
3354
|
}
|
|
3315
3355
|
});
|
|
3316
3356
|
});
|
|
@@ -3907,5 +3947,5 @@ function provideCommons(config, ...features) {
|
|
|
3907
3947
|
* Generated bundle index. Do not edit.
|
|
3908
3948
|
*/
|
|
3909
3949
|
|
|
3910
|
-
export { ACommonsErrorBase, APermissions, BROWSER_STORAGE_IT, BooleanPipe, COMMONS_INITIALIZER_IT, COMMONS_MODULE_CONFIG_IT, ClassMapPipe, CommonsConfigurationService, CommonsErrorHandler, CommonsFeatureTypeEnum, CommonsHttpError, CommonsInitEventEnum, CommonsInitService, CommonsInternalError, CommonsRouterService, CommonsService, ComponentDirective, DataProvider, DataProviderInst, EnumName, EnumPipe, EnumerateAsyncPipe, EnumeratePipe, ErrorPageComponent, FilterMatchMode, GetterPipe, I18nPropertyPipe, JsonPathPipe, LOG_PUBLISHERS, LocalStorageService, LogLevelEnum, LogPublisherConsoleService, LoggerService, NotFoundPageComponent, NotificationWrapperComponent, ParametrizePipe, PermissionService, PermissionTypeEnum, Permissions, RouteBuilder, RoutesBuilder, StyleLevelEnum, StyleSizeEnum, Styles, TemplateDirective, TemplatePipe, TypeName, TypeRegistry, adjustRouteMenuLazyChildrenRouterLinks, angularDateFormatHasSeconds, angularDateFormatHasTime, appendRoutePathToBasePath, boolean$Attribute, booleanOrUndefinedAttribute, commonsActionErrorContextToString, commonsErrorToString, commonsInitializerProvider, copyDataListParams, createLazyChildrenRoute, createLazyRoute, createRoute, createRouteRedirect, createRoutes, dataListParamsFilterToUrlQuery, dataListParamsFilterValueToUrlString, dataListParamsFiltersToUrlQuery, dataListParamsSortToUrlQuery, dataListParamsToUrlQuery, dataProviderBase, dataProviderFromClass, dataProviderWithService, dateToIsoString, defineReflectEnumName, defineReflectTypeName, doesUrlMatchRouterLink, errorCauseToString, errorToString, escapeHtml, escapeHtmlAny, findReflectEnumName, findReflectTypeName, findTemplateByName, flattenObjectKeys, fromAngularDateFormatToPrime, fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray, fromSubscribeError, fromTableLoadToDataListParams, fromUrlQueryToDataListParams, getEnumConstantName, getEnumConstantNameFromObject, getEnumConstantNames, getEnumConstantNamesFromObject, getEnumConstantValuesAsNumber, getEnumConstantValuesAsString, getEnumerationI18nBaseKey, getErrorLogLevel, getErrorName, getHttpErrorResponse, getHttpErrorResponseStatus, getI18n, getI18nAsync, getI18nErrorParams, getI18nForError, getI18nTypeGroupKey, getI18nTypeKeyBasePath, getI18nTypeName, getI18nTypeNameAsync, getI18nTypeParams, getI18nTypeParamsAsync, getI18nTypePropertyKey, getI18nTypeTabKey, getObjectGetters, getObjectProperties, getObjectPropertyByPath, httpErrorResponseToString, isHttpErrorResponse, isPermitted, isRbacPermitted, itemIdToDefined, itemIdToNumber, itemIdToString, mapToDataList, mergeDataListParamsWithDefaults, number$Attribute, objectDeepCopy, objectDeepMerge, permissionGuard, populateI18nParams, populateI18nTypeParams, provideCommons, reflectEnumNameKey, reflectTypeNameExists, reflectTypeNameKey, removeRouteEmptyPathSegments, selectEnumerationI18n, selectI18n, stringify, throwError, toEnumerationI18nEnumerate, toObservable, toastMessage, valueToDefined };
|
|
3950
|
+
export { ACommonsErrorBase, APermissions, BROWSER_STORAGE_IT, BooleanPipe, COMMONS_INITIALIZER_IT, COMMONS_MODULE_CONFIG_IT, ClassMapPipe, CommonsConfigurationService, CommonsErrorHandler, CommonsFeatureTypeEnum, CommonsHttpError, CommonsInitEventEnum, CommonsInitService, CommonsInternalError, CommonsRouterService, CommonsService, ComponentDirective, DataProvider, DataProviderInst, EnumName, EnumPipe, EnumerateAsyncPipe, EnumeratePipe, ErrorPageComponent, FilterMatchMode, GetterPipe, I18nPropertyPipe, JsonPathPipe, LOG_PUBLISHERS, LocalStorageService, LogLevelEnum, LogPublisherConsoleService, LoggerService, NotFoundPageComponent, NotificationWrapperComponent, ParametrizePipe, PermissionService, PermissionTypeEnum, Permissions, RouteBuilder, RoutesBuilder, StyleLevelEnum, StyleSizeEnum, Styles, TemplateDirective, TemplatePipe, TypeName, TypeRegistry, adjustRouteMenuLazyChildrenRouterLinks, angularDateFormatHasSeconds, angularDateFormatHasTime, appendRoutePathToBasePath, boolean$Attribute, booleanOrUndefinedAttribute, commonsActionErrorContextToString, commonsErrorToString, commonsInitializerProvider, copyDataListParams, createLazyChildrenRoute, createLazyRoute, createRoute, createRouteRedirect, createRoutes, dataListParamsFilterToUrlQuery, dataListParamsFilterValueToUrlString, dataListParamsFiltersToUrlQuery, dataListParamsSortToUrlQuery, dataListParamsToUrlQuery, dataProviderBase, dataProviderFromClass, dataProviderWithService, dateToIsoString, defineReflectEnumName, defineReflectTypeName, doesUrlMatchRouterLink, errorCauseToString, errorToString, escapeHtml, escapeHtmlAny, findReflectEnumName, findReflectTypeName, findTemplateByName, flattenObjectKeys, fromAngularDateFormatToPrime, fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray, fromSubscribeError, fromTableLoadToDataListParams, fromUrlQueryToDataListParams, getEnumConstantName, getEnumConstantNameFromObject, getEnumConstantNames, getEnumConstantNamesFromObject, getEnumConstantValuesAsNumber, getEnumConstantValuesAsString, getEnumerationI18nBaseKey, getErrorLogLevel, getErrorName, getHttpErrorResponse, getHttpErrorResponseStatus, getHttpErrorResponseStatusText, getI18n, getI18nAsync, getI18nErrorParams, getI18nForError, getI18nTypeGroupKey, getI18nTypeKeyBasePath, getI18nTypeName, getI18nTypeNameAsync, getI18nTypeParams, getI18nTypeParamsAsync, getI18nTypePropertyKey, getI18nTypeTabKey, getObjectGetters, getObjectProperties, getObjectPropertyByPath, httpErrorResponseToString, isHttpErrorResponse, isPermitted, isRbacPermitted, itemIdToDefined, itemIdToNumber, itemIdToString, mapToDataList, mergeDataListParamsWithDefaults, number$Attribute, objectDeepCopy, objectDeepMerge, permissionGuard, populateI18nParams, populateI18nTypeParams, provideCommons, reflectEnumNameKey, reflectTypeNameExists, reflectTypeNameKey, removeRouteEmptyPathSegments, selectEnumerationI18n, selectI18n, stringify, throwError, toEnumerationI18nEnumerate, toObservable, toastMessage, valueToDefined };
|
|
3911
3951
|
//# sourceMappingURL=mediusinc-mng-commons-core.mjs.map
|