@smartsoft001/crud-shell-angular 1.2.91 → 2.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/addons.js +1 -0
- package/.storybook/config.js +5 -0
- package/.storybook/tsconfig.json +8 -0
- package/.storybook/webpack.config.js +7 -0
- package/jest.config.ts +38 -0
- package/ng-package.json +7 -0
- package/package.json +12 -23
- package/project.json +49 -0
- package/src/index.ts +13 -0
- package/src/lib/+state/crud.facade.ts +82 -0
- package/src/lib/+state/crud.feature.methods.ts +258 -0
- package/src/lib/+state/crud.feature.store.ts +77 -0
- package/src/lib/components/components.module.ts +58 -0
- package/src/lib/components/export/export.component.ts +69 -0
- package/src/lib/components/filter/base/base.component.ts +175 -0
- package/src/lib/components/filter/check/check.component.scss +25 -0
- package/src/lib/components/filter/check/check.component.ts +72 -0
- package/src/lib/components/filter/date/date.component.html +30 -0
- package/src/lib/components/filter/date/date.component.ts +70 -0
- package/src/lib/components/filter/date-time/date-time.component.html +62 -0
- package/src/lib/components/filter/date-time/date-time.component.ts +56 -0
- package/src/lib/components/filter/date-with-edit/date-with-edit.component.html +109 -0
- package/src/lib/components/filter/date-with-edit/date-with-edit.component.ts +70 -0
- package/src/lib/components/filter/filter.component.html +52 -0
- package/src/lib/components/filter/filter.component.ts +34 -0
- package/src/lib/components/filter/flag/flag.component.ts +55 -0
- package/src/lib/components/filter/index.ts +9 -0
- package/src/lib/components/filter/int/int.component.html +74 -0
- package/src/lib/components/filter/int/int.component.ts +57 -0
- package/src/lib/components/filter/radio/radio.component.ts +74 -0
- package/src/lib/components/filter/text/text.component.ts +46 -0
- package/src/lib/components/filters/filters.component.scss +150 -0
- package/src/lib/components/filters/filters.component.ts +157 -0
- package/src/lib/components/filters-config/filters-config.component.ts +69 -0
- package/src/lib/components/group/group.component.ts +93 -0
- package/src/lib/components/index.ts +7 -0
- package/src/lib/components/multiselect/multiselect.component.html +41 -0
- package/src/lib/components/multiselect/multiselect.component.scss +125 -0
- package/src/lib/components/multiselect/multiselect.component.ts +104 -0
- package/src/lib/crud-full.module.ts +51 -0
- package/src/lib/crud.config.ts +79 -0
- package/src/lib/crud.module.ts +72 -0
- package/src/lib/factories/list-pagination/list-pagination.factory.ts +77 -0
- package/src/lib/models/index.ts +1 -0
- package/src/lib/models/interfaces.ts +34 -0
- package/src/lib/pages/index.ts +6 -0
- package/src/lib/pages/item/base/base.component.ts +54 -0
- package/src/lib/pages/item/item.component.ts +513 -0
- package/src/lib/pages/item/standard/standard.component.scss +0 -0
- package/src/lib/pages/item/standard/standard.component.ts +50 -0
- package/src/lib/pages/list/base/base.component.ts +29 -0
- package/src/lib/pages/list/list.component.stories.ts +77 -0
- package/src/lib/pages/list/list.component.ts +438 -0
- package/src/lib/pages/list/standard/standard.component.ts +42 -0
- package/src/lib/pipes/form-options/form-options.pipe.ts +61 -0
- package/src/lib/pipes/index.ts +2 -0
- package/src/lib/pipes/pipes.module.ts +9 -0
- package/src/lib/providers/model-possibilities/model-possibilities.provider.ts +19 -0
- package/src/lib/services/crud/crud.service.spec.ts +303 -0
- package/src/lib/services/crud/crud.service.ts +178 -0
- package/src/lib/services/list-group/list-group.service.spec.ts +87 -0
- package/src/lib/services/list-group/list-group.service.ts +65 -0
- package/src/lib/services/page/page.service.spec.ts +143 -0
- package/src/lib/services/page/page.service.ts +44 -0
- package/src/lib/services/search/search.service.spec.ts +134 -0
- package/src/lib/services/search/search.service.ts +42 -0
- package/test-setup.ts +0 -0
- package/tsconfig.json +13 -0
- package/tsconfig.lib.json +31 -0
- package/tsconfig.lib.prod.json +11 -0
- package/tsconfig.spec.json +10 -0
- package/tslint.json +10 -0
- package/esm2022/index.mjs +0 -18
- package/esm2022/lib/+state/crud.actions.mjs +0 -224
- package/esm2022/lib/+state/crud.effects.mjs +0 -182
- package/esm2022/lib/+state/crud.facade.mjs +0 -91
- package/esm2022/lib/+state/crud.reducer.mjs +0 -214
- package/esm2022/lib/+state/crud.selectors.mjs +0 -11
- package/esm2022/lib/components/components.module.mjs +0 -110
- package/esm2022/lib/components/export/export.component.mjs +0 -47
- package/esm2022/lib/components/filter/base/base.component.mjs +0 -152
- package/esm2022/lib/components/filter/check/check.component.mjs +0 -36
- package/esm2022/lib/components/filter/date/date.component.mjs +0 -47
- package/esm2022/lib/components/filter/date-time/date-time.component.mjs +0 -43
- package/esm2022/lib/components/filter/date-with-edit/date-with-edit.component.mjs +0 -49
- package/esm2022/lib/components/filter/filter.component.mjs +0 -30
- package/esm2022/lib/components/filter/flag/flag.component.mjs +0 -16
- package/esm2022/lib/components/filter/index.mjs +0 -10
- package/esm2022/lib/components/filter/int/int.component.mjs +0 -38
- package/esm2022/lib/components/filter/radio/radio.component.mjs +0 -16
- package/esm2022/lib/components/filter/text/text.component.mjs +0 -16
- package/esm2022/lib/components/filters/filters.component.mjs +0 -111
- package/esm2022/lib/components/filters-config/filters-config.component.mjs +0 -37
- package/esm2022/lib/components/group/group.component.mjs +0 -54
- package/esm2022/lib/components/index.mjs +0 -8
- package/esm2022/lib/components/multiselect/multiselect.component.mjs +0 -71
- package/esm2022/lib/crud-full.module.mjs +0 -103
- package/esm2022/lib/crud.config.mjs +0 -17
- package/esm2022/lib/crud.module.mjs +0 -106
- package/esm2022/lib/factories/list-pagination/list-pagination.factory.mjs +0 -69
- package/esm2022/lib/models/index.mjs +0 -2
- package/esm2022/lib/models/interfaces.mjs +0 -2
- package/esm2022/lib/pages/index.mjs +0 -7
- package/esm2022/lib/pages/item/base/base.component.mjs +0 -44
- package/esm2022/lib/pages/item/item.component.mjs +0 -395
- package/esm2022/lib/pages/item/standard/standard.component.mjs +0 -15
- package/esm2022/lib/pages/list/base/base.component.mjs +0 -23
- package/esm2022/lib/pages/list/list.component.mjs +0 -355
- package/esm2022/lib/pages/list/standard/standard.component.mjs +0 -34
- package/esm2022/lib/pipes/form-options/form-options.pipe.mjs +0 -55
- package/esm2022/lib/pipes/index.mjs +0 -3
- package/esm2022/lib/pipes/pipes.module.mjs +0 -20
- package/esm2022/lib/providers/model-possibilities/model-possibilities.provider.mjs +0 -11
- package/esm2022/lib/services/crud/crud.service.mjs +0 -138
- package/esm2022/lib/services/list-group/list-group.service.mjs +0 -60
- package/esm2022/lib/services/page/page.service.mjs +0 -41
- package/esm2022/lib/services/search/search.service.mjs +0 -41
- package/esm2022/lib/services/socket/socket.service.mjs +0 -17
- package/esm2022/smartsoft001-crud-shell-angular.mjs +0 -5
- package/fesm2022/smartsoft001-crud-shell-angular.mjs +0 -2810
- package/fesm2022/smartsoft001-crud-shell-angular.mjs.map +0 -1
- package/index.d.ts +0 -18
- package/index.d.ts.map +0 -1
- package/lib/+state/crud.actions.d.ts +0 -152
- package/lib/+state/crud.actions.d.ts.map +0 -1
- package/lib/+state/crud.effects.d.ts +0 -18
- package/lib/+state/crud.effects.d.ts.map +0 -1
- package/lib/+state/crud.facade.d.ts +0 -44
- package/lib/+state/crud.facade.d.ts.map +0 -1
- package/lib/+state/crud.reducer.d.ts +0 -43
- package/lib/+state/crud.reducer.d.ts.map +0 -1
- package/lib/+state/crud.selectors.d.ts +0 -10
- package/lib/+state/crud.selectors.d.ts.map +0 -1
- package/lib/components/components.module.d.ts +0 -27
- package/lib/components/components.module.d.ts.map +0 -1
- package/lib/components/export/export.component.d.ts +0 -21
- package/lib/components/export/export.component.d.ts.map +0 -1
- package/lib/components/filter/base/base.component.d.ts +0 -39
- package/lib/components/filter/base/base.component.d.ts.map +0 -1
- package/lib/components/filter/check/check.component.d.ts +0 -19
- package/lib/components/filter/check/check.component.d.ts.map +0 -1
- package/lib/components/filter/date/date.component.d.ts +0 -16
- package/lib/components/filter/date/date.component.d.ts.map +0 -1
- package/lib/components/filter/date-time/date-time.component.d.ts +0 -15
- package/lib/components/filter/date-time/date-time.component.d.ts.map +0 -1
- package/lib/components/filter/date-with-edit/date-with-edit.component.d.ts +0 -17
- package/lib/components/filter/date-with-edit/date-with-edit.component.d.ts.map +0 -1
- package/lib/components/filter/filter.component.d.ts +0 -14
- package/lib/components/filter/filter.component.d.ts.map +0 -1
- package/lib/components/filter/flag/flag.component.d.ts +0 -8
- package/lib/components/filter/flag/flag.component.d.ts.map +0 -1
- package/lib/components/filter/index.d.ts +0 -10
- package/lib/components/filter/index.d.ts.map +0 -1
- package/lib/components/filter/int/int.component.d.ts +0 -15
- package/lib/components/filter/int/int.component.d.ts.map +0 -1
- package/lib/components/filter/radio/radio.component.d.ts +0 -8
- package/lib/components/filter/radio/radio.component.d.ts.map +0 -1
- package/lib/components/filter/text/text.component.d.ts +0 -8
- package/lib/components/filter/text/text.component.d.ts.map +0 -1
- package/lib/components/filters/filters.component.d.ts +0 -83
- package/lib/components/filters/filters.component.d.ts.map +0 -1
- package/lib/components/filters-config/filters-config.component.d.ts +0 -19
- package/lib/components/filters-config/filters-config.component.d.ts.map +0 -1
- package/lib/components/group/group.component.d.ts +0 -23
- package/lib/components/group/group.component.d.ts.map +0 -1
- package/lib/components/index.d.ts +0 -8
- package/lib/components/index.d.ts.map +0 -1
- package/lib/components/multiselect/multiselect.component.d.ts +0 -28
- package/lib/components/multiselect/multiselect.component.d.ts.map +0 -1
- package/lib/crud-full.module.d.ts +0 -28
- package/lib/crud-full.module.d.ts.map +0 -1
- package/lib/crud.config.d.ts +0 -65
- package/lib/crud.config.d.ts.map +0 -1
- package/lib/crud.module.d.ts +0 -34
- package/lib/crud.module.d.ts.map +0 -1
- package/lib/factories/list-pagination/list-pagination.factory.d.ts +0 -20
- package/lib/factories/list-pagination/list-pagination.factory.d.ts.map +0 -1
- package/lib/models/index.d.ts +0 -2
- package/lib/models/index.d.ts.map +0 -1
- package/lib/models/interfaces.d.ts +0 -30
- package/lib/models/interfaces.d.ts.map +0 -1
- package/lib/pages/index.d.ts +0 -7
- package/lib/pages/index.d.ts.map +0 -1
- package/lib/pages/item/base/base.component.d.ts +0 -25
- package/lib/pages/item/base/base.component.d.ts.map +0 -1
- package/lib/pages/item/item.component.d.ts +0 -70
- package/lib/pages/item/item.component.d.ts.map +0 -1
- package/lib/pages/item/standard/standard.component.d.ts +0 -8
- package/lib/pages/item/standard/standard.component.d.ts.map +0 -1
- package/lib/pages/list/base/base.component.d.ts +0 -15
- package/lib/pages/list/base/base.component.d.ts.map +0 -1
- package/lib/pages/list/list.component.d.ts +0 -54
- package/lib/pages/list/list.component.d.ts.map +0 -1
- package/lib/pages/list/standard/standard.component.d.ts +0 -14
- package/lib/pages/list/standard/standard.component.d.ts.map +0 -1
- package/lib/pipes/form-options/form-options.pipe.d.ts +0 -15
- package/lib/pipes/form-options/form-options.pipe.d.ts.map +0 -1
- package/lib/pipes/index.d.ts +0 -3
- package/lib/pipes/index.d.ts.map +0 -1
- package/lib/pipes/pipes.module.d.ts +0 -8
- package/lib/pipes/pipes.module.d.ts.map +0 -1
- package/lib/providers/model-possibilities/model-possibilities.provider.d.ts +0 -18
- package/lib/providers/model-possibilities/model-possibilities.provider.d.ts.map +0 -1
- package/lib/services/crud/crud.service.d.ts +0 -38
- package/lib/services/crud/crud.service.d.ts.map +0 -1
- package/lib/services/list-group/list-group.service.d.ts +0 -15
- package/lib/services/list-group/list-group.service.d.ts.map +0 -1
- package/lib/services/page/page.service.d.ts +0 -12
- package/lib/services/page/page.service.d.ts.map +0 -1
- package/lib/services/search/search.service.d.ts +0 -16
- package/lib/services/search/search.service.d.ts.map +0 -1
- package/lib/services/socket/socket.service.d.ts +0 -10
- package/lib/services/socket/socket.service.d.ts.map +0 -1
- package/smartsoft001-crud-shell-angular.d.ts.map +0 -1
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, Injector, NgModuleRef, QueryList, TemplateRef, ViewChild, ViewChildren, ViewContainerRef, } from "@angular/core";
|
|
2
|
-
import { map, tap } from "rxjs/operators";
|
|
3
|
-
import { Router } from "@angular/router";
|
|
4
|
-
import { Subject } from "rxjs";
|
|
5
|
-
import { CreateDynamicComponent, DynamicComponentLoader, DynamicContentDirective, HardwareService, ListMode, MenuService, StyleService, } from "@smartsoft001/angular";
|
|
6
|
-
import { getModelFieldsWithOptions, getModelOptions, } from "@smartsoft001/models";
|
|
7
|
-
import { CrudFacade } from "../../+state/crud.facade";
|
|
8
|
-
import { CrudFullConfig } from "../../crud.config";
|
|
9
|
-
import { ExportComponent } from "../../components/export/export.component";
|
|
10
|
-
import { FiltersComponent } from "../../components/filters/filters.component";
|
|
11
|
-
import { MultiselectComponent } from "../../components/multiselect/multiselect.component";
|
|
12
|
-
import { CrudListPaginationFactory } from "../../factories/list-pagination/list-pagination.factory";
|
|
13
|
-
import { PageService } from "../../services/page/page.service";
|
|
14
|
-
import { CrudSearchService } from "../../services/search/search.service";
|
|
15
|
-
import { SpecificationService } from "@smartsoft001/utils";
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "../../+state/crud.facade";
|
|
18
|
-
import * as i2 from "@angular/router";
|
|
19
|
-
import * as i3 from "@smartsoft001/angular";
|
|
20
|
-
import * as i4 from "../../factories/list-pagination/list-pagination.factory";
|
|
21
|
-
import * as i5 from "../../services/page/page.service";
|
|
22
|
-
import * as i6 from "../../crud.config";
|
|
23
|
-
import * as i7 from "../../services/search/search.service";
|
|
24
|
-
import * as i8 from "@angular/common";
|
|
25
|
-
import * as i9 from "./standard/standard.component";
|
|
26
|
-
export class ListComponent extends CreateDynamicComponent('crud-list-page') {
|
|
27
|
-
constructor(facade, router, dynamicComponentLoader, injector, cd, menuService, hardwareService, paginationFacade, styleService, elementRef, pageService, config, searchService, moduleRef, componentFactoryResolver) {
|
|
28
|
-
super(cd, moduleRef, componentFactoryResolver);
|
|
29
|
-
this.facade = facade;
|
|
30
|
-
this.router = router;
|
|
31
|
-
this.dynamicComponentLoader = dynamicComponentLoader;
|
|
32
|
-
this.injector = injector;
|
|
33
|
-
this.cd = cd;
|
|
34
|
-
this.menuService = menuService;
|
|
35
|
-
this.hardwareService = hardwareService;
|
|
36
|
-
this.paginationFacade = paginationFacade;
|
|
37
|
-
this.styleService = styleService;
|
|
38
|
-
this.elementRef = elementRef;
|
|
39
|
-
this.pageService = pageService;
|
|
40
|
-
this.config = config;
|
|
41
|
-
this.searchService = searchService;
|
|
42
|
-
this.moduleRef = moduleRef;
|
|
43
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
44
|
-
this._cleanMultiSelected$ = new Subject();
|
|
45
|
-
this.filter$ = this.facade.filter$.pipe(tap((filter) => {
|
|
46
|
-
this.filter = filter;
|
|
47
|
-
}));
|
|
48
|
-
this.dynamicContents = new QueryList();
|
|
49
|
-
this.facade.links$.pipe(this.takeUntilDestroy).subscribe((links) => {
|
|
50
|
-
this.links = links;
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
refreshProperties() {
|
|
54
|
-
this.baseInstance.listOptions = this.listOptions;
|
|
55
|
-
}
|
|
56
|
-
async ngOnInit() {
|
|
57
|
-
await this.pageService.checkPermissions();
|
|
58
|
-
const options = getModelOptions(this.config.type);
|
|
59
|
-
let newFilter = null;
|
|
60
|
-
if (this.config.list?.resetQuery === 'beforeInit') {
|
|
61
|
-
newFilter = {
|
|
62
|
-
query: this.config.baseQuery ? [...this.config.baseQuery] : [],
|
|
63
|
-
paginationMode: this.config.list.paginationMode,
|
|
64
|
-
limit: this.config.pagination ? this.config.pagination.limit : null,
|
|
65
|
-
offset: this.config.pagination ? 0 : null,
|
|
66
|
-
sortBy: this.config.sort ? this.config.sort["default"] : null,
|
|
67
|
-
sortDesc: this.config.sort ? this.config.sort["defaultDesc"] : null,
|
|
68
|
-
...this.searchService.filter
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
else if (this.filter) {
|
|
72
|
-
newFilter = this.filter;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
newFilter = {
|
|
76
|
-
paginationMode: this.config.list.paginationMode,
|
|
77
|
-
limit: this.searchService.filter?.limit ? this.searchService.filter.limit : this.config.pagination
|
|
78
|
-
? this.config.pagination.limit : null,
|
|
79
|
-
offset: this.searchService.filter?.offset || this.searchService.filter?.offset === 0
|
|
80
|
-
? this.searchService.filter.offset : this.config.pagination ? 0 : null,
|
|
81
|
-
sortBy: this.searchService.filter?.sortBy ? this.searchService.filter.sortBy : this.config.sort
|
|
82
|
-
? this.config.sort["default"] : null,
|
|
83
|
-
sortDesc: this.searchService.filter?.sortDesc ? this.searchService.filter.sortDesc : this.config.sort
|
|
84
|
-
? this.config.sort["defaultDesc"] : null,
|
|
85
|
-
query: this.config.baseQuery ? [...this.config.baseQuery] : [],
|
|
86
|
-
...this.searchService.filter
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
this.facade.read(newFilter);
|
|
90
|
-
const endButtons = this.getEndButtons();
|
|
91
|
-
this.pageOptions = {
|
|
92
|
-
title: this.config.title,
|
|
93
|
-
search: this.config.search
|
|
94
|
-
? {
|
|
95
|
-
text$: this.filter$.pipe(map((f) => (f ? f.searchText : null))),
|
|
96
|
-
set: (txt) => {
|
|
97
|
-
if (txt !== this.filter.searchText)
|
|
98
|
-
this.facade.read({
|
|
99
|
-
...this.filter,
|
|
100
|
-
searchText: txt,
|
|
101
|
-
offset: 0,
|
|
102
|
-
});
|
|
103
|
-
},
|
|
104
|
-
}
|
|
105
|
-
: null,
|
|
106
|
-
endButtons: endButtons,
|
|
107
|
-
};
|
|
108
|
-
const compiledComponents = await this.dynamicComponentLoader.getComponentsWithFactories({
|
|
109
|
-
components: [
|
|
110
|
-
...(this.config.details &&
|
|
111
|
-
this.config.details["components"] &&
|
|
112
|
-
this.config.details["components"].top
|
|
113
|
-
? [this.config.details["components"].top]
|
|
114
|
-
: []),
|
|
115
|
-
...(this.config.details &&
|
|
116
|
-
this.config.details["components"] &&
|
|
117
|
-
this.config.details["components"].bottom
|
|
118
|
-
? [this.config.details["components"].bottom]
|
|
119
|
-
: []),
|
|
120
|
-
...(this.config.list &&
|
|
121
|
-
this.config.list["components"] &&
|
|
122
|
-
this.config.list["components"].top
|
|
123
|
-
? [this.config.list["components"].top]
|
|
124
|
-
: []),
|
|
125
|
-
],
|
|
126
|
-
});
|
|
127
|
-
this.listOptions = {
|
|
128
|
-
provider: {
|
|
129
|
-
getData: (filter) => {
|
|
130
|
-
const global = {
|
|
131
|
-
...this.filter,
|
|
132
|
-
...filter,
|
|
133
|
-
};
|
|
134
|
-
this.facade.read(global);
|
|
135
|
-
},
|
|
136
|
-
onChangeMultiSelected: async (list) => {
|
|
137
|
-
if (list.length && !this.menuService.openedEnd) {
|
|
138
|
-
await this.menuService.openEnd({
|
|
139
|
-
injector: this.injector,
|
|
140
|
-
component: MultiselectComponent,
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
else if (!list.length && this.menuService.openedEnd) {
|
|
144
|
-
await this.menuService.closeEnd();
|
|
145
|
-
}
|
|
146
|
-
this.facade.multiSelect(list);
|
|
147
|
-
},
|
|
148
|
-
list$: this.facade.list$,
|
|
149
|
-
loading$: this.facade.loaded$.pipe(map((l) => !l)),
|
|
150
|
-
onCleanMultiSelected$: this._cleanMultiSelected$
|
|
151
|
-
},
|
|
152
|
-
cellPipe: this.config.list ? this.config.list.cellPipe : null,
|
|
153
|
-
mode: this.config.list?.mode,
|
|
154
|
-
type: this.config.type,
|
|
155
|
-
details: this.config.details
|
|
156
|
-
? {
|
|
157
|
-
provider: {
|
|
158
|
-
getData: (id) => {
|
|
159
|
-
this.facade.select(id);
|
|
160
|
-
},
|
|
161
|
-
clearData: () => {
|
|
162
|
-
this.facade.unselect();
|
|
163
|
-
},
|
|
164
|
-
item$: this.facade.selected$,
|
|
165
|
-
loading$: this.facade.loaded$.pipe(map((l) => !l)),
|
|
166
|
-
},
|
|
167
|
-
componentFactories: {
|
|
168
|
-
top: this.config.details &&
|
|
169
|
-
this.config.details["components"] &&
|
|
170
|
-
this.config.details["components"].top
|
|
171
|
-
? compiledComponents.find((cc) => cc.component === this.config.details["components"].top).factory
|
|
172
|
-
: null,
|
|
173
|
-
bottom: this.config.details &&
|
|
174
|
-
this.config.details["components"] &&
|
|
175
|
-
this.config.details["components"].bottom
|
|
176
|
-
? compiledComponents.find((cc) => cc.component ===
|
|
177
|
-
this.config.details["components"].bottom).factory
|
|
178
|
-
: null,
|
|
179
|
-
},
|
|
180
|
-
}
|
|
181
|
-
: null,
|
|
182
|
-
item: !!this.config.edit || this.config.details
|
|
183
|
-
? {
|
|
184
|
-
options: {
|
|
185
|
-
routingPrefix: "/" + this.router.routerState.snapshot.url + "/",
|
|
186
|
-
edit: !!this.config.edit,
|
|
187
|
-
},
|
|
188
|
-
}
|
|
189
|
-
: null,
|
|
190
|
-
remove: this.config.remove
|
|
191
|
-
? {
|
|
192
|
-
provider: {
|
|
193
|
-
invoke: (id) => this.facade.delete(id),
|
|
194
|
-
check: (item) => {
|
|
195
|
-
return options?.remove?.enabled ? SpecificationService.valid(item, options?.remove?.enabled) : true;
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
}
|
|
199
|
-
: null,
|
|
200
|
-
pagination: await this.paginationFacade.create({
|
|
201
|
-
mode: this.config.list.paginationMode,
|
|
202
|
-
limit: this.config.pagination.limit,
|
|
203
|
-
provider: {
|
|
204
|
-
getFilter: () => {
|
|
205
|
-
return this.filter;
|
|
206
|
-
},
|
|
207
|
-
getLinks: () => this.links,
|
|
208
|
-
},
|
|
209
|
-
}),
|
|
210
|
-
sort: this.config.sort,
|
|
211
|
-
};
|
|
212
|
-
this.cd.detectChanges();
|
|
213
|
-
this.initCloseMenu();
|
|
214
|
-
this.initTopComponent(compiledComponents);
|
|
215
|
-
this.refreshDynamicInstance();
|
|
216
|
-
}
|
|
217
|
-
initCloseMenu() {
|
|
218
|
-
this.router.events.pipe(this.takeUntilDestroy).subscribe(async () => {
|
|
219
|
-
await this.clear();
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
async clear() {
|
|
223
|
-
await this.menuService.closeEnd();
|
|
224
|
-
this.listOptions = {
|
|
225
|
-
...this.listOptions,
|
|
226
|
-
select: null,
|
|
227
|
-
};
|
|
228
|
-
this.facade.multiSelect([]);
|
|
229
|
-
}
|
|
230
|
-
getEndButtons() {
|
|
231
|
-
const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());
|
|
232
|
-
const modelOptions = getModelOptions(this.config.type);
|
|
233
|
-
const showFilters = fieldsWithOptions.some((x) => x.options?.list?.filter) || modelOptions?.filters?.length;
|
|
234
|
-
const showMultiEdit = this.config.list?.components?.multi ||
|
|
235
|
-
(this.config.edit &&
|
|
236
|
-
fieldsWithOptions.some((x) => x.options?.update?.multi) &&
|
|
237
|
-
!this.hardwareService.isMobile &&
|
|
238
|
-
(!this.config?.list?.mode ||
|
|
239
|
-
this.config?.list?.mode === ListMode.desktop));
|
|
240
|
-
return [
|
|
241
|
-
...(showMultiEdit
|
|
242
|
-
? [
|
|
243
|
-
{
|
|
244
|
-
icon: "checkbox-outline",
|
|
245
|
-
text: "multi",
|
|
246
|
-
handler: () => {
|
|
247
|
-
this.facade.multiSelect([]);
|
|
248
|
-
this._cleanMultiSelected$.next();
|
|
249
|
-
setTimeout(async () => {
|
|
250
|
-
this.listOptions = {
|
|
251
|
-
...this.listOptions,
|
|
252
|
-
select: this.listOptions.select === "multi" ? null : "multi",
|
|
253
|
-
};
|
|
254
|
-
if (this.menuService.openedEnd)
|
|
255
|
-
await this.menuService.closeEnd();
|
|
256
|
-
this.cd.detectChanges();
|
|
257
|
-
});
|
|
258
|
-
},
|
|
259
|
-
},
|
|
260
|
-
]
|
|
261
|
-
: []),
|
|
262
|
-
...(showFilters
|
|
263
|
-
? [
|
|
264
|
-
{
|
|
265
|
-
icon: "filter-outline",
|
|
266
|
-
text: "filters",
|
|
267
|
-
handler: async () => {
|
|
268
|
-
await this.menuService.openEnd({
|
|
269
|
-
injector: this.injector,
|
|
270
|
-
component: FiltersComponent,
|
|
271
|
-
});
|
|
272
|
-
},
|
|
273
|
-
},
|
|
274
|
-
]
|
|
275
|
-
: []),
|
|
276
|
-
...(this.config.add
|
|
277
|
-
? [
|
|
278
|
-
{
|
|
279
|
-
icon: "add",
|
|
280
|
-
text: "add",
|
|
281
|
-
handler: () => {
|
|
282
|
-
this.router.navigate([
|
|
283
|
-
"/" + this.router.routerState.snapshot.url + "/add",
|
|
284
|
-
]);
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
]
|
|
288
|
-
: []),
|
|
289
|
-
...(this.config.export
|
|
290
|
-
? [
|
|
291
|
-
{
|
|
292
|
-
text: "export",
|
|
293
|
-
icon: "download-outline",
|
|
294
|
-
type: "popover",
|
|
295
|
-
component: ExportComponent,
|
|
296
|
-
},
|
|
297
|
-
]
|
|
298
|
-
: []),
|
|
299
|
-
...(this.config.buttons ? this.config.buttons : []),
|
|
300
|
-
];
|
|
301
|
-
}
|
|
302
|
-
initTopComponent(compiledComponents) {
|
|
303
|
-
const factory = this.config.list &&
|
|
304
|
-
this.config.list["components"] &&
|
|
305
|
-
this.config.list["components"].top
|
|
306
|
-
? compiledComponents.find((cc) => cc.component === this.config.list["components"].top).factory
|
|
307
|
-
: null;
|
|
308
|
-
setTimeout(() => {
|
|
309
|
-
if (factory && !this.topTpl.get(0)) {
|
|
310
|
-
this.topTpl.createComponent(factory);
|
|
311
|
-
}
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ListComponent, deps: [{ token: i1.CrudFacade }, { token: i2.Router }, { token: i3.DynamicComponentLoader }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i3.MenuService }, { token: i3.HardwareService }, { token: i4.CrudListPaginationFactory }, { token: i3.StyleService }, { token: i0.ElementRef }, { token: i5.PageService }, { token: i6.CrudFullConfig }, { token: i7.CrudSearchService }, { token: i0.NgModuleRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
315
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ListComponent, selector: "smart-crud-list-page", viewQueries: [{ propertyName: "topTpl", first: true, predicate: ["topTpl"], descendants: true, read: ViewContainerRef }, { propertyName: "contentTpl", first: true, predicate: ["contentTpl"], descendants: true, read: TemplateRef }, { propertyName: "dynamicContents", predicate: DynamicContentDirective, descendants: true, read: DynamicContentDirective }], usesInheritance: true, ngImport: i0, template: `
|
|
316
|
-
<smart-page [options]="pageOptions" *ngIf="filter$ | async">
|
|
317
|
-
<div #topTpl></div>
|
|
318
|
-
<smart-crud-list-standard-page *ngIf="template === 'default'" [listOptions]="listOptions">
|
|
319
|
-
<ng-container [ngTemplateOutlet]="contentTpl"></ng-container>
|
|
320
|
-
</smart-crud-list-standard-page>
|
|
321
|
-
<ng-template #contentTpl>
|
|
322
|
-
<ng-content></ng-content>
|
|
323
|
-
</ng-template>
|
|
324
|
-
<div class="dynamic-content"></div>
|
|
325
|
-
</smart-page>
|
|
326
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.PageComponent, selector: "smart-page", inputs: ["options"] }, { kind: "directive", type: i3.DynamicContentDirective, selector: ".dynamic-content" }, { kind: "component", type: i9.ListStandardComponent, selector: "smart-crud-list-standard-page" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }] }); }
|
|
327
|
-
}
|
|
328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ListComponent, decorators: [{
|
|
329
|
-
type: Component,
|
|
330
|
-
args: [{
|
|
331
|
-
selector: "smart-crud-list-page",
|
|
332
|
-
template: `
|
|
333
|
-
<smart-page [options]="pageOptions" *ngIf="filter$ | async">
|
|
334
|
-
<div #topTpl></div>
|
|
335
|
-
<smart-crud-list-standard-page *ngIf="template === 'default'" [listOptions]="listOptions">
|
|
336
|
-
<ng-container [ngTemplateOutlet]="contentTpl"></ng-container>
|
|
337
|
-
</smart-crud-list-standard-page>
|
|
338
|
-
<ng-template #contentTpl>
|
|
339
|
-
<ng-content></ng-content>
|
|
340
|
-
</ng-template>
|
|
341
|
-
<div class="dynamic-content"></div>
|
|
342
|
-
</smart-page>
|
|
343
|
-
`
|
|
344
|
-
}]
|
|
345
|
-
}], ctorParameters: function () { return [{ type: i1.CrudFacade }, { type: i2.Router }, { type: i3.DynamicComponentLoader }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i3.MenuService }, { type: i3.HardwareService }, { type: i4.CrudListPaginationFactory }, { type: i3.StyleService }, { type: i0.ElementRef }, { type: i5.PageService }, { type: i6.CrudFullConfig }, { type: i7.CrudSearchService }, { type: i0.NgModuleRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { topTpl: [{
|
|
346
|
-
type: ViewChild,
|
|
347
|
-
args: ["topTpl", { read: ViewContainerRef, static: false }]
|
|
348
|
-
}], contentTpl: [{
|
|
349
|
-
type: ViewChild,
|
|
350
|
-
args: ["contentTpl", { read: TemplateRef, static: false }]
|
|
351
|
-
}], dynamicContents: [{
|
|
352
|
-
type: ViewChildren,
|
|
353
|
-
args: [DynamicContentDirective, { read: DynamicContentDirective }]
|
|
354
|
-
}] } });
|
|
355
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BhZ2VzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Msd0JBQXdCLEVBQUUsVUFBVSxFQUN0RCxRQUFRLEVBQUUsV0FBVyxFQUNiLFNBQVMsRUFBRSxXQUFXLEVBQzlCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3pDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQy9DLGVBQWUsRUFJZixRQUFRLEVBQ1IsV0FBVyxFQUFFLFlBQVksR0FDMUIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGVBQWUsR0FHaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5REFBeUQsQ0FB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QUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnksIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRWxlbWVudFJlZixcbiAgSW5qZWN0b3IsIE5nTW9kdWxlUmVmLCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7XG4gIENyZWF0ZUR5bmFtaWNDb21wb25lbnQsXG4gIER5bmFtaWNDb21wb25lbnRMb2FkZXIsIER5bmFtaWNDb250ZW50RGlyZWN0aXZlLFxuICBIYXJkd2FyZVNlcnZpY2UsXG4gIElJY29uQnV0dG9uT3B0aW9ucyxcbiAgSUxpc3RPcHRpb25zLFxuICBJUGFnZU9wdGlvbnMsXG4gIExpc3RNb2RlLFxuICBNZW51U2VydmljZSwgU3R5bGVTZXJ2aWNlLFxufSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9hbmd1bGFyXCI7XG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSBcIkBzbWFydHNvZnQwMDEvZG9tYWluLWNvcmVcIjtcbmltcG9ydCB7XG4gIGdldE1vZGVsRmllbGRzV2l0aE9wdGlvbnMsXG4gIGdldE1vZGVsT3B0aW9ucyxcbiAgSUZpZWxkRWRpdE1ldGFkYXRhLFxuICBJRmllbGRMaXN0TWV0YWRhdGEsXG59IGZyb20gXCJAc21hcnRzb2Z0MDAxL21vZGVsc1wiO1xuXG5pbXBvcnQgeyBDcnVkRmFjYWRlIH0gZnJvbSBcIi4uLy4uLytzdGF0ZS9jcnVkLmZhY2FkZVwiO1xuaW1wb3J0IHsgQ3J1ZEZ1bGxDb25maWcgfSBmcm9tIFwiLi4vLi4vY3J1ZC5jb25maWdcIjtcbmltcG9ydCB7IElDcnVkRmlsdGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBFeHBvcnRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9leHBvcnQvZXhwb3J0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRmlsdGVyc0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2ZpbHRlcnMvZmlsdGVycy5jb21wb25lbnRcIjtcbmltcG9ydCB7IE11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvbXVsdGlzZWxlY3QvbXVsdGlzZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDcnVkTGlzdFBhZ2luYXRpb25GYWN0b3J5IH0gZnJvbSBcIi4uLy4uL2ZhY3Rvcmllcy9saXN0LXBhZ2luYXRpb24vbGlzdC1wYWdpbmF0aW9uLmZhY3RvcnlcIjtcbmltcG9ydCB7UGFnZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wYWdlL3BhZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHtDcnVkTGlzdFBhZ2VCYXNlQ29tcG9uZW50fSBmcm9tIFwiLi9iYXNlL2Jhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQge0NydWRTZWFyY2hTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTcGVjaWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCJAc21hcnRzb2Z0MDAxL3V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzbWFydC1jcnVkLWxpc3QtcGFnZVwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzbWFydC1wYWdlIFtvcHRpb25zXT1cInBhZ2VPcHRpb25zXCIgKm5nSWY9XCJmaWx0ZXIkIHwgYXN5bmNcIj5cbiAgICAgIDxkaXYgI3RvcFRwbD48L2Rpdj5cbiAgICAgIDxzbWFydC1jcnVkLWxpc3Qtc3RhbmRhcmQtcGFnZSAqbmdJZj1cInRlbXBsYXRlID09PSAnZGVmYXVsdCdcIiBbbGlzdE9wdGlvbnNdPVwibGlzdE9wdGlvbnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9zbWFydC1jcnVkLWxpc3Qtc3RhbmRhcmQtcGFnZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudFRwbD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWNvbnRlbnRcIj48L2Rpdj5cbiAgICA8L3NtYXJ0LXBhZ2U+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTGlzdENvbXBvbmVudDxUIGV4dGVuZHMgSUVudGl0eTxzdHJpbmc+PlxuICAgIGV4dGVuZHMgQ3JlYXRlRHluYW1pY0NvbXBvbmVudDxDcnVkTGlzdFBhZ2VCYXNlQ29tcG9uZW50PGFueT4+KCdjcnVkLWxpc3QtcGFnZScpXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBfY2xlYW5NdWx0aVNlbGVjdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcGFnZU9wdGlvbnM6IElQYWdlT3B0aW9ucztcbiAgbGlzdE9wdGlvbnM6IElMaXN0T3B0aW9uczxUPjtcbiAgZmlsdGVyOiBJQ3J1ZEZpbHRlcjtcbiAgbGlua3M6IHsgbmV4dDsgcHJldiB9O1xuXG4gIGZpbHRlciQ6IE9ic2VydmFibGU8SUNydWRGaWx0ZXI+ID0gdGhpcy5mYWNhZGUuZmlsdGVyJC5waXBlKFxuICAgIHRhcCgoZmlsdGVyKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjtcbiAgICB9KVxuICApO1xuXG4gIEBWaWV3Q2hpbGQoXCJ0b3BUcGxcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHRvcFRwbDogVmlld0NvbnRhaW5lclJlZjtcblxuICBAVmlld0NoaWxkKFwiY29udGVudFRwbFwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIGNvbnRlbnRUcGw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZHJlbihEeW5hbWljQ29udGVudERpcmVjdGl2ZSwgeyByZWFkOiBEeW5hbWljQ29udGVudERpcmVjdGl2ZSB9KVxuICBkeW5hbWljQ29udGVudHMgPSBuZXcgUXVlcnlMaXN0PER5bmFtaWNDb250ZW50RGlyZWN0aXZlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmFjYWRlOiBDcnVkRmFjYWRlPFQ+LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50TG9hZGVyOiBEeW5hbWljQ29tcG9uZW50TG9hZGVyPFQ+LFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGFyZHdhcmVTZXJ2aWNlOiBIYXJkd2FyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWdpbmF0aW9uRmFjYWRlOiBDcnVkTGlzdFBhZ2luYXRpb25GYWN0b3J5PFQ+LFxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBTdHlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcGFnZVNlcnZpY2U6IFBhZ2VTZXJ2aWNlPFQ+LFxuICAgIHB1YmxpYyBjb25maWc6IENydWRGdWxsQ29uZmlnPFQ+LFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogQ3J1ZFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICApIHtcbiAgICBzdXBlcihjZCwgbW9kdWxlUmVmLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuXG4gICAgdGhpcy5mYWNhZGUubGlua3MkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGxpbmtzKSA9PiB7XG4gICAgICB0aGlzLmxpbmtzID0gbGlua3M7XG4gICAgfSk7XG4gIH1cblxuICByZWZyZXNoUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2VJbnN0YW5jZS5saXN0T3B0aW9ucyA9IHRoaXMubGlzdE9wdGlvbnM7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2VTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbnMoKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRNb2RlbE9wdGlvbnModGhpcy5jb25maWcudHlwZSk7XG5cbiAgICBsZXQgbmV3RmlsdGVyID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5saXN0Py5yZXNldFF1ZXJ5ID09PSAnYmVmb3JlSW5pdCcpIHtcbiAgICAgIG5ld0ZpbHRlciA9IHtcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgcGFnaW5hdGlvbk1vZGU6IHRoaXMuY29uZmlnLmxpc3QucGFnaW5hdGlvbk1vZGUsXG4gICAgICAgIGxpbWl0OiB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5jb25maWcucGFnaW5hdGlvbiA/IDAgOiBudWxsLFxuICAgICAgICBzb3J0Qnk6IHRoaXMuY29uZmlnLnNvcnQgPyB0aGlzLmNvbmZpZy5zb3J0W1wiZGVmYXVsdFwiXSA6IG51bGwsXG4gICAgICAgIHNvcnREZXNjOiB0aGlzLmNvbmZpZy5zb3J0ID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICBuZXdGaWx0ZXIgPSB0aGlzLmZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RmlsdGVyID0ge1xuICAgICAgICBwYWdpbmF0aW9uTW9kZTogdGhpcy5jb25maWcubGlzdC5wYWdpbmF0aW9uTW9kZSxcbiAgICAgICAgbGltaXQ6IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/LmxpbWl0ID8gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlci5saW1pdCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8ub2Zmc2V0IHx8IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/Lm9mZnNldCA9PT0gMFxuICAgICAgICAgICAgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLm9mZnNldCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24gPyAwIDogbnVsbCxcbiAgICAgICAgc29ydEJ5OiB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyPy5zb3J0QnkgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnRCeSA6IHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHRcIl0gOiBudWxsLFxuICAgICAgICBzb3J0RGVzYzogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8uc29ydERlc2MgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnREZXNjIDogIHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmZhY2FkZS5yZWFkKG5ld0ZpbHRlcik7XG5cbiAgICBjb25zdCBlbmRCdXR0b25zID0gdGhpcy5nZXRFbmRCdXR0b25zKCk7XG5cbiAgICB0aGlzLnBhZ2VPcHRpb25zID0ge1xuICAgICAgdGl0bGU6IHRoaXMuY29uZmlnLnRpdGxlLFxuICAgICAgc2VhcmNoOiB0aGlzLmNvbmZpZy5zZWFyY2hcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB0ZXh0JDogdGhpcy5maWx0ZXIkLnBpcGUobWFwKChmKSA9PiAoZiA/IGYuc2VhcmNoVGV4dCA6IG51bGwpKSksXG4gICAgICAgICAgICBzZXQ6ICh0eHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR4dCAhPT0gdGhpcy5maWx0ZXIuc2VhcmNoVGV4dClcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogdHh0LFxuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIGVuZEJ1dHRvbnM6IGVuZEJ1dHRvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbXBpbGVkQ29tcG9uZW50cyA9XG4gICAgICBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnRMb2FkZXIuZ2V0Q29tcG9uZW50c1dpdGhGYWN0b3JpZXMoe1xuICAgICAgICBjb21wb25lbnRzOiBbXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmxpc3QgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIHRoaXMubGlzdE9wdGlvbnMgPSB7XG4gICAgICBwcm92aWRlcjoge1xuICAgICAgICBnZXREYXRhOiAoZmlsdGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsID0ge1xuICAgICAgICAgICAgLi4udGhpcy5maWx0ZXIsXG4gICAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKGdsb2JhbCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2hhbmdlTXVsdGlTZWxlY3RlZDogYXN5bmMgKGxpc3QpID0+IHtcbiAgICAgICAgICBpZiAobGlzdC5sZW5ndGggJiYgIXRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLm9wZW5FbmQoe1xuICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBNdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWxpc3QubGVuZ3RoICYmIHRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlRW5kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QobGlzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGxpc3QkOiB0aGlzLmZhY2FkZS5saXN0JCxcbiAgICAgICAgbG9hZGluZyQ6IHRoaXMuZmFjYWRlLmxvYWRlZCQucGlwZShtYXAoKGwpID0+ICFsKSksXG4gICAgICAgIG9uQ2xlYW5NdWx0aVNlbGVjdGVkJDogdGhpcy5fY2xlYW5NdWx0aVNlbGVjdGVkJFxuICAgICAgfSxcbiAgICAgIGNlbGxQaXBlOiB0aGlzLmNvbmZpZy5saXN0ID8gdGhpcy5jb25maWcubGlzdC5jZWxsUGlwZSA6IG51bGwsXG4gICAgICBtb2RlOiB0aGlzLmNvbmZpZy5saXN0Py5tb2RlLFxuICAgICAgdHlwZTogdGhpcy5jb25maWcudHlwZSxcbiAgICAgIGRldGFpbHM6IHRoaXMuY29uZmlnLmRldGFpbHNcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwcm92aWRlcjoge1xuICAgICAgICAgICAgICBnZXREYXRhOiAoaWQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2FkZS5zZWxlY3QoaWQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjbGVhckRhdGE6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2FkZS51bnNlbGVjdCgpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBpdGVtJDogdGhpcy5mYWNhZGUuc2VsZWN0ZWQkLFxuICAgICAgICAgICAgICBsb2FkaW5nJDogdGhpcy5mYWNhZGUubG9hZGVkJC5waXBlKG1hcCgobCkgPT4gIWwpKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wb25lbnRGYWN0b3JpZXM6IHtcbiAgICAgICAgICAgICAgdG9wOlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgICAgICAgPyBjb21waWxlZENvbXBvbmVudHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAoY2MpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5jb21wb25lbnQgPT09IHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgICAgICAgICApLmZhY3RvcnlcbiAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgYm90dG9tOlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgICAgICAgPyBjb21waWxlZENvbXBvbmVudHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAoY2MpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5jb21wb25lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXS5ib3R0b21cbiAgICAgICAgICAgICAgICAgICAgKS5mYWN0b3J5XG4gICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsLFxuICAgICAgaXRlbTpcbiAgICAgICAgISF0aGlzLmNvbmZpZy5lZGl0IHx8IHRoaXMuY29uZmlnLmRldGFpbHNcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHJvdXRpbmdQcmVmaXg6IFwiL1wiICsgdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsICsgXCIvXCIsXG4gICAgICAgICAgICAgICAgZWRpdDogISF0aGlzLmNvbmZpZy5lZGl0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIHJlbW92ZTogdGhpcy5jb25maWcucmVtb3ZlXG4gICAgICAgID8ge1xuICAgICAgICAgICAgcHJvdmlkZXI6IHtcbiAgICAgICAgICAgICAgaW52b2tlOiAoaWQpID0+IHRoaXMuZmFjYWRlLmRlbGV0ZShpZCksXG4gICAgICAgICAgICAgIGNoZWNrOiAoaXRlbTogVCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zPy5yZW1vdmU/LmVuYWJsZWQgPyBTcGVjaWZpY2F0aW9uU2VydmljZS52YWxpZChpdGVtLCBvcHRpb25zPy5yZW1vdmU/LmVuYWJsZWQpIDogdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhZ2luYXRpb246IGF3YWl0IHRoaXMucGFnaW5hdGlvbkZhY2FkZS5jcmVhdGUoe1xuICAgICAgICBtb2RlOiB0aGlzLmNvbmZpZy5saXN0LnBhZ2luYXRpb25Nb2RlLFxuICAgICAgICBsaW1pdDogdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCxcbiAgICAgICAgcHJvdmlkZXI6IHtcbiAgICAgICAgICBnZXRGaWx0ZXI6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldExpbmtzOiAoKSA9PiB0aGlzLmxpbmtzLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBzb3J0OiB0aGlzLmNvbmZpZy5zb3J0LFxuICAgIH07XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuaW5pdENsb3NlTWVudSgpO1xuICAgIHRoaXMuaW5pdFRvcENvbXBvbmVudChjb21waWxlZENvbXBvbmVudHMpO1xuXG4gICAgdGhpcy5yZWZyZXNoRHluYW1pY0luc3RhbmNlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDbG9zZU1lbnUoKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbGVhcigpIHtcbiAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlRW5kKCk7XG5cbiAgICB0aGlzLmxpc3RPcHRpb25zID0ge1xuICAgICAgLi4udGhpcy5saXN0T3B0aW9ucyxcbiAgICAgIHNlbGVjdDogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QoW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbmRCdXR0b25zKCk6IEFycmF5PElJY29uQnV0dG9uT3B0aW9ucz4ge1xuICAgIGNvbnN0IGZpZWxkc1dpdGhPcHRpb25zID0gZ2V0TW9kZWxGaWVsZHNXaXRoT3B0aW9ucyhuZXcgdGhpcy5jb25maWcudHlwZSgpKTtcbiAgICBjb25zdCBtb2RlbE9wdGlvbnMgPSBnZXRNb2RlbE9wdGlvbnModGhpcy5jb25maWcudHlwZSk7XG5cbiAgICBjb25zdCBzaG93RmlsdGVycyA9XG4gICAgICBmaWVsZHNXaXRoT3B0aW9ucy5zb21lKFxuICAgICAgICAoeCkgPT4gKHgub3B0aW9ucz8ubGlzdCBhcyBJRmllbGRMaXN0TWV0YWRhdGEpPy5maWx0ZXJcbiAgICAgICkgfHwgbW9kZWxPcHRpb25zPy5maWx0ZXJzPy5sZW5ndGg7XG5cbiAgICBjb25zdCBzaG93TXVsdGlFZGl0ID1cbiAgICAgICAgdGhpcy5jb25maWcubGlzdD8uY29tcG9uZW50cz8ubXVsdGkgfHxcbiAgICAgICAgKFxuICAgICAgICAgICAgdGhpcy5jb25maWcuZWRpdCAmJlxuICAgICAgICAgICAgZmllbGRzV2l0aE9wdGlvbnMuc29tZShcbiAgICAgICAgICAgICAgICAoeCkgPT4gKHgub3B0aW9ucz8udXBkYXRlIGFzIElGaWVsZEVkaXRNZXRhZGF0YSk/Lm11bHRpXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICAhdGhpcy5oYXJkd2FyZVNlcnZpY2UuaXNNb2JpbGUgJiZcbiAgICAgICAgICAgICghdGhpcy5jb25maWc/Lmxpc3Q/Lm1vZGUgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZz8ubGlzdD8ubW9kZSA9PT0gTGlzdE1vZGUuZGVza3RvcClcbiAgICAgICAgKTtcblxuICAgIHJldHVybiBbXG4gICAgICAuLi4oc2hvd011bHRpRWRpdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWNvbjogXCJjaGVja2JveC1vdXRsaW5lXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwibXVsdGlcIixcbiAgICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLm11bHRpU2VsZWN0KFtdKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhbk11bHRpU2VsZWN0ZWQkLm5leHQoKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5saXN0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5saXN0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0aGlzLmxpc3RPcHRpb25zLnNlbGVjdCA9PT0gXCJtdWx0aVwiID8gbnVsbCA6IFwibXVsdGlcIixcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5tZW51U2VydmljZS5vcGVuZWRFbmQpXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2UuY2xvc2VFbmQoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHNob3dGaWx0ZXJzXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpY29uOiBcImZpbHRlci1vdXRsaW5lXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiZmlsdGVyc1wiLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5vcGVuRW5kKHtcbiAgICAgICAgICAgICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBGaWx0ZXJzQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmFkZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWNvbjogXCJhZGRcIixcbiAgICAgICAgICAgICAgdGV4dDogXCJhZGRcIixcbiAgICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgICAgIFwiL1wiICsgdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsICsgXCIvYWRkXCIsXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5jb25maWcuZXhwb3J0XG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXh0OiBcImV4cG9ydFwiLFxuICAgICAgICAgICAgICBpY29uOiBcImRvd25sb2FkLW91dGxpbmVcIixcbiAgICAgICAgICAgICAgdHlwZTogXCJwb3BvdmVyXCIgYXMgXCJwb3BvdmVyXCIsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogRXhwb3J0Q29tcG9uZW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmJ1dHRvbnMgPyB0aGlzLmNvbmZpZy5idXR0b25zIDogW10pLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGluaXRUb3BDb21wb25lbnQoXG4gICAgY29tcGlsZWRDb21wb25lbnRzOiB7XG4gICAgICBjb21wb25lbnQ6IGFueTtcbiAgICAgIGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8YW55PjtcbiAgICB9W11cbiAgKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9XG4gICAgICB0aGlzLmNvbmZpZy5saXN0ICYmXG4gICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgID8gY29tcGlsZWRDb21wb25lbnRzLmZpbmQoXG4gICAgICAgICAgICAoY2MpID0+IGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgKS5mYWN0b3J5XG4gICAgICAgIDogbnVsbDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGZhY3RvcnkgJiYgIXRoaXMudG9wVHBsLmdldCgwKSkge1xuICAgICAgICB0aGlzLnRvcFRwbC5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Component } from "@angular/core";
|
|
2
|
-
import { map } from "rxjs/operators";
|
|
3
|
-
import { CrudListPageBaseComponent } from "../base/base.component";
|
|
4
|
-
import { CrudListGroupService } from "../../../services/list-group/list-group.service";
|
|
5
|
-
import { CrudFacade } from "../../../+state/crud.facade";
|
|
6
|
-
import { CrudFullConfig } from "../../../crud.config";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../../+state/crud.facade";
|
|
9
|
-
import * as i2 from "../../../crud.config";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "@smartsoft001/angular";
|
|
12
|
-
import * as i5 from "../../../components/filters-config/filters-config.component";
|
|
13
|
-
import * as i6 from "../../../components/group/group.component";
|
|
14
|
-
export class ListStandardComponent extends CrudListPageBaseComponent {
|
|
15
|
-
constructor(facade, config) {
|
|
16
|
-
super(config);
|
|
17
|
-
this.facade = facade;
|
|
18
|
-
this.config = config;
|
|
19
|
-
this.isSearch$ = this.facade.filter$.pipe(map(filter => {
|
|
20
|
-
return !!filter?.searchText;
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ListStandardComponent, deps: [{ token: i1.CrudFacade }, { token: i2.CrudFullConfig }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ListStandardComponent, selector: "smart-crud-list-standard-page", providers: [
|
|
25
|
-
CrudListGroupService
|
|
26
|
-
], usesInheritance: true, ngImport: i0, template: "<smart-crud-filters-config></smart-crud-filters-config>\n<smart-list *ngIf=\"listOptions\"\n [hidden]=\"!(!config.list?.groups || (isSearch$ | async))\"\n [options]=\"listOptions\"\n></smart-list>\n<smart-crud-group *ngIf=\"config.list?.groups && !(isSearch$ | async)\"\n [groups]=\"config.list?.groups\"\n [listOptions]=\"listOptions\"\n>\n</smart-crud-group>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ListComponent, selector: "smart-list", inputs: ["options"] }, { kind: "component", type: i5.FiltersConfigComponent, selector: "smart-crud-filters-config" }, { kind: "component", type: i6.GroupComponent, selector: "smart-crud-group", inputs: ["groups", "listOptions"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
27
|
-
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ListStandardComponent, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{ selector: "smart-crud-list-standard-page", providers: [
|
|
31
|
-
CrudListGroupService
|
|
32
|
-
], template: "<smart-crud-filters-config></smart-crud-filters-config>\n<smart-list *ngIf=\"listOptions\"\n [hidden]=\"!(!config.list?.groups || (isSearch$ | async))\"\n [options]=\"listOptions\"\n></smart-list>\n<smart-crud-group *ngIf=\"config.list?.groups && !(isSearch$ | async)\"\n [groups]=\"config.list?.groups\"\n [listOptions]=\"listOptions\"\n>\n</smart-crud-group>" }]
|
|
33
|
-
}], ctorParameters: function () { return [{ type: i1.CrudFacade }, { type: i2.CrudFullConfig }]; } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcnVkL3NoZWxsL2FuZ3VsYXIvc3JjL2xpYi9wYWdlcy9saXN0L3N0YW5kYXJkL3N0YW5kYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3J1ZC9zaGVsbC9hbmd1bGFyL3NyYy9saWIvcGFnZXMvbGlzdC9zdGFuZGFyZC9zdGFuZGFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUluQyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVVwRCxNQUFNLE9BQU8scUJBQWlELFNBQVEseUJBQTRCO0lBTzlGLFlBQ3FCLE1BQXFCLEVBQ3RCLE1BQXlCO1FBRXpDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUhHLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFSN0MsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1QsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQTtRQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBT0YsQ0FBQztpSUFaUSxxQkFBcUI7cUhBQXJCLHFCQUFxQix3REFKbkI7WUFDUCxvQkFBb0I7U0FDdkIsaURDaEJMLGthQVNtQjs7MkZEU04scUJBQXFCO2tCQVJqQyxTQUFTOytCQUNJLCtCQUErQixhQUc5Qjt3QkFDUCxvQkFBb0I7cUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge21hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7SUVudGl0eX0gZnJvbSBcIkBzbWFydHNvZnQwMDEvZG9tYWluLWNvcmVcIjtcblxuaW1wb3J0IHtDcnVkTGlzdFBhZ2VCYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDcnVkTGlzdEdyb3VwU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2xpc3QtZ3JvdXAvbGlzdC1ncm91cC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDcnVkRmFjYWRlIH0gZnJvbSBcIi4uLy4uLy4uLytzdGF0ZS9jcnVkLmZhY2FkZVwiO1xuaW1wb3J0IHtDcnVkRnVsbENvbmZpZ30gZnJvbSBcIi4uLy4uLy4uL2NydWQuY29uZmlnXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInNtYXJ0LWNydWQtbGlzdC1zdGFuZGFyZC1wYWdlXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9zdGFuZGFyZC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9zdGFuZGFyZC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgQ3J1ZExpc3RHcm91cFNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RTdGFuZGFyZENvbXBvbmVudDxUIGV4dGVuZHMgSUVudGl0eTxzdHJpbmc+PiBleHRlbmRzIENydWRMaXN0UGFnZUJhc2VDb21wb25lbnQ8VD4ge1xuICAgIGlzU2VhcmNoJCA9IHRoaXMuZmFjYWRlLmZpbHRlciQucGlwZShcbiAgICAgIG1hcChmaWx0ZXIgPT4ge1xuICAgICAgICAgIHJldHVybiAhIWZpbHRlcj8uc2VhcmNoVGV4dFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmFjYWRlOiBDcnVkRmFjYWRlPFQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBDcnVkRnVsbENvbmZpZzxUPixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29uZmlnKTtcbiAgICB9XG59IiwiPHNtYXJ0LWNydWQtZmlsdGVycy1jb25maWc+PC9zbWFydC1jcnVkLWZpbHRlcnMtY29uZmlnPlxuPHNtYXJ0LWxpc3QgKm5nSWY9XCJsaXN0T3B0aW9uc1wiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIiEoIWNvbmZpZy5saXN0Py5ncm91cHMgfHwgKGlzU2VhcmNoJCB8IGFzeW5jKSlcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwibGlzdE9wdGlvbnNcIlxuPjwvc21hcnQtbGlzdD5cbjxzbWFydC1jcnVkLWdyb3VwICpuZ0lmPVwiY29uZmlnLmxpc3Q/Lmdyb3VwcyAmJiAhKGlzU2VhcmNoJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICBbZ3JvdXBzXT1cImNvbmZpZy5saXN0Py5ncm91cHNcIlxuICAgICAgICAgICAgICAgICAgW2xpc3RPcHRpb25zXT1cImxpc3RPcHRpb25zXCJcbj5cbjwvc21hcnQtY3J1ZC1ncm91cD4iXX0=
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Inject, Optional, Pipe } from "@angular/core";
|
|
2
|
-
import { CRUD_MODEL_POSSIBILITIES_PROVIDER, ICrudModelPossibilitiesProvider, } from "../../providers/model-possibilities/model-possibilities.provider";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../providers/model-possibilities/model-possibilities.provider";
|
|
5
|
-
export class FormOptionsPipe {
|
|
6
|
-
constructor(modelPossibilitiesProvider) {
|
|
7
|
-
this.modelPossibilitiesProvider = modelPossibilitiesProvider;
|
|
8
|
-
}
|
|
9
|
-
transform(item, mode, type, uniqueProvider, inputComponents) {
|
|
10
|
-
if (!mode || !type)
|
|
11
|
-
return null;
|
|
12
|
-
let possibilities = {};
|
|
13
|
-
if (type && this.modelPossibilitiesProvider) {
|
|
14
|
-
possibilities = this.modelPossibilitiesProvider.get(type);
|
|
15
|
-
}
|
|
16
|
-
if (mode === "create") {
|
|
17
|
-
return {
|
|
18
|
-
mode: "create",
|
|
19
|
-
possibilities,
|
|
20
|
-
inputComponents,
|
|
21
|
-
uniqueProvider,
|
|
22
|
-
model: new type(),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
const model = new type();
|
|
27
|
-
if (item) {
|
|
28
|
-
Object.keys(item).forEach((key) => {
|
|
29
|
-
model[key] = item[key];
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
return {
|
|
33
|
-
mode: mode,
|
|
34
|
-
uniqueProvider,
|
|
35
|
-
possibilities: possibilities,
|
|
36
|
-
inputComponents,
|
|
37
|
-
model: model,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: FormOptionsPipe, deps: [{ token: CRUD_MODEL_POSSIBILITIES_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
42
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.3", ngImport: i0, type: FormOptionsPipe, name: "smartFormOptions" }); }
|
|
43
|
-
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: FormOptionsPipe, decorators: [{
|
|
45
|
-
type: Pipe,
|
|
46
|
-
args: [{
|
|
47
|
-
name: "smartFormOptions",
|
|
48
|
-
}]
|
|
49
|
-
}], ctorParameters: function () { return [{ type: i1.ICrudModelPossibilitiesProvider, decorators: [{
|
|
50
|
-
type: Optional
|
|
51
|
-
}, {
|
|
52
|
-
type: Inject,
|
|
53
|
-
args: [CRUD_MODEL_POSSIBILITIES_PROVIDER]
|
|
54
|
-
}] }]; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1vcHRpb25zLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BpcGVzL2Zvcm0tb3B0aW9ucy9mb3JtLW9wdGlvbnMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBSzFFLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsK0JBQStCLEdBQ2hDLE1BQU0sa0VBQWtFLENBQUM7OztBQUsxRSxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUdVLDBCQUEyRDtRQUEzRCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWlDO0lBQ2xFLENBQUM7SUFFSixTQUFTLENBQ1AsSUFBTyxFQUNQLElBQVksRUFDWixJQUFTLEVBQ1QsY0FBbUUsRUFDbkUsZUFBa0U7UUFFbEUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVoQyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFFdkIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQzNDLGFBQWEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3JCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsYUFBYTtnQkFDYixlQUFlO2dCQUNmLGNBQWM7Z0JBQ2QsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFO2FBQ2xCLENBQUM7U0FDSDthQUFNO1lBQ0wsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUV6QixJQUFJLElBQUksRUFBRTtnQkFDUixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNoQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQzthQUNKO1lBRUQsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSTtnQkFDVixjQUFjO2dCQUNkLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixlQUFlO2dCQUNmLEtBQUssRUFBRSxLQUFLO2FBQ2IsQ0FBQztTQUNIO0lBQ0gsQ0FBQztpSUFoRFUsZUFBZSxrQkFJaEIsaUNBQWlDOytIQUpoQyxlQUFlOzsyRkFBZixlQUFlO2tCQUgzQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxrQkFBa0I7aUJBQ3pCOzswQkFJSSxRQUFROzswQkFDUixNQUFNOzJCQUFDLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBPcHRpb25hbCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gXCJAc21hcnRzb2Z0MDAxL2RvbWFpbi1jb3JlXCI7XG5pbXBvcnQge0lGb3JtT3B0aW9ucywgSW5wdXRCYXNlQ29tcG9uZW50fSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9hbmd1bGFyXCI7XG5cbmltcG9ydCB7XG4gIENSVURfTU9ERUxfUE9TU0lCSUxJVElFU19QUk9WSURFUixcbiAgSUNydWRNb2RlbFBvc3NpYmlsaXRpZXNQcm92aWRlcixcbn0gZnJvbSBcIi4uLy4uL3Byb3ZpZGVycy9tb2RlbC1wb3NzaWJpbGl0aWVzL21vZGVsLXBvc3NpYmlsaXRpZXMucHJvdmlkZXJcIjtcblxuQFBpcGUoe1xuICBuYW1lOiBcInNtYXJ0Rm9ybU9wdGlvbnNcIixcbn0pXG5leHBvcnQgY2xhc3MgRm9ybU9wdGlvbnNQaXBlPFQgZXh0ZW5kcyBJRW50aXR5PHN0cmluZz4+XG4gIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChDUlVEX01PREVMX1BPU1NJQklMSVRJRVNfUFJPVklERVIpXG4gICAgcHJpdmF0ZSBtb2RlbFBvc3NpYmlsaXRpZXNQcm92aWRlcjogSUNydWRNb2RlbFBvc3NpYmlsaXRpZXNQcm92aWRlclxuICApIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIGl0ZW06IFQsXG4gICAgbW9kZTogc3RyaW5nLFxuICAgIHR5cGU6IGFueSxcbiAgICB1bmlxdWVQcm92aWRlcj86ICh2YWx1ZXM6IFJlY29yZDxrZXlvZiBULCBhbnk+KSA9PiBQcm9taXNlPGJvb2xlYW4+LFxuICAgIGlucHV0Q29tcG9uZW50cz86IHsgW2tleTogc3RyaW5nXTogVHlwZTxJbnB1dEJhc2VDb21wb25lbnQ8YW55Pj4gfVxuICApOiBJRm9ybU9wdGlvbnM8VD4ge1xuICAgIGlmICghbW9kZSB8fCAhdHlwZSkgcmV0dXJuIG51bGw7XG5cbiAgICBsZXQgcG9zc2liaWxpdGllcyA9IHt9O1xuXG4gICAgaWYgKHR5cGUgJiYgdGhpcy5tb2RlbFBvc3NpYmlsaXRpZXNQcm92aWRlcikge1xuICAgICAgcG9zc2liaWxpdGllcyA9IHRoaXMubW9kZWxQb3NzaWJpbGl0aWVzUHJvdmlkZXIuZ2V0KHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChtb2RlID09PSBcImNyZWF0ZVwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcImNyZWF0ZVwiLFxuICAgICAgICBwb3NzaWJpbGl0aWVzLFxuICAgICAgICBpbnB1dENvbXBvbmVudHMsXG4gICAgICAgIHVuaXF1ZVByb3ZpZGVyLFxuICAgICAgICBtb2RlbDogbmV3IHR5cGUoKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1vZGVsID0gbmV3IHR5cGUoKTtcblxuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgbW9kZWxba2V5XSA9IGl0ZW1ba2V5XTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgIHVuaXF1ZVByb3ZpZGVyLFxuICAgICAgICBwb3NzaWJpbGl0aWVzOiBwb3NzaWJpbGl0aWVzLFxuICAgICAgICBpbnB1dENvbXBvbmVudHMsXG4gICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from "./pipes.module";
|
|
2
|
-
export * from "./form-options/form-options.pipe";
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BpcGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3BpcGVzLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybS1vcHRpb25zL2Zvcm0tb3B0aW9ucy5waXBlXCI7XG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { NgModule } from "@angular/core";
|
|
2
|
-
import { FormOptionsPipe } from "./form-options/form-options.pipe";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class CrudPipesModule {
|
|
5
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.3", ngImport: i0, type: CrudPipesModule, declarations: [FormOptionsPipe], exports: [FormOptionsPipe] }); }
|
|
7
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudPipesModule }); }
|
|
8
|
-
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudPipesModule, decorators: [{
|
|
10
|
-
type: NgModule,
|
|
11
|
-
args: [{
|
|
12
|
-
declarations: [
|
|
13
|
-
FormOptionsPipe
|
|
14
|
-
],
|
|
15
|
-
exports: [
|
|
16
|
-
FormOptionsPipe
|
|
17
|
-
]
|
|
18
|
-
}]
|
|
19
|
-
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcnVkL3NoZWxsL2FuZ3VsYXIvc3JjL2xpYi9waXBlcy9waXBlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7O0FBVWpFLE1BQU0sT0FBTyxlQUFlO2lJQUFmLGVBQWU7a0lBQWYsZUFBZSxpQkFOcEIsZUFBZSxhQUdmLGVBQWU7a0lBR1YsZUFBZTs7MkZBQWYsZUFBZTtrQkFSM0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YsZUFBZTtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGVBQWU7cUJBQ2xCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHtGb3JtT3B0aW9uc1BpcGV9IGZyb20gXCIuL2Zvcm0tb3B0aW9ucy9mb3JtLW9wdGlvbnMucGlwZVwiO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBGb3JtT3B0aW9uc1BpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybU9wdGlvbnNQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDcnVkUGlwZXNNb2R1bGUge1xuXG59XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from "@angular/core";
|
|
2
|
-
/**
|
|
3
|
-
* @deprecated - please, use IModelPossibilitiesProvider from @smartsoft001/angular
|
|
4
|
-
*/
|
|
5
|
-
export class ICrudModelPossibilitiesProvider {
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* @deprecated - please, use MODEL_POSSIBILITIES_PROVIDER from @smartsoft001/angular
|
|
9
|
-
*/
|
|
10
|
-
export const CRUD_MODEL_POSSIBILITIES_PROVIDER = new InjectionToken("CRUD_MODEL_POSSIBILITIES_PROVIDER");
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcG9zc2liaWxpdGllcy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3J1ZC9zaGVsbC9hbmd1bGFyL3NyYy9saWIvcHJvdmlkZXJzL21vZGVsLXBvc3NpYmlsaXRpZXMvbW9kZWwtcG9zc2liaWxpdGllcy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOztHQUVHO0FBQ0gsTUFBTSxPQUFnQiwrQkFBK0I7Q0FFcEQ7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLElBQUksY0FBYyxDQUVqRSxtQ0FBbUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIC0gcGxlYXNlLCB1c2UgSU1vZGVsUG9zc2liaWxpdGllc1Byb3ZpZGVyIGZyb20gQHNtYXJ0c29mdDAwMS9hbmd1bGFyXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJQ3J1ZE1vZGVsUG9zc2liaWxpdGllc1Byb3ZpZGVyIHtcbiAgYWJzdHJhY3QgZ2V0PFQ+KHR5cGU6IGFueSk6IHsgW2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTx7IGlkOiBhbnk7IHRleHQ6IHN0cmluZyB9W10+IH07XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgLSBwbGVhc2UsIHVzZSBNT0RFTF9QT1NTSUJJTElUSUVTX1BST1ZJREVSIGZyb20gQHNtYXJ0c29mdDAwMS9hbmd1bGFyXG4gKi9cbmV4cG9ydCBjb25zdCBDUlVEX01PREVMX1BPU1NJQklMSVRJRVNfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIElDcnVkTW9kZWxQb3NzaWJpbGl0aWVzUHJvdmlkZXJcbj4oXCJDUlVEX01PREVMX1BPU1NJQklMSVRJRVNfUFJPVklERVJcIik7XG4iXX0=
|