@abp/ng.feature-management 5.0.1 → 5.1.3
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/{esm2015/abp-ng.feature-management.js → esm2020/abp-ng.feature-management.mjs} +0 -0
- package/esm2020/lib/components/feature-management/feature-management.component.mjs +159 -0
- package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
- package/esm2020/lib/directives/free-text-input.directive.mjs +36 -0
- package/{esm2015/lib/directives/index.js → esm2020/lib/directives/index.mjs} +0 -0
- package/{esm2015/lib/enums/components.js → esm2020/lib/enums/components.mjs} +0 -0
- package/{esm2015/lib/feature-management.module.js → esm2020/lib/feature-management.module.mjs} +5 -5
- package/{esm2015/lib/models/feature-management.js → esm2020/lib/models/feature-management.mjs} +0 -0
- package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
- package/{esm2015/proxy/abp-ng.feature-management-proxy.js → esm2020/proxy/abp-ng.feature-management-proxy.mjs} +0 -0
- package/{esm2015/proxy/lib/index.js → esm2020/proxy/lib/index.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/feature-management/features.service.js → esm2020/proxy/lib/proxy/feature-management/features.service.mjs} +4 -4
- package/{esm2015/proxy/lib/proxy/feature-management/index.js → esm2020/proxy/lib/proxy/feature-management/index.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/feature-management/models.js → esm2020/proxy/lib/proxy/feature-management/models.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/validation/index.js → esm2020/proxy/lib/proxy/validation/index.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/validation/string-values/index.js → esm2020/proxy/lib/proxy/validation/string-values/index.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/validation/string-values/models.js → esm2020/proxy/lib/proxy/validation/string-values/models.mjs} +0 -0
- package/{esm2015/proxy/public-api.js → esm2020/proxy/public-api.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{abp-ng.feature-management-proxy.js → abp-ng.feature-management-proxy.mjs} +5 -5
- package/fesm2015/abp-ng.feature-management-proxy.mjs.map +1 -0
- package/fesm2015/abp-ng.feature-management.mjs +211 -0
- package/fesm2015/abp-ng.feature-management.mjs.map +1 -0
- package/fesm2020/abp-ng.feature-management-proxy.mjs +40 -0
- package/fesm2020/abp-ng.feature-management-proxy.mjs.map +1 -0
- package/fesm2020/abp-ng.feature-management.mjs +215 -0
- package/fesm2020/abp-ng.feature-management.mjs.map +1 -0
- package/package.json +29 -8
- package/proxy/package.json +5 -5
- package/proxy/src/lib/proxy/README.md +17 -0
- package/bundles/abp-ng.feature-management-proxy.umd.js +0 -70
- package/bundles/abp-ng.feature-management-proxy.umd.js.map +0 -1
- package/bundles/abp-ng.feature-management.umd.js +0 -585
- package/bundles/abp-ng.feature-management.umd.js.map +0 -1
- package/esm2015/lib/components/feature-management/feature-management.component.js +0 -158
- package/esm2015/lib/directives/free-text-input.directive.js +0 -37
- package/fesm2015/abp-ng.feature-management-proxy.js.map +0 -1
- package/fesm2015/abp-ng.feature-management.js +0 -215
- package/fesm2015/abp-ng.feature-management.js.map +0 -1
|
File without changes
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { ConfigStateService, TrackByService } from '@abp/ng.core';
|
|
2
|
+
import { FeaturesService, } from '@abp/ng.feature-management/proxy';
|
|
3
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
4
|
+
import { finalize } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@abp/ng.core";
|
|
7
|
+
import * as i2 from "@abp/ng.feature-management/proxy";
|
|
8
|
+
import * as i3 from "@abp/ng.theme.shared";
|
|
9
|
+
import * as i4 from "@ng-bootstrap/ng-bootstrap";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
import * as i6 from "@angular/forms";
|
|
12
|
+
import * as i7 from "../../directives/free-text-input.directive";
|
|
13
|
+
var ValueTypes;
|
|
14
|
+
(function (ValueTypes) {
|
|
15
|
+
ValueTypes["ToggleStringValueType"] = "ToggleStringValueType";
|
|
16
|
+
ValueTypes["FreeTextStringValueType"] = "FreeTextStringValueType";
|
|
17
|
+
ValueTypes["SelectionStringValueType"] = "SelectionStringValueType";
|
|
18
|
+
})(ValueTypes || (ValueTypes = {}));
|
|
19
|
+
export class FeatureManagementComponent {
|
|
20
|
+
constructor(track, service, configState) {
|
|
21
|
+
this.track = track;
|
|
22
|
+
this.service = service;
|
|
23
|
+
this.configState = configState;
|
|
24
|
+
this.groups = [];
|
|
25
|
+
this.valueTypes = ValueTypes;
|
|
26
|
+
this.visibleChange = new EventEmitter();
|
|
27
|
+
this.modalBusy = false;
|
|
28
|
+
}
|
|
29
|
+
get visible() {
|
|
30
|
+
return this._visible;
|
|
31
|
+
}
|
|
32
|
+
set visible(value) {
|
|
33
|
+
if (this._visible === value)
|
|
34
|
+
return;
|
|
35
|
+
this._visible = value;
|
|
36
|
+
this.visibleChange.emit(value);
|
|
37
|
+
if (value)
|
|
38
|
+
this.openModal();
|
|
39
|
+
}
|
|
40
|
+
openModal() {
|
|
41
|
+
if (!this.providerName) {
|
|
42
|
+
throw new Error('providerName is required.');
|
|
43
|
+
}
|
|
44
|
+
this.getFeatures();
|
|
45
|
+
}
|
|
46
|
+
getFeatures() {
|
|
47
|
+
this.service.get(this.providerName, this.providerKey).subscribe(res => {
|
|
48
|
+
if (!res.groups?.length)
|
|
49
|
+
return;
|
|
50
|
+
this.groups = res.groups.map(({ name, displayName }) => ({ name, displayName }));
|
|
51
|
+
this.selectedGroupDisplayName = this.groups[0].displayName;
|
|
52
|
+
this.features = res.groups.reduce((acc, val) => ({
|
|
53
|
+
...acc,
|
|
54
|
+
[val.name]: mapFeatures(val.features, document.body.dir),
|
|
55
|
+
}), {});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
save() {
|
|
59
|
+
if (this.modalBusy)
|
|
60
|
+
return;
|
|
61
|
+
const changedFeatures = [];
|
|
62
|
+
Object.keys(this.features).forEach(key => {
|
|
63
|
+
this.features[key].forEach(feature => {
|
|
64
|
+
if (feature.value !== feature.initialValue)
|
|
65
|
+
changedFeatures.push({ name: feature.name, value: `${feature.value}` });
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
if (!changedFeatures.length) {
|
|
69
|
+
this.visible = false;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.modalBusy = true;
|
|
73
|
+
this.service
|
|
74
|
+
.update(this.providerName, this.providerKey, { features: changedFeatures })
|
|
75
|
+
.pipe(finalize(() => (this.modalBusy = false)))
|
|
76
|
+
.subscribe(() => {
|
|
77
|
+
this.visible = false;
|
|
78
|
+
if (!this.providerKey) {
|
|
79
|
+
// to refresh host's features
|
|
80
|
+
this.configState.refreshAppState().subscribe();
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
onCheckboxClick(val, feature) {
|
|
85
|
+
if (val) {
|
|
86
|
+
this.checkToggleAncestors(feature);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.uncheckToggleDescendants(feature);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
uncheckToggleDescendants(feature) {
|
|
93
|
+
this.findAllDescendantsOfByType(feature, ValueTypes.ToggleStringValueType).forEach(node => this.setFeatureValue(node, false));
|
|
94
|
+
}
|
|
95
|
+
checkToggleAncestors(feature) {
|
|
96
|
+
this.findAllAncestorsOfByType(feature, ValueTypes.ToggleStringValueType).forEach(node => this.setFeatureValue(node, true));
|
|
97
|
+
}
|
|
98
|
+
findAllAncestorsOfByType(feature, type) {
|
|
99
|
+
let parent = this.findParentByType(feature, type);
|
|
100
|
+
const ancestors = [];
|
|
101
|
+
while (parent) {
|
|
102
|
+
ancestors.push(parent);
|
|
103
|
+
parent = this.findParentByType(parent, type);
|
|
104
|
+
}
|
|
105
|
+
return ancestors;
|
|
106
|
+
}
|
|
107
|
+
findAllDescendantsOfByType(feature, type) {
|
|
108
|
+
const descendants = [];
|
|
109
|
+
const queue = [feature];
|
|
110
|
+
while (queue.length) {
|
|
111
|
+
const node = queue.pop();
|
|
112
|
+
const newDescendants = this.findChildrenByType(node, type);
|
|
113
|
+
descendants.push(...newDescendants);
|
|
114
|
+
queue.push(...newDescendants);
|
|
115
|
+
}
|
|
116
|
+
return descendants;
|
|
117
|
+
}
|
|
118
|
+
findParentByType(feature, type) {
|
|
119
|
+
return this.getCurrentGroup().find(f => f.valueType.name === type && f.name === feature.parentName);
|
|
120
|
+
}
|
|
121
|
+
findChildrenByType(feature, type) {
|
|
122
|
+
return this.getCurrentGroup().filter(f => f.valueType.name === type && f.parentName === feature.name);
|
|
123
|
+
}
|
|
124
|
+
getCurrentGroup() {
|
|
125
|
+
return this.features[this.selectedGroupDisplayName] ?? [];
|
|
126
|
+
}
|
|
127
|
+
setFeatureValue(feature, val) {
|
|
128
|
+
feature.value = val;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
FeatureManagementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeatureManagementComponent, deps: [{ token: i1.TrackByService }, { token: i2.FeaturesService }, { token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
132
|
+
FeatureManagementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FeatureManagementComponent, selector: "abp-feature-management", inputs: { providerKey: "providerKey", providerName: "providerName", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, exportAs: ["abpFeatureManagement"], ngImport: i0, template: "<abp-modal *ngIf=\"visible\" [(visible)]=\"visible\" [busy]=\"modalBusy\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'AbpFeatureManagement::Features' | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <ul\r\n ngbNav\r\n #nav=\"ngbNav\"\r\n [(activeId)]=\"selectedGroupDisplayName\"\r\n class=\"nav-pills\"\r\n orientation=\"vertical\"\r\n >\r\n <li\r\n *ngFor=\"let group of groups; trackBy: track.by('name')\"\r\n [ngbNavItem]=\"group.displayName\"\r\n >\r\n <a ngbNavLink>{{ group.displayName }}</a>\r\n <ng-template ngbNavContent>\r\n <h4>{{ selectedGroupDisplayName }}</h4>\r\n <hr class=\"mt-2 mb-3\" />\r\n\r\n <div\r\n class=\"mt-2\"\r\n *ngFor=\"let feature of features[group.name]; let i = index; trackBy: track.by('id')\"\r\n [ngStyle]=\"feature.style\"\r\n [ngSwitch]=\"feature.valueType?.name\"\r\n (keyup.enter)=\"save()\"\r\n >\r\n <ng-container *ngSwitchCase=\"valueTypes.ToggleStringValueType\">\r\n <div class=\"form-check\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"feature.name\"\r\n [(ngModel)]=\"feature.value\"\r\n (ngModelChange)=\"onCheckboxClick($event, feature)\"\r\n />\r\n\r\n <label class=\"form-check-label\" [htmlFor]=\"feature.name\">{{\r\n feature.displayName\r\n }}</label>\r\n <ng-container\r\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\r\n ></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"valueTypes.FreeTextStringValueType\">\r\n <div class=\"mb-3 form-group\">\r\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\r\n feature.displayName\r\n }}</label>\r\n <input\r\n class=\"form-control\"\r\n type=\"text\"\r\n [id]=\"feature.name\"\r\n [(ngModel)]=\"feature.value\"\r\n [abpFeatureManagementFreeText]=\"feature\"\r\n />\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\r\n ></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"valueTypes.SelectionStringValueType\">\r\n <ng-container *ngIf=\"feature.valueType.itemSource?.items?.length\">\r\n <div class=\"mb-3 form-group\">\r\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\r\n feature.displayName\r\n }}</label>\r\n <select class=\"form-select\" [id]=\"feature.name\" [(ngModel)]=\"feature.value\">\r\n <option\r\n *ngFor=\"\r\n let item of feature.valueType.itemSource?.items;\r\n trackBy: track.by('value')\r\n \"\r\n [ngValue]=\"item.value\"\r\n >\r\n {{\r\n item.displayText?.resourceName + '::' + item.displayText?.name\r\n | abpLocalization\r\n }}\r\n </option>\r\n </select>\r\n <ng-container\r\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\r\n ></ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>{{ feature.displayName }}</ng-container>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <ng-template #descTmp let-description>\r\n <small *ngIf=\"description\" class=\"d-block form-text text-muted\">{{ description }}</small>\r\n </ng-template>\r\n\r\n <div class=\"col-md-8\"><div [ngbNavOutlet]=\"nav\"></div></div>\r\n\r\n <div class=\"mx-3\" *ngIf=\"!groups.length\">\r\n {{ 'AbpFeatureManagement::NoFeatureFoundMessage' | abpLocalization }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpFeatureManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n *ngIf=\"groups.length\"\r\n iconClass=\"fa fa-check\"\r\n [disabled]=\"modalBusy\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpFeatureManagement::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", components: [{ type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i4.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i4.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.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: i7.FreeTextInputDirective, selector: "input[abpFeatureManagementFreeText]", inputs: ["abpFeatureManagementFreeText"], exportAs: ["inputAbpFeatureManagementFreeText"] }, { type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3.ModalCloseDirective, selector: "[abpClose]" }], pipes: { "abpLocalization": i1.LocalizationPipe } });
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeatureManagementComponent, decorators: [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ selector: 'abp-feature-management', exportAs: 'abpFeatureManagement', template: "<abp-modal *ngIf=\"visible\" [(visible)]=\"visible\" [busy]=\"modalBusy\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'AbpFeatureManagement::Features' | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <ul\r\n ngbNav\r\n #nav=\"ngbNav\"\r\n [(activeId)]=\"selectedGroupDisplayName\"\r\n class=\"nav-pills\"\r\n orientation=\"vertical\"\r\n >\r\n <li\r\n *ngFor=\"let group of groups; trackBy: track.by('name')\"\r\n [ngbNavItem]=\"group.displayName\"\r\n >\r\n <a ngbNavLink>{{ group.displayName }}</a>\r\n <ng-template ngbNavContent>\r\n <h4>{{ selectedGroupDisplayName }}</h4>\r\n <hr class=\"mt-2 mb-3\" />\r\n\r\n <div\r\n class=\"mt-2\"\r\n *ngFor=\"let feature of features[group.name]; let i = index; trackBy: track.by('id')\"\r\n [ngStyle]=\"feature.style\"\r\n [ngSwitch]=\"feature.valueType?.name\"\r\n (keyup.enter)=\"save()\"\r\n >\r\n <ng-container *ngSwitchCase=\"valueTypes.ToggleStringValueType\">\r\n <div class=\"form-check\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"feature.name\"\r\n [(ngModel)]=\"feature.value\"\r\n (ngModelChange)=\"onCheckboxClick($event, feature)\"\r\n />\r\n\r\n <label class=\"form-check-label\" [htmlFor]=\"feature.name\">{{\r\n feature.displayName\r\n }}</label>\r\n <ng-container\r\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\r\n ></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"valueTypes.FreeTextStringValueType\">\r\n <div class=\"mb-3 form-group\">\r\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\r\n feature.displayName\r\n }}</label>\r\n <input\r\n class=\"form-control\"\r\n type=\"text\"\r\n [id]=\"feature.name\"\r\n [(ngModel)]=\"feature.value\"\r\n [abpFeatureManagementFreeText]=\"feature\"\r\n />\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\r\n ></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"valueTypes.SelectionStringValueType\">\r\n <ng-container *ngIf=\"feature.valueType.itemSource?.items?.length\">\r\n <div class=\"mb-3 form-group\">\r\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\r\n feature.displayName\r\n }}</label>\r\n <select class=\"form-select\" [id]=\"feature.name\" [(ngModel)]=\"feature.value\">\r\n <option\r\n *ngFor=\"\r\n let item of feature.valueType.itemSource?.items;\r\n trackBy: track.by('value')\r\n \"\r\n [ngValue]=\"item.value\"\r\n >\r\n {{\r\n item.displayText?.resourceName + '::' + item.displayText?.name\r\n | abpLocalization\r\n }}\r\n </option>\r\n </select>\r\n <ng-container\r\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\r\n ></ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>{{ feature.displayName }}</ng-container>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <ng-template #descTmp let-description>\r\n <small *ngIf=\"description\" class=\"d-block form-text text-muted\">{{ description }}</small>\r\n </ng-template>\r\n\r\n <div class=\"col-md-8\"><div [ngbNavOutlet]=\"nav\"></div></div>\r\n\r\n <div class=\"mx-3\" *ngIf=\"!groups.length\">\r\n {{ 'AbpFeatureManagement::NoFeatureFoundMessage' | abpLocalization }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpFeatureManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n *ngIf=\"groups.length\"\r\n iconClass=\"fa fa-check\"\r\n [disabled]=\"modalBusy\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpFeatureManagement::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n" }]
|
|
136
|
+
}], ctorParameters: function () { return [{ type: i1.TrackByService }, { type: i2.FeaturesService }, { type: i1.ConfigStateService }]; }, propDecorators: { providerKey: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], providerName: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], visible: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], visibleChange: [{
|
|
143
|
+
type: Output
|
|
144
|
+
}] } });
|
|
145
|
+
function mapFeatures(features, dir) {
|
|
146
|
+
const margin = `margin-${dir === 'rtl' ? 'right' : 'left'}.px`;
|
|
147
|
+
return features.map(feature => {
|
|
148
|
+
const value = feature.valueType?.name === ValueTypes.ToggleStringValueType
|
|
149
|
+
? (feature.value || '').toLowerCase() === 'true'
|
|
150
|
+
: feature.value;
|
|
151
|
+
return {
|
|
152
|
+
...feature,
|
|
153
|
+
value,
|
|
154
|
+
initialValue: value,
|
|
155
|
+
style: { [margin]: feature.depth * 20 },
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZmVhdHVyZS1tYW5hZ2VtZW50L2ZlYXR1cmUtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mZWF0dXJlLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2ZlYXR1cmUtbWFuYWdlbWVudC9mZWF0dXJlLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRSxPQUFPLEVBR0wsZUFBZSxHQUVoQixNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFHMUMsSUFBSyxVQUlKO0FBSkQsV0FBSyxVQUFVO0lBQ2IsNkRBQStDLENBQUE7SUFDL0MsaUVBQW1ELENBQUE7SUFDbkQsbUVBQXFELENBQUE7QUFDdkQsQ0FBQyxFQUpJLFVBQVUsS0FBVixVQUFVLFFBSWQ7QUFPRCxNQUFNLE9BQU8sMEJBQTBCO0lBd0NyQyxZQUNrQixLQUFxQixFQUMzQixPQUF3QixFQUN4QixXQUErQjtRQUZ6QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUE5QjNDLFdBQU0sR0FBb0QsRUFBRSxDQUFDO1FBTTdELGVBQVUsR0FBRyxVQUFVLENBQUM7UUFpQkwsa0JBQWEs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QztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSwgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVEdG8sXHJcbiAgRmVhdHVyZUdyb3VwRHRvLFxyXG4gIEZlYXR1cmVzU2VydmljZSxcclxuICBVcGRhdGVGZWF0dXJlRHRvLFxyXG59IGZyb20gJ0BhYnAvbmcuZmVhdHVyZS1tYW5hZ2VtZW50L3Byb3h5JztcclxuaW1wb3J0IHsgTG9jYWxlRGlyZWN0aW9uIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRmVhdHVyZU1hbmFnZW1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZS1tYW5hZ2VtZW50JztcclxuXHJcbmVudW0gVmFsdWVUeXBlcyB7XHJcbiAgVG9nZ2xlU3RyaW5nVmFsdWVUeXBlID0gJ1RvZ2dsZVN0cmluZ1ZhbHVlVHlwZScsXHJcbiAgRnJlZVRleHRTdHJpbmdWYWx1ZVR5cGUgPSAnRnJlZVRleHRTdHJpbmdWYWx1ZVR5cGUnLFxyXG4gIFNlbGVjdGlvblN0cmluZ1ZhbHVlVHlwZSA9ICdTZWxlY3Rpb25TdHJpbmdWYWx1ZVR5cGUnLFxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1mZWF0dXJlLW1hbmFnZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWF0dXJlLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGV4cG9ydEFzOiAnYWJwRmVhdHVyZU1hbmFnZW1lbnQnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmVhdHVyZU1hbmFnZW1lbnRDb21wb25lbnRcclxuICBpbXBsZW1lbnRzXHJcbiAgICBGZWF0dXJlTWFuYWdlbWVudC5GZWF0dXJlTWFuYWdlbWVudENvbXBvbmVudElucHV0cyxcclxuICAgIEZlYXR1cmVNYW5hZ2VtZW50LkZlYXR1cmVNYW5hZ2VtZW50Q29tcG9uZW50T3V0cHV0c1xyXG57XHJcbiAgQElucHV0KClcclxuICBwcm92aWRlcktleTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHByb3ZpZGVyTmFtZTogc3RyaW5nO1xyXG5cclxuICBzZWxlY3RlZEdyb3VwRGlzcGxheU5hbWU6IHN0cmluZztcclxuXHJcbiAgZ3JvdXBzOiBQaWNrPEZlYXR1cmVHcm91cER0bywgJ25hbWUnIHwgJ2Rpc3BsYXlOYW1lJz5bXSA9IFtdO1xyXG5cclxuICBmZWF0dXJlczoge1xyXG4gICAgW2dyb3VwOiBzdHJpbmddOiBBcnJheTxGZWF0dXJlRHRvICYgeyBzdHlsZT86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07IGluaXRpYWxWYWx1ZTogYW55IH0+O1xyXG4gIH07XHJcblxyXG4gIHZhbHVlVHlwZXMgPSBWYWx1ZVR5cGVzO1xyXG5cclxuICBwcm90ZWN0ZWQgX3Zpc2libGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fdmlzaWJsZSA9PT0gdmFsdWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgbW9kYWxCdXN5ID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgIHByb3RlY3RlZCBzZXJ2aWNlOiBGZWF0dXJlc1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG9wZW5Nb2RhbCgpIHtcclxuICAgIGlmICghdGhpcy5wcm92aWRlck5hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwcm92aWRlck5hbWUgaXMgcmVxdWlyZWQuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRGZWF0dXJlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZXMoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0KHRoaXMucHJvdmlkZXJOYW1lLCB0aGlzLnByb3ZpZGVyS2V5KS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgaWYgKCFyZXMuZ3JvdXBzPy5sZW5ndGgpIHJldHVybjtcclxuICAgICAgdGhpcy5ncm91cHMgPSByZXMuZ3JvdXBzLm1hcCgoeyBuYW1lLCBkaXNwbGF5TmFtZSB9KSA9PiAoeyBuYW1lLCBkaXNwbGF5TmFtZSB9KSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cERpc3BsYXlOYW1lID0gdGhpcy5ncm91cHNbMF0uZGlzcGxheU5hbWU7XHJcbiAgICAgIHRoaXMuZmVhdHVyZXMgPSByZXMuZ3JvdXBzLnJlZHVjZShcclxuICAgICAgICAoYWNjLCB2YWwpID0+ICh7XHJcbiAgICAgICAgICAuLi5hY2MsXHJcbiAgICAgICAgICBbdmFsLm5hbWVdOiBtYXBGZWF0dXJlcyh2YWwuZmVhdHVyZXMsIGRvY3VtZW50LmJvZHkuZGlyIGFzIExvY2FsZURpcmVjdGlvbiksXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAge30sXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RhbEJ1c3kpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjaGFuZ2VkRmVhdHVyZXMgPSBbXSBhcyBVcGRhdGVGZWF0dXJlRHRvW107XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mZWF0dXJlcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICB0aGlzLmZlYXR1cmVzW2tleV0uZm9yRWFjaChmZWF0dXJlID0+IHtcclxuICAgICAgICBpZiAoZmVhdHVyZS52YWx1ZSAhPT0gZmVhdHVyZS5pbml0aWFsVmFsdWUpXHJcbiAgICAgICAgICBjaGFuZ2VkRmVhdHVyZXMucHVzaCh7IG5hbWU6IGZlYXR1cmUubmFtZSwgdmFsdWU6IGAke2ZlYXR1cmUudmFsdWV9YCB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIWNoYW5nZWRGZWF0dXJlcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1vZGFsQnVzeSA9IHRydWU7XHJcbiAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgLnVwZGF0ZSh0aGlzLnByb3ZpZGVyTmFtZSwgdGhpcy5wcm92aWRlcktleSwgeyBmZWF0dXJlczogY2hhbmdlZEZlYXR1cmVzIH0pXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLm1vZGFsQnVzeSA9IGZhbHNlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucHJvdmlkZXJLZXkpIHtcclxuICAgICAgICAgIC8vIHRvIHJlZnJlc2ggaG9zdCdzIGZlYXR1cmVzXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrYm94Q2xpY2sodmFsOiBib29sZWFuLCBmZWF0dXJlOiBGZWF0dXJlRHRvKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tUb2dnbGVBbmNlc3RvcnMoZmVhdHVyZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVuY2hlY2tUb2dnbGVEZXNjZW5kYW50cyhmZWF0dXJlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5jaGVja1RvZ2dsZURlc2NlbmRhbnRzKGZlYXR1cmU6IEZlYXR1cmVEdG8pIHtcclxuICAgIHRoaXMuZmluZEFsbERlc2NlbmRhbnRzT2ZCeVR5cGUoZmVhdHVyZSwgVmFsdWVUeXBlcy5Ub2dnbGVTdHJpbmdWYWx1ZVR5cGUpLmZvckVhY2gobm9kZSA9PlxyXG4gICAgICB0aGlzLnNldEZlYXR1cmVWYWx1ZShub2RlLCBmYWxzZSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RvZ2dsZUFuY2VzdG9ycyhmZWF0dXJlOiBGZWF0dXJlRHRvKSB7XHJcbiAgICB0aGlzLmZpbmRBbGxBbmNlc3RvcnNPZkJ5VHlwZShmZWF0dXJlLCBWYWx1ZVR5cGVzLlRvZ2dsZVN0cmluZ1ZhbHVlVHlwZSkuZm9yRWFjaChub2RlID0+XHJcbiAgICAgIHRoaXMuc2V0RmVhdHVyZVZhbHVlKG5vZGUsIHRydWUpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEFsbEFuY2VzdG9yc09mQnlUeXBlKGZlYXR1cmU6IEZlYXR1cmVEdG8sIHR5cGU6IFZhbHVlVHlwZXMpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnRCeVR5cGUoZmVhdHVyZSwgdHlwZSk7XHJcbiAgICBjb25zdCBhbmNlc3RvcnMgPSBbXTtcclxuICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgYW5jZXN0b3JzLnB1c2gocGFyZW50KTtcclxuICAgICAgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50QnlUeXBlKHBhcmVudCwgdHlwZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYW5jZXN0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kQWxsRGVzY2VuZGFudHNPZkJ5VHlwZShmZWF0dXJlOiBGZWF0dXJlRHRvLCB0eXBlOiBWYWx1ZVR5cGVzKSB7XHJcbiAgICBjb25zdCBkZXNjZW5kYW50cyA9IFtdO1xyXG4gICAgY29uc3QgcXVldWUgPSBbZmVhdHVyZV07XHJcblxyXG4gICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBub2RlID0gcXVldWUucG9wKCk7XHJcbiAgICAgIGNvbnN0IG5ld0Rlc2NlbmRhbnRzID0gdGhpcy5maW5kQ2hpbGRyZW5CeVR5cGUobm9kZSwgdHlwZSk7XHJcbiAgICAgIGRlc2NlbmRhbnRzLnB1c2goLi4ubmV3RGVzY2VuZGFudHMpO1xyXG4gICAgICBxdWV1ZS5wdXNoKC4uLm5ld0Rlc2NlbmRhbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGVzY2VuZGFudHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRQYXJlbnRCeVR5cGUoZmVhdHVyZTogRmVhdHVyZUR0bywgdHlwZTogVmFsdWVUeXBlcykge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudEdyb3VwKCkuZmluZChcclxuICAgICAgZiA9PiBmLnZhbHVlVHlwZS5uYW1lID09PSB0eXBlICYmIGYubmFtZSA9PT0gZmVhdHVyZS5wYXJlbnROYW1lLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENoaWxkcmVuQnlUeXBlKGZlYXR1cmU6IEZlYXR1cmVEdG8sIHR5cGU6IFZhbHVlVHlwZXMpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRHcm91cCgpLmZpbHRlcihcclxuICAgICAgZiA9PiBmLnZhbHVlVHlwZS5uYW1lID09PSB0eXBlICYmIGYucGFyZW50TmFtZSA9PT0gZmVhdHVyZS5uYW1lLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q3VycmVudEdyb3VwKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZXNbdGhpcy5zZWxlY3RlZEdyb3VwRGlzcGxheU5hbWVdID8/IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGZWF0dXJlVmFsdWUoZmVhdHVyZTogRmVhdHVyZUR0bywgdmFsOiBib29sZWFuKSB7XHJcbiAgICBmZWF0dXJlLnZhbHVlID0gdmFsIGFzIGFueTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hcEZlYXR1cmVzKGZlYXR1cmVzOiBGZWF0dXJlRHRvW10sIGRpcjogTG9jYWxlRGlyZWN0aW9uKSB7XHJcbiAgY29uc3QgbWFyZ2luID0gYG1hcmdpbi0ke2RpciA9PT0gJ3J0bCcgPyAncmlnaHQnIDogJ2xlZnQnfS5weGA7XHJcblxyXG4gIHJldHVybiBmZWF0dXJlcy5tYXAoZmVhdHVyZSA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9XHJcbiAgICAgIGZlYXR1cmUudmFsdWVUeXBlPy5uYW1lID09PSBWYWx1ZVR5cGVzLlRvZ2dsZVN0cmluZ1ZhbHVlVHlwZVxyXG4gICAgICAgID8gKGZlYXR1cmUudmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xyXG4gICAgICAgIDogZmVhdHVyZS52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5mZWF0dXJlLFxyXG4gICAgICB2YWx1ZSxcclxuICAgICAgaW5pdGlhbFZhbHVlOiB2YWx1ZSxcclxuICAgICAgc3R5bGU6IHsgW21hcmdpbl06IGZlYXR1cmUuZGVwdGggKiAyMCB9LFxyXG4gICAgfTtcclxuICB9KTtcclxufVxyXG4iLCI8YWJwLW1vZGFsICpuZ0lmPVwidmlzaWJsZVwiIFsodmlzaWJsZSldPVwidmlzaWJsZVwiIFtidXN5XT1cIm1vZGFsQnVzeVwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+e3sgJ0FicEZlYXR1cmVNYW5hZ2VtZW50OjpGZWF0dXJlcycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgPHVsXHJcbiAgICAgICAgICBuZ2JOYXZcclxuICAgICAgICAgICNuYXY9XCJuZ2JOYXZcIlxyXG4gICAgICAgICAgWyhhY3RpdmVJZCldPVwic2VsZWN0ZWRHcm91cERpc3BsYXlOYW1lXCJcclxuICAgICAgICAgIGNsYXNzPVwibmF2LXBpbGxzXCJcclxuICAgICAgICAgIG9yaWVudGF0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzOyB0cmFja0J5OiB0cmFjay5ieSgnbmFtZScpXCJcclxuICAgICAgICAgICAgW25nYk5hdkl0ZW1dPVwiZ3JvdXAuZGlzcGxheU5hbWVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7IGdyb3VwLmRpc3BsYXlOYW1lIH19PC9hPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICA8aDQ+e3sgc2VsZWN0ZWRHcm91cERpc3BsYXlOYW1lIH19PC9oND5cclxuICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJtdC0yIG1iLTNcIiAvPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZlYXR1cmUgb2YgZmVhdHVyZXNbZ3JvdXAubmFtZV07IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrLmJ5KCdpZCcpXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImZlYXR1cmUuc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImZlYXR1cmUudmFsdWVUeXBlPy5uYW1lXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInZhbHVlVHlwZXMuVG9nZ2xlU3RyaW5nVmFsdWVUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJmZWF0dXJlLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmZWF0dXJlLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tib3hDbGljaygkZXZlbnQsIGZlYXR1cmUpXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2h0bWxGb3JdPVwiZmVhdHVyZS5uYW1lXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXNjVG1wOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmVhdHVyZS5kZXNjcmlwdGlvbiB9XCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ2YWx1ZVR5cGVzLkZyZWVUZXh0U3RyaW5nVmFsdWVUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2h0bWxGb3JdPVwiZmVhdHVyZS5uYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmVhdHVyZS5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmVhdHVyZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWJwRmVhdHVyZU1hbmFnZW1lbnRGcmVlVGV4dF09XCJmZWF0dXJlXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRlc2NUbXA7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBmZWF0dXJlLmRlc2NyaXB0aW9uIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInZhbHVlVHlwZXMuU2VsZWN0aW9uU3RyaW5nVmFsdWVUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmZWF0dXJlLnZhbHVlVHlwZS5pdGVtU291cmNlPy5pdGVtcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtodG1sRm9yXT1cImZlYXR1cmUubmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFtpZF09XCJmZWF0dXJlLm5hbWVcIiBbKG5nTW9kZWwpXT1cImZlYXR1cmUudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgZmVhdHVyZS52YWx1ZVR5cGUuaXRlbVNvdXJjZT8uaXRlbXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFjay5ieSgndmFsdWUnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kaXNwbGF5VGV4dD8ucmVzb3VyY2VOYW1lICsgJzo6JyArIGl0ZW0uZGlzcGxheVRleHQ/Lm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRlc2NUbXA7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBmZWF0dXJlLmRlc2NyaXB0aW9uIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0Pnt7IGZlYXR1cmUuZGlzcGxheU5hbWUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Rlc2NUbXAgbGV0LWRlc2NyaXB0aW9uPlxyXG4gICAgICAgIDxzbWFsbCAqbmdJZj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJkLWJsb2NrIGZvcm0tdGV4dCB0ZXh0LW11dGVkXCI+e3sgZGVzY3JpcHRpb24gfX08L3NtYWxsPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+PGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PjwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm14LTNcIiAqbmdJZj1cIiFncm91cHMubGVuZ3RoXCI+XHJcbiAgICAgICAge3sgJ0FicEZlYXR1cmVNYW5hZ2VtZW50OjpOb0ZlYXR1cmVGb3VuZE1lc3NhZ2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIGFicENsb3NlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCI+XHJcbiAgICAgIHt7ICdBYnBGZWF0dXJlTWFuYWdlbWVudDo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YWJwLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cImdyb3Vwcy5sZW5ndGhcIlxyXG4gICAgICBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJtb2RhbEJ1c3lcIlxyXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgID5cclxuICAgICAge3sgJ0FicEZlYXR1cmVNYW5hZ2VtZW50OjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9hYnAtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG4iXX0=
|
|
File without changes
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Directive, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export const INPUT_TYPES = {
|
|
4
|
+
numeric: 'number',
|
|
5
|
+
default: 'text',
|
|
6
|
+
};
|
|
7
|
+
export class FreeTextInputDirective {
|
|
8
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
9
|
+
set feature(val) {
|
|
10
|
+
this._feature = val;
|
|
11
|
+
this.setInputType();
|
|
12
|
+
}
|
|
13
|
+
get feature() {
|
|
14
|
+
return this._feature;
|
|
15
|
+
}
|
|
16
|
+
setInputType() {
|
|
17
|
+
const validatorType = this.feature?.valueType?.validator?.name.toLowerCase();
|
|
18
|
+
this.type = INPUT_TYPES[validatorType] ?? INPUT_TYPES.default;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
FreeTextInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FreeTextInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
22
|
+
FreeTextInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: FreeTextInputDirective, selector: "input[abpFeatureManagementFreeText]", inputs: { feature: ["abpFeatureManagementFreeText", "feature"] }, host: { properties: { "type": "this.type" } }, exportAs: ["inputAbpFeatureManagementFreeText"], ngImport: i0 });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FreeTextInputDirective, decorators: [{
|
|
24
|
+
type: Directive,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: 'input[abpFeatureManagementFreeText]',
|
|
27
|
+
exportAs: 'inputAbpFeatureManagementFreeText',
|
|
28
|
+
}]
|
|
29
|
+
}], propDecorators: { feature: [{
|
|
30
|
+
type: Input,
|
|
31
|
+
args: ['abpFeatureManagementFreeText']
|
|
32
|
+
}], type: [{
|
|
33
|
+
type: HostBinding,
|
|
34
|
+
args: ['type']
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZS10ZXh0LWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvbGliL2RpcmVjdGl2ZXMvZnJlZS10ZXh0LWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVzlELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsTUFBTTtDQUNoQixDQUFDO0FBTUYsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQywyREFBMkQ7SUFDM0QsSUFBMkMsT0FBTyxDQUFDLEdBQWlCO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFJTyxZQUFZO1FBQ2xCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNoRSxDQUFDOzttSEFqQlUsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUNBQXFDO29CQUMvQyxRQUFRLEVBQUUsbUNBQW1DO2lCQUM5Qzs4QkFJNEMsT0FBTztzQkFBakQsS0FBSzt1QkFBQyw4QkFBOEI7Z0JBU2hCLElBQUk7c0JBQXhCLFdBQVc7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBUT0RPOiBpbXByb3ZlIHRoaXMgdHlwZVxyXG5leHBvcnQgaW50ZXJmYWNlIEZyZWVUZXh0VHlwZSB7XHJcbiAgdmFsdWVUeXBlOiB7XHJcbiAgICB2YWxpZGF0b3I6IHtcclxuICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgfTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgSU5QVVRfVFlQRVMgPSB7XHJcbiAgbnVtZXJpYzogJ251bWJlcicsXHJcbiAgZGVmYXVsdDogJ3RleHQnLFxyXG59O1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dFthYnBGZWF0dXJlTWFuYWdlbWVudEZyZWVUZXh0XScsXHJcbiAgZXhwb3J0QXM6ICdpbnB1dEFicEZlYXR1cmVNYW5hZ2VtZW50RnJlZVRleHQnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlZVRleHRJbnB1dERpcmVjdGl2ZSB7XHJcbiAgX2ZlYXR1cmU6IEZyZWVUZXh0VHlwZTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnYWJwRmVhdHVyZU1hbmFnZW1lbnRGcmVlVGV4dCcpIHNldCBmZWF0dXJlKHZhbDogRnJlZVRleHRUeXBlKSB7XHJcbiAgICB0aGlzLl9mZWF0dXJlID0gdmFsO1xyXG4gICAgdGhpcy5zZXRJbnB1dFR5cGUoKTtcclxuICB9XHJcblxyXG4gIGdldCBmZWF0dXJlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZlYXR1cmU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ3R5cGUnKSB0eXBlOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgc2V0SW5wdXRUeXBlKCkge1xyXG4gICAgY29uc3QgdmFsaWRhdG9yVHlwZSA9IHRoaXMuZmVhdHVyZT8udmFsdWVUeXBlPy52YWxpZGF0b3I/Lm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMudHlwZSA9IElOUFVUX1RZUEVTW3ZhbGlkYXRvclR5cGVdID8/IElOUFVUX1RZUEVTLmRlZmF1bHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
File without changes
|
|
File without changes
|
package/{esm2015/lib/feature-management.module.js → esm2020/lib/feature-management.module.mjs}
RENAMED
|
@@ -8,10 +8,10 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
const exported = [FeatureManagementComponent, FreeTextInputDirective];
|
|
9
9
|
export class FeatureManagementModule {
|
|
10
10
|
}
|
|
11
|
-
FeatureManagementModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
FeatureManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
13
|
-
FeatureManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11
|
+
FeatureManagementModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeatureManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
FeatureManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeatureManagementModule, declarations: [FeatureManagementComponent, FreeTextInputDirective], imports: [CoreModule, ThemeSharedModule, NgbNavModule], exports: [FeatureManagementComponent, FreeTextInputDirective] });
|
|
13
|
+
FeatureManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeatureManagementModule, imports: [[CoreModule, ThemeSharedModule, NgbNavModule]] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeatureManagementModule, decorators: [{
|
|
15
15
|
type: NgModule,
|
|
16
16
|
args: [{
|
|
17
17
|
declarations: [...exported],
|
|
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
19
19
|
exports: [...exported],
|
|
20
20
|
}]
|
|
21
21
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmUtbWFuYWdlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFaEYsTUFBTSxRQUFRLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBT3RFLE1BQU0sT0FBTyx1QkFBdUI7O29IQUF2Qix1QkFBdUI7cUhBQXZCLHVCQUF1QixpQkFQbEIsMEJBQTBCLEVBQUUsc0JBQXNCLGFBSXhELFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLGFBSnJDLDBCQUEwQixFQUFFLHNCQUFzQjtxSEFPdkQsdUJBQXVCLFlBSHpCLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQzsyRkFHM0MsdUJBQXVCO2tCQUxuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO29CQUN0RCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk5hdk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRmVhdHVyZU1hbmFnZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmVhdHVyZS1tYW5hZ2VtZW50L2ZlYXR1cmUtbWFuYWdlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGcmVlVGV4dElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZyZWUtdGV4dC1pbnB1dC5kaXJlY3RpdmUnO1xyXG5cclxuY29uc3QgZXhwb3J0ZWQgPSBbRmVhdHVyZU1hbmFnZW1lbnRDb21wb25lbnQsIEZyZWVUZXh0SW5wdXREaXJlY3RpdmVdO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFsuLi5leHBvcnRlZF0sXHJcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIFRoZW1lU2hhcmVkTW9kdWxlLCBOZ2JOYXZNb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFsuLi5leHBvcnRlZF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGZWF0dXJlTWFuYWdlbWVudE1vZHVsZSB7fVxyXG4iXX0=
|
package/{esm2015/lib/models/feature-management.js → esm2020/lib/models/feature-management.mjs}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -19,12 +19,12 @@ export class FeaturesService {
|
|
|
19
19
|
}, { apiName: this.apiName });
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
FeaturesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
23
|
-
FeaturesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
FeaturesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeaturesService, deps: [{ token: i1.RestService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
FeaturesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeaturesService, providedIn: 'root' });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeaturesService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: 'root',
|
|
28
28
|
}]
|
|
29
29
|
}], ctorParameters: function () { return [{ type: i1.RestService }]; } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9wcm94eS9zcmMvbGliL3Byb3h5L2ZlYXR1cmUtbWFuYWdlbWVudC9mZWF0dXJlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNDLE1BQU0sT0FBTyxlQUFlO0lBb0IxQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQW5CNUMsWUFBTyxHQUFHLHNCQUFzQixDQUFDO1FBRWpDLFFBQUcsR0FBRyxDQUFDLFlBQW9CLEVBQUUsV0FBbUIsRUFBRSxFQUFFLENBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUErQjtZQUNyRCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxrQ0FBa0M7WUFDdkMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRTtTQUN0QyxFQUNELEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRTdCLFdBQU0sR0FBRyxDQUFDLFlBQW9CLEVBQUUsV0FBbUIsRUFBRSxLQUF3QixFQUFFLEVBQUUsQ0FDL0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQVk7WUFDbEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsa0NBQWtDO1lBQ3ZDLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUU7WUFDckMsSUFBSSxFQUFFLEtBQUs7U0FDWixFQUNELEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRWtCLENBQUM7OzRHQXBCckMsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgR2V0RmVhdHVyZUxpc3RSZXN1bHREdG8sIFVwZGF0ZUZlYXR1cmVzRHRvIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGZWF0dXJlc1NlcnZpY2Uge1xyXG4gIGFwaU5hbWUgPSAnQWJwRmVhdHVyZU1hbmFnZW1lbnQnO1xyXG5cclxuICBnZXQgPSAocHJvdmlkZXJOYW1lOiBzdHJpbmcsIHByb3ZpZGVyS2V5OiBzdHJpbmcpID0+XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBHZXRGZWF0dXJlTGlzdFJlc3VsdER0bz4oe1xyXG4gICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICB1cmw6ICcvYXBpL2ZlYXR1cmUtbWFuYWdlbWVudC9mZWF0dXJlcycsXHJcbiAgICAgIHBhcmFtczogeyBwcm92aWRlck5hbWUsIHByb3ZpZGVyS2V5IH0sXHJcbiAgICB9LFxyXG4gICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfSk7XHJcblxyXG4gIHVwZGF0ZSA9IChwcm92aWRlck5hbWU6IHN0cmluZywgcHJvdmlkZXJLZXk6IHN0cmluZywgaW5wdXQ6IFVwZGF0ZUZlYXR1cmVzRHRvKSA9PlxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgdm9pZD4oe1xyXG4gICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICB1cmw6ICcvYXBpL2ZlYXR1cmUtbWFuYWdlbWVudC9mZWF0dXJlcycsXHJcbiAgICAgIHBhcmFtczogeyBwcm92aWRlck5hbWUsIHByb3ZpZGVyS2V5IH0sXHJcbiAgICAgIGJvZHk6IGlucHV0LFxyXG4gICAgfSxcclxuICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSkge31cclxufVxyXG4iXX0=
|
|
File without changes
|
|
File without changes
|
package/{esm2015/proxy/lib/proxy/validation/index.js → esm2020/proxy/lib/proxy/validation/index.mjs}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as i1 from '@abp/ng.core';
|
|
2
1
|
import * as i0 from '@angular/core';
|
|
3
2
|
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i1 from '@abp/ng.core';
|
|
4
4
|
|
|
5
5
|
class FeaturesService {
|
|
6
6
|
constructor(restService) {
|
|
@@ -19,9 +19,9 @@ class FeaturesService {
|
|
|
19
19
|
}, { apiName: this.apiName });
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
FeaturesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
23
|
-
FeaturesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
FeaturesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeaturesService, deps: [{ token: i1.RestService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
FeaturesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeaturesService, providedIn: 'root' });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FeaturesService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: 'root',
|
|
@@ -37,4 +37,4 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
37
37
|
*/
|
|
38
38
|
|
|
39
39
|
export { FeaturesService, index as StringValues };
|
|
40
|
-
//# sourceMappingURL=abp-ng.feature-management-proxy.
|
|
40
|
+
//# sourceMappingURL=abp-ng.feature-management-proxy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abp-ng.feature-management-proxy.mjs","sources":["../../../../packages/feature-management/proxy/src/lib/proxy/feature-management/features.service.ts","../../../../packages/feature-management/proxy/src/abp-ng.feature-management-proxy.ts"],"sourcesContent":["import type { GetFeatureListResultDto, UpdateFeaturesDto } from './models';\r\nimport { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FeaturesService {\r\n apiName = 'AbpFeatureManagement';\r\n\r\n get = (providerName: string, providerKey: string) =>\r\n this.restService.request<any, GetFeatureListResultDto>({\r\n method: 'GET',\r\n url: '/api/feature-management/features',\r\n params: { providerName, providerKey },\r\n },\r\n { apiName: this.apiName });\r\n\r\n update = (providerName: string, providerKey: string, input: UpdateFeaturesDto) =>\r\n this.restService.request<any, void>({\r\n method: 'PUT',\r\n url: '/api/feature-management/features',\r\n params: { providerName, providerKey },\r\n body: input,\r\n },\r\n { apiName: this.apiName });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAOa,eAAe;IAoB1B,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAnB5C,YAAO,GAAG,sBAAsB,CAAC;QAEjC,QAAG,GAAG,CAAC,YAAoB,EAAE,WAAmB,KAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,CAA+B;YACrD,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,kCAAkC;YACvC,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE;SACtC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,WAAM,GAAG,CAAC,YAAoB,EAAE,WAAmB,EAAE,KAAwB,KAC3E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;YAClC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,kCAAkC;YACvC,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE;YACrC,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAEmB;;4GApBrC,eAAe;gHAAf,eAAe,cAFd,MAAM;2FAEP,eAAe;kBAH3B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;;;;ACND;;;;;;"}
|