@firestitch/list 15.0.0 → 16.0.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/app/components/body/body.component.d.ts +1 -1
- package/app/components/body/row/actions/actions.component.d.ts +1 -1
- package/app/components/body/row/cell/cell.component.d.ts +1 -1
- package/app/components/body/row/inline-action/inline-action.component.d.ts +1 -1
- package/app/components/body/row/menu-action/menu-action.component.d.ts +1 -1
- package/app/components/body/row/row.component.d.ts +1 -1
- package/app/components/footer/footer-row/footer-row.component.d.ts +1 -7
- package/app/components/footer/footer.component.d.ts +1 -1
- package/app/components/head/head.component.d.ts +1 -1
- package/app/components/list/list.component.d.ts +1 -1
- package/app/components/loader/loader.component.d.ts +1 -1
- package/app/components/pagination/pagination.component.d.ts +1 -1
- package/app/components/status/status.component.d.ts +1 -1
- package/app/directives/cell/cell.directive.d.ts +1 -1
- package/app/directives/column/column.directive.d.ts +1 -1
- package/app/directives/content-init/content-init.directive.d.ts +1 -1
- package/app/directives/draggable-list/draggable-list.directive.d.ts +1 -1
- package/app/directives/draggable-row/draggable-row.directive.d.ts +1 -1
- package/app/directives/footer/footer.directive.d.ts +1 -1
- package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +1 -1
- package/app/directives/header/header.directive.d.ts +1 -1
- package/app/models/column.model.d.ts +1 -1
- package/esm2022/app/classes/actions-controller.mjs +57 -0
- package/esm2022/app/classes/columns-controller.mjs +211 -0
- package/esm2022/app/classes/data-controller.mjs +348 -0
- package/esm2022/app/classes/external-params-controller.mjs +153 -0
- package/esm2022/app/classes/list-controller.mjs +712 -0
- package/esm2022/app/classes/pagination-controller.mjs +491 -0
- package/esm2022/app/classes/persistance-controller.mjs +19 -0
- package/esm2022/app/classes/reorder-controller.mjs +191 -0
- package/esm2022/app/classes/selection-controller.mjs +473 -0
- package/esm2022/app/classes/sorting-controller.mjs +207 -0
- package/esm2022/app/components/body/body.component.mjs +73 -0
- package/esm2022/app/components/body/row/actions/actions.component.mjs +102 -0
- package/esm2022/app/components/body/row/cell/cell.component.mjs +109 -0
- package/esm2022/app/components/body/row/inline-action/inline-action.component.mjs +32 -0
- package/esm2022/app/components/body/row/menu-action/menu-action.component.mjs +51 -0
- package/esm2022/app/components/body/row/row.component.mjs +341 -0
- package/esm2022/app/components/customize-cols/customize-cols.component.mjs +70 -0
- package/{esm2020 → esm2022}/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +4 -4
- package/esm2022/app/components/footer/footer-row/footer-row.component.mjs +17 -0
- package/esm2022/app/components/footer/footer.component.mjs +35 -0
- package/esm2022/app/components/head/head-cell/head-cell.component.mjs +32 -0
- package/esm2022/app/components/head/head.component.mjs +113 -0
- package/esm2022/app/components/list/list.component.mjs +406 -0
- package/esm2022/app/components/loader/loader.component.mjs +40 -0
- package/esm2022/app/components/manage-saved-filters/manage-saved-filters.component.mjs +78 -0
- package/esm2022/app/components/pagination/pagination.component.mjs +40 -0
- package/esm2022/app/components/saved-filters/saved-filters.component.mjs +32 -0
- package/esm2022/app/components/status/status.component.mjs +69 -0
- package/esm2022/app/directives/cell/cell.directive.mjs +21 -0
- package/esm2022/app/directives/column/column.directive.mjs +137 -0
- package/{esm2020 → esm2022}/app/directives/content/content.directive.mjs +4 -4
- package/esm2022/app/directives/content-init/content-init.directive.mjs +23 -0
- package/esm2022/app/directives/draggable-list/draggable-list.directive.mjs +344 -0
- package/esm2022/app/directives/draggable-row/draggable-row.directive.mjs +83 -0
- package/{esm2020 → esm2022}/app/directives/empty-state/empty-state.directive.mjs +4 -4
- package/esm2022/app/directives/footer/footer.directive.mjs +21 -0
- package/esm2022/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +28 -0
- package/{esm2020 → esm2022}/app/directives/group-footer/group-footer.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/directives/group-header/group-header.directive.mjs +4 -4
- package/esm2022/app/directives/header/header.directive.mjs +21 -0
- package/{esm2020 → esm2022}/app/directives/heading/heading.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/directives/heading-container/heading-container.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/directives/subheading/subheading.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/fs-list.module.mjs +89 -89
- package/esm2022/app/models/column-attributes.mjs +139 -0
- package/esm2022/app/models/column.model.mjs +173 -0
- package/esm2022/app/models/row/base-row.mjs +25 -0
- package/esm2022/app/models/row/child-row.mjs +29 -0
- package/esm2022/app/models/row/group-footer-row.mjs +22 -0
- package/{esm2020 → esm2022}/app/models/row/group-row.mjs +3 -3
- package/esm2022/app/models/row-action.model.mjs +102 -0
- package/esm2022/app/models/row.mjs +90 -0
- package/esm2022/app/models/styleConfig.model.mjs +78 -0
- package/{esm2020 → esm2022}/app/pipes/action-label.mjs +4 -4
- package/esm2022/app/services/group-expand-notifier.service.mjs +24 -0
- package/{fesm2020 → fesm2022}/firestitch-list.mjs +675 -442
- package/fesm2022/firestitch-list.mjs.map +1 -0
- package/package.json +5 -11
- package/esm2020/app/classes/actions-controller.mjs +0 -55
- package/esm2020/app/classes/columns-controller.mjs +0 -206
- package/esm2020/app/classes/data-controller.mjs +0 -345
- package/esm2020/app/classes/external-params-controller.mjs +0 -147
- package/esm2020/app/classes/list-controller.mjs +0 -674
- package/esm2020/app/classes/pagination-controller.mjs +0 -491
- package/esm2020/app/classes/persistance-controller.mjs +0 -19
- package/esm2020/app/classes/reorder-controller.mjs +0 -182
- package/esm2020/app/classes/selection-controller.mjs +0 -466
- package/esm2020/app/classes/sorting-controller.mjs +0 -206
- package/esm2020/app/components/body/body.component.mjs +0 -64
- package/esm2020/app/components/body/row/actions/actions.component.mjs +0 -97
- package/esm2020/app/components/body/row/cell/cell.component.mjs +0 -107
- package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +0 -33
- package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +0 -46
- package/esm2020/app/components/body/row/row.component.mjs +0 -322
- package/esm2020/app/components/customize-cols/customize-cols.component.mjs +0 -68
- package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +0 -28
- package/esm2020/app/components/footer/footer.component.mjs +0 -31
- package/esm2020/app/components/head/head-cell/head-cell.component.mjs +0 -29
- package/esm2020/app/components/head/head.component.mjs +0 -103
- package/esm2020/app/components/list/list.component.mjs +0 -385
- package/esm2020/app/components/loader/loader.component.mjs +0 -40
- package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +0 -76
- package/esm2020/app/components/pagination/pagination.component.mjs +0 -37
- package/esm2020/app/components/saved-filters/saved-filters.component.mjs +0 -29
- package/esm2020/app/components/status/status.component.mjs +0 -64
- package/esm2020/app/directives/cell/cell.directive.mjs +0 -18
- package/esm2020/app/directives/column/column.directive.mjs +0 -121
- package/esm2020/app/directives/content-init/content-init.directive.mjs +0 -22
- package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +0 -330
- package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +0 -78
- package/esm2020/app/directives/footer/footer.directive.mjs +0 -18
- package/esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +0 -26
- package/esm2020/app/directives/header/header.directive.mjs +0 -18
- package/esm2020/app/models/column-attributes.mjs +0 -132
- package/esm2020/app/models/column.model.mjs +0 -164
- package/esm2020/app/models/row/base-row.mjs +0 -23
- package/esm2020/app/models/row/child-row.mjs +0 -28
- package/esm2020/app/models/row/group-footer-row.mjs +0 -21
- package/esm2020/app/models/row-action.model.mjs +0 -90
- package/esm2020/app/models/row.mjs +0 -89
- package/esm2020/app/models/styleConfig.model.mjs +0 -76
- package/esm2020/app/services/group-expand-notifier.service.mjs +0 -26
- package/fesm2015/firestitch-list.mjs +0 -5802
- package/fesm2015/firestitch-list.mjs.map +0 -1
- package/fesm2020/firestitch-list.mjs.map +0 -1
- /package/{esm2020 → esm2022}/app/classes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/action-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/page-change-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/pagination-strategy.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/row-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/state.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/fs-list.providers.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/cellconfig.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/column-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/draggable-list.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/external-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/listconfig.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/pagination-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/pagination.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/sorting-change-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/models/column-async-attribute.mjs +0 -0
- /package/{esm2020 → esm2022}/app/models/row/simple-row.mjs +0 -0
- /package/{esm2020 → esm2022}/app/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/firestitch-list.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -24,5 +24,5 @@ export declare class FsBodyComponent {
|
|
|
24
24
|
rowsContainer: any;
|
|
25
25
|
headerTemplate: TemplateRef<any>;
|
|
26
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsBodyComponent, never>;
|
|
27
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsBodyComponent, "[fs-list-body]", never, { "rows": "rows"; "columns": "columns"; "hasFooter": "hasFooter"; "rowActionsRaw": "rowActionsRaw"; "groupActionsRaw": "groupActionsRaw"; "rowEvents": "rowEvents"; "rowClass": "rowClass"; "hasRowActions": "hasRowActions"; "selection": "selection"; "restoreMode": "restoreMode"; "rowRemoved": "rowRemoved"; "activeFiltersCount": "activeFiltersCount"; "reorderEnabled": "reorderEnabled"; "reorderPosition": "reorderPosition"; "reorderStrategy": "reorderStrategy"; "reorderMultiple": "reorderMultiple"; }, {}, ["headerTemplate"], never, false, never>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsBodyComponent, "[fs-list-body]", never, { "rows": { "alias": "rows"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "hasFooter": { "alias": "hasFooter"; "required": false; }; "rowActionsRaw": { "alias": "rowActionsRaw"; "required": false; }; "groupActionsRaw": { "alias": "groupActionsRaw"; "required": false; }; "rowEvents": { "alias": "rowEvents"; "required": false; }; "rowClass": { "alias": "rowClass"; "required": false; }; "hasRowActions": { "alias": "hasRowActions"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "restoreMode": { "alias": "restoreMode"; "required": false; }; "rowRemoved": { "alias": "rowRemoved"; "required": false; }; "activeFiltersCount": { "alias": "activeFiltersCount"; "required": false; }; "reorderEnabled": { "alias": "reorderEnabled"; "required": false; }; "reorderPosition": { "alias": "reorderPosition"; "required": false; }; "reorderStrategy": { "alias": "reorderStrategy"; "required": false; }; "reorderMultiple": { "alias": "reorderMultiple"; "required": false; }; }, {}, ["headerTemplate"], never, false, never>;
|
|
28
28
|
}
|
|
@@ -32,5 +32,5 @@ export declare class FsRowActionsComponent {
|
|
|
32
32
|
*/
|
|
33
33
|
private _removeAction;
|
|
34
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsRowActionsComponent, never>;
|
|
35
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowActionsComponent, "fs-list-row-actions", never, { "row": "row"; "index": "index"; "restoreMode": "restoreMode"; "rowActions": "rowActions"; "rowRemoved": "rowRemoved"; "menuRowActions": "menuRowActions"; "inlineRowActions": "inlineRowActions"; "restoreAction": "restoreAction"; }, {}, never, never, false, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowActionsComponent, "fs-list-row-actions", never, { "row": { "alias": "row"; "required": false; }; "index": { "alias": "index"; "required": false; }; "restoreMode": { "alias": "restoreMode"; "required": false; }; "rowActions": { "alias": "rowActions"; "required": false; }; "rowRemoved": { "alias": "rowRemoved"; "required": false; }; "menuRowActions": { "alias": "menuRowActions"; "required": false; }; "inlineRowActions": { "alias": "inlineRowActions"; "required": false; }; "restoreAction": { "alias": "restoreAction"; "required": false; }; }, {}, never, never, false, never>;
|
|
36
36
|
}
|
|
@@ -18,5 +18,5 @@ export declare class FsCellComponent implements OnInit, OnChanges, DoCheck, OnDe
|
|
|
18
18
|
private _initCellTemplate;
|
|
19
19
|
private _listenGroupOpen;
|
|
20
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsCellComponent, never>;
|
|
21
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsCellComponent, "[fs-cell]", never, { "column": "column"; "row": "row"; "rowIndex": "rowIndex"; }, {}, never, never, false, never>;
|
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsCellComponent, "[fs-cell]", never, { "column": { "alias": "column"; "required": false; }; "row": { "alias": "row"; "required": false; }; "rowIndex": { "alias": "rowIndex"; "required": false; }; }, {}, never, never, false, never>;
|
|
22
22
|
}
|
|
@@ -9,5 +9,5 @@ export declare class FsRowInlineActionComponent {
|
|
|
9
9
|
actionClick(event: any): void;
|
|
10
10
|
fileSelected(event: any): void;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsRowInlineActionComponent, never>;
|
|
12
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowInlineActionComponent, "fs-list-row-inline-action", never, { "action": "action"; }, { "clicked": "clicked"; "fileSelect": "fileSelect"; }, never, never, false, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowInlineActionComponent, "fs-list-row-inline-action", never, { "action": { "alias": "action"; "required": false; }; }, { "clicked": "clicked"; "fileSelect": "fileSelect"; }, never, never, false, never>;
|
|
13
13
|
}
|
|
@@ -16,5 +16,5 @@ export declare class FsRowMenuActionComponent {
|
|
|
16
16
|
errorFile(event: any): void;
|
|
17
17
|
closeMenu(): void;
|
|
18
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsRowMenuActionComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowMenuActionComponent, "fs-list-row-menu-action", never, { "row": "row"; "icon": "icon"; "label": "label"; "file": "file"; }, { "fileSelect": "fileSelect"; "fileError": "fileError"; }, never, never, false, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowMenuActionComponent, "fs-list-row-menu-action", never, { "row": { "alias": "row"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "label": { "alias": "label"; "required": false; }; "file": { "alias": "file"; "required": false; }; }, { "fileSelect": "fileSelect"; "fileError": "fileError"; }, never, never, false, never>;
|
|
20
20
|
}
|
|
@@ -81,5 +81,5 @@ export declare class FsRowComponent implements OnInit, DoCheck, OnDestroy {
|
|
|
81
81
|
private _initSelection;
|
|
82
82
|
private _filterActionsByCategories;
|
|
83
83
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsRowComponent, never>;
|
|
84
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowComponent, "[fs-list-row]", never, { "row": "row"; "rowActionsRaw": "rowActionsRaw"; "groupActionsRaw": "groupActionsRaw"; "hasRowActions": "hasRowActions"; "rowEvents": "rowEvents"; "rowClass": "rowClass"; "restoreMode": "restoreMode"; "rowIndex": "rowIndex"; "columns": "columns"; "selection": "selection"; "rowRemoved": "rowRemoved"; "activeFiltersCount": "activeFiltersCount"; "reorderEnabled": "reorderEnabled"; "reorderPosition": "reorderPosition"; "reorderStrategy": "reorderStrategy"; "reorderMultiple": "reorderMultiple"; }, {}, never, never, false, never>;
|
|
84
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsRowComponent, "[fs-list-row]", never, { "row": { "alias": "row"; "required": false; }; "rowActionsRaw": { "alias": "rowActionsRaw"; "required": false; }; "groupActionsRaw": { "alias": "groupActionsRaw"; "required": false; }; "hasRowActions": { "alias": "hasRowActions"; "required": false; }; "rowEvents": { "alias": "rowEvents"; "required": false; }; "rowClass": { "alias": "rowClass"; "required": false; }; "restoreMode": { "alias": "restoreMode"; "required": false; }; "rowIndex": { "alias": "rowIndex"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "rowRemoved": { "alias": "rowRemoved"; "required": false; }; "activeFiltersCount": { "alias": "activeFiltersCount"; "required": false; }; "reorderEnabled": { "alias": "reorderEnabled"; "required": false; }; "reorderPosition": { "alias": "reorderPosition"; "required": false; }; "reorderStrategy": { "alias": "reorderStrategy"; "required": false; }; "reorderMultiple": { "alias": "reorderMultiple"; "required": false; }; }, {}, never, never, false, never>;
|
|
85
85
|
}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import { ChangeDetectorRef, ElementRef, KeyValueDiffers, Renderer2 } from '@angular/core';
|
|
2
|
-
import { ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';
|
|
3
2
|
import { FsRowComponent } from '../../body/row/row.component';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class FsFooterRowComponent extends FsRowComponent {
|
|
6
|
-
hasRowActions: boolean;
|
|
7
|
-
activeFiltersCount: number;
|
|
8
|
-
reorderEnabled: boolean;
|
|
9
|
-
reorderPosition: ReorderPosition | null;
|
|
10
|
-
reorderStrategy: ReorderStrategy | null;
|
|
11
5
|
constructor(el: ElementRef, cdRef: ChangeDetectorRef, differs: KeyValueDiffers, renderer: Renderer2);
|
|
12
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsFooterRowComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsFooterRowComponent, "[fs-list-footer-row]", never, {
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsFooterRowComponent, "[fs-list-footer-row]", never, {}, {}, never, never, false, never>;
|
|
14
8
|
}
|
|
@@ -11,5 +11,5 @@ export declare class FsFooterComponent {
|
|
|
11
11
|
reorderPosition: ReorderPosition | null;
|
|
12
12
|
reorderStrategy: ReorderStrategy | null;
|
|
13
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsFooterComponent, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsFooterComponent, "[fs-list-footer]", never, { "hasRowActions": "hasRowActions"; "columns": "columns"; "selection": "selection"; "activeFiltersCount": "activeFiltersCount"; "reorderEnabled": "reorderEnabled"; "reorderPosition": "reorderPosition"; "reorderStrategy": "reorderStrategy"; }, {}, never, never, false, never>;
|
|
14
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsFooterComponent, "[fs-list-footer]", never, { "hasRowActions": { "alias": "hasRowActions"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "activeFiltersCount": { "alias": "activeFiltersCount"; "required": false; }; "reorderEnabled": { "alias": "reorderEnabled"; "required": false; }; "reorderPosition": { "alias": "reorderPosition"; "required": false; }; "reorderStrategy": { "alias": "reorderStrategy"; "required": false; }; }, {}, never, never, false, never>;
|
|
15
15
|
}
|
|
@@ -45,5 +45,5 @@ export declare class FsHeadComponent implements OnInit, OnDestroy {
|
|
|
45
45
|
*/
|
|
46
46
|
private _initSelection;
|
|
47
47
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsHeadComponent, never>;
|
|
48
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsHeadComponent, "[fs-list-head]", never, { "sorting": "sorting"; "columns": "columns"; "hasRowActions": "hasRowActions"; "selection": "selection"; "activeFiltersCount": "activeFiltersCount"; "reorderEnabled": "reorderEnabled"; "reorderPosition": "reorderPosition"; "reorderStrategy": "reorderStrategy"; }, {}, never, never, false, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsHeadComponent, "[fs-list-head]", never, { "sorting": { "alias": "sorting"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "hasRowActions": { "alias": "hasRowActions"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "activeFiltersCount": { "alias": "activeFiltersCount"; "required": false; }; "reorderEnabled": { "alias": "reorderEnabled"; "required": false; }; "reorderPosition": { "alias": "reorderPosition"; "required": false; }; "reorderStrategy": { "alias": "reorderStrategy"; "required": false; }; }, {}, never, never, false, never>;
|
|
49
49
|
}
|
|
@@ -123,5 +123,5 @@ export declare class FsListComponent implements OnInit, OnDestroy, AfterContentI
|
|
|
123
123
|
private _configMergeCustomizer;
|
|
124
124
|
private _restorePersistance;
|
|
125
125
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListComponent, [null, { optional: true; }, { optional: true; }, { optional: true; }, null, null, null, null, null, null, null, null, null]>;
|
|
126
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsListComponent, "fs-list", never, { "config": "config"; "loaderLines": "loaderLines"; }, { "filtersReady": "filtersReady"; }, ["headingTemplate", "headingContainerTemplate", "subheadingTemplate", "_emptyStateTemplate", "columnTemplates"], ["[fs-list-content]"], false, never>;
|
|
126
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsListComponent, "fs-list", never, { "config": { "alias": "config"; "required": false; }; "loaderLines": { "alias": "loaderLines"; "required": false; }; }, { "filtersReady": "filtersReady"; }, ["headingTemplate", "headingContainerTemplate", "subheadingTemplate", "_emptyStateTemplate", "columnTemplates"], ["[fs-list-content]"], false, never>;
|
|
127
127
|
}
|
|
@@ -10,5 +10,5 @@ export declare class FsListLoaderComponent implements OnInit, OnChanges {
|
|
|
10
10
|
ngOnInit(): void;
|
|
11
11
|
ngOnChanges(changes: SimpleChanges): void;
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListLoaderComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsListLoaderComponent, "fs-list-loader", never, { "columns": "columns"; "loaderLines": "loaderLines"; }, {}, never, never, false, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsListLoaderComponent, "fs-list-loader", never, { "columns": { "alias": "columns"; "required": false; }; "loaderLines": { "alias": "loaderLines"; "required": false; }; }, {}, never, never, false, never>;
|
|
14
14
|
}
|
|
@@ -10,5 +10,5 @@ export declare class FsPaginationComponent implements OnInit, OnDestroy {
|
|
|
10
10
|
ngOnInit(): void;
|
|
11
11
|
ngOnDestroy(): void;
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsPaginationComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsPaginationComponent, "fs-list-pagination", never, { "pagination": "pagination"; "rows": "rows"; }, {}, never, never, false, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsPaginationComponent, "fs-list-pagination", never, { "pagination": { "alias": "pagination"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, false, never>;
|
|
14
14
|
}
|
|
@@ -16,5 +16,5 @@ export declare class FsStatusComponent implements OnInit, OnDestroy {
|
|
|
16
16
|
setSortableColumn(column: any): void;
|
|
17
17
|
setLimit(limit: any): void;
|
|
18
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsStatusComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsStatusComponent, "fs-list-status", never, { "paging": "paging"; "sorting": "sorting"; "rows": "rows"; "firstLoad": "firstLoad"; }, {}, never, never, false, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsStatusComponent, "fs-list-status", never, { "paging": { "alias": "paging"; "required": false; }; "sorting": { "alias": "sorting"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "firstLoad": { "alias": "firstLoad"; "required": false; }; }, {}, never, never, false, never>;
|
|
20
20
|
}
|
|
@@ -4,5 +4,5 @@ export declare class FsListCellDirective {
|
|
|
4
4
|
align: string;
|
|
5
5
|
className: string | string[];
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListCellDirective, never>;
|
|
7
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListCellDirective, "[fs-list-cell]", never, { "colspan": "colspan"; "align": "align"; "className": "class"; }, {}, never, never, false, never>;
|
|
7
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListCellDirective, "[fs-list-cell]", never, { "colspan": { "alias": "colspan"; "required": false; }; "align": { "alias": "align"; "required": false; }; "className": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
|
|
8
8
|
}
|
|
@@ -33,5 +33,5 @@ export declare class FsListColumnDirective {
|
|
|
33
33
|
set width(value: string);
|
|
34
34
|
set className(value: string | string[]);
|
|
35
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListColumnDirective, never>;
|
|
36
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListColumnDirective, "fs-list-column", never, { "visible": "show"; "title": "title"; "name": "name"; "customize": "customize"; "sortable": "sortable"; "sortableDefault": "sortableDefault"; "sortableDirection": "sortableDirection"; "direction": "direction"; "align": "align"; "width": "width"; "className": "class"; }, {}, ["headerTemplate", "headerConfigs", "groupHeaderTemplate", "groupHeaderConfigs", "groupFooterTemplate", "groupFooterConfigs", "cellTemplate", "cellConfigs", "footerTemplate", "footerConfigs", "expandTrigger"], never, false, never>;
|
|
36
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListColumnDirective, "fs-list-column", never, { "visible": { "alias": "show"; "required": false; }; "title": { "alias": "title"; "required": false; }; "name": { "alias": "name"; "required": false; }; "customize": { "alias": "customize"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "sortableDefault": { "alias": "sortableDefault"; "required": false; }; "sortableDirection": { "alias": "sortableDirection"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "align": { "alias": "align"; "required": false; }; "width": { "alias": "width"; "required": false; }; "className": { "alias": "class"; "required": false; }; }, {}, ["headerTemplate", "headerConfigs", "groupHeaderTemplate", "groupHeaderConfigs", "groupFooterTemplate", "groupFooterConfigs", "cellTemplate", "cellConfigs", "footerTemplate", "footerConfigs", "expandTrigger"], never, false, never>;
|
|
37
37
|
}
|
|
@@ -5,5 +5,5 @@ export declare class FsListContentInitDirective implements AfterViewInit {
|
|
|
5
5
|
constructor();
|
|
6
6
|
ngAfterViewInit(): void;
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListContentInitDirective, never>;
|
|
8
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListContentInitDirective, "[fsListContentInit]", never, { "contentInitCallback": "fsListContentInit"; }, {}, never, never, false, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListContentInitDirective, "[fsListContentInit]", never, { "contentInitCallback": { "alias": "fsListContentInit"; "required": false; }; }, {}, never, never, false, never>;
|
|
9
9
|
}
|
|
@@ -91,5 +91,5 @@ export declare class FsListDraggableListDirective {
|
|
|
91
91
|
*/
|
|
92
92
|
private touchFix;
|
|
93
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListDraggableListDirective, never>;
|
|
94
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListDraggableListDirective, "[fsListDraggableList]", never, { "_rows": "rows"; }, {}, never, never, false, never>;
|
|
94
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListDraggableListDirective, "[fsListDraggableList]", never, { "_rows": { "alias": "rows"; "required": false; }; }, {}, never, never, false, never>;
|
|
95
95
|
}
|
|
@@ -19,5 +19,5 @@ export declare class FsListDraggableRowDirective implements OnInit, OnDestroy {
|
|
|
19
19
|
private _markReadyToSwapRows;
|
|
20
20
|
private _unmarkRows;
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListDraggableRowDirective, never>;
|
|
22
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListDraggableRowDirective, "[fsListDraggableRow]", never, { "row": "row"; }, {}, never, never, false, never>;
|
|
22
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListDraggableRowDirective, "[fsListDraggableRow]", never, { "row": { "alias": "row"; "required": false; }; }, {}, never, never, false, never>;
|
|
23
23
|
}
|
|
@@ -4,5 +4,5 @@ export declare class FsListFooterDirective {
|
|
|
4
4
|
align: string;
|
|
5
5
|
className: string | string[];
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListFooterDirective, never>;
|
|
7
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListFooterDirective, "[fs-list-footer]", never, { "colspan": "colspan"; "align": "align"; "className": "class"; }, {}, never, never, false, never>;
|
|
7
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListFooterDirective, "[fs-list-footer]", never, { "colspan": { "alias": "colspan"; "required": false; }; "align": { "alias": "align"; "required": false; }; "className": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
|
|
8
8
|
}
|
|
@@ -6,5 +6,5 @@ export declare class FsListGroupExpandTriggerDirective {
|
|
|
6
6
|
row: any;
|
|
7
7
|
constructor(_expandNotifier: GroupExpandNotifierService);
|
|
8
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListGroupExpandTriggerDirective, never>;
|
|
9
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListGroupExpandTriggerDirective, "[fsListGroupExpandTrigger]", never, { "row": "row"; }, {}, never, never, false, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListGroupExpandTriggerDirective, "[fsListGroupExpandTrigger]", never, { "row": { "alias": "row"; "required": false; }; }, {}, never, never, false, never>;
|
|
10
10
|
}
|
|
@@ -4,5 +4,5 @@ export declare class FsListHeaderDirective {
|
|
|
4
4
|
align: string;
|
|
5
5
|
className: string | string[];
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsListHeaderDirective, never>;
|
|
7
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListHeaderDirective, "[fs-list-header]", never, { "colspan": "colspan"; "align": "align"; "className": "class"; }, {}, never, never, false, never>;
|
|
7
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsListHeaderDirective, "[fs-list-header]", never, { "colspan": { "alias": "colspan"; "required": false; }; "align": { "alias": "align"; "required": false; }; "className": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
|
|
8
8
|
}
|
|
@@ -42,7 +42,7 @@ export declare class Column {
|
|
|
42
42
|
get sortingDirection$(): Observable<'asc' | 'desc'>;
|
|
43
43
|
get visible(): boolean;
|
|
44
44
|
get visible$(): Observable<boolean>;
|
|
45
|
-
get direction(): "
|
|
45
|
+
get direction(): "asc" | "desc";
|
|
46
46
|
get fullNameDirection(): "Ascending" | "Descending";
|
|
47
47
|
get ordered(): boolean;
|
|
48
48
|
set ordered(value: boolean);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
export class ActionsController {
|
|
3
|
+
_filterRef;
|
|
4
|
+
_actions = [];
|
|
5
|
+
_reorderAction;
|
|
6
|
+
_doneAction;
|
|
7
|
+
_destroy$ = new Subject();
|
|
8
|
+
constructor() { }
|
|
9
|
+
get destroy$() {
|
|
10
|
+
return this._destroy$.asObservable();
|
|
11
|
+
}
|
|
12
|
+
get actions() {
|
|
13
|
+
return this._actions;
|
|
14
|
+
}
|
|
15
|
+
get hasActions() {
|
|
16
|
+
return this._actions.length > 0;
|
|
17
|
+
}
|
|
18
|
+
setFilterRef(ref) {
|
|
19
|
+
this._filterRef = ref;
|
|
20
|
+
}
|
|
21
|
+
setActions(actions) {
|
|
22
|
+
this.clearActions();
|
|
23
|
+
this._actions = actions;
|
|
24
|
+
if (this._reorderAction) {
|
|
25
|
+
this._actions.unshift(this._reorderAction);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
addReorderAction(action) {
|
|
29
|
+
const actionClickFn = action.click;
|
|
30
|
+
this._actions.unshift(action);
|
|
31
|
+
action.click = () => {
|
|
32
|
+
this._filterRef.updateActions([this._doneAction]);
|
|
33
|
+
this._filterRef.hideKeywordField();
|
|
34
|
+
this._filterRef.hideFiltersBtn();
|
|
35
|
+
actionClickFn(null);
|
|
36
|
+
};
|
|
37
|
+
this._reorderAction = action;
|
|
38
|
+
}
|
|
39
|
+
addReorderDoneAction(action) {
|
|
40
|
+
this._doneAction = action;
|
|
41
|
+
const actionClickFn = action.click;
|
|
42
|
+
this._doneAction.click = () => {
|
|
43
|
+
this._filterRef.updateActions(this._actions);
|
|
44
|
+
this._filterRef.showKeywordField();
|
|
45
|
+
this._filterRef.showFiltersBtn();
|
|
46
|
+
actionClickFn(null);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
clearActions() {
|
|
50
|
+
this._actions = [];
|
|
51
|
+
this._destroy$.next();
|
|
52
|
+
}
|
|
53
|
+
updateDisabledState() {
|
|
54
|
+
this._filterRef.updateDisabledState();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2FjdGlvbnMtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTNDLE1BQU0sT0FBTyxpQkFBaUI7SUFFcEIsVUFBVSxDQUFrQjtJQUU1QixRQUFRLEdBQW1CLEVBQUUsQ0FBQztJQUM5QixjQUFjLENBQWU7SUFDN0IsV0FBVyxDQUFlO0lBRTFCLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXhDLGdCQUFlLENBQUM7SUFFaEIsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxZQUFZLENBQUMsR0FBb0I7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUF1QjtRQUN2QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUMxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQTtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxNQUFvQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRW5DLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQTtJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgRnNMaXN0QWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9saXN0Y29uZmlnLmludGVyZmFjZSc7XG5cblxuZXhwb3J0IGNsYXNzIEFjdGlvbnNDb250cm9sbGVyIHtcblxuICBwcml2YXRlIF9maWx0ZXJSZWY6IEZpbHRlckNvbXBvbmVudDtcblxuICBwcml2YXRlIF9hY3Rpb25zOiBGc0xpc3RBY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIF9yZW9yZGVyQWN0aW9uOiBGc0xpc3RBY3Rpb247XG4gIHByaXZhdGUgX2RvbmVBY3Rpb246IEZzTGlzdEFjdGlvbjtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBnZXQgZGVzdHJveSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3kkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3Rpb25zKCk6IEZzTGlzdEFjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzQWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIHNldEZpbHRlclJlZihyZWY6IEZpbHRlckNvbXBvbmVudCkge1xuICAgIHRoaXMuX2ZpbHRlclJlZiA9IHJlZjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb25zKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgdGhpcy5jbGVhckFjdGlvbnMoKTtcbiAgICB0aGlzLl9hY3Rpb25zID0gYWN0aW9ucztcblxuICAgIGlmICh0aGlzLl9yZW9yZGVyQWN0aW9uKSB7XG4gICAgICB0aGlzLl9hY3Rpb25zLnVuc2hpZnQodGhpcy5fcmVvcmRlckFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZFJlb3JkZXJBY3Rpb24oYWN0aW9uOiBGc0xpc3RBY3Rpb24pIHtcbiAgICBjb25zdCBhY3Rpb25DbGlja0ZuID0gYWN0aW9uLmNsaWNrO1xuICAgIHRoaXMuX2FjdGlvbnMudW5zaGlmdChhY3Rpb24pO1xuXG4gICAgYWN0aW9uLmNsaWNrID0gKCkgPT4ge1xuICAgICAgdGhpcy5fZmlsdGVyUmVmLnVwZGF0ZUFjdGlvbnMoW3RoaXMuX2RvbmVBY3Rpb25dKTtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi5oaWRlS2V5d29yZEZpZWxkKCk7XG4gICAgICB0aGlzLl9maWx0ZXJSZWYuaGlkZUZpbHRlcnNCdG4oKTtcbiAgICAgIGFjdGlvbkNsaWNrRm4obnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVvcmRlckFjdGlvbiA9IGFjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRSZW9yZGVyRG9uZUFjdGlvbihhY3Rpb246IEZzTGlzdEFjdGlvbikge1xuICAgIHRoaXMuX2RvbmVBY3Rpb24gPSBhY3Rpb247XG4gICAgY29uc3QgYWN0aW9uQ2xpY2tGbiA9IGFjdGlvbi5jbGljaztcblxuICAgIHRoaXMuX2RvbmVBY3Rpb24uY2xpY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9maWx0ZXJSZWYudXBkYXRlQWN0aW9ucyh0aGlzLl9hY3Rpb25zKTtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi5zaG93S2V5d29yZEZpZWxkKCk7XG4gICAgICB0aGlzLl9maWx0ZXJSZWYuc2hvd0ZpbHRlcnNCdG4oKTtcbiAgICAgIGFjdGlvbkNsaWNrRm4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyQWN0aW9ucygpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyUmVmLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { isNumber } from 'lodash-es';
|
|
2
|
+
import { BehaviorSubject, merge, Subject } from 'rxjs';
|
|
3
|
+
import { skip, takeUntil, tap } from 'rxjs/operators';
|
|
4
|
+
import { Column } from '../models/column.model';
|
|
5
|
+
export class ColumnsController {
|
|
6
|
+
_visibleColumns$ = new BehaviorSubject([]);
|
|
7
|
+
_visibleColumnsShared$ = this._visibleColumns$.pipe();
|
|
8
|
+
_theadClass = '';
|
|
9
|
+
_loadFn;
|
|
10
|
+
_changeFn;
|
|
11
|
+
_customizeFieldTitleFn;
|
|
12
|
+
_customizeFieldDisabledFn;
|
|
13
|
+
_columnTooltipFn;
|
|
14
|
+
_isConfigured = false;
|
|
15
|
+
_loadFnConfigured = false;
|
|
16
|
+
_changeFnConfigured = false;
|
|
17
|
+
_columnsFetched = false;
|
|
18
|
+
_hasHeader = false;
|
|
19
|
+
_hasFooter = false;
|
|
20
|
+
_columns = [];
|
|
21
|
+
_defaultConfigs;
|
|
22
|
+
_columnsUpdated$ = new Subject();
|
|
23
|
+
_destroy$ = new Subject();
|
|
24
|
+
constructor() { }
|
|
25
|
+
get columns() {
|
|
26
|
+
return this._columns.slice();
|
|
27
|
+
}
|
|
28
|
+
get visibleColumns() {
|
|
29
|
+
return this._visibleColumns$.getValue();
|
|
30
|
+
}
|
|
31
|
+
get visibleColumns$() {
|
|
32
|
+
return this._visibleColumnsShared$;
|
|
33
|
+
}
|
|
34
|
+
get columnsForDialog() {
|
|
35
|
+
const hasCustomTitle = !!this._customizeFieldTitleFn;
|
|
36
|
+
const hasCustomDisabledStatus = !!this._customizeFieldDisabledFn;
|
|
37
|
+
const hasCustomTooltip = !!this._columnTooltipFn;
|
|
38
|
+
return this._columns
|
|
39
|
+
.filter((column) => column.customize && !!column.name)
|
|
40
|
+
.map((column) => {
|
|
41
|
+
const title = hasCustomTitle
|
|
42
|
+
? this._customizeFieldTitleFn(column.name, column.title)
|
|
43
|
+
: column.name;
|
|
44
|
+
const disabled = hasCustomDisabledStatus
|
|
45
|
+
? this._customizeFieldDisabledFn(column.name)
|
|
46
|
+
: false;
|
|
47
|
+
const tooltip = hasCustomTooltip
|
|
48
|
+
? this._columnTooltipFn(column.name, column.visible, disabled)
|
|
49
|
+
: void 0;
|
|
50
|
+
return {
|
|
51
|
+
template: column.headerTemplate,
|
|
52
|
+
name: column.name,
|
|
53
|
+
show: column.visible,
|
|
54
|
+
title: title,
|
|
55
|
+
disabled: disabled,
|
|
56
|
+
tooltip: tooltip,
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
get columnsFetched() {
|
|
61
|
+
return this._columnsFetched;
|
|
62
|
+
}
|
|
63
|
+
get hasHeader() {
|
|
64
|
+
return this._hasHeader;
|
|
65
|
+
}
|
|
66
|
+
get hasFooter() {
|
|
67
|
+
return this._hasFooter;
|
|
68
|
+
}
|
|
69
|
+
get theadClass() {
|
|
70
|
+
return this._theadClass;
|
|
71
|
+
}
|
|
72
|
+
get configured() {
|
|
73
|
+
return this._isConfigured;
|
|
74
|
+
}
|
|
75
|
+
get loadFnConfigured() {
|
|
76
|
+
return this._loadFnConfigured;
|
|
77
|
+
}
|
|
78
|
+
get changeFnConfigured() {
|
|
79
|
+
return this._changeFnConfigured;
|
|
80
|
+
}
|
|
81
|
+
get changeFn() {
|
|
82
|
+
return this._changeFn;
|
|
83
|
+
}
|
|
84
|
+
get visibleColumnsNames() {
|
|
85
|
+
return this.visibleColumns
|
|
86
|
+
.map((column) => column.name)
|
|
87
|
+
.filter((name) => !!name);
|
|
88
|
+
}
|
|
89
|
+
setDefaults(defaults) {
|
|
90
|
+
this._defaultConfigs = defaults;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Set data from list config
|
|
94
|
+
* @param config
|
|
95
|
+
*/
|
|
96
|
+
initConfig(config) {
|
|
97
|
+
if (config) {
|
|
98
|
+
if (config.load) {
|
|
99
|
+
this._loadFn = config.load;
|
|
100
|
+
this._loadFnConfigured = true;
|
|
101
|
+
}
|
|
102
|
+
if (config.change) {
|
|
103
|
+
this._changeFn = config.change;
|
|
104
|
+
this._changeFnConfigured = true;
|
|
105
|
+
}
|
|
106
|
+
if (config.title) {
|
|
107
|
+
this._customizeFieldTitleFn = config.title;
|
|
108
|
+
}
|
|
109
|
+
if (config.disabled) {
|
|
110
|
+
this._customizeFieldDisabledFn = config.disabled;
|
|
111
|
+
}
|
|
112
|
+
if (config.tooltip) {
|
|
113
|
+
this._columnTooltipFn = config.tooltip;
|
|
114
|
+
}
|
|
115
|
+
this._isConfigured = true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Base initialization for columns
|
|
120
|
+
* @param templates
|
|
121
|
+
*/
|
|
122
|
+
initializeColumns(templates) {
|
|
123
|
+
this._columns = [];
|
|
124
|
+
templates.forEach((column) => {
|
|
125
|
+
const col = new Column(column, this._defaultConfigs);
|
|
126
|
+
if (col.headerTemplate || col.title) {
|
|
127
|
+
this._hasHeader = true;
|
|
128
|
+
}
|
|
129
|
+
if (col.footerTemplate) {
|
|
130
|
+
this._hasFooter = true;
|
|
131
|
+
}
|
|
132
|
+
this._columns.push(col);
|
|
133
|
+
});
|
|
134
|
+
this._theadClass = this.hasHeader ? 'has-header' : '';
|
|
135
|
+
this._updateColspans('headerConfigs', 'headerColspanned');
|
|
136
|
+
this._updateColspans('groupHeaderConfigs', 'groupHeaderColspanned');
|
|
137
|
+
this._updateColspans('groupFooterConfigs', 'groupFooterColspanned');
|
|
138
|
+
this._updateColspans('cellConfigs', 'cellColspanned');
|
|
139
|
+
this._updateColspans('footerConfigs', 'footerColspanned');
|
|
140
|
+
this.updateVisibleColumns();
|
|
141
|
+
this._listenColumnVisibilityUpdates();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Load visiblity config for columns from remote
|
|
145
|
+
*/
|
|
146
|
+
loadRemoteColumnConfigs() {
|
|
147
|
+
return this._loadFn()
|
|
148
|
+
.pipe(takeUntil(this._destroy$), tap((columnConfigs) => {
|
|
149
|
+
this._columnsFetched = true;
|
|
150
|
+
this.updateVisibilityForCols(columnConfigs);
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Set visible columns based on current columns show status
|
|
155
|
+
*/
|
|
156
|
+
updateVisibleColumns() {
|
|
157
|
+
this._visibleColumns$.next(this._columns.filter((column) => column.visible) || []);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Update visibility based on passed config
|
|
161
|
+
* @param columnsConfig
|
|
162
|
+
*/
|
|
163
|
+
updateVisibilityForCols(columnsConfig) {
|
|
164
|
+
columnsConfig.forEach((columnConfig) => {
|
|
165
|
+
const col = this._columns
|
|
166
|
+
.find((column) => column.name === columnConfig.name);
|
|
167
|
+
if (col) {
|
|
168
|
+
col.updateVisibility(columnConfig.show);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
this.updateVisibleColumns();
|
|
172
|
+
}
|
|
173
|
+
destroy() {
|
|
174
|
+
this._destroy$.next();
|
|
175
|
+
this._destroy$.complete();
|
|
176
|
+
this._columnsUpdated$.complete();
|
|
177
|
+
this._columns = void 0;
|
|
178
|
+
this._visibleColumns$ = void 0;
|
|
179
|
+
this._defaultConfigs = void 0;
|
|
180
|
+
this._loadFn = void 0;
|
|
181
|
+
this._changeFn = void 0;
|
|
182
|
+
}
|
|
183
|
+
_listenColumnVisibilityUpdates() {
|
|
184
|
+
this._columnsUpdated$.next();
|
|
185
|
+
const columnsVisibility = this._columns.map((column) => {
|
|
186
|
+
return column.visible$.pipe(skip(1));
|
|
187
|
+
});
|
|
188
|
+
merge(...columnsVisibility)
|
|
189
|
+
.pipe(takeUntil(this._columnsUpdated$), takeUntil(this._destroy$))
|
|
190
|
+
.subscribe(() => {
|
|
191
|
+
this.updateVisibleColumns();
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
_updateColspans(config, updateFlag) {
|
|
195
|
+
this._columns.forEach((col, index) => {
|
|
196
|
+
if (col[config].colspan !== void 0) {
|
|
197
|
+
const spanTo = index + +col[config].colspan;
|
|
198
|
+
if (!isNumber(spanTo)) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
this._columns[index][updateFlag] = false;
|
|
202
|
+
for (let i = index + 1; i < spanTo; i++) {
|
|
203
|
+
if (this._columns[i]) {
|
|
204
|
+
this._columns[i][updateFlag] = true;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2NvbHVtbnMtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFXaEQsTUFBTSxPQUFPLGlCQUFpQjtJQUVwQixnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRCxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEQsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixPQUFPLENBQXFCO0lBQzVCLFNBQVMsQ0FBdUI7SUFDaEMsc0JBQXNCLENBQXNCO0lBQzVDLHlCQUF5QixDQUF5QjtJQUNsRCxnQkFBZ0IsQ0FBd0I7SUFFeEMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFDeEIsZUFBZSxDQUFDO0lBRWhCLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDdkMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFeEMsZ0JBQWUsQ0FBQztJQUVoQixJQUFX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RyxJQUFJLENBQUM7cUJBQ3JDO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcbmltcG9ydCB7XG4gIEZzTGlzdENvbHVtbkNoYW5nZUZuLFxuICBGc0xpc3RDb2x1bW5Db25maWcsXG4gIEZzTGlzdENvbHVtbkRpc2FibGVkRm4sXG4gIEZzTGlzdENvbHVtbkxvYWRGbixcbiAgRnNMaXN0Q29sdW1uVGl0bGVGbixcbiAgRnNMaXN0Q29sdW1uVG9vbHRpcEZuLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcblxuXG5leHBvcnQgY2xhc3MgQ29sdW1uc0NvbnRyb2xsZXIge1xuXG4gIHByaXZhdGUgX3Zpc2libGVDb2x1bW5zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29sdW1uW10+KFtdKTtcbiAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtbnNTaGFyZWQkID0gdGhpcy5fdmlzaWJsZUNvbHVtbnMkLnBpcGUoKTtcbiAgcHJpdmF0ZSBfdGhlYWRDbGFzcyA9ICcnO1xuICBwcml2YXRlIF9sb2FkRm46IEZzTGlzdENvbHVtbkxvYWRGbjtcbiAgcHJpdmF0ZSBfY2hhbmdlRm46IEZzTGlzdENvbHVtbkNoYW5nZUZuO1xuICBwcml2YXRlIF9jdXN0b21pemVGaWVsZFRpdGxlRm46IEZzTGlzdENvbHVtblRpdGxlRm47XG4gIHByaXZhdGUgX2N1c3RvbWl6ZUZpZWxkRGlzYWJsZWRGbjogRnNMaXN0Q29sdW1uRGlzYWJsZWRGbjtcbiAgcHJpdmF0ZSBfY29sdW1uVG9vbHRpcEZuOiBGc0xpc3RDb2x1bW5Ub29sdGlwRm47XG5cbiAgcHJpdmF0ZSBfaXNDb25maWd1cmVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2xvYWRGbkNvbmZpZ3VyZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2hhbmdlRm5Db25maWd1cmVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbHVtbnNGZXRjaGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2hhc0hlYWRlciA9IGZhbHNlO1xuICBwcml2YXRlIF9oYXNGb290ZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY29sdW1uczogQ29sdW1uW10gPSBbXTtcbiAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZ3M7XG5cbiAgcHJpdmF0ZSBfY29sdW1uc1VwZGF0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnMuc2xpY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZUNvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ29sdW1ucyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZUNvbHVtbnMkKCk6IE9ic2VydmFibGU8Q29sdW1uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbnNTaGFyZWQkO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zRm9yRGlhbG9nKCkge1xuICAgIGNvbnN0IGhhc0N1c3RvbVRpdGxlID0gISF0aGlzLl9jdXN0b21pemVGaWVsZFRpdGxlRm47XG4gICAgY29uc3QgaGFzQ3VzdG9tRGlzYWJsZWRTdGF0dXMgPSAhIXRoaXMuX2N1c3RvbWl6ZUZpZWxkRGlzYWJsZWRGbjtcbiAgICBjb25zdCBoYXNDdXN0b21Ub29sdGlwID0gISF0aGlzLl9jb2x1bW5Ub29sdGlwRm47XG5cbiAgICByZXR1cm4gdGhpcy5fY29sdW1uc1xuICAgICAgLmZpbHRlcigoY29sdW1uKSA9PiBjb2x1bW4uY3VzdG9taXplICYmICEhY29sdW1uLm5hbWUpXG4gICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBoYXNDdXN0b21UaXRsZVxuICAgICAgICAgID8gdGhpcy5fY3VzdG9taXplRmllbGRUaXRsZUZuKGNvbHVtbi5uYW1lLCBjb2x1bW4udGl0bGUpXG4gICAgICAgICAgOiBjb2x1bW4ubmFtZTtcblxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGhhc0N1c3RvbURpc2FibGVkU3RhdHVzXG4gICAgICAgICAgPyB0aGlzLl9jdXN0b21pemVGaWVsZERpc2FibGVkRm4oY29sdW1uLm5hbWUpXG4gICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICBjb25zdCB0b29sdGlwID0gaGFzQ3VzdG9tVG9vbHRpcFxuICAgICAgICAgID8gdGhpcy5fY29sdW1uVG9vbHRpcEZuKGNvbHVtbi5uYW1lLCBjb2x1bW4udmlzaWJsZSwgZGlzYWJsZWQpXG4gICAgICAgICAgOiB2b2lkIDA7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0ZW1wbGF0ZTogY29sdW1uLmhlYWRlclRlbXBsYXRlLFxuICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgIHNob3c6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgdG9vbHRpcDogdG9vbHRpcCxcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbHVtbnNGZXRjaGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zRmV0Y2hlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzSGVhZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9oYXNIZWFkZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0Zvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRm9vdGVyO1xuICB9XG5cbiAgcHVibGljIGdldCB0aGVhZENsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLl90aGVhZENsYXNzO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25maWd1cmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0NvbmZpZ3VyZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRGbkNvbmZpZ3VyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRGbkNvbmZpZ3VyZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5nZUZuQ29uZmlndXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlRm5Db25maWd1cmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VGbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlRm47XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVDb2x1bW5zTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvbHVtbnNcbiAgICAgIC5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm5hbWUpXG4gICAgICAuZmlsdGVyKChuYW1lKSA9PiAhIW5hbWUpO1xuICB9XG5cbiAgcHVibGljIHNldERlZmF1bHRzKGRlZmF1bHRzKSB7XG4gICAgdGhpcy5fZGVmYXVsdENvbmZpZ3MgPSBkZWZhdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGF0YSBmcm9tIGxpc3QgY29uZmlnXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHB1YmxpYyBpbml0Q29uZmlnKGNvbmZpZzogRnNMaXN0Q29sdW1uQ29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgaWYgKGNvbmZpZy5sb2FkKSB7XG4gICAgICAgIHRoaXMuX2xvYWRGbiA9IGNvbmZpZy5sb2FkO1xuICAgICAgICB0aGlzLl9sb2FkRm5Db25maWd1cmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5jaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRm4gPSBjb25maWcuY2hhbmdlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VGbkNvbmZpZ3VyZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnRpdGxlKSB7XG4gICAgICAgIHRoaXMuX2N1c3RvbWl6ZUZpZWxkVGl0bGVGbiA9IGNvbmZpZy50aXRsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLl9jdXN0b21pemVGaWVsZERpc2FibGVkRm4gPSBjb25maWcuZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcudG9vbHRpcCkge1xuICAgICAgICB0aGlzLl9jb2x1bW5Ub29sdGlwRm4gPSBjb25maWcudG9vbHRpcDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNDb25maWd1cmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQmFzZSBpbml0aWFsaXphdGlvbiBmb3IgY29sdW1uc1xuICAgKiBAcGFyYW0gdGVtcGxhdGVzXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZUNvbHVtbnModGVtcGxhdGVzKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IFtdO1xuXG4gICAgdGVtcGxhdGVzLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3QgY29sID0gbmV3IENvbHVtbihjb2x1bW4sIHRoaXMuX2RlZmF1bHRDb25maWdzKTtcblxuXG4gICAgICBpZiAoY29sLmhlYWRlclRlbXBsYXRlIHx8IGNvbC50aXRsZSkge1xuICAgICAgICB0aGlzLl9oYXNIZWFkZXIgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGNvbC5mb290ZXJUZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLl9oYXNGb290ZXIgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3RoZWFkQ2xhc3MgPSB0aGlzLmhhc0hlYWRlciA/ICdoYXMtaGVhZGVyJyA6ICcnO1xuXG4gICAgdGhpcy5fdXBkYXRlQ29sc3BhbnMoJ2hlYWRlckNvbmZpZ3MnLCAnaGVhZGVyQ29sc3Bhbm5lZCcpO1xuICAgIHRoaXMuX3VwZGF0ZUNvbHNwYW5zKCdncm91cEhlYWRlckNvbmZpZ3MnLCAnZ3JvdXBIZWFkZXJDb2xzcGFubmVkJyk7XG4gICAgdGhpcy5fdXBkYXRlQ29sc3BhbnMoJ2dyb3VwRm9vdGVyQ29uZmlncycsICdncm91cEZvb3RlckNvbHNwYW5uZWQnKTtcbiAgICB0aGlzLl91cGRhdGVDb2xzcGFucygnY2VsbENvbmZpZ3MnLCAnY2VsbENvbHNwYW5uZWQnKTtcbiAgICB0aGlzLl91cGRhdGVDb2xzcGFucygnZm9vdGVyQ29uZmlncycsICdmb290ZXJDb2xzcGFubmVkJyk7XG5cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVDb2x1bW5zKCk7XG4gICAgdGhpcy5fbGlzdGVuQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHZpc2libGl0eSBjb25maWcgZm9yIGNvbHVtbnMgZnJvbSByZW1vdGVcbiAgICovXG4gIHB1YmxpYyBsb2FkUmVtb3RlQ29sdW1uQ29uZmlncygpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZEZuKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKGNvbHVtbkNvbmZpZ3MpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb2x1bW5zRmV0Y2hlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5Rm9yQ29scyhjb2x1bW5Db25maWdzKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdmlzaWJsZSBjb2x1bW5zIGJhc2VkIG9uIGN1cnJlbnQgY29sdW1ucyBzaG93IHN0YXR1c1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZVZpc2libGVDb2x1bW5zKCkge1xuICAgIHRoaXMuX3Zpc2libGVDb2x1bW5zJC5uZXh0KFxuICAgICAgdGhpcy5fY29sdW1ucy5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLnZpc2libGUpIHx8IFtdXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJpbGl0eSBiYXNlZCBvbiBwYXNzZWQgY29uZmlnXG4gICAqIEBwYXJhbSBjb2x1bW5zQ29uZmlnXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoY29sdW1uc0NvbmZpZykge1xuICAgIGNvbHVtbnNDb25maWcuZm9yRWFjaCgoY29sdW1uQ29uZmlnKSA9PiB7XG4gICAgICBjb25zdCBjb2wgPSB0aGlzLl9jb2x1bW5zXG4gICAgICAgIC5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5uYW1lID09PSBjb2x1bW5Db25maWcubmFtZSk7XG5cbiAgICAgIGlmIChjb2wpIHtcbiAgICAgICAgY29sLnVwZGF0ZVZpc2liaWxpdHkoY29sdW1uQ29uZmlnLnNob3cpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlQ29sdW1ucygpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29sdW1uc1VwZGF0ZWQkLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLl9jb2x1bW5zID0gdm9pZCAwO1xuICAgIHRoaXMuX3Zpc2libGVDb2x1bW5zJCA9IHZvaWQgMDtcbiAgICB0aGlzLl9kZWZhdWx0Q29uZmlncyA9IHZvaWQgMDtcblxuICAgIHRoaXMuX2xvYWRGbiA9IHZvaWQgMDtcbiAgICB0aGlzLl9jaGFuZ2VGbiA9IHZvaWQgMDtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkNvbHVtblZpc2liaWxpdHlVcGRhdGVzKCkge1xuICAgIHRoaXMuX2NvbHVtbnNVcGRhdGVkJC5uZXh0KCk7XG5cbiAgICBjb25zdCBjb2x1bW5zVmlzaWJpbGl0eSA9IHRoaXMuX2NvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgIHJldHVybiBjb2x1bW4udmlzaWJsZSQucGlwZShza2lwKDEpKVxuICAgIH0pO1xuXG4gICAgbWVyZ2UoLi4uY29sdW1uc1Zpc2liaWxpdHkpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2NvbHVtbnNVcGRhdGVkJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlQ29sdW1ucygpO1xuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNvbHNwYW5zKGNvbmZpZywgdXBkYXRlRmxhZykge1xuICAgIHRoaXMuX2NvbHVtbnMuZm9yRWFjaCgoY29sLCBpbmRleCkgPT4ge1xuXG4gICAgICBpZiAoY29sW2NvbmZpZ10uY29sc3BhbiAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnN0IHNwYW5UbyA9IGluZGV4ICsgK2NvbFtjb25maWddLmNvbHNwYW47XG5cbiAgICAgICAgaWYgKCFpc051bWJlcihzcGFuVG8pKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbHVtbnNbaW5kZXhdW3VwZGF0ZUZsYWddID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4ICsgMTsgaSA8IHNwYW5UbzsgaSsrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2NvbHVtbnNbaV0pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNbaV1bdXBkYXRlRmxhZ10gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxufVxuIl19
|