@posiwise/shared-components 0.0.12 → 0.0.14
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/index.mjs +3 -1
- package/esm2020/lib/permission-tree/permission-tree.component.mjs +113 -0
- package/esm2020/lib/pw-tabs/pw-tabs.component.mjs +50 -0
- package/esm2020/lib/shared-components.module.mjs +24 -10
- package/fesm2015/shared-components.mjs +178 -8
- package/fesm2015/shared-components.mjs.map +1 -1
- package/fesm2020/shared-components.mjs +177 -8
- package/fesm2020/shared-components.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/permission-tree/permission-tree.component.d.ts +15 -0
- package/lib/pw-tabs/pw-tabs.component.d.ts +16 -0
- package/lib/shared-components.module.d.ts +8 -5
- package/package.json +3 -3
package/esm2020/index.mjs
CHANGED
|
@@ -4,4 +4,6 @@ export * from './lib/ab-test/ab-alternative/ab-alternative.component';
|
|
|
4
4
|
export * from './lib/password-validation/password-validation.component';
|
|
5
5
|
export * from './lib/custom-uploader/custom-uploader.component';
|
|
6
6
|
export * from './lib/image-cropper/image-cropper.component';
|
|
7
|
-
|
|
7
|
+
export * from './lib/pw-tabs/pw-tabs.component';
|
|
8
|
+
export * from './lib/permission-tree/permission-tree.component';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaURBQWlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtY29tcG9uZW50cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWItdGVzdC9hYi10ZXN0LWNvbnRhaW5lci9hYi10ZXN0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWItdGVzdC9hYi1hbHRlcm5hdGl2ZS9hYi1hbHRlcm5hdGl2ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFzc3dvcmQtdmFsaWRhdGlvbi9wYXNzd29yZC12YWxpZGF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tdXBsb2FkZXIvY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B3LXRhYnMvcHctdGFicy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVybWlzc2lvbi10cmVlL3Blcm1pc3Npb24tdHJlZS5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Component, ElementRef, Input } from '@angular/core';
|
|
2
|
+
import map from 'lodash/map';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class PermissionTreeComponent {
|
|
5
|
+
constructor(_element) {
|
|
6
|
+
this._element = _element;
|
|
7
|
+
}
|
|
8
|
+
ngOnChanges(simple) {
|
|
9
|
+
if (simple['data'] &&
|
|
10
|
+
simple['data'].currentValue &&
|
|
11
|
+
simple['data'].currentValue.grantedPermissionNames) {
|
|
12
|
+
this.refreshTree();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
ngAfterViewInit() {
|
|
16
|
+
this._$tree = $(this._element.nativeElement);
|
|
17
|
+
this.refreshTree();
|
|
18
|
+
}
|
|
19
|
+
getGrantedPermissionNames() {
|
|
20
|
+
if (!this._$tree || !this._createdTreeBefore) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
const permissionNames = [];
|
|
24
|
+
const selectedPermissions = this._$tree.jstree('get_selected', true);
|
|
25
|
+
for (let i = 0; i < selectedPermissions.length; i++) {
|
|
26
|
+
permissionNames.push(selectedPermissions[i].original.id);
|
|
27
|
+
}
|
|
28
|
+
return permissionNames;
|
|
29
|
+
}
|
|
30
|
+
refreshTree() {
|
|
31
|
+
if (this._createdTreeBefore) {
|
|
32
|
+
this._$tree.jstree('destroy');
|
|
33
|
+
}
|
|
34
|
+
this._createdTreeBefore = false;
|
|
35
|
+
if (!this.data || !this._$tree) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const treeData = map(this.data.permissions, item => {
|
|
39
|
+
return {
|
|
40
|
+
id: item.name,
|
|
41
|
+
parent: item.parentName ? item.parentName : '#',
|
|
42
|
+
text: item.displayName,
|
|
43
|
+
state: {
|
|
44
|
+
opened: true,
|
|
45
|
+
selected: this.data.grantedPermissionNames.includes(item.name)
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
this._$tree.jstree({
|
|
50
|
+
core: {
|
|
51
|
+
data: treeData
|
|
52
|
+
},
|
|
53
|
+
types: {
|
|
54
|
+
default: {
|
|
55
|
+
icon: 'fa fa-folder-open tree-item-icon-color icon-lg'
|
|
56
|
+
},
|
|
57
|
+
file: {
|
|
58
|
+
icon: 'fa fa-file tree-item-icon-color icon-lg'
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
checkbox: {
|
|
62
|
+
keep_selected_style: false,
|
|
63
|
+
three_state: false,
|
|
64
|
+
cascade: ''
|
|
65
|
+
},
|
|
66
|
+
plugins: ['checkbox', 'types']
|
|
67
|
+
});
|
|
68
|
+
this._createdTreeBefore = true;
|
|
69
|
+
let inTreeChangeEvent = false;
|
|
70
|
+
function selectNodeAndAllParents(node) {
|
|
71
|
+
this._$tree.jstree('select_node', node, true);
|
|
72
|
+
const parent = this._$tree.jstree('get_parent', node);
|
|
73
|
+
if (parent) {
|
|
74
|
+
selectNodeAndAllParents(parent);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
this._$tree.on('changed.jstree', (_e, data) => {
|
|
78
|
+
if (!data.node) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const wasInTreeChangeEvent = inTreeChangeEvent;
|
|
82
|
+
if (!wasInTreeChangeEvent) {
|
|
83
|
+
inTreeChangeEvent = true;
|
|
84
|
+
}
|
|
85
|
+
let childrenNodes;
|
|
86
|
+
if (data.node.state.selected) {
|
|
87
|
+
selectNodeAndAllParents(this._$tree.jstree('get_parent', data.node));
|
|
88
|
+
childrenNodes = $.makeArray(this._$tree.jstree('get_children_dom', data.node));
|
|
89
|
+
this._$tree.jstree('select_node', childrenNodes);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
childrenNodes = $.makeArray(this._$tree.jstree('get_children_dom', data.node));
|
|
93
|
+
this._$tree.jstree('deselect_node', childrenNodes);
|
|
94
|
+
}
|
|
95
|
+
if (!wasInTreeChangeEvent) {
|
|
96
|
+
inTreeChangeEvent = false;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
PermissionTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PermissionTreeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
PermissionTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: PermissionTreeComponent, selector: "permission-tree", inputs: { data: "data" }, usesOnChanges: true, ngImport: i0, template: ` <div class="permission-tree"></div> `, isInline: true });
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PermissionTreeComponent, decorators: [{
|
|
104
|
+
type: Component,
|
|
105
|
+
args: [{
|
|
106
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
107
|
+
selector: 'permission-tree',
|
|
108
|
+
template: ` <div class="permission-tree"></div> `
|
|
109
|
+
}]
|
|
110
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}] } });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wZXJtaXNzaW9uLXRyZWUvcGVybWlzc2lvbi10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDOztBQU83QixNQUFNLE9BQU8sdUJBQXVCO0lBT2hDLFlBQW9CLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7SUFBRyxDQUFDO0lBRTVDLFdBQVcsQ0FBQyxNQUFxQjtRQUM3QixJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDZCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWTtZQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUNwRDtZQUNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHlCQUF5QjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTNCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLEtBQUssSUFB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QUMsQ0FBQyxDQUFDO2dCQUVyRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3BEO2lCQUFNO2dCQUNILGFBQWEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDdEQ7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3ZCLGlCQUFpQixHQUFHLEtBQUssQ0FBQzthQUM3QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7b0hBekhRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHNHQUZ0Qix1Q0FBdUM7MkZBRXhDLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSx1Q0FBdUM7aUJBQ3BEO2lHQUVZLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBtYXAgZnJvbSAnbG9kYXNoL21hcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdwZXJtaXNzaW9uLXRyZWUnLFxuICAgIHRlbXBsYXRlOiBgIDxkaXYgY2xhc3M9XCJwZXJtaXNzaW9uLXRyZWVcIj48L2Rpdj4gYFxufSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgZGF0YTogYW55O1xuXG4gICAgcHJpdmF0ZSBfJHRyZWU6IGFueTtcblxuICAgIHByaXZhdGUgX2NyZWF0ZWRUcmVlQmVmb3JlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZTogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBzaW1wbGVbJ2RhdGEnXSAmJlxuICAgICAgICAgICAgc2ltcGxlWydkYXRhJ10uY3VycmVudFZhbHVlICYmXG4gICAgICAgICAgICBzaW1wbGVbJ2RhdGEnXS5jdXJyZW50VmFsdWUuZ3JhbnRlZFBlcm1pc3Npb25OYW1lc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFRyZWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fJHRyZWUgPSAkKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoVHJlZSgpO1xuICAgIH1cblxuICAgIGdldEdyYW50ZWRQZXJtaXNzaW9uTmFtZXMoKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXRoaXMuXyR0cmVlIHx8ICF0aGlzLl9jcmVhdGVkVHJlZUJlZm9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGVybWlzc2lvbk5hbWVzID0gW107XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQZXJtaXNzaW9ucyA9IHRoaXMuXyR0cmVlLmpzdHJlZSgnZ2V0X3NlbGVjdGVkJywgdHJ1ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRQZXJtaXNzaW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcGVybWlzc2lvbk5hbWVzLnB1c2goc2VsZWN0ZWRQZXJtaXNzaW9uc1tpXS5vcmlnaW5hbC5pZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbk5hbWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVmcmVzaFRyZWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jcmVhdGVkVHJlZUJlZm9yZSkge1xuICAgICAgICAgICAgdGhpcy5fJHRyZWUuanN0cmVlKCdkZXN0cm95Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jcmVhdGVkVHJlZUJlZm9yZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghdGhpcy5kYXRhIHx8ICF0aGlzLl8kdHJlZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJlZURhdGEgPSBtYXAodGhpcy5kYXRhLnBlcm1pc3Npb25zLCBpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGl0ZW0ucGFyZW50TmFtZSA/IGl0ZW0ucGFyZW50TmFtZSA6ICcjJyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuZGF0YS5ncmFudGVkUGVybWlzc2lvbk5hbWVzLmluY2x1ZGVzKGl0ZW0ubmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl8kdHJlZS5qc3RyZWUoe1xuICAgICAgICAgICAgY29yZToge1xuICAgICAgICAgICAgICAgIGRhdGE6IHRyZWVEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdmYSBmYS1mb2xkZXItb3BlbiB0cmVlLWl0ZW0taWNvbi1jb2xvciBpY29uLWxnJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmlsZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnZmEgZmEtZmlsZSB0cmVlLWl0ZW0taWNvbi1jb2xvciBpY29uLWxnJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGVja2JveDoge1xuICAgICAgICAgICAgICAgIGtlZXBfc2VsZWN0ZWRfc3R5bGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRocmVlX3N0YXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjYXNjYWRlOiAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsdWdpbnM6IFsnY2hlY2tib3gnLCAndHlwZXMnXVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jcmVhdGVkVHJlZUJlZm9yZSA9IHRydWU7XG5cbiAgICAgICAgbGV0IGluVHJlZUNoYW5nZUV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgZnVuY3Rpb24gc2VsZWN0Tm9kZUFuZEFsbFBhcmVudHMobm9kZSkge1xuICAgICAgICAgICAgdGhpcy5fJHRyZWUuanN0cmVlKCdzZWxlY3Rfbm9kZScsIG5vZGUsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fJHRyZWUuanN0cmVlKCdnZXRfcGFyZW50Jywgbm9kZSk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0Tm9kZUFuZEFsbFBhcmVudHMocGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuXyR0cmVlLm9uKCdjaGFuZ2VkLmpzdHJlZScsIChfZSwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFkYXRhLm5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHdhc0luVHJlZUNoYW5nZUV2ZW50ID0gaW5UcmVlQ2hhbmdlRXZlbnQ7XG4gICAgICAgICAgICBpZiAoIXdhc0luVHJlZUNoYW5nZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaW5UcmVlQ2hhbmdlRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgY2hpbGRyZW5Ob2RlcztcblxuICAgICAgICAgICAgaWYgKGRhdGEubm9kZS5zdGF0ZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdE5vZGVBbmRBbGxQYXJlbnRzKHRoaXMuXyR0cmVlLmpzdHJlZSgnZ2V0X3BhcmVudCcsIGRhdGEubm9kZSkpO1xuXG4gICAgICAgICAgICAgICAgY2hpbGRyZW5Ob2RlcyA9ICQubWFrZUFycmF5KHRoaXMuXyR0cmVlLmpzdHJlZSgnZ2V0X2NoaWxkcmVuX2RvbScsIGRhdGEubm9kZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuXyR0cmVlLmpzdHJlZSgnc2VsZWN0X25vZGUnLCBjaGlsZHJlbk5vZGVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5Ob2RlcyA9ICQubWFrZUFycmF5KHRoaXMuXyR0cmVlLmpzdHJlZSgnZ2V0X2NoaWxkcmVuX2RvbScsIGRhdGEubm9kZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuXyR0cmVlLmpzdHJlZSgnZGVzZWxlY3Rfbm9kZScsIGNoaWxkcmVuTm9kZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXdhc0luVHJlZUNoYW5nZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaW5UcmVlQ2hhbmdlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { NavigationEnd } from '@angular/router';
|
|
3
|
+
import { TabMenu } from 'primeng/tabmenu';
|
|
4
|
+
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
5
|
+
import { PermissionService } from '@posiwise/common-services';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "primeng/tabmenu";
|
|
8
|
+
import * as i2 from "@angular/router";
|
|
9
|
+
export class PwTabsComponent extends AppBaseComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.items = [];
|
|
13
|
+
this.withSubscription = false;
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
if (this.withSubscription) {
|
|
17
|
+
this.getUserSubscription().subscribe((subscription) => {
|
|
18
|
+
this.items.forEach(item => {
|
|
19
|
+
// prepends the subscription slug to the route
|
|
20
|
+
item.routerLink = `/${subscription?.slug}${item.routerLink[0]}`;
|
|
21
|
+
item.visible = item?.state
|
|
22
|
+
? this.permissionService.evaluatePermissions(item.state['permission'], PermissionService.selectedProduct?.feature_key, PermissionService.selectedProduct?.permission_key)
|
|
23
|
+
: item.visible;
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
this.routeEventSubscription = this.router.events.subscribe(e => {
|
|
28
|
+
if (e instanceof NavigationEnd) {
|
|
29
|
+
this.tabInstance.activeItem = this.items.find(item => item.routerLink === this.router.url);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
ngOnDestroy() {
|
|
34
|
+
this.routeEventSubscription.unsubscribe();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
PwTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PwTabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
+
PwTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: PwTabsComponent, selector: "pw-tabs", inputs: { items: "items", withSubscription: "withSubscription" }, viewQueries: [{ propertyName: "tabInstance", first: true, predicate: ["tabMenu"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu [model]=\"items\"\n #tabMenu></p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.TabMenu, selector: "p-tabMenu", inputs: ["model", "activeItem", "scrollable", "popup", "style", "styleClass"], outputs: ["activeItemChange"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PwTabsComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ selector: 'pw-tabs', template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu [model]=\"items\"\n #tabMenu></p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n" }]
|
|
42
|
+
}], propDecorators: { items: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], tabInstance: [{
|
|
45
|
+
type: ViewChild,
|
|
46
|
+
args: ['tabMenu', { static: false }]
|
|
47
|
+
}], withSubscription: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHctdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvcHctdGFicy9wdy10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wdy10YWJzL3B3LXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBTTlELE1BQU0sT0FBTyxlQUFnQixTQUFRLGdCQUFnQjtJQUpyRDs7UUFNSSxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBTXZCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQW1DNUI7SUE3QkcsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQTBCLEVBQUUsRUFBRTtnQkFDaEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3RCLDhDQUE4QztvQkFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNoRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxLQUFLO3dCQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUN4QixpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUM5QyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUNwRDt3QkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdkIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQzlDLENBQUM7YUFDTDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7OzRHQTFDUSxlQUFlO2dHQUFmLGVBQWUsZ1BDZDVCLDJQQVNBOzJGREthLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0ksU0FBUzs4QkFLbkIsS0FBSztzQkFESixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUl2QyxnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUYWJNZW51IH0gZnJvbSAncHJpbWVuZy90YWJtZW51JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiBhcyBSeFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXRhYnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdy10YWJzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQd1RhYnNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhYk1lbnUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICB0YWJJbnN0YW5jZTogVGFiTWVudTtcblxuICAgIEBJbnB1dCgpXG4gICAgd2l0aFN1YnNjcmlwdGlvbiA9IGZhbHNlO1xuXG4gICAgYWN0aXZlVGFiOiBNZW51SXRlbTtcblxuICAgIHByaXZhdGUgcm91dGVFdmVudFN1YnNjcmlwdGlvbjogUnhTdWJzY3JpcHRpb247XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMud2l0aFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5nZXRVc2VyU3Vic2NyaXB0aW9uKCkuc3Vic2NyaWJlKChzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlcGVuZHMgdGhlIHN1YnNjcmlwdGlvbiBzbHVnIHRvIHRoZSByb3V0ZVxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJvdXRlckxpbmsgPSBgLyR7c3Vic2NyaXB0aW9uPy5zbHVnfSR7aXRlbS5yb3V0ZXJMaW5rWzBdfWA7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udmlzaWJsZSA9IGl0ZW0/LnN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMucGVybWlzc2lvblNlcnZpY2UuZXZhbHVhdGVQZXJtaXNzaW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RhdGVbJ3Blcm1pc3Npb24nXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdD8uZmVhdHVyZV9rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3Q/LnBlcm1pc3Npb25fa2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS52aXNpYmxlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJvdXRlRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJJbnN0YW5jZS5hY3RpdmVJdGVtID0gdGhpcy5pdGVtcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICBpdGVtID0+IGl0ZW0ucm91dGVyTGluayA9PT0gdGhpcy5yb3V0ZXIudXJsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMucm91dGVFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgcHctdGFiIG92ZXJmbG93LWhpZGRlblwiPlxuICA8cC10YWJNZW51IFttb2RlbF09XCJpdGVtc1wiXG4gICAgI3RhYk1lbnU+PC9wLXRhYk1lbnU+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHlcIj5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -4,11 +4,15 @@ import { AbAlternativeComponent } from './ab-test/ab-alternative/ab-alternative.
|
|
|
4
4
|
import { PasswordValidationComponent } from './password-validation/password-validation.component';
|
|
5
5
|
import { DirectivesModule } from '@posiwise/directives';
|
|
6
6
|
import { CoreTranslocoModule } from '@posiwise/core-transloco';
|
|
7
|
-
import { CustomUploaderComponent } from
|
|
8
|
-
import { ProfileImageCropperComponent } from
|
|
7
|
+
import { CustomUploaderComponent } from './custom-uploader/custom-uploader.component';
|
|
8
|
+
import { ProfileImageCropperComponent } from './image-cropper/image-cropper.component';
|
|
9
|
+
import { PwTabsComponent } from './pw-tabs/pw-tabs.component';
|
|
9
10
|
import { FormsModule } from '@angular/forms';
|
|
10
11
|
import { ImageCropperModule } from 'ngx-image-cropper';
|
|
12
|
+
import { TabMenuModule } from 'primeng/tabmenu';
|
|
13
|
+
import { PermissionTreeComponent } from "./permission-tree/permission-tree.component";
|
|
11
14
|
import * as i0 from "@angular/core";
|
|
15
|
+
const primeNgModules = [TabMenuModule];
|
|
12
16
|
export class SharedComponentsModule {
|
|
13
17
|
}
|
|
14
18
|
SharedComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -16,19 +20,23 @@ SharedComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
|
|
|
16
20
|
AbAlternativeComponent,
|
|
17
21
|
PasswordValidationComponent,
|
|
18
22
|
CustomUploaderComponent,
|
|
19
|
-
ProfileImageCropperComponent
|
|
23
|
+
ProfileImageCropperComponent,
|
|
24
|
+
PwTabsComponent,
|
|
25
|
+
PermissionTreeComponent], imports: [FormsModule,
|
|
20
26
|
DirectivesModule,
|
|
21
27
|
CoreTranslocoModule,
|
|
22
|
-
ImageCropperModule], exports: [AbTestContainerComponent,
|
|
28
|
+
ImageCropperModule, TabMenuModule], exports: [AbTestContainerComponent,
|
|
23
29
|
AbAlternativeComponent,
|
|
24
30
|
PasswordValidationComponent,
|
|
25
31
|
CustomUploaderComponent,
|
|
26
32
|
ProfileImageCropperComponent,
|
|
27
|
-
ImageCropperModule
|
|
33
|
+
ImageCropperModule,
|
|
34
|
+
PwTabsComponent, TabMenuModule, PermissionTreeComponent] });
|
|
28
35
|
SharedComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, imports: [FormsModule,
|
|
29
36
|
DirectivesModule,
|
|
30
37
|
CoreTranslocoModule,
|
|
31
|
-
ImageCropperModule,
|
|
38
|
+
ImageCropperModule,
|
|
39
|
+
primeNgModules, ImageCropperModule, TabMenuModule] });
|
|
32
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, decorators: [{
|
|
33
41
|
type: NgModule,
|
|
34
42
|
args: [{
|
|
@@ -37,13 +45,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
37
45
|
AbAlternativeComponent,
|
|
38
46
|
PasswordValidationComponent,
|
|
39
47
|
CustomUploaderComponent,
|
|
40
|
-
ProfileImageCropperComponent
|
|
48
|
+
ProfileImageCropperComponent,
|
|
49
|
+
PwTabsComponent,
|
|
50
|
+
PermissionTreeComponent
|
|
41
51
|
],
|
|
42
52
|
imports: [
|
|
43
53
|
FormsModule,
|
|
44
54
|
DirectivesModule,
|
|
45
55
|
CoreTranslocoModule,
|
|
46
|
-
ImageCropperModule
|
|
56
|
+
ImageCropperModule,
|
|
57
|
+
primeNgModules
|
|
47
58
|
],
|
|
48
59
|
exports: [
|
|
49
60
|
AbTestContainerComponent,
|
|
@@ -51,8 +62,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
51
62
|
PasswordValidationComponent,
|
|
52
63
|
CustomUploaderComponent,
|
|
53
64
|
ProfileImageCropperComponent,
|
|
54
|
-
ImageCropperModule
|
|
65
|
+
ImageCropperModule,
|
|
66
|
+
PwTabsComponent,
|
|
67
|
+
primeNgModules,
|
|
68
|
+
PermissionTreeComponent
|
|
55
69
|
]
|
|
56
70
|
}]
|
|
57
71
|
}] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWNvbXBvbmVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC1jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDOztBQUVwRixNQUFNLGNBQWMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBK0J2QyxNQUFNLE9BQU8sc0JBQXNCOzttSEFBdEIsc0JBQXNCO29IQUF0QixzQkFBc0IsaUJBM0IzQix3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLDJCQUEyQjtRQUMzQix1QkFBdUI7UUFDdkIsNEJBQTRCO1FBQzVCLGVBQWU7UUFDZix1QkFBdUIsYUFHdkIsV0FBVztRQUNYLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsa0JBQWtCLEVBaEJGLGFBQWEsYUFvQjdCLHdCQUF3QjtRQUN4QixzQkFBc0I7UUFDdEIsMkJBQTJCO1FBQzNCLHVCQUF1QjtRQUN2Qiw0QkFBNEI7UUFDNUIsa0JBQWtCO1FBQ2xCLGVBQWUsRUExQkMsYUFBYSxFQTRCN0IsdUJBQXVCO29IQUdsQixzQkFBc0IsWUFsQjNCLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQixjQUFjLEVBUWQsa0JBQWtCLEVBekJGLGFBQWE7MkZBK0J4QixzQkFBc0I7a0JBN0JsQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRTt3QkFDVix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsZUFBZTt3QkFDZix1QkFBdUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGNBQWM7cUJBQ2pCO29CQUNELE9BQU8sRUFBRTt3QkFDTCx3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsdUJBQXVCO3FCQUMxQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYlRlc3RDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2FiLXRlc3QvYWItdGVzdC1jb250YWluZXIvYWItdGVzdC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFiQWx0ZXJuYXRpdmVDb21wb25lbnQgfSBmcm9tICcuL2FiLXRlc3QvYWItYWx0ZXJuYXRpdmUvYWItYWx0ZXJuYXRpdmUuY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcGFzc3dvcmQtdmFsaWRhdGlvbi9wYXNzd29yZC12YWxpZGF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3RpdmVzTW9kdWxlIH0gZnJvbSAnQHBvc2l3aXNlL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQ29yZVRyYW5zbG9jb01vZHVsZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb3JlLXRyYW5zbG9jbyc7XG5pbXBvcnQgeyBDdXN0b21VcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLXVwbG9hZGVyL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZmlsZUltYWdlQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gJy4vaW1hZ2UtY3JvcHBlci9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQd1RhYnNDb21wb25lbnQgfSBmcm9tICcuL3B3LXRhYnMvcHctdGFicy5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEltYWdlQ3JvcHBlck1vZHVsZSB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcbmltcG9ydCB7IFRhYk1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYm1lbnUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uVHJlZUNvbXBvbmVudH0gZnJvbSBcIi4vcGVybWlzc2lvbi10cmVlL3Blcm1pc3Npb24tdHJlZS5jb21wb25lbnRcIjtcblxuY29uc3QgcHJpbWVOZ01vZHVsZXMgPSBbVGFiTWVudU1vZHVsZV07XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEFiVGVzdENvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgQWJBbHRlcm5hdGl2ZUNvbXBvbmVudCxcbiAgICAgICAgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21VcGxvYWRlckNvbXBvbmVudCxcbiAgICAgICAgUHJvZmlsZUltYWdlQ3JvcHBlckNvbXBvbmVudCxcbiAgICAgICAgUHdUYWJzQ29tcG9uZW50LFxuICAgICAgICBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgRGlyZWN0aXZlc01vZHVsZSxcbiAgICAgICAgQ29yZVRyYW5zbG9jb01vZHVsZSxcbiAgICAgICAgSW1hZ2VDcm9wcGVyTW9kdWxlLFxuICAgICAgICBwcmltZU5nTW9kdWxlc1xuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBBYlRlc3RDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIEFiQWx0ZXJuYXRpdmVDb21wb25lbnQsXG4gICAgICAgIFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQsXG4gICAgICAgIFByb2ZpbGVJbWFnZUNyb3BwZXJDb21wb25lbnQsXG4gICAgICAgIEltYWdlQ3JvcHBlck1vZHVsZSxcbiAgICAgICAgUHdUYWJzQ29tcG9uZW50LFxuICAgICAgICBwcmltZU5nTW9kdWxlcyxcbiAgICAgICAgUGVybWlzc2lvblRyZWVDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZENvbXBvbmVudHNNb2R1bGUge31cbiJdfQ==
|
|
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component, Input, EventEmitter, ViewChild, Output, Inject, NgModule } from '@angular/core';
|
|
3
3
|
import { AB_TEST_ACTIONS } from '@posiwise/common-utilities';
|
|
4
4
|
import * as i1 from '@posiwise/common-services';
|
|
5
|
+
import { PermissionService } from '@posiwise/common-services';
|
|
5
6
|
import { StatusCodes } from 'http-status-codes';
|
|
6
7
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
7
8
|
import * as i1$1 from '@ng-bootstrap/ng-bootstrap';
|
|
@@ -15,6 +16,11 @@ import { DOCUMENT } from '@angular/common';
|
|
|
15
16
|
import { HelperService } from '@posiwise/helper-service';
|
|
16
17
|
import * as i2$1 from 'ngx-image-cropper';
|
|
17
18
|
import { ImageCropperModule } from 'ngx-image-cropper';
|
|
19
|
+
import * as i2$2 from '@angular/router';
|
|
20
|
+
import { NavigationEnd } from '@angular/router';
|
|
21
|
+
import * as i1$2 from 'primeng/tabmenu';
|
|
22
|
+
import { TabMenuModule } from 'primeng/tabmenu';
|
|
23
|
+
import map from 'lodash/map';
|
|
18
24
|
|
|
19
25
|
class AbTestContainerComponent {
|
|
20
26
|
constructor(service) {
|
|
@@ -288,6 +294,160 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
288
294
|
type: Input
|
|
289
295
|
}] } });
|
|
290
296
|
|
|
297
|
+
class PwTabsComponent extends AppBaseComponent {
|
|
298
|
+
constructor() {
|
|
299
|
+
super(...arguments);
|
|
300
|
+
this.items = [];
|
|
301
|
+
this.withSubscription = false;
|
|
302
|
+
}
|
|
303
|
+
ngOnInit() {
|
|
304
|
+
if (this.withSubscription) {
|
|
305
|
+
this.getUserSubscription().subscribe((subscription) => {
|
|
306
|
+
this.items.forEach(item => {
|
|
307
|
+
var _a, _b;
|
|
308
|
+
// prepends the subscription slug to the route
|
|
309
|
+
item.routerLink = `/${subscription === null || subscription === void 0 ? void 0 : subscription.slug}${item.routerLink[0]}`;
|
|
310
|
+
item.visible = (item === null || item === void 0 ? void 0 : item.state)
|
|
311
|
+
? this.permissionService.evaluatePermissions(item.state['permission'], (_a = PermissionService.selectedProduct) === null || _a === void 0 ? void 0 : _a.feature_key, (_b = PermissionService.selectedProduct) === null || _b === void 0 ? void 0 : _b.permission_key)
|
|
312
|
+
: item.visible;
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
this.routeEventSubscription = this.router.events.subscribe(e => {
|
|
317
|
+
if (e instanceof NavigationEnd) {
|
|
318
|
+
this.tabInstance.activeItem = this.items.find(item => item.routerLink === this.router.url);
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
ngOnDestroy() {
|
|
323
|
+
this.routeEventSubscription.unsubscribe();
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
PwTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PwTabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
327
|
+
PwTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: PwTabsComponent, selector: "pw-tabs", inputs: { items: "items", withSubscription: "withSubscription" }, viewQueries: [{ propertyName: "tabInstance", first: true, predicate: ["tabMenu"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu [model]=\"items\"\n #tabMenu></p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1$2.TabMenu, selector: "p-tabMenu", inputs: ["model", "activeItem", "scrollable", "popup", "style", "styleClass"], outputs: ["activeItemChange"] }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PwTabsComponent, decorators: [{
|
|
329
|
+
type: Component,
|
|
330
|
+
args: [{ selector: 'pw-tabs', template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu [model]=\"items\"\n #tabMenu></p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n" }]
|
|
331
|
+
}], propDecorators: { items: [{
|
|
332
|
+
type: Input
|
|
333
|
+
}], tabInstance: [{
|
|
334
|
+
type: ViewChild,
|
|
335
|
+
args: ['tabMenu', { static: false }]
|
|
336
|
+
}], withSubscription: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}] } });
|
|
339
|
+
|
|
340
|
+
class PermissionTreeComponent {
|
|
341
|
+
constructor(_element) {
|
|
342
|
+
this._element = _element;
|
|
343
|
+
}
|
|
344
|
+
ngOnChanges(simple) {
|
|
345
|
+
if (simple['data'] &&
|
|
346
|
+
simple['data'].currentValue &&
|
|
347
|
+
simple['data'].currentValue.grantedPermissionNames) {
|
|
348
|
+
this.refreshTree();
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
ngAfterViewInit() {
|
|
352
|
+
this._$tree = $(this._element.nativeElement);
|
|
353
|
+
this.refreshTree();
|
|
354
|
+
}
|
|
355
|
+
getGrantedPermissionNames() {
|
|
356
|
+
if (!this._$tree || !this._createdTreeBefore) {
|
|
357
|
+
return [];
|
|
358
|
+
}
|
|
359
|
+
const permissionNames = [];
|
|
360
|
+
const selectedPermissions = this._$tree.jstree('get_selected', true);
|
|
361
|
+
for (let i = 0; i < selectedPermissions.length; i++) {
|
|
362
|
+
permissionNames.push(selectedPermissions[i].original.id);
|
|
363
|
+
}
|
|
364
|
+
return permissionNames;
|
|
365
|
+
}
|
|
366
|
+
refreshTree() {
|
|
367
|
+
if (this._createdTreeBefore) {
|
|
368
|
+
this._$tree.jstree('destroy');
|
|
369
|
+
}
|
|
370
|
+
this._createdTreeBefore = false;
|
|
371
|
+
if (!this.data || !this._$tree) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
const treeData = map(this.data.permissions, item => {
|
|
375
|
+
return {
|
|
376
|
+
id: item.name,
|
|
377
|
+
parent: item.parentName ? item.parentName : '#',
|
|
378
|
+
text: item.displayName,
|
|
379
|
+
state: {
|
|
380
|
+
opened: true,
|
|
381
|
+
selected: this.data.grantedPermissionNames.includes(item.name)
|
|
382
|
+
}
|
|
383
|
+
};
|
|
384
|
+
});
|
|
385
|
+
this._$tree.jstree({
|
|
386
|
+
core: {
|
|
387
|
+
data: treeData
|
|
388
|
+
},
|
|
389
|
+
types: {
|
|
390
|
+
default: {
|
|
391
|
+
icon: 'fa fa-folder-open tree-item-icon-color icon-lg'
|
|
392
|
+
},
|
|
393
|
+
file: {
|
|
394
|
+
icon: 'fa fa-file tree-item-icon-color icon-lg'
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
checkbox: {
|
|
398
|
+
keep_selected_style: false,
|
|
399
|
+
three_state: false,
|
|
400
|
+
cascade: ''
|
|
401
|
+
},
|
|
402
|
+
plugins: ['checkbox', 'types']
|
|
403
|
+
});
|
|
404
|
+
this._createdTreeBefore = true;
|
|
405
|
+
let inTreeChangeEvent = false;
|
|
406
|
+
function selectNodeAndAllParents(node) {
|
|
407
|
+
this._$tree.jstree('select_node', node, true);
|
|
408
|
+
const parent = this._$tree.jstree('get_parent', node);
|
|
409
|
+
if (parent) {
|
|
410
|
+
selectNodeAndAllParents(parent);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
this._$tree.on('changed.jstree', (_e, data) => {
|
|
414
|
+
if (!data.node) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
const wasInTreeChangeEvent = inTreeChangeEvent;
|
|
418
|
+
if (!wasInTreeChangeEvent) {
|
|
419
|
+
inTreeChangeEvent = true;
|
|
420
|
+
}
|
|
421
|
+
let childrenNodes;
|
|
422
|
+
if (data.node.state.selected) {
|
|
423
|
+
selectNodeAndAllParents(this._$tree.jstree('get_parent', data.node));
|
|
424
|
+
childrenNodes = $.makeArray(this._$tree.jstree('get_children_dom', data.node));
|
|
425
|
+
this._$tree.jstree('select_node', childrenNodes);
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
childrenNodes = $.makeArray(this._$tree.jstree('get_children_dom', data.node));
|
|
429
|
+
this._$tree.jstree('deselect_node', childrenNodes);
|
|
430
|
+
}
|
|
431
|
+
if (!wasInTreeChangeEvent) {
|
|
432
|
+
inTreeChangeEvent = false;
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
PermissionTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PermissionTreeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
438
|
+
PermissionTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: PermissionTreeComponent, selector: "permission-tree", inputs: { data: "data" }, usesOnChanges: true, ngImport: i0, template: ` <div class="permission-tree"></div> `, isInline: true });
|
|
439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PermissionTreeComponent, decorators: [{
|
|
440
|
+
type: Component,
|
|
441
|
+
args: [{
|
|
442
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
443
|
+
selector: 'permission-tree',
|
|
444
|
+
template: ` <div class="permission-tree"></div> `
|
|
445
|
+
}]
|
|
446
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{
|
|
447
|
+
type: Input
|
|
448
|
+
}] } });
|
|
449
|
+
|
|
450
|
+
const primeNgModules = [TabMenuModule];
|
|
291
451
|
class SharedComponentsModule {
|
|
292
452
|
}
|
|
293
453
|
SharedComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -295,19 +455,23 @@ SharedComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
|
|
|
295
455
|
AbAlternativeComponent,
|
|
296
456
|
PasswordValidationComponent,
|
|
297
457
|
CustomUploaderComponent,
|
|
298
|
-
ProfileImageCropperComponent
|
|
458
|
+
ProfileImageCropperComponent,
|
|
459
|
+
PwTabsComponent,
|
|
460
|
+
PermissionTreeComponent], imports: [FormsModule,
|
|
299
461
|
DirectivesModule,
|
|
300
462
|
CoreTranslocoModule,
|
|
301
|
-
ImageCropperModule], exports: [AbTestContainerComponent,
|
|
463
|
+
ImageCropperModule, TabMenuModule], exports: [AbTestContainerComponent,
|
|
302
464
|
AbAlternativeComponent,
|
|
303
465
|
PasswordValidationComponent,
|
|
304
466
|
CustomUploaderComponent,
|
|
305
467
|
ProfileImageCropperComponent,
|
|
306
|
-
ImageCropperModule
|
|
468
|
+
ImageCropperModule,
|
|
469
|
+
PwTabsComponent, TabMenuModule, PermissionTreeComponent] });
|
|
307
470
|
SharedComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, imports: [FormsModule,
|
|
308
471
|
DirectivesModule,
|
|
309
472
|
CoreTranslocoModule,
|
|
310
|
-
ImageCropperModule,
|
|
473
|
+
ImageCropperModule,
|
|
474
|
+
primeNgModules, ImageCropperModule, TabMenuModule] });
|
|
311
475
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, decorators: [{
|
|
312
476
|
type: NgModule,
|
|
313
477
|
args: [{
|
|
@@ -316,13 +480,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
316
480
|
AbAlternativeComponent,
|
|
317
481
|
PasswordValidationComponent,
|
|
318
482
|
CustomUploaderComponent,
|
|
319
|
-
ProfileImageCropperComponent
|
|
483
|
+
ProfileImageCropperComponent,
|
|
484
|
+
PwTabsComponent,
|
|
485
|
+
PermissionTreeComponent
|
|
320
486
|
],
|
|
321
487
|
imports: [
|
|
322
488
|
FormsModule,
|
|
323
489
|
DirectivesModule,
|
|
324
490
|
CoreTranslocoModule,
|
|
325
|
-
ImageCropperModule
|
|
491
|
+
ImageCropperModule,
|
|
492
|
+
primeNgModules
|
|
326
493
|
],
|
|
327
494
|
exports: [
|
|
328
495
|
AbTestContainerComponent,
|
|
@@ -330,7 +497,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
330
497
|
PasswordValidationComponent,
|
|
331
498
|
CustomUploaderComponent,
|
|
332
499
|
ProfileImageCropperComponent,
|
|
333
|
-
ImageCropperModule
|
|
500
|
+
ImageCropperModule,
|
|
501
|
+
PwTabsComponent,
|
|
502
|
+
primeNgModules,
|
|
503
|
+
PermissionTreeComponent
|
|
334
504
|
]
|
|
335
505
|
}]
|
|
336
506
|
}] });
|
|
@@ -339,5 +509,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
339
509
|
* Generated bundle index. Do not edit.
|
|
340
510
|
*/
|
|
341
511
|
|
|
342
|
-
export { AbAlternativeComponent, AbTestContainerComponent, CustomUploaderComponent, PasswordValidationComponent, ProfileImageCropperComponent, SharedComponentsModule };
|
|
512
|
+
export { AbAlternativeComponent, AbTestContainerComponent, CustomUploaderComponent, PasswordValidationComponent, PermissionTreeComponent, ProfileImageCropperComponent, PwTabsComponent, SharedComponentsModule };
|
|
343
513
|
//# sourceMappingURL=shared-components.mjs.map
|