@firestitch/list 15.0.0 → 17.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/{esm2020 → esm2022}/app/classes/index.mjs +1 -1
- 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/esm2022/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +16 -0
- 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 +407 -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/esm2022/app/directives/empty-state/empty-state.directive.mjs +13 -0
- 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/esm2022/app/directives/heading/heading.directive.mjs +13 -0
- package/{esm2020 → esm2022}/app/directives/heading-container/heading-container.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/directives/index.mjs +1 -1
- package/esm2022/app/directives/subheading/subheading.directive.mjs +13 -0
- package/{esm2020 → esm2022}/app/enums/page-change-type.enum.mjs +1 -1
- package/{esm2020 → esm2022}/app/enums/pagination-strategy.enum.mjs +1 -1
- package/{esm2020 → esm2022}/app/enums/state.enum.mjs +1 -1
- package/{esm2020 → esm2022}/app/fs-list.module.mjs +89 -89
- package/{esm2020 → esm2022}/app/fs-list.providers.mjs +1 -1
- package/{esm2020 → esm2022}/app/interfaces/cellconfig.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/interfaces/draggable-list.interface.mjs +1 -1
- package/esm2022/app/interfaces/external-params.interface.mjs +2 -0
- package/{esm2020 → esm2022}/app/interfaces/index.mjs +1 -1
- package/esm2022/app/interfaces/pagination.interface.mjs +2 -0
- package/{esm2020 → esm2022}/app/interfaces/sorting-change-event.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/models/column-async-attribute.mjs +1 -1
- 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/esm2022/app/models/row/group-row.mjs +45 -0
- package/{esm2020 → esm2022}/app/models/row/simple-row.mjs +1 -1
- 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/esm2022/app/pipes/action-label.mjs +17 -0
- package/{esm2020 → esm2022}/app/services/group-expand-notifier.service.mjs +7 -9
- package/{fesm2020 → fesm2022}/firestitch-list.mjs +731 -497
- 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-cell/footer-cell.component.mjs +0 -16
- 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/empty-state/empty-state.directive.mjs +0 -13
- 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/directives/heading/heading.directive.mjs +0 -13
- package/esm2020/app/directives/subheading/subheading.directive.mjs +0 -13
- package/esm2020/app/interfaces/external-params.interface.mjs +0 -2
- package/esm2020/app/interfaces/pagination.interface.mjs +0 -2
- 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/group-row.mjs +0 -45
- 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/pipes/action-label.mjs +0 -17
- 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/enums/action-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/enums/row-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/interfaces/column-config.interface.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/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(null);
|
|
52
|
+
}
|
|
53
|
+
updateDisabledState() {
|
|
54
|
+
this._filterRef.updateDisabledState();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2FjdGlvbnMtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTNDLE1BQU0sT0FBTyxpQkFBaUI7SUFFcEIsVUFBVSxDQUFrQjtJQUU1QixRQUFRLEdBQW1CLEVBQUUsQ0FBQztJQUM5QixjQUFjLENBQWU7SUFDN0IsV0FBVyxDQUFlO0lBRTFCLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXhDLGdCQUFlLENBQUM7SUFFaEIsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxZQUFZLENBQUMsR0FBb0I7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUF1QjtRQUN2QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBb0I7UUFDMUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QixNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUE7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRU0sb0JBQW9CLENBQUMsTUFBb0I7UUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7UUFDMUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUVuQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUE7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBGc0xpc3RBY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcblxuXG5leHBvcnQgY2xhc3MgQWN0aW9uc0NvbnRyb2xsZXIge1xuXG4gIHByaXZhdGUgX2ZpbHRlclJlZjogRmlsdGVyQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX2FjdGlvbnM6IEZzTGlzdEFjdGlvbltdID0gW107XG4gIHByaXZhdGUgX3Jlb3JkZXJBY3Rpb246IEZzTGlzdEFjdGlvbjtcbiAgcHJpdmF0ZSBfZG9uZUFjdGlvbjogRnNMaXN0QWN0aW9uO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGdldCBkZXN0cm95JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGlvbnMoKTogRnNMaXN0QWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsdGVyUmVmKHJlZjogRmlsdGVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fZmlsdGVyUmVmID0gcmVmO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbnMoYWN0aW9uczogRnNMaXN0QWN0aW9uW10pIHtcbiAgICB0aGlzLmNsZWFyQWN0aW9ucygpO1xuICAgIHRoaXMuX2FjdGlvbnMgPSBhY3Rpb25zO1xuXG4gICAgaWYgKHRoaXMuX3Jlb3JkZXJBY3Rpb24pIHtcbiAgICAgIHRoaXMuX2FjdGlvbnMudW5zaGlmdCh0aGlzLl9yZW9yZGVyQWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkUmVvcmRlckFjdGlvbihhY3Rpb246IEZzTGlzdEFjdGlvbikge1xuICAgIGNvbnN0IGFjdGlvbkNsaWNrRm4gPSBhY3Rpb24uY2xpY2s7XG4gICAgdGhpcy5fYWN0aW9ucy51bnNoaWZ0KGFjdGlvbik7XG5cbiAgICBhY3Rpb24uY2xpY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9maWx0ZXJSZWYudXBkYXRlQWN0aW9ucyhbdGhpcy5fZG9uZUFjdGlvbl0pO1xuICAgICAgdGhpcy5fZmlsdGVyUmVmLmhpZGVLZXl3b3JkRmllbGQoKTtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi5oaWRlRmlsdGVyc0J0bigpO1xuICAgICAgYWN0aW9uQ2xpY2tGbihudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW9yZGVyQWN0aW9uID0gYWN0aW9uO1xuICB9XG5cbiAgcHVibGljIGFkZFJlb3JkZXJEb25lQWN0aW9uKGFjdGlvbjogRnNMaXN0QWN0aW9uKSB7XG4gICAgdGhpcy5fZG9uZUFjdGlvbiA9IGFjdGlvbjtcbiAgICBjb25zdCBhY3Rpb25DbGlja0ZuID0gYWN0aW9uLmNsaWNrO1xuXG4gICAgdGhpcy5fZG9uZUFjdGlvbi5jbGljayA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi51cGRhdGVBY3Rpb25zKHRoaXMuX2FjdGlvbnMpO1xuICAgICAgdGhpcy5fZmlsdGVyUmVmLnNob3dLZXl3b3JkRmllbGQoKTtcbiAgICAgIHRoaXMuX2ZpbHRlclJlZi5zaG93RmlsdGVyc0J0bigpO1xuICAgICAgYWN0aW9uQ2xpY2tGbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBY3Rpb25zKCkge1xuICAgIHRoaXMuX2FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyUmVmLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -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(null);
|
|
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(null);
|
|
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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QUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQge1xuICBGc0xpc3RDb2x1bW5DaGFuZ2VGbixcbiAgRnNMaXN0Q29sdW1uQ29uZmlnLFxuICBGc0xpc3RDb2x1bW5EaXNhYmxlZEZuLFxuICBGc0xpc3RDb2x1bW5Mb2FkRm4sXG4gIEZzTGlzdENvbHVtblRpdGxlRm4sXG4gIEZzTGlzdENvbHVtblRvb2x0aXBGbixcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9saXN0Y29uZmlnLmludGVyZmFjZSc7XG5cblxuZXhwb3J0IGNsYXNzIENvbHVtbnNDb250cm9sbGVyIHtcblxuICBwcml2YXRlIF92aXNpYmxlQ29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbHVtbltdPihbXSk7XG4gIHByaXZhdGUgX3Zpc2libGVDb2x1bW5zU2hhcmVkJCA9IHRoaXMuX3Zpc2libGVDb2x1bW5zJC5waXBlKCk7XG4gIHByaXZhdGUgX3RoZWFkQ2xhc3MgPSAnJztcbiAgcHJpdmF0ZSBfbG9hZEZuOiBGc0xpc3RDb2x1bW5Mb2FkRm47XG4gIHByaXZhdGUgX2NoYW5nZUZuOiBGc0xpc3RDb2x1bW5DaGFuZ2VGbjtcbiAgcHJpdmF0ZSBfY3VzdG9taXplRmllbGRUaXRsZUZuOiBGc0xpc3RDb2x1bW5UaXRsZUZuO1xuICBwcml2YXRlIF9jdXN0b21pemVGaWVsZERpc2FibGVkRm46IEZzTGlzdENvbHVtbkRpc2FibGVkRm47XG4gIHByaXZhdGUgX2NvbHVtblRvb2x0aXBGbjogRnNMaXN0Q29sdW1uVG9vbHRpcEZuO1xuXG4gIHByaXZhdGUgX2lzQ29uZmlndXJlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9sb2FkRm5Db25maWd1cmVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2NoYW5nZUZuQ29uZmlndXJlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9jb2x1bW5zRmV0Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9oYXNIZWFkZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaGFzRm9vdGVyID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbHVtbnM6IENvbHVtbltdID0gW107XG4gIHByaXZhdGUgX2RlZmF1bHRDb25maWdzO1xuXG4gIHByaXZhdGUgX2NvbHVtbnNVcGRhdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zLnNsaWNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbnMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVDb2x1bW5zJCgpOiBPYnNlcnZhYmxlPENvbHVtbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVDb2x1bW5zU2hhcmVkJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29sdW1uc0ZvckRpYWxvZygpIHtcbiAgICBjb25zdCBoYXNDdXN0b21UaXRsZSA9ICEhdGhpcy5fY3VzdG9taXplRmllbGRUaXRsZUZuO1xuICAgIGNvbnN0IGhhc0N1c3RvbURpc2FibGVkU3RhdHVzID0gISF0aGlzLl9jdXN0b21pemVGaWVsZERpc2FibGVkRm47XG4gICAgY29uc3QgaGFzQ3VzdG9tVG9vbHRpcCA9ICEhdGhpcy5fY29sdW1uVG9vbHRpcEZuO1xuXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnNcbiAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLmN1c3RvbWl6ZSAmJiAhIWNvbHVtbi5uYW1lKVxuICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gaGFzQ3VzdG9tVGl0bGVcbiAgICAgICAgICA/IHRoaXMuX2N1c3RvbWl6ZUZpZWxkVGl0bGVGbihjb2x1bW4ubmFtZSwgY29sdW1uLnRpdGxlKVxuICAgICAgICAgIDogY29sdW1uLm5hbWU7XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBoYXNDdXN0b21EaXNhYmxlZFN0YXR1c1xuICAgICAgICAgID8gdGhpcy5fY3VzdG9taXplRmllbGREaXNhYmxlZEZuKGNvbHVtbi5uYW1lKVxuICAgICAgICAgIDogZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IGhhc0N1c3RvbVRvb2x0aXBcbiAgICAgICAgICA/IHRoaXMuX2NvbHVtblRvb2x0aXBGbihjb2x1bW4ubmFtZSwgY29sdW1uLnZpc2libGUsIGRpc2FibGVkKVxuICAgICAgICAgIDogdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGVtcGxhdGU6IGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSxcbiAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICBzaG93OiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgIHRvb2x0aXA6IHRvb2x0aXAsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zRmV0Y2hlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uc0ZldGNoZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0hlYWRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzSGVhZGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNGb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0Zvb3RlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGhlYWRDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhlYWRDbGFzcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlndXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNDb25maWd1cmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkRm5Db25maWd1cmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2FkRm5Db25maWd1cmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VGbkNvbmZpZ3VyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZUZuQ29uZmlndXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhbmdlRm4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZUZuO1xuICB9XG5cbiAgcHVibGljIGdldCB2aXNpYmxlQ29sdW1uc05hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVDb2x1bW5zXG4gICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5uYW1lKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gISFuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWZhdWx0cyhkZWZhdWx0cykge1xuICAgIHRoaXMuX2RlZmF1bHRDb25maWdzID0gZGVmYXVsdHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRhdGEgZnJvbSBsaXN0IGNvbmZpZ1xuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBwdWJsaWMgaW5pdENvbmZpZyhjb25maWc6IEZzTGlzdENvbHVtbkNvbmZpZykge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIGlmIChjb25maWcubG9hZCkge1xuICAgICAgICB0aGlzLl9sb2FkRm4gPSBjb25maWcubG9hZDtcbiAgICAgICAgdGhpcy5fbG9hZEZuQ29uZmlndXJlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcuY2hhbmdlKSB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUZuID0gY29uZmlnLmNoYW5nZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRm5Db25maWd1cmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy50aXRsZSkge1xuICAgICAgICB0aGlzLl9jdXN0b21pemVGaWVsZFRpdGxlRm4gPSBjb25maWcudGl0bGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5fY3VzdG9taXplRmllbGREaXNhYmxlZEZuID0gY29uZmlnLmRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnRvb2x0aXApIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVG9vbHRpcEZuID0gY29uZmlnLnRvb2x0aXA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzQ29uZmlndXJlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJhc2UgaW5pdGlhbGl6YXRpb24gZm9yIGNvbHVtbnNcbiAgICogQHBhcmFtIHRlbXBsYXRlc1xuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemVDb2x1bW5zKHRlbXBsYXRlcykge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBbXTtcblxuICAgIHRlbXBsYXRlcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IGNvbCA9IG5ldyBDb2x1bW4oY29sdW1uLCB0aGlzLl9kZWZhdWx0Q29uZmlncyk7XG5cblxuICAgICAgaWYgKGNvbC5oZWFkZXJUZW1wbGF0ZSB8fCBjb2wudGl0bGUpIHtcbiAgICAgICAgdGhpcy5faGFzSGVhZGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2wuZm9vdGVyVGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5faGFzRm9vdGVyID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl90aGVhZENsYXNzID0gdGhpcy5oYXNIZWFkZXIgPyAnaGFzLWhlYWRlcicgOiAnJztcblxuICAgIHRoaXMuX3VwZGF0ZUNvbHNwYW5zKCdoZWFkZXJDb25maWdzJywgJ2hlYWRlckNvbHNwYW5uZWQnKTtcbiAgICB0aGlzLl91cGRhdGVDb2xzcGFucygnZ3JvdXBIZWFkZXJDb25maWdzJywgJ2dyb3VwSGVhZGVyQ29sc3Bhbm5lZCcpO1xuICAgIHRoaXMuX3VwZGF0ZUNvbHNwYW5zKCdncm91cEZvb3RlckNvbmZpZ3MnLCAnZ3JvdXBGb290ZXJDb2xzcGFubmVkJyk7XG4gICAgdGhpcy5fdXBkYXRlQ29sc3BhbnMoJ2NlbGxDb25maWdzJywgJ2NlbGxDb2xzcGFubmVkJyk7XG4gICAgdGhpcy5fdXBkYXRlQ29sc3BhbnMoJ2Zvb3RlckNvbmZpZ3MnLCAnZm9vdGVyQ29sc3Bhbm5lZCcpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlQ29sdW1ucygpO1xuICAgIHRoaXMuX2xpc3RlbkNvbHVtblZpc2liaWxpdHlVcGRhdGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB2aXNpYmxpdHkgY29uZmlnIGZvciBjb2x1bW5zIGZyb20gcmVtb3RlXG4gICAqL1xuICBwdWJsaWMgbG9hZFJlbW90ZUNvbHVtbkNvbmZpZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRGbigpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKChjb2x1bW5Db25maWdzKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY29sdW1uc0ZldGNoZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoY29sdW1uQ29uZmlncyk7XG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICAvKipcbiAgICogU2V0IHZpc2libGUgY29sdW1ucyBiYXNlZCBvbiBjdXJyZW50IGNvbHVtbnMgc2hvdyBzdGF0dXNcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVWaXNpYmxlQ29sdW1ucygpIHtcbiAgICB0aGlzLl92aXNpYmxlQ29sdW1ucyQubmV4dChcbiAgICAgIHRoaXMuX2NvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi52aXNpYmxlKSB8fCBbXVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgYmFzZWQgb24gcGFzc2VkIGNvbmZpZ1xuICAgKiBAcGFyYW0gY29sdW1uc0NvbmZpZ1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGNvbHVtbnNDb25maWcpIHtcbiAgICBjb2x1bW5zQ29uZmlnLmZvckVhY2goKGNvbHVtbkNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgY29sID0gdGhpcy5fY29sdW1uc1xuICAgICAgICAuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4ubmFtZSA9PT0gY29sdW1uQ29uZmlnLm5hbWUpO1xuXG4gICAgICBpZiAoY29sKSB7XG4gICAgICAgIGNvbC51cGRhdGVWaXNpYmlsaXR5KGNvbHVtbkNvbmZpZy5zaG93KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlVmlzaWJsZUNvbHVtbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb2x1bW5zVXBkYXRlZCQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuX2NvbHVtbnMgPSB2b2lkIDA7XG4gICAgdGhpcy5fdmlzaWJsZUNvbHVtbnMkID0gdm9pZCAwO1xuICAgIHRoaXMuX2RlZmF1bHRDb25maWdzID0gdm9pZCAwO1xuXG4gICAgdGhpcy5fbG9hZEZuID0gdm9pZCAwO1xuICAgIHRoaXMuX2NoYW5nZUZuID0gdm9pZCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZXMoKSB7XG4gICAgdGhpcy5fY29sdW1uc1VwZGF0ZWQkLm5leHQobnVsbCk7XG5cbiAgICBjb25zdCBjb2x1bW5zVmlzaWJpbGl0eSA9IHRoaXMuX2NvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgIHJldHVybiBjb2x1bW4udmlzaWJsZSQucGlwZShza2lwKDEpKVxuICAgIH0pO1xuXG4gICAgbWVyZ2UoLi4uY29sdW1uc1Zpc2liaWxpdHkpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2NvbHVtbnNVcGRhdGVkJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlQ29sdW1ucygpO1xuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNvbHNwYW5zKGNvbmZpZywgdXBkYXRlRmxhZykge1xuICAgIHRoaXMuX2NvbHVtbnMuZm9yRWFjaCgoY29sLCBpbmRleCkgPT4ge1xuXG4gICAgICBpZiAoY29sW2NvbmZpZ10uY29sc3BhbiAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnN0IHNwYW5UbyA9IGluZGV4ICsgK2NvbFtjb25maWddLmNvbHNwYW47XG5cbiAgICAgICAgaWYgKCFpc051bWJlcihzcGFuVG8pKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbHVtbnNbaW5kZXhdW3VwZGF0ZUZsYWddID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4ICsgMTsgaSA8IHNwYW5UbzsgaSsrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2NvbHVtbnNbaV0pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNbaV1bdXBkYXRlRmxhZ10gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxufVxuIl19
|