@mediusinc/mng-commons 0.2.9 → 0.2.11
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/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +9 -8
- package/esm2020/lib/components/layout/menu-item.component.mjs +59 -17
- package/esm2020/lib/config/formly.config.mjs +10 -1
- package/esm2020/lib/descriptors/editor.descriptor.mjs +26 -1
- package/esm2020/lib/models/index.mjs +2 -1
- package/esm2020/lib/models/menu.model.mjs +2 -0
- package/esm2020/lib/router/route-builder.mjs +86 -17
- package/esm2020/lib/services/commons.service.mjs +1 -1
- package/esm2020/lib/utils/editor-formly.util.mjs +7 -1
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/mediusinc-mng-commons.mjs +192 -39
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +189 -38
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/components/layout/menu-item.component.d.ts +13 -5
- package/lib/descriptors/editor.descriptor.d.ts +11 -1
- package/lib/models/index.d.ts +1 -0
- package/lib/models/menu.model.d.ts +25 -0
- package/lib/router/route-builder.d.ts +9 -5
- package/lib/services/commons.service.d.ts +6 -6
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -6,7 +6,7 @@ import { Injectable, InjectionToken, Inject, Component, ChangeDetectionStrategy,
|
|
|
6
6
|
import * as i2$3 from '@angular/forms';
|
|
7
7
|
import { Validators, FormGroup, NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
8
8
|
import * as i1 from '@angular/router';
|
|
9
|
-
import { NavigationEnd, RouterModule } from '@angular/router';
|
|
9
|
+
import { NavigationEnd, GuardsCheckEnd, RouterModule } from '@angular/router';
|
|
10
10
|
import * as i3 from '@ngx-formly/core';
|
|
11
11
|
import { FieldType, FieldWrapper, FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';
|
|
12
12
|
import * as i2$2 from '@ngx-translate/core';
|
|
@@ -36,14 +36,15 @@ import { DynamicDialogModule, DialogService } from 'primeng/dynamicdialog';
|
|
|
36
36
|
import * as i1$5 from 'primeng/fieldset';
|
|
37
37
|
import { FieldsetModule } from 'primeng/fieldset';
|
|
38
38
|
import { FileUploadModule } from 'primeng/fileupload';
|
|
39
|
+
import * as i6$1 from 'primeng/inputmask';
|
|
39
40
|
import { InputMaskModule } from 'primeng/inputmask';
|
|
40
41
|
import * as i1$3 from 'primeng/inputnumber';
|
|
41
42
|
import { InputNumberModule } from 'primeng/inputnumber';
|
|
42
43
|
import * as i2$5 from 'primeng/inputswitch';
|
|
43
44
|
import { InputSwitchModule } from 'primeng/inputswitch';
|
|
44
|
-
import * as
|
|
45
|
+
import * as i10$1 from 'primeng/inputtext';
|
|
45
46
|
import { InputTextModule } from 'primeng/inputtext';
|
|
46
|
-
import * as
|
|
47
|
+
import * as i9$1 from 'primeng/inputtextarea';
|
|
47
48
|
import { InputTextareaModule } from 'primeng/inputtextarea';
|
|
48
49
|
import * as i3$1 from 'primeng/messages';
|
|
49
50
|
import { MessagesModule } from 'primeng/messages';
|
|
@@ -67,11 +68,11 @@ import { TagModule } from 'primeng/tag';
|
|
|
67
68
|
import * as i7$1 from 'primeng/toast';
|
|
68
69
|
import { ToastModule } from 'primeng/toast';
|
|
69
70
|
import { ToggleButtonModule } from 'primeng/togglebutton';
|
|
70
|
-
import * as i8$
|
|
71
|
+
import * as i8$1 from 'primeng/toolbar';
|
|
71
72
|
import { ToolbarModule } from 'primeng/toolbar';
|
|
72
73
|
import * as i10 from 'primeng/tooltip';
|
|
73
74
|
import { TooltipModule } from 'primeng/tooltip';
|
|
74
|
-
import { of, throwError, Observable, from, BehaviorSubject, Subject, ReplaySubject } from 'rxjs';
|
|
75
|
+
import { of, throwError, Observable, from, BehaviorSubject, Subject, ReplaySubject, distinctUntilChanged, combineLatest } from 'rxjs';
|
|
75
76
|
import 'reflect-metadata';
|
|
76
77
|
import { mergeMap, map, first, catchError, filter, finalize, startWith } from 'rxjs/operators';
|
|
77
78
|
import * as i4 from '@angular/platform-browser';
|
|
@@ -1053,6 +1054,15 @@ class FieldInputDescriptor extends AFieldDescriptor {
|
|
|
1053
1054
|
get pattern() {
|
|
1054
1055
|
return this._pattern;
|
|
1055
1056
|
}
|
|
1057
|
+
get mask() {
|
|
1058
|
+
return this._mask;
|
|
1059
|
+
}
|
|
1060
|
+
get slotChar() {
|
|
1061
|
+
return this._slotChar;
|
|
1062
|
+
}
|
|
1063
|
+
get customComponentName() {
|
|
1064
|
+
return this._customComponentName;
|
|
1065
|
+
}
|
|
1056
1066
|
asText(minLength, maxLength, pattern, isEmail) {
|
|
1057
1067
|
this._fieldType = FieldInputDescriptor.TypeEnum.Text;
|
|
1058
1068
|
this._minLength = minLength;
|
|
@@ -1107,6 +1117,17 @@ class FieldInputDescriptor extends AFieldDescriptor {
|
|
|
1107
1117
|
this._datePickerShowTime = showTime !== null && showTime !== void 0 ? showTime : false;
|
|
1108
1118
|
return this;
|
|
1109
1119
|
}
|
|
1120
|
+
asMask(mask, slotChar) {
|
|
1121
|
+
this._fieldType = FieldInputDescriptor.TypeEnum.Mask;
|
|
1122
|
+
this._mask = mask;
|
|
1123
|
+
this._slotChar = slotChar;
|
|
1124
|
+
return this;
|
|
1125
|
+
}
|
|
1126
|
+
asCustomComponent(customComponentName) {
|
|
1127
|
+
this._fieldType = FieldInputDescriptor.TypeEnum.Custom;
|
|
1128
|
+
this._customComponentName = customComponentName;
|
|
1129
|
+
return this;
|
|
1130
|
+
}
|
|
1110
1131
|
copy() {
|
|
1111
1132
|
const field = new FieldInputDescriptor(this._editor, this._property);
|
|
1112
1133
|
this.copyFieldsTo(field);
|
|
@@ -1125,6 +1146,9 @@ class FieldInputDescriptor extends AFieldDescriptor {
|
|
|
1125
1146
|
field._maxLength = this._maxLength;
|
|
1126
1147
|
field._minLength = this._minLength;
|
|
1127
1148
|
field._pattern = this._pattern;
|
|
1149
|
+
field._mask = this._mask;
|
|
1150
|
+
field._slotChar = this._slotChar;
|
|
1151
|
+
field._customComponentName = this._customComponentName;
|
|
1128
1152
|
return field;
|
|
1129
1153
|
}
|
|
1130
1154
|
}
|
|
@@ -1137,6 +1161,8 @@ class FieldInputDescriptor extends AFieldDescriptor {
|
|
|
1137
1161
|
TypeEnum[TypeEnum["Switch"] = 3] = "Switch";
|
|
1138
1162
|
TypeEnum[TypeEnum["Radio"] = 4] = "Radio";
|
|
1139
1163
|
TypeEnum[TypeEnum["Datepicker"] = 5] = "Datepicker";
|
|
1164
|
+
TypeEnum[TypeEnum["Mask"] = 6] = "Mask";
|
|
1165
|
+
TypeEnum[TypeEnum["Custom"] = 7] = "Custom";
|
|
1140
1166
|
})(TypeEnum = FieldInputDescriptor.TypeEnum || (FieldInputDescriptor.TypeEnum = {}));
|
|
1141
1167
|
})(FieldInputDescriptor || (FieldInputDescriptor = {}));
|
|
1142
1168
|
class FieldLookupDescriptor extends AFieldDescriptor {
|
|
@@ -2183,6 +2209,12 @@ class EditorFormlyUtil {
|
|
|
2183
2209
|
case FieldInputDescriptor.TypeEnum.Datepicker:
|
|
2184
2210
|
field.type = 'datepicker';
|
|
2185
2211
|
break;
|
|
2212
|
+
case FieldInputDescriptor.TypeEnum.Mask:
|
|
2213
|
+
field.type = 'mask';
|
|
2214
|
+
break;
|
|
2215
|
+
case FieldInputDescriptor.TypeEnum.Custom:
|
|
2216
|
+
field.type = descriptor.customComponentName;
|
|
2217
|
+
break;
|
|
2186
2218
|
default:
|
|
2187
2219
|
field.type = 'input';
|
|
2188
2220
|
field.templateOptions.minLength = descriptor.minLength;
|
|
@@ -4539,10 +4571,10 @@ class MngFormlyFieldInputComponent extends FieldType {
|
|
|
4539
4571
|
}
|
|
4540
4572
|
}
|
|
4541
4573
|
MngFormlyFieldInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
4542
|
-
MngFormlyFieldInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldInputComponent, selector: "mng-formly-field-input", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton [name]=\"$any(key)\" [value]=\"option.value\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-radioButton>\n <label [for]=\"option.value\" class=\"mng-radio-button-label\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea *ngSwitchCase=\"'textarea'\" [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [rows]=\"descriptor.rows ?? 3\" pInputTextarea> </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"$any(descriptor.datePickerFormat)\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\">\n </p-calendar>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n", components: [{ type: i1$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }, { type: i2$5.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabelledBy"], outputs: ["onChange"] }, { type: i3.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { type: i4$3.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], directives: [{ type: i4$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type:
|
|
4574
|
+
MngFormlyFieldInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldInputComponent, selector: "mng-formly-field-input", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton [name]=\"$any(key)\" [value]=\"option.value\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-radioButton>\n <label [for]=\"option.value\" class=\"mng-radio-button-label\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea *ngSwitchCase=\"'textarea'\" [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [rows]=\"descriptor.rows ?? 3\" pInputTextarea> </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"$any(descriptor.datePickerFormat)\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\">\n </p-inputMask>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n", components: [{ type: i1$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }, { type: i2$5.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabelledBy"], outputs: ["onChange"] }, { type: i3.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { type: i4$3.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { type: i6$1.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown"] }], directives: [{ type: i4$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9$1.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { type: i4$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10$1.InputText, selector: "[pInputText]" }], pipes: { "translate": i2$2.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4543
4575
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldInputComponent, decorators: [{
|
|
4544
4576
|
type: Component,
|
|
4545
|
-
args: [{ selector: 'mng-formly-field-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton [name]=\"$any(key)\" [value]=\"option.value\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-radioButton>\n <label [for]=\"option.value\" class=\"mng-radio-button-label\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea *ngSwitchCase=\"'textarea'\" [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [rows]=\"descriptor.rows ?? 3\" pInputTextarea> </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"$any(descriptor.datePickerFormat)\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\">\n </p-calendar>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n" }]
|
|
4577
|
+
args: [{ selector: 'mng-formly-field-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton [name]=\"$any(key)\" [value]=\"option.value\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-radioButton>\n <label [for]=\"option.value\" class=\"mng-radio-button-label\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea *ngSwitchCase=\"'textarea'\" [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [rows]=\"descriptor.rows ?? 3\" pInputTextarea> </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"$any(descriptor.datePickerFormat)\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\">\n </p-inputMask>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n" }]
|
|
4546
4578
|
}] });
|
|
4547
4579
|
|
|
4548
4580
|
class MngFormlyFieldDropdownComponent extends FieldType {
|
|
@@ -5486,8 +5518,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
|
|
|
5486
5518
|
}], ctorParameters: function () { return [{ type: MngCommonsService }]; } });
|
|
5487
5519
|
|
|
5488
5520
|
class MngMenuItemComponent {
|
|
5489
|
-
constructor(router, mngCommons, mainLayoutService) {
|
|
5521
|
+
constructor(injector, router, route, mngCommons, mainLayoutService) {
|
|
5522
|
+
this.injector = injector;
|
|
5490
5523
|
this.router = router;
|
|
5524
|
+
this.route = route;
|
|
5491
5525
|
this.mngCommons = mngCommons;
|
|
5492
5526
|
this.mainLayoutService = mainLayoutService;
|
|
5493
5527
|
this.index = 0;
|
|
@@ -5496,6 +5530,8 @@ class MngMenuItemComponent {
|
|
|
5496
5530
|
this.key = '';
|
|
5497
5531
|
this.active = false;
|
|
5498
5532
|
this.hover = false;
|
|
5533
|
+
this.isAllowedSubject = new BehaviorSubject(true);
|
|
5534
|
+
this.isAllowed$ = this.isAllowedSubject.asObservable().pipe(distinctUntilChanged());
|
|
5499
5535
|
}
|
|
5500
5536
|
ngOnInit() {
|
|
5501
5537
|
if (!this.mngCommons.menuModeIsSlim && this.item.routerLink) {
|
|
@@ -5519,14 +5555,20 @@ class MngMenuItemComponent {
|
|
|
5519
5555
|
this.menuResetSubscription = this.mngCommons.menuReset$.subscribe(() => {
|
|
5520
5556
|
this.active = false;
|
|
5521
5557
|
});
|
|
5522
|
-
this.routerEventsSubscription = this.router.events.
|
|
5523
|
-
if (
|
|
5524
|
-
this.
|
|
5558
|
+
this.routerEventsSubscription = this.router.events.subscribe(next => {
|
|
5559
|
+
if (next instanceof GuardsCheckEnd && next.shouldActivate) {
|
|
5560
|
+
this.checkIfMenuItemIsAllowedFromGuard(next.state);
|
|
5525
5561
|
}
|
|
5526
|
-
else {
|
|
5527
|
-
this.
|
|
5562
|
+
else if (next instanceof NavigationEnd) {
|
|
5563
|
+
if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {
|
|
5564
|
+
this.active = false;
|
|
5565
|
+
}
|
|
5566
|
+
else {
|
|
5567
|
+
this.updateActiveStateFromRoute();
|
|
5568
|
+
}
|
|
5528
5569
|
}
|
|
5529
5570
|
});
|
|
5571
|
+
this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);
|
|
5530
5572
|
}
|
|
5531
5573
|
updateActiveStateFromRoute() {
|
|
5532
5574
|
if (this.itemUrl) {
|
|
@@ -5548,10 +5590,6 @@ class MngMenuItemComponent {
|
|
|
5548
5590
|
}
|
|
5549
5591
|
// notify other items
|
|
5550
5592
|
this.mngCommons.menuChangeActiveKey(this.key);
|
|
5551
|
-
// execute command
|
|
5552
|
-
if (this.item.command) {
|
|
5553
|
-
this.item.command({ originalEvent: event, item: this.item });
|
|
5554
|
-
}
|
|
5555
5593
|
// toggle active state
|
|
5556
5594
|
if (this.item.items) {
|
|
5557
5595
|
this.active = !this.active;
|
|
@@ -5580,14 +5618,50 @@ class MngMenuItemComponent {
|
|
|
5580
5618
|
}
|
|
5581
5619
|
}
|
|
5582
5620
|
ngOnDestroy() {
|
|
5583
|
-
var _a, _b, _c;
|
|
5621
|
+
var _a, _b, _c, _d;
|
|
5584
5622
|
(_a = this.menuSourceSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
5585
5623
|
(_b = this.menuResetSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
5586
5624
|
(_c = this.routerEventsSubscription) === null || _c === void 0 ? void 0 : _c.unsubscribe();
|
|
5625
|
+
(_d = this.guardsSubscription) === null || _d === void 0 ? void 0 : _d.unsubscribe();
|
|
5626
|
+
}
|
|
5627
|
+
checkIfMenuItemIsAllowedFromGuard(routerState) {
|
|
5628
|
+
var _a, _b;
|
|
5629
|
+
(_a = this.guardsSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
5630
|
+
if ((_b = this.item.guards) === null || _b === void 0 ? void 0 : _b.length) {
|
|
5631
|
+
const obs = [];
|
|
5632
|
+
for (const guard of this.item.guards) {
|
|
5633
|
+
const tokenInjectedInstance = this.injector.get(guard);
|
|
5634
|
+
if (tokenInjectedInstance && 'canActivate' in tokenInjectedInstance) {
|
|
5635
|
+
const guardInstance = tokenInjectedInstance;
|
|
5636
|
+
const canActivateRes = guardInstance.canActivate(this.route.snapshot, routerState);
|
|
5637
|
+
let canActivateObs;
|
|
5638
|
+
if (canActivateRes instanceof Observable) {
|
|
5639
|
+
canActivateObs = canActivateRes;
|
|
5640
|
+
}
|
|
5641
|
+
else if (canActivateRes instanceof Promise) {
|
|
5642
|
+
canActivateObs = from(canActivateRes);
|
|
5643
|
+
}
|
|
5644
|
+
else {
|
|
5645
|
+
canActivateObs = of(canActivateRes);
|
|
5646
|
+
}
|
|
5647
|
+
obs.push(canActivateObs.pipe(first(), map(res => res === true) // if url tree is present, that means redirect and implies not allowed
|
|
5648
|
+
));
|
|
5649
|
+
}
|
|
5650
|
+
}
|
|
5651
|
+
this.guardsSubscription = combineLatest(obs)
|
|
5652
|
+
.pipe(first())
|
|
5653
|
+
.subscribe(next => {
|
|
5654
|
+
const result = next.every(n => n === true);
|
|
5655
|
+
this.isAllowedSubject.next(result);
|
|
5656
|
+
});
|
|
5657
|
+
}
|
|
5658
|
+
else {
|
|
5659
|
+
this.isAllowedSubject.next(true);
|
|
5660
|
+
}
|
|
5587
5661
|
}
|
|
5588
5662
|
}
|
|
5589
|
-
MngMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngMenuItemComponent, deps: [{ token: i1.Router }, { token: MngCommonsService }, { token: MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5590
|
-
MngMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active" } }, ngImport: i0, template: "<ng-container>\n <div *ngIf=\"root && item.visible !== false\" class=\"layout-menuitem-root-text\">{{ item.label | translate }}</div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false\"\n [attr.href]=\"item.
|
|
5663
|
+
MngMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngMenuItemComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: MngCommonsService }, { token: MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5664
|
+
MngMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active" } }, ngImport: i0, template: "<ng-container>\n <div *ngIf=\"root && item.visible !== false && (isAllowed$ | async) === true\" class=\"layout-menuitem-root-text\">{{ item.label! | translate }}</div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false && (isAllowed$ | async) === true\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items && item.visible !== false && (isAllowed$ | async) === true\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"((item.items && active) || (item.items && (mngCommons.menuModeIsStatic$ | async) && (root || active))) && item.visible !== false && (isAllowed$ | async) === true\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\"></li>\n </ng-template>\n </ul>\n</ng-container>\n", components: [{ type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "index", "root", "parentKey"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i9.Ripple, selector: "[pRipple]" }, { type: i4$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i2$2.TranslatePipe }, animations: [
|
|
5591
5665
|
trigger('children', [
|
|
5592
5666
|
state('void', style({
|
|
5593
5667
|
height: '0px'
|
|
@@ -5639,8 +5713,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
|
|
|
5639
5713
|
transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
5640
5714
|
transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
|
|
5641
5715
|
])
|
|
5642
|
-
], template: "<ng-container>\n <div *ngIf=\"root && item.visible !== false\" class=\"layout-menuitem-root-text\">{{ item.label | translate }}</div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false\"\n [attr.href]=\"item.
|
|
5643
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: MngCommonsService }, { type: MngMainLayoutComponentService }]; }, propDecorators: { item: [{
|
|
5716
|
+
], template: "<ng-container>\n <div *ngIf=\"root && item.visible !== false && (isAllowed$ | async) === true\" class=\"layout-menuitem-root-text\">{{ item.label! | translate }}</div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false && (isAllowed$ | async) === true\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items && item.visible !== false && (isAllowed$ | async) === true\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"((item.items && active) || (item.items && (mngCommons.menuModeIsStatic$ | async) && (root || active))) && item.visible !== false && (isAllowed$ | async) === true\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\"></li>\n </ng-template>\n </ul>\n</ng-container>\n" }]
|
|
5717
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: MngCommonsService }, { type: MngMainLayoutComponentService }]; }, propDecorators: { item: [{
|
|
5644
5718
|
type: Input
|
|
5645
5719
|
}], index: [{
|
|
5646
5720
|
type: Input
|
|
@@ -5811,7 +5885,7 @@ class MngTableviewComponent {
|
|
|
5811
5885
|
}
|
|
5812
5886
|
}
|
|
5813
5887
|
MngTableviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableviewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2$1.MessageService }, { token: i2$2.TranslateService }, { token: i2.DialogService }, { token: i2$1.ConfirmationService }, { token: MngActionService }, { token: TableviewComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5814
|
-
MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTableviewComponent, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [MessageService, ConfirmationService, TableviewComponentService], viewQueries: [{ propertyName: "tableComponent", first: true, predicate: MngTableComponent, descendants: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table [descriptor]=\"descriptor.table\" [dataProvider]=\"dataProvider\" [useQueryParams]=\"true\" (cellClick)=\"onTableCellClick($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\">\n </mng-action>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", components: [{ type: i7$1.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { type: i8$
|
|
5888
|
+
MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTableviewComponent, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [MessageService, ConfirmationService, TableviewComponentService], viewQueries: [{ propertyName: "tableComponent", first: true, predicate: MngTableComponent, descendants: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table [descriptor]=\"descriptor.table\" [dataProvider]=\"dataProvider\" [useQueryParams]=\"true\" (cellClick)=\"onTableCellClick($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\">\n </mng-action>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", components: [{ type: i7$1.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { type: i8$1.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData"] }, { type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionEnabled"], outputs: ["tableLoad", "cellClick", "selectionChange"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i2$2.TranslatePipe } });
|
|
5815
5889
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableviewComponent, decorators: [{
|
|
5816
5890
|
type: Component,
|
|
5817
5891
|
args: [{ selector: 'mng-tableview', providers: [MessageService, ConfirmationService, TableviewComponentService], template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table [descriptor]=\"descriptor.table\" [dataProvider]=\"dataProvider\" [useQueryParams]=\"true\" (cellClick)=\"onTableCellClick($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\">\n </mng-action>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
|
|
@@ -5965,6 +6039,15 @@ const formlyTypesConfig = [
|
|
|
5965
6039
|
}
|
|
5966
6040
|
}
|
|
5967
6041
|
},
|
|
6042
|
+
{
|
|
6043
|
+
name: 'mask',
|
|
6044
|
+
extends: 'input',
|
|
6045
|
+
defaultOptions: {
|
|
6046
|
+
templateOptions: {
|
|
6047
|
+
type: 'mask'
|
|
6048
|
+
}
|
|
6049
|
+
}
|
|
6050
|
+
},
|
|
5968
6051
|
{
|
|
5969
6052
|
name: 'dropdown',
|
|
5970
6053
|
component: MngFormlyFieldDropdownComponent,
|
|
@@ -6545,8 +6628,12 @@ class RoutesBuilder {
|
|
|
6545
6628
|
addRouteRedirect(path, redirectTo, pathMatch = 'prefix') {
|
|
6546
6629
|
return this.addRouteBuilder(RouteBuilder.createRedirect(path, redirectTo, pathMatch));
|
|
6547
6630
|
}
|
|
6548
|
-
addLazyRoute(path, loadChildren) {
|
|
6549
|
-
|
|
6631
|
+
addLazyRoute(path, loadChildren, canLoad) {
|
|
6632
|
+
const route = { path: path, loadChildren: loadChildren };
|
|
6633
|
+
if (canLoad === null || canLoad === void 0 ? void 0 : canLoad.length) {
|
|
6634
|
+
route.canLoad = canLoad;
|
|
6635
|
+
}
|
|
6636
|
+
return this.addRouteBuilder(RouteBuilder.createFromRoute(route));
|
|
6550
6637
|
}
|
|
6551
6638
|
addRoute(path, component) {
|
|
6552
6639
|
return this.addRouteBuilder(RouteBuilder.create(path, component));
|
|
@@ -6687,11 +6774,32 @@ class RouteBuilder {
|
|
|
6687
6774
|
this.withBreadcrumb(title);
|
|
6688
6775
|
return this;
|
|
6689
6776
|
}
|
|
6777
|
+
withCanActivate(diToken) {
|
|
6778
|
+
if (!this.route.canActivate) {
|
|
6779
|
+
this.route.canActivate = [];
|
|
6780
|
+
}
|
|
6781
|
+
this.route.canActivate.push(diToken);
|
|
6782
|
+
return this;
|
|
6783
|
+
}
|
|
6784
|
+
withCanDeactivate(diToken) {
|
|
6785
|
+
if (!this.route.canDeactivate) {
|
|
6786
|
+
this.route.canDeactivate = [];
|
|
6787
|
+
}
|
|
6788
|
+
this.route.canDeactivate.push(diToken);
|
|
6789
|
+
return this;
|
|
6790
|
+
}
|
|
6791
|
+
withResolver(diToken, name) {
|
|
6792
|
+
if (!this.route.resolve) {
|
|
6793
|
+
this.route.resolve = {};
|
|
6794
|
+
}
|
|
6795
|
+
this.route.resolve[name] = diToken;
|
|
6796
|
+
return this;
|
|
6797
|
+
}
|
|
6690
6798
|
withData(data) {
|
|
6691
6799
|
this.route.data = data;
|
|
6692
6800
|
return this;
|
|
6693
6801
|
}
|
|
6694
|
-
|
|
6802
|
+
withMngMenuItem(menuItem) {
|
|
6695
6803
|
this.menuItem = menuItem;
|
|
6696
6804
|
return this;
|
|
6697
6805
|
}
|
|
@@ -6762,35 +6870,62 @@ class RouteBuilder {
|
|
|
6762
6870
|
}
|
|
6763
6871
|
}
|
|
6764
6872
|
}
|
|
6873
|
+
if (this.route.canActivate) {
|
|
6874
|
+
angularRoute.canActivate = [...this.route.canActivate];
|
|
6875
|
+
}
|
|
6876
|
+
if (this.route.canActivateChild) {
|
|
6877
|
+
angularRoute.canActivateChild = [...this.route.canActivateChild];
|
|
6878
|
+
}
|
|
6879
|
+
if (this.route.canLoad) {
|
|
6880
|
+
angularRoute.canLoad = [...this.route.canLoad];
|
|
6881
|
+
}
|
|
6882
|
+
if (this.route.canDeactivate) {
|
|
6883
|
+
angularRoute.canDeactivate = [...this.route.canDeactivate];
|
|
6884
|
+
}
|
|
6885
|
+
if (this.route.resolve) {
|
|
6886
|
+
angularRoute.resolve = Object.assign({}, this.route.resolve);
|
|
6887
|
+
}
|
|
6765
6888
|
return angularRoute;
|
|
6766
6889
|
}
|
|
6767
6890
|
buildMenu() {
|
|
6768
6891
|
var _a, _b;
|
|
6769
|
-
const
|
|
6892
|
+
const menuItemBuild = this.menuItem ? Object.assign({}, this.menuItem) : null;
|
|
6770
6893
|
const routeChildrenMenuItems = this.children.flatMap(child => child.buildMenu());
|
|
6771
6894
|
const menuItemChildren = [];
|
|
6772
|
-
const
|
|
6773
|
-
if (
|
|
6774
|
-
|
|
6895
|
+
const menuItemChildrenBuild = [];
|
|
6896
|
+
if (menuItemBuild === null || menuItemBuild === void 0 ? void 0 : menuItemBuild.items) {
|
|
6897
|
+
menuItemChildrenBuild.push(...menuItemBuild.items);
|
|
6775
6898
|
}
|
|
6776
6899
|
for (const menuItemChild of this.menuItemChildren) {
|
|
6777
6900
|
const finalMenuItemChild = Object.assign({}, menuItemChild);
|
|
6778
6901
|
if (!finalMenuItemChild.routerLink) {
|
|
6779
6902
|
finalMenuItemChild.routerLink = this.routePath;
|
|
6780
6903
|
}
|
|
6904
|
+
if (typeof finalMenuItemChild.routerLink === 'string') {
|
|
6905
|
+
finalMenuItemChild.routerLink = [finalMenuItemChild.routerLink];
|
|
6906
|
+
}
|
|
6781
6907
|
finalMenuItemChild.routerLink = RouteUtil.removeEmptyPathSegments(finalMenuItemChild.routerLink);
|
|
6782
6908
|
menuItemChildren.push(finalMenuItemChild);
|
|
6783
6909
|
}
|
|
6784
|
-
|
|
6785
|
-
if (!
|
|
6786
|
-
return
|
|
6910
|
+
menuItemChildrenBuild.push(...menuItemChildren, ...routeChildrenMenuItems);
|
|
6911
|
+
if (!menuItemBuild) {
|
|
6912
|
+
return menuItemChildrenBuild;
|
|
6787
6913
|
}
|
|
6788
|
-
|
|
6789
|
-
|
|
6790
|
-
|
|
6791
|
-
menuItem.items = finalMenuItemChildren;
|
|
6914
|
+
menuItemBuild.label = (_a = menuItemBuild.label) !== null && _a !== void 0 ? _a : this.pageTitle;
|
|
6915
|
+
if (typeof menuItemBuild.routerLink === 'string') {
|
|
6916
|
+
menuItemBuild.routerLink = [menuItemBuild.routerLink];
|
|
6792
6917
|
}
|
|
6793
|
-
|
|
6918
|
+
menuItemBuild.routerLink = RouteUtil.removeEmptyPathSegments((_b = menuItemBuild.routerLink) !== null && _b !== void 0 ? _b : this.routePath);
|
|
6919
|
+
if (menuItemChildrenBuild.length > 0) {
|
|
6920
|
+
menuItemBuild.items = menuItemChildrenBuild;
|
|
6921
|
+
}
|
|
6922
|
+
if (!menuItemBuild.guards) {
|
|
6923
|
+
const guards = this.findMenuItemGuards();
|
|
6924
|
+
if (guards.length > 0) {
|
|
6925
|
+
menuItemBuild.guards = guards;
|
|
6926
|
+
}
|
|
6927
|
+
}
|
|
6928
|
+
return [menuItemBuild];
|
|
6794
6929
|
}
|
|
6795
6930
|
createMenuItem(icon, label, routerLink) {
|
|
6796
6931
|
const menuItem = {};
|
|
@@ -6808,13 +6943,31 @@ class RouteBuilder {
|
|
|
6808
6943
|
adjustMenuRouterLinksFromBuilder(menuItems) {
|
|
6809
6944
|
for (const menuItem of menuItems) {
|
|
6810
6945
|
if (menuItem.routerLink) {
|
|
6811
|
-
menuItem.routerLink = RouteUtil.appendPathToBasePath(this.routePath, menuItem.routerLink);
|
|
6946
|
+
menuItem.routerLink = RouteUtil.appendPathToBasePath(this.routePath, typeof menuItem.routerLink === 'string' ? [menuItem.routerLink] : menuItem.routerLink);
|
|
6812
6947
|
}
|
|
6813
6948
|
if (Array.isArray(menuItem.items)) {
|
|
6814
6949
|
this.adjustMenuRouterLinksFromBuilder(menuItem.items);
|
|
6815
6950
|
}
|
|
6816
6951
|
}
|
|
6817
6952
|
}
|
|
6953
|
+
findMenuItemGuards() {
|
|
6954
|
+
var _a;
|
|
6955
|
+
const guards = [];
|
|
6956
|
+
if ((_a = this.route.canActivate) === null || _a === void 0 ? void 0 : _a.length) {
|
|
6957
|
+
guards.push(...this.route.canActivate);
|
|
6958
|
+
}
|
|
6959
|
+
if (this.parent) {
|
|
6960
|
+
// Check for parent guards that should be included in decision to hide menu item!
|
|
6961
|
+
// Some parent routes might have guards, but no menu items, so this guards must be taken into account here,
|
|
6962
|
+
// because there is no parent menu item to hide.
|
|
6963
|
+
this.parent.findMenuItemGuards().forEach(g => {
|
|
6964
|
+
if (guards.indexOf(g) < 0) {
|
|
6965
|
+
guards.push(g);
|
|
6966
|
+
}
|
|
6967
|
+
});
|
|
6968
|
+
}
|
|
6969
|
+
return guards;
|
|
6970
|
+
}
|
|
6818
6971
|
}
|
|
6819
6972
|
|
|
6820
6973
|
/*
|