@firestitch/list 13.0.3 → 13.0.5
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/classes/actions-controller.d.ts +20 -20
- package/app/classes/columns-controller.d.ts +71 -71
- package/app/classes/data-controller.d.ts +91 -91
- package/app/classes/external-params-controller.d.ts +32 -32
- package/app/classes/index.d.ts +2 -2
- package/app/classes/list-controller.d.ts +191 -191
- package/app/classes/pagination-controller.d.ts +198 -198
- package/app/classes/persistance-controller.d.ts +10 -10
- package/app/classes/reorder-controller.d.ts +68 -68
- package/app/classes/selection-controller.d.ts +155 -155
- package/app/classes/sorting-controller.d.ts +65 -65
- package/app/components/body/body.component.d.ts +28 -28
- package/app/components/body/row/actions/actions.component.d.ts +36 -36
- package/app/components/body/row/cell/cell.component.d.ts +22 -22
- package/app/components/body/row/inline-action/inline-action.component.d.ts +13 -13
- package/app/components/body/row/menu-action/menu-action.component.d.ts +20 -20
- package/app/components/body/row/row.component.d.ts +85 -85
- package/app/components/customize-cols/customize-cols.component.d.ts +17 -17
- package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +7 -7
- package/app/components/footer/footer-row/footer-row.component.d.ts +14 -14
- package/app/components/footer/footer.component.d.ts +15 -15
- package/app/components/head/head-cell/head-cell.component.d.ts +14 -14
- package/app/components/head/head.component.d.ts +49 -49
- package/app/components/list/list.component.d.ts +128 -128
- package/app/components/loader/loader.component.d.ts +14 -14
- package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +13 -13
- package/app/components/pagination/pagination.component.d.ts +14 -14
- package/app/components/saved-filters/saved-filters.component.d.ts +15 -15
- package/app/components/status/status.component.d.ts +21 -21
- package/app/directives/cell/cell.directive.d.ts +8 -8
- package/app/directives/column/column.directive.d.ts +37 -33
- package/app/directives/content/content.directive.d.ts +5 -5
- package/app/directives/content-init/content-init.directive.d.ts +9 -9
- package/app/directives/draggable-list/draggable-list.directive.d.ts +95 -95
- package/app/directives/draggable-row/draggable-row.directive.d.ts +23 -23
- package/app/directives/empty-state/empty-state.directive.d.ts +5 -5
- package/app/directives/footer/footer.directive.d.ts +8 -8
- package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +10 -10
- package/app/directives/group-footer/group-footer.directive.d.ts +6 -6
- package/app/directives/group-header/group-header.directive.d.ts +6 -6
- package/app/directives/header/header.directive.d.ts +8 -8
- package/app/directives/heading/heading.directive.d.ts +5 -5
- package/app/directives/heading-container/heading-container.directive.d.ts +5 -5
- package/app/directives/index.d.ts +3 -3
- package/app/directives/subheading/subheading.directive.d.ts +5 -5
- package/app/enums/button-type.enum.d.ts +7 -7
- package/app/enums/page-change-type.enum.d.ts +4 -4
- package/app/enums/pagination-strategy.enum.d.ts +5 -5
- package/app/enums/row-type.enum.d.ts +6 -6
- package/app/enums/state.enum.d.ts +9 -9
- package/app/fs-list.module.d.ts +60 -60
- package/app/fs-list.providers.d.ts +3 -3
- package/app/interfaces/cellconfig.interface.d.ts +5 -5
- package/app/interfaces/column-config.interface.d.ts +2 -2
- package/app/interfaces/draggable-list.interface.d.ts +7 -7
- package/app/interfaces/external-params.interface.d.ts +13 -13
- package/app/interfaces/index.d.ts +4 -4
- package/app/interfaces/listconfig.interface.d.ts +247 -247
- package/app/interfaces/pagination-state.interface.d.ts +9 -9
- package/app/interfaces/pagination.interface.d.ts +13 -13
- package/app/interfaces/sorting-change-event.interface.d.ts +4 -4
- package/app/models/column-async-attribute.d.ts +5 -5
- package/app/models/column-attributes.d.ts +39 -39
- package/app/models/column.model.d.ts +61 -60
- package/app/models/row/base-row.d.ts +13 -13
- package/app/models/row/child-row.d.ts +12 -12
- package/app/models/row/group-footer-row.d.ts +10 -10
- package/app/models/row/group-row.d.ts +16 -16
- package/app/models/row/simple-row.d.ts +5 -5
- package/app/models/row-action.model.d.ts +29 -29
- package/app/models/row.d.ts +34 -34
- package/app/models/styleConfig.model.d.ts +31 -31
- package/app/pipes/action-label.d.ts +8 -8
- package/app/pipes/index.d.ts +1 -1
- package/app/services/group-expand-notifier.service.d.ts +11 -11
- package/{esm2015/app/classes/actions-controller.js → esm2020/app/classes/actions-controller.mjs} +55 -55
- package/{esm2015/app/classes/columns-controller.js → esm2020/app/classes/columns-controller.mjs} +205 -205
- package/esm2020/app/classes/data-controller.mjs +367 -0
- package/esm2020/app/classes/external-params-controller.mjs +147 -0
- package/{esm2015/app/classes/index.js → esm2020/app/classes/index.mjs} +3 -3
- package/esm2020/app/classes/list-controller.mjs +752 -0
- package/{esm2015/app/classes/pagination-controller.js → esm2020/app/classes/pagination-controller.mjs} +478 -479
- package/{esm2015/app/classes/persistance-controller.js → esm2020/app/classes/persistance-controller.mjs} +19 -19
- package/esm2020/app/classes/reorder-controller.mjs +182 -0
- package/esm2020/app/classes/selection-controller.mjs +468 -0
- package/{esm2015/app/classes/sorting-controller.js → esm2020/app/classes/sorting-controller.mjs} +183 -183
- package/esm2020/app/components/body/body.component.mjs +64 -0
- package/esm2020/app/components/body/row/actions/actions.component.mjs +97 -0
- package/esm2020/app/components/body/row/cell/cell.component.mjs +107 -0
- package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +33 -0
- package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +46 -0
- package/esm2020/app/components/body/row/row.component.mjs +323 -0
- package/esm2020/app/components/customize-cols/customize-cols.component.mjs +68 -0
- package/esm2020/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +16 -0
- package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +28 -0
- package/esm2020/app/components/footer/footer.component.mjs +31 -0
- package/esm2020/app/components/head/head-cell/head-cell.component.mjs +29 -0
- package/esm2020/app/components/head/head.component.mjs +103 -0
- package/esm2020/app/components/list/list.component.mjs +391 -0
- package/esm2020/app/components/loader/loader.component.mjs +40 -0
- package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +76 -0
- package/esm2020/app/components/pagination/pagination.component.mjs +37 -0
- package/esm2020/app/components/saved-filters/saved-filters.component.mjs +29 -0
- package/esm2020/app/components/status/status.component.mjs +66 -0
- package/{esm2015/app/directives/cell/cell.directive.js → esm2020/app/directives/cell/cell.directive.mjs} +18 -18
- package/esm2020/app/directives/column/column.directive.mjs +121 -0
- package/{esm2015/app/directives/content/content.directive.js → esm2020/app/directives/content/content.directive.mjs} +13 -13
- package/{esm2015/app/directives/content-init/content-init.directive.js → esm2020/app/directives/content-init/content-init.directive.mjs} +22 -22
- package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +328 -0
- package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +78 -0
- package/{esm2015/app/directives/empty-state/empty-state.directive.js → esm2020/app/directives/empty-state/empty-state.directive.mjs} +13 -13
- package/{esm2015/app/directives/footer/footer.directive.js → esm2020/app/directives/footer/footer.directive.mjs} +18 -18
- package/{esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js → esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs} +26 -26
- package/{esm2015/app/directives/group-footer/group-footer.directive.js → esm2020/app/directives/group-footer/group-footer.directive.mjs} +14 -14
- package/{esm2015/app/directives/group-header/group-header.directive.js → esm2020/app/directives/group-header/group-header.directive.mjs} +14 -14
- package/{esm2015/app/directives/header/header.directive.js → esm2020/app/directives/header/header.directive.mjs} +18 -18
- package/{esm2015/app/directives/heading/heading.directive.js → esm2020/app/directives/heading/heading.directive.mjs} +13 -13
- package/{esm2015/app/directives/heading-container/heading-container.directive.js → esm2020/app/directives/heading-container/heading-container.directive.mjs} +13 -13
- package/{esm2015/app/directives/index.js → esm2020/app/directives/index.mjs} +4 -4
- package/{esm2015/app/directives/subheading/subheading.directive.js → esm2020/app/directives/subheading/subheading.directive.mjs} +13 -13
- package/{esm2015/app/enums/button-type.enum.js → esm2020/app/enums/button-type.enum.mjs} +9 -9
- package/{esm2015/app/enums/page-change-type.enum.js → esm2020/app/enums/page-change-type.enum.mjs} +6 -6
- package/{esm2015/app/enums/pagination-strategy.enum.js → esm2020/app/enums/pagination-strategy.enum.mjs} +7 -7
- package/{esm2015/app/enums/row-type.enum.js → esm2020/app/enums/row-type.enum.mjs} +7 -7
- package/{esm2015/app/enums/state.enum.js → esm2020/app/enums/state.enum.mjs} +11 -11
- package/{esm2015/app/fs-list.module.js → esm2020/app/fs-list.module.mjs} +246 -246
- package/{esm2015/app/fs-list.providers.js → esm2020/app/fs-list.providers.mjs} +4 -4
- package/{esm2015/app/interfaces/cellconfig.interface.js → esm2020/app/interfaces/cellconfig.interface.mjs} +2 -2
- package/{esm2015/app/interfaces/column-config.interface.js → esm2020/app/interfaces/column-config.interface.mjs} +1 -1
- package/{esm2015/app/interfaces/draggable-list.interface.js → esm2020/app/interfaces/draggable-list.interface.mjs} +2 -2
- package/esm2020/app/interfaces/external-params.interface.mjs +2 -0
- package/{esm2015/app/interfaces/index.js → esm2020/app/interfaces/index.mjs} +5 -5
- package/{esm2015/app/interfaces/listconfig.interface.js → esm2020/app/interfaces/listconfig.interface.mjs} +1 -1
- package/{esm2015/app/interfaces/pagination-state.interface.js → esm2020/app/interfaces/pagination-state.interface.mjs} +1 -1
- package/esm2020/app/interfaces/pagination.interface.mjs +2 -0
- package/{esm2015/app/interfaces/sorting-change-event.interface.js → esm2020/app/interfaces/sorting-change-event.interface.mjs} +2 -2
- package/{esm2015/app/models/column-async-attribute.js → esm2020/app/models/column-async-attribute.mjs} +13 -13
- package/esm2020/app/models/column-attributes.mjs +132 -0
- package/esm2020/app/models/column.model.mjs +164 -0
- package/{esm2015/app/models/row/base-row.js → esm2020/app/models/row/base-row.mjs} +23 -23
- package/{esm2015/app/models/row/child-row.js → esm2020/app/models/row/child-row.mjs} +28 -28
- package/{esm2015/app/models/row/group-footer-row.js → esm2020/app/models/row/group-footer-row.mjs} +20 -20
- package/{esm2015/app/models/row/group-row.js → esm2020/app/models/row/group-row.mjs} +44 -44
- package/{esm2015/app/models/row/simple-row.js → esm2020/app/models/row/simple-row.mjs} +10 -10
- package/esm2020/app/models/row-action.model.mjs +90 -0
- package/{esm2015/app/models/row.js → esm2020/app/models/row.mjs} +88 -88
- package/{esm2015/app/models/styleConfig.model.js → esm2020/app/models/styleConfig.model.mjs} +75 -75
- package/{esm2015/app/pipes/action-label.js → esm2020/app/pipes/action-label.mjs} +17 -17
- package/{esm2015/app/pipes/index.js → esm2020/app/pipes/index.mjs} +1 -1
- package/{esm2015/app/services/group-expand-notifier.service.js → esm2020/app/services/group-expand-notifier.service.mjs} +26 -26
- package/{esm2015/firestitch-list.js → esm2020/firestitch-list.mjs} +4 -4
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +45 -45
- package/fesm2015/{firestitch-list.js → firestitch-list.mjs} +5739 -5805
- package/fesm2015/firestitch-list.mjs.map +1 -0
- package/fesm2020/firestitch-list.mjs +5871 -0
- package/fesm2020/firestitch-list.mjs.map +1 -0
- package/firestitch-list.d.ts +5 -5
- package/package.json +20 -7
- package/public_api.d.ts +41 -41
- package/bundles/firestitch-list.umd.js +0 -7218
- package/bundles/firestitch-list.umd.js.map +0 -1
- package/esm2015/app/classes/data-controller.js +0 -365
- package/esm2015/app/classes/external-params-controller.js +0 -147
- package/esm2015/app/classes/list-controller.js +0 -754
- package/esm2015/app/classes/reorder-controller.js +0 -183
- package/esm2015/app/classes/selection-controller.js +0 -468
- package/esm2015/app/components/body/body.component.js +0 -69
- package/esm2015/app/components/body/row/actions/actions.component.js +0 -102
- package/esm2015/app/components/body/row/cell/cell.component.js +0 -113
- package/esm2015/app/components/body/row/inline-action/inline-action.component.js +0 -37
- package/esm2015/app/components/body/row/menu-action/menu-action.component.js +0 -50
- package/esm2015/app/components/body/row/row.component.js +0 -330
- package/esm2015/app/components/customize-cols/customize-cols.component.js +0 -72
- package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +0 -20
- package/esm2015/app/components/footer/footer-row/footer-row.component.js +0 -33
- package/esm2015/app/components/footer/footer.component.js +0 -36
- package/esm2015/app/components/head/head-cell/head-cell.component.js +0 -34
- package/esm2015/app/components/head/head.component.js +0 -108
- package/esm2015/app/components/list/list.component.js +0 -397
- package/esm2015/app/components/loader/loader.component.js +0 -45
- package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +0 -79
- package/esm2015/app/components/pagination/pagination.component.js +0 -42
- package/esm2015/app/components/saved-filters/saved-filters.component.js +0 -32
- package/esm2015/app/components/status/status.component.js +0 -72
- package/esm2015/app/directives/column/column.directive.js +0 -112
- package/esm2015/app/directives/draggable-list/draggable-list.directive.js +0 -330
- package/esm2015/app/directives/draggable-row/draggable-row.directive.js +0 -79
- package/esm2015/app/interfaces/external-params.interface.js +0 -2
- package/esm2015/app/interfaces/pagination.interface.js +0 -2
- package/esm2015/app/models/column-attributes.js +0 -131
- package/esm2015/app/models/column.model.js +0 -163
- package/esm2015/app/models/row-action.model.js +0 -90
- package/fesm2015/firestitch-list.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestitch-list.mjs","sources":["../../src/app/classes/reorder-controller.ts","../../src/app/classes/selection-controller.ts","../../src/app/directives/draggable-list/draggable-list.directive.ts","../../src/app/enums/row-type.enum.ts","../../src/app/models/row/base-row.ts","../../src/app/models/row/child-row.ts","../../src/app/models/row/group-footer-row.ts","../../src/app/models/row/group-row.ts","../../src/app/models/row/simple-row.ts","../../src/app/models/row.ts","../../src/app/enums/button-type.enum.ts","../../src/app/models/row-action.model.ts","../../src/app/models/styleConfig.model.ts","../../src/app/models/column.model.ts","../../src/app/components/body/row/cell/cell.component.ts","../../src/app/components/body/row/cell/cell.component.html","../../src/app/components/body/row/inline-action/inline-action.component.ts","../../src/app/components/body/row/inline-action/inline-action.component.html","../../src/app/pipes/action-label.ts","../../src/app/components/body/row/menu-action/menu-action.component.ts","../../src/app/components/body/row/menu-action/menu-action.component.html","../../src/app/components/body/row/actions/actions.component.ts","../../src/app/components/body/row/actions/actions.component.html","../../src/app/components/body/row/row.component.ts","../../src/app/components/body/row/row.component.html","../../src/app/directives/draggable-row/draggable-row.directive.ts","../../src/app/components/body/body.component.ts","../../src/app/components/body/body.component.html","../../src/app/components/customize-cols/customize-cols.component.ts","../../src/app/components/customize-cols/customize-cols.component.html","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.ts","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.html","../../src/app/components/footer/footer-row/footer-row.component.ts","../../src/app/components/footer/footer-row/footer-row.component.html","../../src/app/components/footer/footer.component.ts","../../src/app/components/footer/footer.component.html","../../src/app/components/head/head-cell/head-cell.component.ts","../../src/app/components/head/head-cell/head-cell.component.html","../../src/app/models/column-async-attribute.ts","../../src/app/models/column-attributes.ts","../../src/app/classes/sorting-controller.ts","../../src/app/components/head/head.component.ts","../../src/app/components/head/head.component.html","../../src/app/enums/page-change-type.enum.ts","../../src/app/enums/state.enum.ts","../../src/app/classes/columns-controller.ts","../../src/app/classes/data-controller.ts","../../src/app/classes/external-params-controller.ts","../../src/app/classes/actions-controller.ts","../../src/app/enums/pagination-strategy.enum.ts","../../src/app/classes/pagination-controller.ts","../../src/app/classes/list-controller.ts","../../src/app/classes/persistance-controller.ts","../../src/app/directives/heading/heading.directive.ts","../../src/app/directives/subheading/subheading.directive.ts","../../src/app/directives/heading-container/heading-container.directive.ts","../../src/app/directives/cell/cell.directive.ts","../../src/app/directives/footer/footer.directive.ts","../../src/app/directives/header/header.directive.ts","../../src/app/services/group-expand-notifier.service.ts","../../src/app/directives/group-expand-trigger/group-expand-trigger.directive.ts","../../src/app/directives/group-footer/group-footer.directive.ts","../../src/app/directives/group-header/group-header.directive.ts","../../src/app/directives/column/column.directive.ts","../../src/app/directives/empty-state/empty-state.directive.ts","../../src/app/fs-list.providers.ts","../../src/app/components/saved-filters/saved-filters.component.ts","../../src/app/components/saved-filters/saved-filters.component.html","../../src/app/components/status/status.component.ts","../../src/app/components/status/status.component.html","../../src/app/components/loader/loader.component.ts","../../src/app/components/loader/loader.component.html","../../src/app/components/pagination/pagination.component.ts","../../src/app/components/pagination/pagination.component.html","../../src/app/directives/content-init/content-init.directive.ts","../../src/app/components/list/list.component.ts","../../src/app/components/list/list.component.html","../../src/app/components/manage-saved-filters/manage-saved-filters.component.ts","../../src/app/components/manage-saved-filters/manage-saved-filters.component.html","../../src/app/directives/content/content.directive.ts","../../src/app/fs-list.module.ts","../../src/public_api.ts","../../src/firestitch-list.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n FsListReorderConfig,\n FsListReorderDoneCallback,\n FsListReorderMovedCallback,\n FsListReorderMoveInGroupCallback\n} from '../interfaces';\n\nimport { DataController } from './data-controller';\nimport { ActionsController } from './actions-controller';\nimport { SelectionController } from './selection-controller';\n\nexport enum ReorderPosition {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum ReorderStrategy {\n Always = 'always',\n Manual = 'manual',\n Custom = 'custom',\n}\n\n@Injectable()\nexport class ReorderController implements OnDestroy {\n\n public startCallback: () => void | Observable<void>;\n public movedCallback: FsListReorderMovedCallback;\n public doneCallback: FsListReorderDoneCallback;\n public moveDropCallback: FsListReorderMoveInGroupCallback;\n\n public status: boolean;\n public label: string;\n public menu: boolean;\n public multiple: boolean;\n\n private _dataController: DataController;\n private _actionsController: ActionsController;\n private _selectionController: SelectionController;\n\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _manualReorderActivated$ = new BehaviorSubject(false);\n private _reorderDisabled$ = new BehaviorSubject(false);\n private _position = new BehaviorSubject<ReorderPosition | null>(null);\n private _strategy = new BehaviorSubject<ReorderStrategy | null>(null);\n\n private _destroy$ = new Subject();\n\n constructor() {}\n\n public get enabled() {\n return this._enabled$.getValue();\n }\n\n public set enabled(value) {\n this._enabled$.next(value);\n\n this._manualReorderActivated$.next(this.enabled && this.strategy === ReorderStrategy.Manual);\n }\n\n public get strategy(): ReorderStrategy | null {\n return this._strategy.getValue();\n }\n\n public get position(): ReorderPosition | null {\n return this._position.getValue();\n }\n\n public get dataController() {\n return this._dataController;\n }\n\n public get selectionController(): SelectionController {\n return this._selectionController;\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$.asObservable();\n }\n\n public get position$(): Observable<ReorderPosition> {\n return this._position.asObservable();\n }\n\n public get strategy$(): Observable<ReorderStrategy> {\n return this._strategy.asObservable();\n }\n\n public get manualReorderActivated(): boolean {\n return this._manualReorderActivated$.getValue();\n }\n\n public get reorderDisabled$(): Observable<boolean> {\n return this._reorderDisabled$.asObservable();\n }\n\n public get reorderDisabled(): boolean {\n return this._reorderDisabled$.getValue();\n }\n\n public initWithConfig(\n data: FsListReorderConfig,\n dataController: DataController,\n actionsController: ActionsController,\n selectionController: SelectionController,\n ) {\n if (!data) { return }\n\n this.menu = data.menu ?? false;\n this._setPosition(data.position ?? ReorderPosition.Left);\n\n if (!data.disabled) {\n this._setStrategy(ReorderStrategy.Always);\n }\n\n if (data.toggle) {\n this._setStrategy(ReorderStrategy.Manual);\n }\n // this.strategy = data.strategy ?? ReorderStrategy.Manual;\n this.label = data.label;\n this.multiple = data.multiple;\n this.status = data.status ?? true;\n\n this.startCallback = data.start;\n this.movedCallback = data.moved;\n this.doneCallback = data.done;\n this.moveDropCallback = data.moveDrop;\n\n this._dataController = dataController;\n this._actionsController = actionsController;\n this._selectionController = selectionController;\n\n if (this.strategy === ReorderStrategy.Always) {\n this.enableReorder();\n } else if (this.strategy === ReorderStrategy.Manual) {\n actionsController.addReorderAction(\n {\n label: this.label || 'Reorder',\n menu: this.menu,\n primary: false,\n click: () => {\n this.enableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n }\n }\n );\n\n actionsController.addReorderDoneAction({\n label: 'Done',\n primary: false,\n click: () => {\n this.disableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n },\n }\n )\n }\n }\n\n public enableReorder() {\n if ((this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) && this.startCallback) {\n const returnedValue = this.startCallback();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = true;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = true;\n }\n\n public disableReorder() {\n if (this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) {\n const returnedValue = this.reorderFinished();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = false;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = false;\n }\n\n /**\n * Exec end callback\n */\n public reorderFinished() {\n if (this.doneCallback) {\n return this.doneCallback(this._dataController.reorderData);\n }\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Enable reorder action and update filter actions state\n */\n public enableReorderAction() {\n this._reorderDisabled$.next(false);\n this._actionsController.updateDisabledState();\n }\n\n /**\n * Disable reorder action and update filter actions state\n */\n public disableReorderAction() {\n this._reorderDisabled$.next(true);\n this._actionsController.updateDisabledState();\n }\n\n private _setPosition(value: ReorderPosition): void {\n this._position.next(value);\n }\n\n private _setStrategy(value: ReorderStrategy): void {\n this._strategy.next(value);\n }\n\n}\n","import { SelectionDialog, SelectionRef } from '@firestitch/selection';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { get as _get } from 'lodash-es';\n\nimport { FsListSelectionConfig } from '../interfaces';\nimport { Row } from '../models/row';\n\nexport enum SelectionChangeType {\n AllVisibleSelectionChange = 'AllVisibleSelectionChange',\n RowSelectionChange = 'RowSelectionChange',\n SelectedAll = 'SelectedAll',\n}\n\n\nexport class SelectionController {\n\n // Options from passed config\n public actions = [];\n public selectAll = true;\n public selectionChangedFn;\n public actionSelectedFn;\n public allSelectedFn;\n\n public cancelledFn;\n\n // Store for selected visible rows\n public selectedRows = new Map();\n public selectedGroups = new Map();\n\n // Reference to selection dialog\n private _selectionDialogRef: SelectionRef = null;\n\n private _getRows: () => any[];\n private _selectionChange = new Subject<{ type: SelectionChangeType; payload: any }>();\n\n // Selected only visible rows (ex.: selected only limited 15 rows when we have pagination)\n private _selectedAllVisible = false;\n\n // Selected all rows when was clicked \"Select All\" in selection dialog\n // or count of visible records is equal to total and all visible rows was selected\n private _selectedAll = false;\n\n private _selectedRecords = 0;\n private _visibleRecordsCount = 0;\n private _totalRecordsCount = 0;\n\n private _destroy$ = new Subject();\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: FsListSelectionConfig = {},\n private _trackBy: string,\n private _selectionDialog: SelectionDialog,\n ) {\n this.actions = config.actions ? [...config.actions] : [];\n this.actionSelectedFn = config.actionSelected;\n this.allSelectedFn = config.allSelected;\n this.cancelledFn = config.cancelled;\n this.selectionChangedFn = config.selectionChanged;\n this.selectAll = config.selectAll;\n this._disabled$.next(!!config.disabled);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public get selectedAll() {\n return this._selectedAll;\n }\n\n public get selectionChange$() {\n return this._selectionChange.pipe(takeUntil(this._destroy$));\n }\n\n public setRowsCallback(data: () => any[]) {\n this._getRows = data;\n }\n\n /**\n * Trigger when row was selected\n *\n * @param row\n * @param checked\n */\n public rowSelectionChange(row: Row, checked: boolean) {\n if (row) {\n if (checked) {\n this._selectRow(row);\n this.openDialog();\n } else {\n if (this._selectedAll) {\n this._selectedAll = false;\n }\n\n this._deselectRow(row);\n }\n }\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n\n /**\n * Do check or uncheck of visible rows\n *\n * @param checked\n */\n public selectAllVisibleRows(checked) {\n this.openDialog();\n\n this._selectedAllVisible = checked;\n this._selectedRecords = 0;\n\n const rows = this._getRows();\n\n if (checked) {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this._setNumberOfSelectedChildrenInGroup(identifier, row.children.length);\n } else {\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n });\n } else {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this._setNumberOfSelectedChildrenInGroup(identifier, 0);\n } else {\n this.selectedRows.delete(identifier);\n }\n });\n\n this._selectedAll = false;\n this._selectedRecords = 0;\n }\n\n // Fire an event that all visible selection was changed\n this._visibleRowsSelectionChanged();\n this._updateSelectionRefSelected();\n }\n\n public isRowSelected(rowData) {\n return this.selectedRows.has(this._rowIdentifier(rowData))\n || this.selectedGroups.has(this._rowIdentifier(rowData))\n || this.selectedAll;\n }\n\n public isGroupSelected(row): boolean | 'indeterminate' {\n const identifier = this._rowIdentifier(row.data);\n\n if (\n this.selectedGroups.has(identifier)\n && row.children?.length > this.selectedGroups.get(identifier)\n ) {\n return 'indeterminate';\n }\n\n return this.selectedGroups.has(identifier) || this.selectedAll;\n\n }\n\n /**\n * Open selection dialog and create reference\n */\n public openDialog() {\n if (!this._selectionDialogRef) {\n this._selectionDialogRef = this._selectionDialog.open({\n selectAll: this.selectAll,\n allCount: this._totalRecordsCount,\n actions: [...this.actions],\n // selectAll: this.sele\n });\n\n this._subscribeToSelection();\n }\n }\n\n /**\n * Update count of visible elements\n *\n * @param count\n */\n public updateVisibleRecordsCount(count: number) {\n this._visibleRecordsCount = count;\n }\n\n /**\n * Update count of total available elemenets\n *\n * @param count\n */\n public updateTotalRecordsCount(count: number) {\n this._totalRecordsCount = count;\n\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateAllCount(this._totalRecordsCount);\n }\n }\n\n public pageChanged(infinityScrollEnabled) {\n if (this._selectedAll) {\n if (!infinityScrollEnabled) {\n this._resetSelection();\n }\n } else {\n this._selectedRecords = 0;\n this._getRows()\n .map((row) => row.data)\n .forEach((rowData) => {\n const identified = this._rowIdentifier(rowData);\n\n if (this.selectedRows.has(identified)) {\n this._selectedRecords++;\n }\n });\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n }\n\n public enableSelection() {\n this._disabled$.next(false);\n }\n\n public disableSelection() {\n this._disabled$.next(true);\n }\n\n /**\n * Method will be called from List for remove row if it was selected\n *\n * BUT methods for update visible and etc. will be called a bit later\n *\n * @param row\n */\n public removeRow(row) {\n this.selectedRows.delete(this._rowIdentifier(row));\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n }\n\n /**\n * Intersection of selected and passed rows to remove rows that we dont need more\n *\n * @param rows\n */\n public selectedRowsIntersection(rows) {\n const rowsIndentifiers = rows.map((row) => this._rowIdentifier(row));\n\n this.selectedRows.forEach((selectedRow, identifier) => {\n if (rowsIndentifiers.indexOf(identifier) === -1) {\n this.removeRow(selectedRow);\n }\n });\n }\n\n public updateConfig({\n actions, actionSelected, allSelected, cancelled, selectionChanged, selectAll,\n }: FsListSelectionConfig) {\n this.actions = actions ? [...actions] : this.actions;\n this.actionSelectedFn = actionSelected ?? this.actionSelectedFn;\n this.allSelectedFn = allSelected ?? this.allSelectedFn;\n this.cancelledFn = cancelled ?? this.cancelledFn;\n this.selectionChangedFn = selectionChanged ?? this.selectionChangedFn;\n this.selectAll = selectAll ?? this.selectAll;\n }\n\n // Reset actions to default set\n public resetActions() {\n this._selectionDialogRef?.resetActions();\n }\n\n public closeSelectionDialog() {\n this._selectionDialogRef?.close();\n }\n\n public destroy() {\n this._resetSelection();\n\n this.actions = null;\n this.actionSelectedFn = null;\n this.allSelectedFn = null;\n this.cancelledFn = null;\n\n this.closeSelectionDialog();\n this._selectionDialogRef = null;\n\n this._destroy$.next();\n this._destroy$.complete();\n\n this._selectionChange.complete();\n }\n\n /**\n * Subscribe to selectionRef events\n */\n private _subscribeToSelection() {\n this._selectionDialogRef.actionSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onActionActions(data);\n });\n\n this._selectionDialogRef.cancelled$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => this._onCancelActions());\n\n this._selectionDialogRef.allSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onSelectAllActions(data);\n });\n }\n\n /**\n * If some action was clicked on selection ref dialog\n *\n * @param data\n */\n private _onActionActions(data) {\n if (!this.actionSelectedFn) {\n return;\n }\n\n // Execute callback\n const result = this.actionSelectedFn({\n selected: Array.from(this.selectedRows.values()).map((row) => {\n return { ...row };\n }),\n ...data,\n });\n\n // If result is observable\n if (result instanceof Observable) {\n\n // Subscribe and whait why it resolved\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: () => {\n\n // Close dialog\n this.closeSelectionDialog();\n\n // Uncheck all visible rows\n this.selectAllVisibleRows(false);\n },\n error: () => { },\n });\n }\n }\n\n /**\n * If cancel was clicked on selection ref dialog\n */\n private _onCancelActions() {\n this.selectAllVisibleRows(false);\n\n if (this.cancelledFn) {\n this.cancelledFn();\n }\n\n this._selectionDialogRef = null;\n }\n\n /**\n * If \"Select All\" action was clicked on selection ref dialog\n *\n * @param flag\n */\n private _onSelectAllActions(flag) {\n this._selectedAll = flag;\n\n this.selectAllVisibleRows(flag);\n\n this._selectionDialogRef.updateSelected(this._totalRecordsCount);\n\n this._selectionChangeEvent(SelectionChangeType.SelectedAll, this._selectedAll);\n this._updateSelectionRefSelectedAll();\n\n if (!this.allSelectedFn) {\n return;\n }\n\n this.allSelectedFn(flag);\n }\n\n private _selectionChangedActions() {\n // Remove actions if no rows selected\n // otherwise it will \"blink\" when user select any action\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.updateActions([]);\n\n return;\n }\n\n if (this.selectionChangedFn) {\n const result = this.selectionChangedFn(\n Array.from(this.selectedRows.values()),\n this.selectedAll,\n this._selectionDialogRef,\n );\n\n if (result) {\n if (result instanceof Observable) {\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: (actions) => {\n this._selectionDialogRef.updateActions(actions);\n },\n });\n } else if (Array.isArray(result)) {\n this._selectionDialogRef.updateActions(result);\n }\n }\n }\n }\n\n /**\n * Update in Dialog Ref how much rows was selected\n */\n private _updateSelectionRefSelected() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelected(this.selectedRows.size);\n\n // S-T1268\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.close();\n }\n\n this._selectionChangedActions();\n }\n }\n\n /**\n * Update in Dialog Ref selected all status\n *\n * Ex.: Was clicked \"Select All\" in Dialog and after that some checkbox was unchecked\n * Dialog Ref must know about it\n *\n */\n private _updateSelectionRefSelectedAll() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelectedAllStatus(this._selectedAll);\n }\n }\n\n /**\n * Check if all visible rows was checked and send event to main header checkbox\n */\n private _updateSelectedVisibleStatus() {\n this._selectedAllVisible = this._selectedRecords !== 0 && this._selectedRecords === this._visibleRecordsCount;\n\n this._selectionChangeEvent(\n SelectionChangeType.RowSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * If select all checkbox in header was changed\n */\n private _visibleRowsSelectionChanged() {\n this._selectionChangeEvent(\n SelectionChangeType.AllVisibleSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * Method constructor for events\n *\n * @param type\n * @param payload\n */\n private _selectionChangeEvent(type: SelectionChangeType, payload) {\n this._selectionChange.next({\n type,\n payload,\n });\n }\n\n /**\n * Get row identified by trackBy path\n *\n * @param row\n */\n private _rowIdentifier(row) {\n const identifier = _get(row, this._trackBy, undefined);\n\n if (identifier === undefined) {\n console.warn('Selection can not recognize track by field for row. ' +\n 'Please check if you had configured trackBy function.');\n }\n\n return identifier;\n }\n\n private _selectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n row.children.forEach((childRow) => {\n this._selectRow(childRow);\n });\n } else {\n if (row.isChild) {\n this._selectChildRow(row);\n }\n\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n }\n\n private _deselectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (row.isGroup) {\n this.selectedGroups.delete(identifier);\n\n row.children.forEach((childRow) => {\n this._deselectRow(childRow);\n });\n } else {\n if (row.isChild && this.selectedRows.has(identifier)) {\n this._deselectChildRow(row);\n }\n\n this.selectedRows.delete(identifier);\n this._selectedRecords--;\n }\n }\n\n private _selectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber + 1);\n }\n\n private _deselectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n if (selectedChildrenNumber > 1) {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber - 1);\n } else {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, 0);\n }\n }\n\n private _setNumberOfSelectedChildrenInGroup(identifier: string, n: number) {\n if (n === 0) {\n this.selectedGroups.delete(identifier);\n\n return;\n }\n\n this.selectedGroups.set(identifier, n);\n }\n\n /**\n * Reset selection\n */\n private _resetSelection() {\n this._selectedAll = false;\n this._selectedAllVisible = false;\n this._visibleRecordsCount = 0;\n this._selectedRecords = 0;\n this.selectedRows.clear();\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n this._visibleRowsSelectionChanged();\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController, ReorderStrategy } from '../../classes/reorder-controller';\nimport { FsListDragChildRowElement } from '../../interfaces/draggable-list.interface';\nimport { Row } from '../../models/row';\nimport { FsListDraggableRowDirective } from '../draggable-row/draggable-row.directive';\n\n\n@Directive({\n selector: '[fsListDraggableList]',\n})\nexport class FsListDraggableListDirective {\n // Draggable Element\n private _draggableElement: HTMLElement;\n private _draggableElementPreview: HTMLElement;\n private _multipleDraggableElementPreview: HTMLElement;\n private _draggableElementHeight: number;\n private _draggableElementIndex: number;\n private _draggableElementStartIndex: number;\n\n // Handlers\n private _dragToHandler = this.dragTo.bind(this);\n private _dragEndHandler = this.dragEnd.bind(this);\n private _windowTouchMoveHandler = () => { };\n\n private _dragInProgress = false;\n\n private _childRowElements: FsListDragChildRowElement[];\n private _dragStart$ = new Subject<void>();\n private _dragEnd$ = new Subject<void>();\n\n @Input('rows')\n private _rows: Row[];\n private _draggableChildrenDirectives: FsListDraggableRowDirective[] = [];\n private _selectedRowsDirectives: FsListDraggableRowDirective[] = [];\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _zone: NgZone,\n private _containerElement: ElementRef,\n private _reorderController: ReorderController,\n private _renderer: Renderer2,\n ) { }\n\n public get dragStart$(): Observable<void> {\n return this._dragStart$.pipe(takeUntil(this._destroy$));\n }\n\n public get dragEnd$(): Observable<void> {\n return this._dragEnd$.pipe(takeUntil(this._destroy$));\n }\n\n public get draggableItem(): Row {\n return this._rows[this._draggableElementIndex];\n }\n\n private get _isMultipleDrag(): boolean {\n return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;\n }\n\n public addDraggableDirective(dir: FsListDraggableRowDirective): void {\n this._draggableChildrenDirectives.push(dir);\n }\n\n public removeDraggableDirective(dir: FsListDraggableRowDirective): void {\n const idx = this._draggableChildrenDirectives.indexOf(dir);\n\n if (idx !== -1) {\n this._draggableChildrenDirectives.splice(idx, 1);\n }\n }\n\n /**\n * Prepare draggable elements and add events\n *\n * @param draggableElement\n */\n public dragStart(draggableElement: HTMLElement) {\n if (this._dragInProgress) {\n return;\n }\n\n if (\n this._reorderController.startCallback\n && this._reorderController.strategy === ReorderStrategy.Always\n ) {\n this._reorderController.startCallback();\n }\n\n this._dragInProgress = true;\n\n window.document.body.classList.add('reorder-in-progress');\n\n this._draggableElement = draggableElement;\n\n this._detectSelectedRows();\n this.prepareElements();\n this.initDraggableElement();\n\n this._draggableElementStartIndex = this._draggableElementIndex;\n this._draggableElement.classList.add('draggable-elem');\n\n this._zone.runOutsideAngular(() => {\n window.addEventListener('touchmove', this._windowTouchMoveHandler, { passive: true });\n window.document.addEventListener('mousemove', this._dragToHandler, { passive: true });\n window.document.addEventListener('touchmove', this._dragToHandler, { passive: false });\n });\n\n window.document.addEventListener('mouseup', this._dragEndHandler);\n window.document.addEventListener('touchend', this._dragEndHandler);\n window.document.addEventListener('touchcancel', this._dragEndHandler);\n\n this._dragStart$.next();\n }\n\n\n /**\n * Move draggable elements and swap items\n *\n * @param event\n */\n public dragTo(event) {\n this.touchFix(event);\n const elemIndex = this.lookupElementUnder(event);\n const targetRow = this._rows[elemIndex];\n\n if (this._multipleDraggableElementPreview) {\n this._multipleDraggableElementPreview.style.left = `${event.clientX}px`;\n this._multipleDraggableElementPreview.style.top = `${event.clientY}px`;\n }\n\n // Can not drag before first group and after last group\n const swapWithBoundaryGroupElement =\n (elemIndex === 0 || elemIndex === this._rows.length - 1)\n && targetRow.isGroup\n // TODO fix isChild & all\n && (this.draggableItem as any).isChild;\n\n\n if (!swapWithBoundaryGroupElement) {\n if (elemIndex !== null) {\n if (targetRow.readyToSwap) {\n this.swapWithIndex(elemIndex);\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.remove('fs-list-no-drop');\n }\n } else {\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.add('fs-list-no-drop');\n }\n }\n }\n\n // FIXME\n if (this._draggableElementPreview) {\n const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);\n this._draggableElementPreview.style.top = `${topOffset}px`;\n }\n }\n }\n\n /**\n * Remove events and classes after drag finish\n */\n public dragEnd() {\n this._dragInProgress = false;\n this._reorderController.dataController.finishReorder();\n\n if (this._reorderController.movedCallback\n && this._draggableElementStartIndex !== this._draggableElementIndex) {\n\n this._reorderController.movedCallback(\n this._reorderController.dataController.reorderData,\n );\n }\n\n if (this._reorderController.strategy === ReorderStrategy.Always) {\n this._zone.run(() => {\n if (this._reorderController.doneCallback) {\n const result = this._reorderController.doneCallback(\n this._reorderController.dataController.reorderData,\n );\n\n this._waitUntilIsNotDone(result);\n }\n });\n }\n\n // this._reorderController.dataController.updateOrderByRows(this._rows);\n ///\n this._containerElement.nativeElement.classList.remove('drag-hidden');\n this._draggableElement.classList.remove('draggable-elem');\n window.document.body.classList.remove('reorder-in-progress');\n this._draggableElement = null;\n\n if (this._draggableElementPreview) {\n this._draggableElementPreview.remove();\n\n this._draggableElementPreview = null;\n } else {\n this._renderer.removeChild(document.body, this._multipleDraggableElementPreview);\n this._multipleDraggableElementPreview = null;\n }\n\n this._draggableElementHeight = null;\n this._draggableElementIndex = null;\n this._draggableElementStartIndex = null;\n this._selectedRowsDirectives = [];\n\n window.removeEventListener('touchmove', this._windowTouchMoveHandler);\n window.document.removeEventListener('mousemove', this._dragToHandler);\n window.document.removeEventListener('touchmove', this._dragToHandler);\n window.document.removeEventListener('mouseup', this._dragEndHandler);\n window.document.removeEventListener('touchend', this._dragEndHandler);\n window.document.removeEventListener('touchcancel', this._dragEndHandler);\n\n this._dragEnd$.next();\n }\n\n /**\n * looking row elements and save their dims\n */\n private prepareElements() {\n this.lookupChildElements();\n this.calcElementsDimensions();\n }\n\n /**\n * Store child rows\n */\n private lookupChildElements() {\n this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr:not(.drag-hidden)'))\n .reduce((acc: any[], rowElement, index) => {\n const element: any = { target: rowElement };\n\n if (rowElement === this._draggableElement) {\n this._draggableElementIndex = index;\n element.active = true;\n }\n\n acc.push(element);\n\n return acc;\n }, []) as FsListDragChildRowElement[];\n }\n\n /**\n * Calc child rows sizes/offsets\n */\n private calcElementsDimensions() {\n this._childRowElements.forEach((el: any, index) => {\n const dims = el.target.getBoundingClientRect();\n el.top = dims.top;\n el.height = dims.height;\n el.center = dims.top + (dims.height / 2);\n el.index = index;\n });\n }\n\n /**\n * Init draggable element\n */\n private initDraggableElement() {\n const el = this._draggableElement.cloneNode(true) as HTMLElement;\n const data = this._draggableElement.getBoundingClientRect();\n\n if (!(this._isMultipleDrag)) {\n el.style.width = `${data.width}px`;\n el.style.left = `${data.left}px`;\n el.style.top = `${data.top}px`;\n el.classList.add('draggable');\n\n this._containerElement.nativeElement.insertAdjacentElement('afterbegin', el);\n\n this._draggableElementPreview = el;\n this._draggableElementHeight = data.height;\n\n this.updateDraggableDims();\n } else {\n // Create preview DIV\n this._containerElement.nativeElement.classList.add('drag-hidden');\n\n const selectedCount = this._selectedRowsDirectives?.length;\n const previewBlock = this._renderer.createElement('div');\n previewBlock.style.left = `${data.left}px`;\n previewBlock.style.top = `${data.top}px`;\n\n const text = this._renderer.createText(`${selectedCount} selected items`);\n\n this._renderer.appendChild(previewBlock, text);\n this._renderer.addClass(previewBlock, 'fs-list-preview-block');\n this._renderer.appendChild(document.body, previewBlock);\n this._multipleDraggableElementPreview = previewBlock;\n }\n\n }\n\n /**\n * Looking by stored row elements for overlapped row\n *\n * @param event\n */\n private lookupElementUnder(event) {\n const top = event.y || event.clientY;\n const bottom = event.y || event.clientY;\n let elemIndex = null;\n\n for (let i = 0; i < this._childRowElements.length; i++) {\n const el = this._childRowElements[i];\n\n if (!el.active) {\n if (top < el.center + (el.height / 2) && el.index < this._draggableElementIndex\n || bottom > el.center - (el.height / 2) && el.index > this._draggableElementIndex) {\n elemIndex = i;\n }\n }\n }\n\n return elemIndex;\n }\n\n /**\n * Swap rows\n *\n * @param index\n */\n private swapWithIndex(index) {\n const activeIndex = this._draggableElementIndex;\n const selectedRows = this._selectedRowsDirectives\n .map((d) => d.row)\n .filter((d) => d.readyToSwap);\n\n // Swap rows in global rows stack\n this._reorderController\n .dataController\n .swapRows(\n this._rows[activeIndex],\n this._rows[index],\n selectedRows,\n this._isMultipleDrag,\n );\n\n // Swap visible rows\n if (!this._isMultipleDrag) {\n const activeRow = this._rows[activeIndex];\n this._rows[activeIndex] = this._rows[index];\n this._rows[index] = activeRow;\n\n const activeElement = this._childRowElements[activeIndex].target;\n this._childRowElements[activeIndex].active = false;\n\n this._childRowElements[activeIndex].target = this._childRowElements[index].target;\n this._childRowElements[index].target = activeElement;\n this._childRowElements[index].active = true;\n }\n\n this._draggableElementIndex = index;\n this._cdRef.detectChanges();\n }\n\n /**\n * Update cell width for draggable elem\n */\n private updateDraggableDims() {\n const draggableCells: any = Array.from(this._draggableElementPreview.querySelectorAll('td'));\n\n Array.from(\n this._draggableElementPreview.querySelectorAll('td'),\n ).forEach((elem: any, index) => {\n const dims = elem.getBoundingClientRect();\n draggableCells[index].style.width = `${dims.width}px`;\n });\n }\n\n private _waitUntilIsNotDone(doneResult: unknown): void {\n if (doneResult instanceof Observable) {\n this._reorderController.disableReorderAction();\n\n doneResult\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._reorderController.enableReorderAction();\n });\n }\n }\n\n private _detectSelectedRows(): void {\n this._draggableChildrenDirectives\n .forEach((dir: FsListDraggableRowDirective) => {\n const isRowSelected = this._reorderController.selectionController?.isRowSelected(dir.row.data);\n\n if (isRowSelected && !dir.row.isGroup) {\n this._selectedRowsDirectives.push(dir);\n }\n });\n }\n\n /**\n * Fix background when mobile\n *\n * @param e\n */\n private touchFix(e) {\n if (!('clientX' in e) && !('clientY' in e)) {\n const touches = e.touches || e.originalEvent.touches;\n if (touches && touches.length) {\n e.clientX = touches[0].clientX;\n e.clientY = touches[0].clientY;\n }\n\n e.preventDefault();\n }\n }\n}\n","export enum RowType {\n Simple = 'simple',\n Group = 'group',\n GroupFooter = 'groupFooter',\n GroupChild = 'groupChild',\n}\n","import { RowType } from '../../enums/row-type.enum';\r\nimport { FsListReorderData } from '../../interfaces';\r\n\r\nexport abstract class BaseRow {\r\n\r\n public index: number;\r\n public readyToSwap = true;\r\n\r\n protected readonly _rowType: RowType;\r\n\r\n private readonly _data: any = {};\r\n\r\n constructor(\r\n data: any = {},\r\n rowType = RowType.Simple,\r\n ) {\r\n this._data = data;\r\n this._rowType = rowType;\r\n }\r\n\r\n public get data() {\r\n return this._data;\r\n }\r\n\r\n public get type() {\r\n return this._rowType;\r\n }\r\n\r\n public getReorderData(): FsListReorderData {\r\n return {\r\n type: this._rowType,\r\n data: this.data,\r\n parent: null,\r\n }\r\n }\r\n\r\n public abstract destroy();\r\n}\r\n","import { BaseRow } from './base-row';\r\nimport { RowType } from '../../enums/row-type.enum';\r\nimport { GroupRow } from './group-row';\r\nimport { FsListReorderData } from '../../interfaces';\r\n\r\n\r\nexport class ChildRow extends BaseRow {\r\n\r\n public visible = true;\r\n private readonly _parent: GroupRow;\r\n\r\n constructor(\r\n data: any = {},\r\n parent: GroupRow = null,\r\n ) {\r\n super(data, RowType.GroupChild);\r\n\r\n this._parent = parent;\r\n\r\n if (this.parent) {\r\n this.visible = this._parent.expanded;\r\n this.index = this.parent.children.length;\r\n }\r\n }\r\n\r\n public get parent(): GroupRow {\r\n return this._parent;\r\n }\r\n\r\n public get isChild(): boolean {\r\n return true;\r\n }\r\n\r\n public getReorderData(): FsListReorderData {\r\n return {\r\n type: this._rowType,\r\n data: this.data,\r\n parent: this.parent.getReorderData(),\r\n }\r\n }\r\n\r\n public destroy() {}\r\n}\r\n","import { BaseRow } from './base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { GroupRow } from './group-row';\n\n\nexport class GroupFooterRow extends BaseRow {\n\n public visible = true;\n private readonly _parent: GroupRow;\n\n constructor(\n data: any = {},\n parent: GroupRow = null,\n ) {\n super(data, RowType.GroupFooter);\n\n this._parent = parent;\n\n if (this.parent) {\n this.visible = this._parent.expanded;\n this.index = this.parent.children.length;\n }\n }\n\n public get parent(): GroupRow {\n return this._parent;\n }\n\n public get isGroupFooter(): boolean {\n return true;\n }\n\n public destroy() {}\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { BaseRow } from './base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { ChildRow } from './child-row';\nimport { GroupFooterRow } from './group-footer-row';\n\nexport class GroupRow extends BaseRow {\n\n public children: (ChildRow | GroupFooterRow)[] = [];\n\n private readonly _expanded = new BehaviorSubject<boolean>(false);\n\n constructor(\n data: any = {},\n initialExpand = false,\n ) {\n super(data, RowType.Group);\n\n if (initialExpand) {\n this._expanded.next(initialExpand);\n }\n }\n\n public get childrenData() {\n return this.children\n .map((child) => child.data);\n }\n\n public get isGroup(): boolean {\n return true;\n }\n\n public get expanded() {\n return this._expanded.getValue();\n }\n\n public get expanded$() {\n return this._expanded.asObservable();\n }\n\n public updateChildrenIndexes() {\n this.children.forEach((row, index) => {\n row.index = index;\n });\n }\n\n public updateChildrenVisibility() {\n this.children.forEach((row) => {\n row.visible = this.expanded;\n })\n }\n\n public toggleRowExpandStatus() {\n this._expanded.next(!this.expanded);\n\n this.updateChildrenVisibility();\n }\n\n public destroy() {\n this.children.forEach((child) => child.destroy());\n this._expanded.complete();\n }\n}\n","import { RowType } from '../../enums/row-type.enum';\r\nimport { BaseRow } from './base-row';\r\n\r\nexport class SimpleRow extends BaseRow {\r\n\r\n constructor(\r\n data: any = {},\r\n ) {\r\n super(data, RowType.Simple);\r\n }\r\n\r\n\r\n public destroy(): void {\r\n }\r\n}\r\n","import { Observable, Subject } from 'rxjs';\nimport { RowType } from '../enums/row-type.enum';\nimport { FsListReorderData } from '../interfaces';\nimport { ChildRow } from './row/child-row';\nimport { GroupFooterRow } from './row/group-footer-row';\nimport { GroupRow } from './row/group-row';\nimport { SimpleRow } from './row/simple-row';\n\nexport class Row {\n\n private _row: (SimpleRow | ChildRow | GroupRow);\n\n private _actionsUpdate$ = new Subject();\n\n constructor(\n data: any = {},\n rowType: RowType = RowType.Simple,\n { parent, initialExpand }: { parent?: GroupRow, initialExpand?: boolean } = {},\n ) {\n switch (rowType) {\n case RowType.Simple: {\n this._row = new SimpleRow(data);\n } break;\n\n case RowType.Group: {\n this._row = new GroupRow(data, initialExpand);\n } break;\n\n case RowType.GroupChild: {\n this._row = new ChildRow(data, parent);\n } break;\n }\n }\n\n public get index(): number {\n return this._row.index;\n }\n\n public get actionsUpdate$(): Observable<any> {\n return this._actionsUpdate$.asObservable();\n }\n\n public actionsUpdate(): void {\n return this._actionsUpdate$.next();\n }\n\n public set index(value: number) {\n this._row.index = value;\n }\n\n public get readyToSwap(): boolean {\n return this._row.readyToSwap;\n }\n\n public get visible(): boolean {\n return (this._row as ChildRow).visible;\n }\n\n public set readyToSwap(value: boolean) {\n this._row.readyToSwap = value;\n }\n\n public get data(): any {\n return this._row.data;\n }\n\n public get type(): RowType {\n return this._row.type;\n }\n\n public get isGroup(): boolean {\n return this._row instanceof GroupRow;\n }\n\n public get isGroupChild(): boolean {\n return this._row instanceof ChildRow;\n }\n\n public get isGroupFooter(): boolean {\n return this._row instanceof GroupFooterRow;\n }\n\n public get parent(): GroupRow {\n return (this._row as ChildRow).parent;\n }\n\n public get children(): (ChildRow | GroupFooterRow)[] {\n return (this._row as GroupRow).children;\n }\n\n public get expanded() {\n return (this._row as GroupRow).expanded;\n }\n\n public get expanded$() {\n return (this._row as GroupRow).expanded$;\n }\n\n public updateChildrenIndexes() {\n (this._row as GroupRow).updateChildrenIndexes();\n }\n\n public toggleRowExpandStatus() {\n (this._row as GroupRow).toggleRowExpandStatus();\n }\n\n public getReorderData(): FsListReorderData {\n return this._row.getReorderData();\n }\n\n public destroy() {\n this._row.destroy();\n }\n}\n","export enum ActionType {\r\n Basic = 'basic',\r\n Raised = 'raised',\r\n Icon = 'icon',\r\n Fab = 'fab',\r\n MiniFab = 'mini-fab'\r\n}\r\n","import { ActionType } from '../enums/button-type.enum';\nimport {\n FsListRowActionFile,\n FsListRowActionLink,\n FsListRowActionLinkFn,\n} from '../interfaces';\n\n\nexport class RowAction {\n\n public icon: string;\n public menu: boolean;\n public remove: { title: string; template: string };\n public className: string;\n public type: ActionType;\n public show: Function;\n public restore: boolean;\n public rowActions: RowAction[];\n public label = '';\n public routerLink: FsListRowActionLink;\n public classArray: string[] = [];\n public isShown = true;\n public click: Function;\n\n public fileConfig: FsListRowActionFile;\n\n private _linkFn: FsListRowActionLinkFn;\n private readonly _isGroup: boolean = false;\n\n constructor(config: any = {}) {\n this._init(config);\n\n if (Array.isArray(this.rowActions)) {\n this._isGroup = true;\n }\n }\n\n public get isGroup() {\n return this._isGroup;\n }\n\n public _init(value: any) {\n this.icon = value.icon;\n this.menu = value.menu ?? true;\n this.remove = value.remove;\n this.className = value.className;\n this.type = this.menu && this.icon && !this.label && !value.type ? ActionType.Icon : value.type ?? ActionType.Basic;\n this.show = value.show;\n this.restore = value.restore;\n this.rowActions = value.rowActions\n ?.map((action) => new RowAction(action));\n\n\n // Re-assign click function\n const clickFn = value.click;\n this.click = (row, event, index, rowActionsRef = null) => {\n return this._clickEvent(row, event, index, rowActionsRef, clickFn);\n };\n\n this._linkFn = value.link;\n\n if (value.file) {\n this.fileConfig = { ...value.file };\n\n if (this.fileConfig.select) {\n const selectFn = this.fileConfig.select;\n this.fileConfig.select = (selection, row, index) => {\n selectFn(selection, row, index);\n };\n }\n }\n\n this.label = value.label;\n\n if (this.className) {\n this.classArray = this.className.split(' ').reduce((acc, elem) => {\n acc.push(elem);\n\n return acc;\n }, []);\n }\n }\n\n public checkShowStatus(row, index) {\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(row, index);\n });\n\n const groupVisible = !this.show || this.show(row, index);\n\n this.isShown = groupVisible && this.rowActions.some((action) => action.isShown);\n } else if (this.show) {\n this.isShown = this.show(row, index);\n }\n }\n\n public updateLink(row) {\n if (!this.isShown) {\n return;\n }\n\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.updateLink(row);\n });\n } else if (this._linkFn) {\n this.routerLink = this._linkFn(row);\n\n if (this.routerLink && !this.routerLink.target) {\n this.routerLink.target = null;\n }\n }\n }\n\n private _clickEvent(row, event, index, rowActionsRef, clickFn) {\n // Stop event propagation for parent\n event.stopPropagation();\n\n // Close menu\n if (rowActionsRef) {\n rowActionsRef.closeMenu();\n }\n\n if (clickFn) {\n // Fire passed callback\n return clickFn(row, event, index);\n }\n }\n}\n","import { isString } from 'lodash-es';\n\nexport class StyleConfig {\n public colspan;\n public align: string; // Can't be used in tempaltes!\n public className: string | string[] = []; // Can't be used in tempaltes!\n\n public classesArray = []; // Can be used in tempaltes\n public classesString = '';\n\n constructor(config = {}) {\n this._init(config);\n }\n\n /**\n * Create static array of styles for using in templates\n */\n public updateClasesArray() {\n this.classesArray = [].concat(this.className, this.align);\n this.classesString = [].concat(this.className, this.align).join(' ');\n }\n\n /**\n * Prioritized merge for align options\n * @param prior1\n * @param prior2\n */\n public mergeAlignByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = this.align;\n\n if (targetValue === void 0) {\n if (prior1 && prior1.align !== void 0) {\n targetValue = prior1.align;\n } else if (prior2 && prior2.align !== void 0) {\n targetValue = prior2.align;\n } else {\n targetValue = 'left';\n }\n }\n\n this.align = targetValue;\n }\n\n /**\n * Prioritized merge for class options\n * @param prior1\n * @param prior2\n */\n public mergeClassByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = [];\n\n if (Array.isArray(this.className)) {\n targetValue = targetValue.concat(this.className);\n } else if (isString(this.className)) {\n targetValue.push(this.className);\n }\n\n if (prior1 && prior1.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior1.className);\n } else if (prior2 && prior2.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior2.className);\n }\n\n this.className = targetValue;\n }\n\n private _init(config) {\n this.colspan = config.colspan;\n this.align = config.align;\n this.className = config.className;\n }\n\n /**\n * Merge params into array\n * @param to\n * @param from\n */\n private mergeAnythingIntoArray(to: string[], from: string | string[]) {\n if (isString(from)) {\n to.push(from as string);\n } else if (Array.isArray(from)) {\n to.push(...from)\n }\n }\n}\n","import { QueryList, TemplateRef } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { isBoolean, isObject } from 'lodash-es';\n\nimport { FsListGroupExpandTriggerDirective } from '../directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListColumnConfig } from '../interfaces/column-config.interface';\n\nimport { ColumnAttributes } from './column-attributes';\nimport { StyleConfig } from './styleConfig.model';\n\nexport enum SortingDirection {\n asc = 'asc',\n desc = 'desc'\n}\n\nconst ALLOWED_DEFAULTS = [\n 'title',\n 'sortable',\n 'align',\n 'class',\n];\n\nexport class Column {\n\n public headerTemplate: TemplateRef<any>;\n public groupHeaderTemplate: TemplateRef<any>;\n public groupFooterTemplate: TemplateRef<any>;\n public cellTemplate: TemplateRef<any>;\n public footerTemplate: TemplateRef<any>;\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n public headerConfigs: StyleConfig = new StyleConfig();\n\n public groupHeaderConfigs: StyleConfig = new StyleConfig();\n public groupFooterConfigs: StyleConfig = new StyleConfig();\n\n public cellConfigs: StyleConfig = new StyleConfig();\n\n public footerConfigs: StyleConfig = new StyleConfig();\n\n public colStyles: StyleConfig;\n\n public headerColspanned = false;\n public groupHeaderColspanned = false;\n public groupFooterColspanned = false;\n public cellColspanned = false;\n public footerColspanned = false;\n\n private _attributes: ColumnAttributes;\n private _defaultDirection: 'asc' | 'desc';\n\n private _ordered = false;\n\n constructor(colConfig: FsListColumnConfig, colDefaults: any = false) {\n this._parseConfig(colConfig);\n\n this.colStyles = new StyleConfig({\n className: this._attributes.className,\n align: this._attributes.align,\n });\n\n this.mergeWithColumnDefaults(colDefaults);\n }\n\n public set title(value: string) {\n this._attributes.title = value;\n }\n\n public get title(): string {\n return this._attributes.title;\n }\n\n public get name(): string {\n return this._attributes.name;\n }\n\n public get customize(): boolean {\n return this._attributes.customize;\n }\n\n public get width(): string {\n return this._attributes.width;\n }\n\n public set sortable(value: boolean) {\n this._attributes.sortable = value;\n }\n\n public get sortable(): boolean {\n return this._attributes.sortable;\n }\n\n public get sortableDefault(): boolean {\n return this._attributes.sortableDefault;\n }\n\n public set sortingDirection(value: 'asc' | 'desc') {\n this._attributes.direction = value;\n }\n\n public get sortingDirection(): 'asc' | 'desc' {\n return this._attributes.direction;\n }\n\n public get sortingDirection$(): Observable<'asc' | 'desc'> {\n return this._attributes.direction$;\n }\n\n public get visible(): boolean {\n return this._attributes.visible;\n }\n\n public get visible$(): Observable<boolean> {\n return this._attributes.visible$;\n }\n\n public get direction() {\n return (this.sortingDirection === SortingDirection.asc) ? 'asc' : 'desc';\n }\n\n public get fullNameDirection() {\n return (this.sortingDirection === SortingDirection.asc) ? 'Ascending' : 'Descending';\n }\n\n public get ordered() {\n return this._ordered;\n }\n\n public set ordered(value) {\n if (value && this._ordered !== value) {\n this.sortingDirection = this._defaultDirection ?? SortingDirection.asc;\n }\n\n this._ordered = value;\n }\n\n /**\n * Merge with defaults with existing config\n *\n * @param defaults\n */\n public mergeWithColumnDefaults(defaults) {\n if (!isObject(defaults)) {\n defaults = {};\n }\n\n ALLOWED_DEFAULTS.forEach((key) => {\n switch (key) {\n case 'title': {\n this.title = this.title || defaults.title;\n } break;\n\n case 'sortable': {\n if (isBoolean(defaults.sortable)) {\n if (this.sortable === void 0) {\n this.sortable = defaults.sortable;\n }\n }\n } break;\n\n case 'class': {\n this.headerConfigs.mergeClassByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeClassByPriority(this.colStyles, defaults.footer);\n } break;\n\n case 'align': {\n this.headerConfigs.mergeAlignByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeAlignByPriority(this.colStyles, defaults.footer);\n } break;\n }\n });\n\n this.headerConfigs.updateClasesArray();\n this.groupHeaderConfigs.updateClasesArray();\n this.groupFooterConfigs.updateClasesArray();\n this.cellConfigs.updateClasesArray();\n this.footerConfigs.updateClasesArray();\n }\n\n /**\n * Change sorting direction\n */\n public changeDirection() {\n this.sortingDirection = this.sortingDirection === SortingDirection.asc ? SortingDirection.desc : SortingDirection.asc;\n }\n\n public updateVisibility(value: boolean) {\n this._attributes.visible = value;\n }\n\n private _parseConfig(config: FsListColumnConfig) {\n this._attributes = config.attributes;\n\n this.headerTemplate = config.headerTemplate;\n this.groupHeaderTemplate = config.groupHeaderTemplate;\n this.groupFooterTemplate = config.groupFooterTemplate;\n this.cellTemplate = config.cellTemplate;\n this.footerTemplate = config.footerTemplate;\n this.headerConfigs = new StyleConfig(config.headerConfigs);\n this.groupHeaderConfigs = new StyleConfig(config.groupHeaderConfigs);\n this.groupFooterConfigs = new StyleConfig(config.groupFooterConfigs);\n this.cellConfigs = new StyleConfig(config.cellConfigs);\n this.footerConfigs = new StyleConfig(config.footerConfigs);\n this.expandTrigger = config.expandTrigger;\n this._defaultDirection = config.attributes.direction;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, DoCheck,\n HostBinding,\n Input, OnChanges, OnDestroy,\n OnInit, SimpleChanges,\n TemplateRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Column } from '../../../../models/column.model';\n\n\n@Component({\n selector: '[fs-cell]',\n templateUrl: './cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsCellComponent implements OnInit, OnChanges, DoCheck, OnDestroy {\n\n @HostBinding('class.fs-list-col') public isColl = true;\n\n @HostBinding('attr.role') public role = 'gridcell';\n\n @Input() public column: Column;\n @Input() public row: any; // tmp\n @Input() public rowIndex: number;\n\n public cellContext: any = {};\n public cellTemplate: TemplateRef<any>;\n\n private _destroy$ = new Subject<void>();\n\n public ngOnInit() {\n this._listenGroupOpen();\n }\n\n public ngDoCheck() {\n // TODO fixme remove or improve\n if (this.row) {\n this.cellContext.groupIndex = this.row.index;\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.rowIndex?.currentValue !== changes.rowIndex?.previousValue) {\n this.cellContext.index = this.rowIndex;\n this.cellContext.groupIndex = this.row.index;\n }\n\n if (changes.column?.currentValue !== changes.column?.previousValue) {\n this._initCellContext();\n this._initCellTemplate();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initCellContext() {\n this.cellContext.index = this.rowIndex;\n\n if (this.row) {\n if (this.row.isGroup) {\n this.cellContext.groupIndex = this.row.index;\n } else if (this.row.isChild || this.row.isGroupFooter) {\n this.cellContext.groupIndex = this.row.index;\n this.cellContext.groupRow = this.row.parent.data;\n this.cellContext.group = this.row.parent.data;\n }\n\n if (this.row.isGroup) {\n this.cellContext.group = this.row.data;\n this.cellContext.groupChildren = this.row.children\n .map((child) => child.data);\n } else if (this.row.isGroupFooter) {\n this.cellContext.group = this.row.parent.data;\n this.cellContext.groupIndex = this.row.index;\n this.cellContext.groupChildren = this.row.parent.children\n .map((child) => child.data);\n }\n }\n\n this.cellContext.column = this.column;\n if (this.row) {\n this.cellContext.$implicit = this.row.data;\n this.cellContext.row = this.row.data;\n this.cellContext.value = this.row.data[this.column.name];\n this.cellContext.expanded = this.row.expanded;\n }\n }\n\n private _initCellTemplate() {\n if (this.row?.isGroup) {\n this.cellTemplate = this.column.groupHeaderTemplate || this.column.cellTemplate;\n } else if (this.row?.isGroupFooter) {\n this.cellTemplate = this.column.groupFooterTemplate || this.column.cellTemplate;\n } else {\n this.cellTemplate = this.column.cellTemplate;\n }\n }\n\n private _listenGroupOpen() {\n if (this.row && this.row.isGroup) {\n this.row.expanded$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((status) => {\n this.cellContext.expanded = status;\n });\n }\n }\n}\n","<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { FsFile } from '@firestitch/file';\n\nimport { RowAction } from '../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-inline-action',\n templateUrl: './inline-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowInlineActionComponent {\n\n @Input()\n public action: RowAction;\n\n @Output()\n public clicked = new EventEmitter();\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public actionClick(event) {\n this.clicked.emit(event);\n }\n\n public fileSelected(event): void {\n this.fileSelect.emit(event);\n }\n}\n","<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-container>\n\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Row } from '../models/row';\n\n\n\n@Pipe({ name: 'actionLabel' })\nexport class ActionLabelPipe implements PipeTransform {\n public transform(label, row: Row) {\n if (typeof label === 'function') {\n return label(row.data);\n }\n\n return label;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, EventEmitter,\n Input, Output,\n} from '@angular/core';\n\nimport { FsMenuComponent } from '@firestitch/menu';\n\nimport { FsListRowActionFile } from '../../../../interfaces/listconfig.interface';\nimport { Row } from '../../../../models/row';\n\n\n@Component({\n selector: 'fs-list-row-menu-action',\n templateUrl: './menu-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowMenuActionComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public icon: string;\n\n @Input()\n public label: string;\n\n @Input()\n public file: FsListRowActionFile;\n\n @Output()\n public fileSelect = new EventEmitter();\n\n @Output()\n public fileError = new EventEmitter();\n\n constructor(\n private _menu: FsMenuComponent,\n ) { }\n\n public selectFile(event): void {\n this.fileSelect.emit(event);\n this.closeMenu();\n }\n\n public errorFile(event): void {\n this.fileError.emit(event);\n this.closeMenu();\n }\n\n public closeMenu(): void {\n this._menu.closeMenu();\n }\n}\n","<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n} from '@angular/core';\n\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\n\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowActionsComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public index: number;\n\n @Input()\n public restoreMode = false;\n\n @Input()\n public rowActions: RowAction[] = [];\n\n @Input()\n public rowRemoved: EventEmitter<any>;\n\n @Input()\n public menuRowActions: RowAction[] = [];\n\n @Input()\n public inlineRowActions: RowAction[] = [];\n\n @Input()\n public restoreAction: RowAction;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _prompt: FsPrompt,\n ) { }\n\n public actionClick(action: RowAction, row: any, event: any, menuRef?) {\n if (action.remove) {\n if (typeof action.remove === 'boolean') {\n this._removeAction(action, row.data, event, this.index);\n } else {\n this._prompt.confirm({\n title: action.remove.title,\n template: action.remove.template,\n autofocus: true,\n })\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._removeAction(action, row.data, event, this.index);\n });\n }\n } else {\n action.click(row.data, event, this.index, menuRef);\n }\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Emit that some row must be removed\n *\n * @param action\n * @param row\n * @param event\n * @param index\n */\n private _removeAction(action, row, event, index) {\n const removeObservable = action.click(row, event, index);\n\n if (removeObservable && removeObservable instanceof Observable) {\n removeObservable\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.rowRemoved.emit(row);\n });\n } else {\n this.rowRemoved.emit(row);\n }\n }\n}\n","<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action \n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu \n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template \n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template \n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template \n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChildren,\n} from '@angular/core';\n\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../../classes/reorder-controller';\nimport { SelectionController } from '../../../classes/selection-controller';\nimport { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';\nimport { FsListRowClassOptions } from '../../../interfaces';\nimport { Column } from '../../../models/column.model';\nimport { Row } from '../../../models/row';\nimport { RowAction } from '../../../models/row-action.model';\n\n\n@Component({\n selector: '[fs-list-row]',\n templateUrl: './row.component.html',\n styleUrls: ['./row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsRowComponent implements OnInit, DoCheck, OnDestroy {\n\n @HostBinding('attr.role')\n public role = 'row';\n\n @Input() public row: Row;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public hasRowActions = false;\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public restoreMode = false;\n @Input() public rowIndex: number;\n @Input() public columns: Column[];\n @Input() public selection: SelectionController;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n\n @Input()\n @HostBinding('class.drag-row')\n public reorderEnabled: boolean;\n\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n\n @ViewChildren('td')\n public cellRefs;\n\n public readonly ReorderPosition = ReorderPosition;\n public readonly ReorderStrategy = ReorderStrategy;\n public rowActions: RowAction[] = [];\n public menuRowActions: RowAction[] = [];\n public inlineRowActions: RowAction[] = [];\n public restoreAction: RowAction;\n public selected = false;\n public indeterminateSelected: boolean | 'indeterminate' = false;\n\n private _rowDiffer: KeyValueDiffer<any, any>;\n private _eventListeners = [];\n private _destroy$ = new Subject();\n\n constructor(\n public el: ElementRef,\n private _cdRef: ChangeDetectorRef,\n private _differs: KeyValueDiffers,\n private _renderer: Renderer2,\n private _draggableList: FsListDraggableListDirective,\n ) {\n this._rowDiffer = _differs.find({}).create();\n }\n\n public get isGroupRow(): boolean {\n return this.row.isGroup;\n }\n\n public get isGroupChildRow(): boolean {\n return this.row.isGroupChild;\n }\n\n public get isGroupFooterRow(): boolean {\n return this.row.isGroupFooter;\n }\n\n public get isDragDisabled(): boolean {\n return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;\n }\n\n @HostBinding('class.multiple-selection')\n public get isMultipleSelection() {\n const multiple = this.reorderMultiple;\n\n return multiple && this.selected;\n }\n\n @HostBinding('class')\n public get rowCssClass() {\n let classes = ['fs-list-row'];\n\n if (this.rowIndex % 2 !== 0) {\n classes.push('fs-list-row-odd');\n }\n if (this.rowIndex % 2 === 0) {\n classes.push('fs-list-row-even');\n }\n\n if (this.row?.isGroup) {\n classes.push('fs-list-row-group');\n } else if ((this.row as any)?.isChild) { // TODO fix isChild & all\n classes.push('fs-list-row-group-child');\n } else if (this.row?.isGroupFooter) {\n classes.push('fs-list-row-group-footer');\n } else {\n classes.push('fs-list-row-body');\n }\n\n if (this.rowClass) {\n classes = [\n ...classes,\n ...this._getRowClasses(this.rowClass),\n ];\n }\n\n return classes.join(' ');\n }\n\n public get dragCellVisible(): boolean {\n return !this.row.isGroup;\n }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n this._initRowEvents();\n this._initSelection();\n\n if (this.row) {\n this._initRowActionsUpdate();\n }\n\n if (this.row && this.row.isGroup) {\n if (this.row && this.row.isGroup && this.groupActionsRaw) {\n this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n } else if (this.rowActionsRaw) {\n this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n }\n\n public ngDoCheck() {\n if (this._rowDiffer.diff(this.row)) {\n this.updateRowActions();\n }\n }\n\n public updateRowActions() {\n if (this.rowActions) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(this.row.data, this.rowIndex);\n action.updateLink(this.row.data);\n });\n this._filterActionsByCategories();\n }\n\n this._cdRef.markForCheck();\n }\n\n public ngOnDestroy() {\n this._eventListeners.forEach((listener) => {\n listener();\n });\n\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Select row by checkbox\n *\n * @param event\n */\n public selectRow(event: MatCheckboxChange) {\n this.selection.rowSelectionChange(this.row, event.checked);\n this._cdRef.markForCheck();\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n public dragStart(event) {\n if (this.reorderEnabled && !this.isDragDisabled) {\n event.preventDefault();\n event.stopPropagation();\n\n this._draggableList.dragStart(this.el.nativeElement);\n }\n }\n\n /**\n * Set event listeners for row\n */\n private _initRowEvents() {\n Object.keys(this.rowEvents || {})\n .forEach((event) => {\n if (this.rowEvents.hasOwnProperty(event)) {\n const listener = this._renderer\n .listen(this.el.nativeElement, event, (evt) => {\n if (!this.reorderEnabled) {\n this.rowEvents[event]({\n event: evt,\n row: this.row.data,\n rowIndex: this.rowIndex,\n });\n }\n });\n\n this._eventListeners.push(listener);\n }\n });\n }\n \n private _initRowActionsUpdate() : void {\n if(this.row.actionsUpdate$) {\n this.row.actionsUpdate$\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n this.updateRowActions();\n });\n }\n }\n\n private _getRowClasses(rowClass): string[] {\n const classes = [];\n const options: FsListRowClassOptions = {\n index: this.rowIndex,\n type: this.row.type,\n };\n\n if (this.row.isGroup) {\n options.groupIndex = this.row.index;\n } else if ((this.row as any).isChild || this.row.isGroupFooter) { // TODO fix isChild & all\n options.groupIndex = this.row.parent.index;\n }\n\n const resultClass = rowClass(this.row.data, options);\n if(resultClass) {\n if (typeof resultClass === 'string') {\n classes.push(resultClass);\n } else if (typeof resultClass === 'object') {\n const keys = Object.keys(resultClass);\n for (const k of keys) {\n if (resultClass[k] === true) {\n classes.push(k);\n }\n }\n }\n }\n\n return classes;\n }\n\n /**\n * Subscribe to selection change events\n */\n private _initSelection() {\n if (this.selection) {\n this.selected = this.row && this.selection.isRowSelected(this.row.data);\n\n this.selection.selectionChange$\n .pipe(\n // // Would like to respond only when checkbox on top is changed\n // // or was clicked \"Select All\" in selection dialog\n // filter(({type}) => {\n // return type === SelectionChangeType.AllVisibleSelectionChange\n // || type === SelectionChangeType.SelectedAll;\n // }),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.selected = this.row && this.selection.isRowSelected(this.row.data);\n\n if (this.row?.isGroup) {\n const groupSelection = this.selection.isGroupSelected(this.row);\n\n if (groupSelection === 'indeterminate') {\n this.selected = true;\n this.indeterminateSelected = true;\n } else {\n this.selected = groupSelection;\n this.indeterminateSelected = false;\n }\n }\n\n this._cdRef.markForCheck();\n });\n }\n }\n\n private _filterActionsByCategories() {\n this.menuRowActions = [];\n this.inlineRowActions = [];\n this.restoreAction = null;\n\n this.rowActions.forEach((action) => {\n\n if (!action.isShown) {\n return;\n }\n\n if (action.menu && !action.restore) {\n this.menuRowActions.push(action);\n } else if (!action.menu && !action.restore) {\n this.inlineRowActions.push(action);\n } else if (action.restore) {\n this.restoreAction = action;\n }\n });\n }\n}\n","<!-- Drag -->\n<ng-container *ngIf=\"leftDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection && !(selection.disabled$ | async)\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <ng-container *ngIf=\"!row.isGroupFooter\">\n <mat-checkbox \n (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </ng-container>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(isGroupRow && !column.groupHeaderColspanned)\n || (isGroupFooterRow && !column.groupFooterColspanned)\n || (!isGroupRow && !isGroupFooterRow && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"rightDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col row-actions\">\n <ng-container *ngIf=\"!isGroupFooterRow\">\n <fs-list-row-actions\n [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n </ng-container>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible && !isGroupFooterRow; else emptyCell\">\n <td \n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { Row } from '../../models/row';\nimport { FsListDraggableListDirective } from '../draggable-list/draggable-list.directive';\n\n\n@Directive({\n selector: '[fsListDraggableRow]',\n})\nexport class FsListDraggableRowDirective implements OnInit, OnDestroy {\n\n @Input()\n public row: Row;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _el: ElementRef,\n private _renderer: Renderer2,\n private _reorderController: ReorderController,\n private _draggableList: FsListDraggableListDirective,\n ) { }\n\n public get elRef(): ElementRef {\n return this._el;\n }\n\n public ngOnInit(): void {\n if (this._reorderController.moveDropCallback) {\n this._listenDragEvents();\n }\n this._draggableList.addDraggableDirective(this);\n }\n\n public ngOnDestroy(): void {\n this._draggableList.removeDraggableDirective(this);\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public dragHide(): void {\n this._el.nativeElement.classList.add('drag-hidden');\n }\n\n private _listenDragEvents() {\n this._draggableList\n .dragStart$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._markReadyToSwapRows();\n });\n\n this._draggableList\n .dragEnd$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._unmarkRows();\n });\n }\n\n private _markReadyToSwapRows() {\n const currentEl = this.row;\n const targetEl = this._draggableList.draggableItem;\n\n this.row.readyToSwap = this._reorderController.moveDropCallback(\n {\n row1: currentEl?.data,\n row2: targetEl?.data,\n group1: currentEl?.parent?.data,\n group2: targetEl?.parent?.data,\n },\n );\n\n if (!this.row.readyToSwap) {\n this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n\n private _unmarkRows() {\n if (!this.row.readyToSwap) {\n this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\nimport { Row } from '../../models/row';\n\nimport { FsRowComponent } from './row/row.component';\n\n\n@Component({\n selector: '[fs-list-body]',\n templateUrl: './body.component.html',\n styleUrls: ['./body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsBodyComponent {\n\n @Input() public rows: Row[];\n @Input() public columns: Column[] = [];\n @Input() public hasFooter = false;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public hasRowActions = false;\n @Input() public selection: SelectionController;\n @Input() public restoreMode = false;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n @ContentChild(FsRowComponent, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n}\n","<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy } from '@angular/core';\r\n\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n templateUrl: './customize-cols.component.html',\r\n styleUrls: ['./customize-cols.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomizeColsDialogComponent implements OnDestroy {\r\n\r\n public columns = [];\r\n public saveDisabled = false;\r\n private _changeFn;\r\n private _destroy$ = new Subject();\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) data,\r\n private _dialog: MatDialogRef<any>,\r\n ) {\r\n this.columns = data.columns;\r\n this._changeFn = data.changeFn;\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public visibilityChange(event, column) {\r\n column.show = event.checked;\r\n }\r\n\r\n public save() {\r\n const data = this.columns\r\n .filter((column) => !!column.name)\r\n .map((column) => {\r\n return {\r\n name: column.name,\r\n show: column.show,\r\n };\r\n });\r\n\r\n this.saveDisabled = true;\r\n const changed = this._changeFn(data);\r\n\r\n if (changed instanceof Observable) {\r\n changed\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe({\r\n next: () => {\r\n this._dialog.close(this.columns);\r\n },\r\n error: () => {\r\n this.saveDisabled = false;\r\n },\r\n });\r\n } else {\r\n this._dialog.close(this.columns);\r\n }\r\n }\r\n\r\n public cancel() {\r\n this._dialog.close();\r\n }\r\n}\r\n","<h1 matDialogTitle>Customize Columns</h1>\r\n<mat-dialog-content>\r\n <div *ngFor=\"let column of columns\">\r\n <mat-checkbox [checked]=\"column.show\" (change)=\"visibilityChange($event, column)\" [disabled]=\"column.disabled\">\r\n <ng-container *ngIf=\"!column.title; else titleLable\">\r\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\r\n </ng-container>\r\n <ng-template #titleLable>\r\n {{ column.title }}\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"column.tooltip\">\r\n <mat-icon [matTooltip]=\"column.tooltip\">\r\n help\r\n </mat-icon>\r\n </ng-container>\r\n </mat-checkbox>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"saveDisabled\">Save</button>\r\n <button type=\"button\" mat-button (click)=\"cancel()\">Cancel</button>\r\n</mat-dialog-actions>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-list-footer-cell]',\r\n templateUrl: './footer-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsFooterCellComponent extends FsCellComponent {\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #cell let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n KeyValueDiffers,\n Renderer2,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';\nimport { FsRowComponent } from '../../body/row/row.component';\n\n\n@Component({\n selector: '[fs-list-footer-row]',\n templateUrl: './footer-row.component.html',\n styleUrls: ['./footer-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFooterRowComponent extends FsRowComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n constructor(\n el: ElementRef,\n cdRef: ChangeDetectorRef,\n differs: KeyValueDiffers,\n renderer: Renderer2,\n ) {\n super(el, cdRef, differs, renderer, null);\n }\n\n}\n","<td *ngIf=\"leftDragDropEnabled\" class=\"fs-list-col drag-col\"></td>\n\n<td *ngIf=\"selection\" class=\"fs-list-col fs-list-col-selection\"></td>\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn\">\n <td \n *ngIf=\"!column.footerColspanned\"\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n</ng-container>\n\n<!-- Drag -->\n<td *ngIf=\"rightDragDropEnabled\" class=\"fs-list-col row-actions\"></td>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col drag-col\"></td>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\n\n@Component({\n selector: '[fs-list-footer]',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFooterComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public columns: Column[] = [];\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n}\n","<tr \n fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\">\n</tr>\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DoCheck,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n} from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-head-cell]',\r\n templateUrl: './head-cell.component.html',\r\n styleUrls: ['./head-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsHeadCellComponent extends FsCellComponent implements DoCheck {\r\n\r\n public cellContext: any = {};\r\n\r\n private _columnDiffer: KeyValueDiffer<string, any>;\r\n\r\n constructor(\r\n private _cdRef: ChangeDetectorRef,\r\n private _differs: KeyValueDiffers,\r\n ) {\r\n super();\r\n this._columnDiffer = this._differs.find({}).create();\r\n }\r\n\r\n public ngDoCheck() {\r\n if (this._columnDiffer.diff(this.column)) {\r\n this._cdRef.markForCheck();\r\n }\r\n }\r\n\r\n public initCellContext() {\r\n this.cellContext.value = this.column.title;\r\n }\r\n}\r\n","<div class=\"wrap\">\n <span class=\"title\">\n <ng-template [ngIf]=\"!column.headerTemplate\">{{column.title}}</ng-template>\n <ng-template\n [ngIf]=\"column.headerTemplate\"\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n </span>\n <div class=\"direction\" *ngIf=\"column.ordered\" [ngSwitch]=\"column.sortingDirection$ | async\">\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_downward\" *ngSwitchCase=\"'asc'\">arrow_downward</mat-icon>\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_upward\" *ngSwitchCase=\"'desc'\">arrow_upward</mat-icon>\n </div>\n</div>\n","import { BehaviorSubject } from 'rxjs';\n\nexport class ColumnAsyncAttribute<T> extends BehaviorSubject<T> {\n\n constructor(value: T) {\n super(Object.freeze(value));\n }\n\n public next(value: T): void {\n const newValue = value;\n const oldValue = this.getValue();\n\n if (newValue !== oldValue) {\n super.next(Object.freeze(value));\n }\n }\n}\n","import { Observable } from 'rxjs';\n\nimport { ColumnAsyncAttribute } from './column-async-attribute';\n\nexport class ColumnAttributes {\n\n private _title: string;\n private _name: string;\n private _customize = true;\n private _sortable: boolean;\n private _sortableDefault: boolean;\n private _direction$ = new ColumnAsyncAttribute(null);\n private _align: string;\n private _width: string;\n private _className: string | string[];\n private _visible$ = new ColumnAsyncAttribute(true);\n\n constructor(attrs: { [key: string]: any } = {}) {\n this._init(attrs);\n }\n\n // title\n public set title(value: string) {\n this._title = value;\n }\n\n public get title(): string {\n return this._title;\n }\n\n // name\n public set name(value: string) {\n this._name = value;\n }\n\n public get name(): string {\n return this._name;\n }\n\n // customize\n public set customize(value: boolean) {\n this._customize = value;\n }\n\n public get customize(): boolean {\n return this._customize;\n }\n\n // sortable\n public set sortable(value: boolean) {\n this._sortable = value;\n }\n\n public get sortable(): boolean {\n return this._sortable;\n }\n\n // sortableDefault\n public set sortableDefault(value: boolean) {\n this._sortableDefault = value;\n\n if (this.sortableDefault) {\n this.sortable = true;\n }\n }\n\n public get sortableDefault(): boolean {\n return this._sortableDefault;\n }\n\n // direction\n public set direction(value: 'asc' | 'desc') {\n this.sortable = true;\n \n this._direction$.next(value);\n }\n\n public get direction(): 'asc' | 'desc' {\n return this._direction$.value;\n }\n\n public get direction$(): Observable<'asc' | 'desc'> {\n return this._direction$.asObservable();\n }\n\n // align\n public set align(value: string) {\n this._align = value;\n }\n\n public get align(): string {\n return this._align;\n }\n\n // width\n public set width(value: string) {\n this._width = value;\n }\n\n public get width(): string {\n return this._width;\n }\n\n // className\n public set className(value: string | string[]) {\n this._className = value;\n }\n\n public get className(): string | string[] {\n return this._className;\n }\n\n // visibility\n public set visible(value: boolean) {\n this._visible$.next(value);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n private _init(attrs: { [key: string]: any }) {\n Object.keys(attrs)\n .forEach((key) => {\n switch (key) {\n case 'title': { this.title = attrs[key]; } break;\n case 'name': { this.name = attrs[key]; } break;\n case 'align': { this.align = attrs[key]; } break;\n case 'direction': { this.direction = attrs[key]; } break;\n case 'sortable': { this.sortable = attrs[key]; } break;\n case 'show': { this.visible = attrs[key]; } break;\n case 'visible': { this.visible = attrs[key]; } break;\n }\n });\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsListSortConfig, SortingChangeEvent } from '../interfaces';\nimport { ColumnAttributes } from '../models/column-attributes';\nimport { Column, SortingDirection } from '../models/column.model';\n\nimport { List } from './list-controller';\n\n\nexport class SortingController {\n public config: List;\n\n public sortingColumns: Column[] = [];\n public fakeSortingColumns: Column[] = [];\n public sortingColumn: Column;\n\n private _initialized = new BehaviorSubject<boolean>(false);\n private _sortingChanged$ = new Subject<SortingChangeEvent>();\n private _onDestroy = new Subject();\n\n constructor() {}\n\n public get sortingChanged$(): Observable<SortingChangeEvent> {\n return this._sortingChanged$.pipe(takeUntil(this._onDestroy));\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized.pipe(takeUntil(this._onDestroy));\n }\n\n public get value(): FsListSortConfig | undefined {\n if (this.sortingColumn) {\n return {\n value: this.sortingColumn.name,\n direction: this.sortingColumn.direction,\n };\n }\n\n return undefined;\n }\n\n public get initialization(): boolean {\n return !this._initialized.getValue();\n }\n\n public get isDefined(): boolean {\n return !!this.sortingColumn;\n }\n\n private set _initialization(value: boolean) {\n this._initialized.next(!value);\n }\n\n public addSortableColumn(column: Column) {\n this.sortingColumns.push(column);\n }\n\n public clearSortableColumns(): void {\n this.sortingColumns = [];\n }\n\n /**\n * Set Sortable Direction\n *\n * @param direction\n */\n public sortDirection(direction) {\n if (this.sortingColumn && this.sortingColumn.sortingDirection !== direction) {\n this._setSortingDirection(direction);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Sort By\n *\n * @param column\n */\n public sortBy(column: Column) {\n if (column.sortable) {\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Same as sortBy, but need only column name as parameter for sort\n *\n * @param name\n */\n public sortByColumnWithName(name: string) {\n const column = this.getColumn(name);\n\n if (!column) {\n return;\n }\n\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n\n /**\n * Init fake columns for sorting\n *\n * @param columns\n */\n public initFakeColumns(columns) {\n columns.forEach((column) => {\n const attributes = new ColumnAttributes({\n title: column.name,\n name: column.value,\n sortable: true,\n direction: column.direction,\n });\n\n const fakeColumn = new Column({\n attributes,\n });\n\n this.fakeSortingColumns.push(fakeColumn);\n });\n }\n\n /**\n * Set initial sorting\n *\n * @param sort\n */\n public initialSortBy(sort: FsListSortConfig) {\n this._initialization = true;\n\n if (!sort) {\n this._trySortByDefaultSortableColumn();\n\n if (!this.sortingColumn) {\n this.sortByFirstSortbale();\n }\n\n this._initialization = false;\n\n return;\n }\n\n if (!this.getColumn(sort.value)) {\n this.sortByFirstSortbale();\n\n console.warn(`\n Not possible to do initial sort by \"${sort.value}\" column.\n Column with name \"${sort.value}\" does not exists.\n Check your lister configuration.\n `);\n } else {\n this.sortByColumnWithName(sort.value);\n\n const direction = (sort.direction === undefined || sort.direction === 'asc')\n ? SortingDirection.asc\n : SortingDirection.desc;\n this._setSortingDirection(direction);\n }\n\n this._initialization = false;\n }\n\n /**\n * Sort by first of available sorting columns\n */\n public sortByFirstSortbale() {\n const column =\n this.sortingColumns.find((col) => col.sortable);\n\n if (!column) {\n return;\n }\n\n this.sortBy(column);\n this.sortDirection(column.direction || SortingDirection.asc);\n }\n\n public getColumn(name: string): Column {\n return [...this.sortingColumns, ...this.fakeSortingColumns]\n .find((col) => col.name === name && col.sortable);\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n private _setSortingColumn(column: Column) {\n // Can't do sort by non sortable column\n if (!column.sortable) {\n return false;\n }\n\n // Column was ordered before\n if (column.ordered) {\n column.changeDirection();\n } else {\n [...this.fakeSortingColumns, ...this.sortingColumns]\n .filter((col) => col.ordered)\n .forEach((col) => col.ordered = false);\n\n column.ordered = true;\n }\n\n this.sortingColumn = column;\n }\n\n private _setSortingDirection(direction) {\n this.sortingColumn.sortingDirection = direction;\n }\n\n private _notifySortChanged() {\n if (this.initialization) {\n return;\n }\n\n this._sortingChanged$.next({\n sortBy: this.sortingColumn.name,\n sortDirection: this.sortingColumn.direction,\n });\n }\n\n private _trySortByDefaultSortableColumn(): void {\n const sortableDefault = this.sortingColumns\n .find((column) => column.sortableDefault);\n\n if (sortableDefault) {\n this.sortByColumnWithName(sortableDefault.name);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../classes/reorder-controller';\nimport { SelectionChangeType, SelectionController } from '../../classes/selection-controller';\nimport { SortingController } from '../../classes/sorting-controller';\nimport { Column } from '../../models/column.model';\n\n\n@Component({\n selector: '[fs-list-head]',\n templateUrl: './head.component.html',\n styleUrls: ['./head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsHeadComponent implements OnInit, OnDestroy {\n\n @Input() public sorting: SortingController;\n @Input() public columns: Column[];\n @Input() public hasRowActions: boolean;\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n public selectedAll = false;\n public readonly ReorderStrategyEnum = ReorderStrategy;\n\n private _destroy$ = new Subject();\n\n constructor(private _cdRef: ChangeDetectorRef) { }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n this._initSorting();\n this._initSelection();\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * Select All Visible Rows\n *\n * @param event\n */\n public selectAll(event: MatCheckboxChange) {\n this.selection.selectAllVisibleRows(event.checked);\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Subscribe to sorting change\n */\n private _initSorting() {\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.detectChanges();\n });\n }\n\n /**\n * Subscribe to selection change\n */\n private _initSelection() {\n if (this.selection) {\n this.selection.selectionChange$\n .pipe(\n filter(\n ({ type }) => (\n type === SelectionChangeType.AllVisibleSelectionChange\n || type === SelectionChangeType.SelectedAll\n || type === SelectionChangeType.RowSelectionChange\n ),\n ),\n takeUntil(this._destroy$),\n )\n .subscribe(({ type, payload: status }) => {\n this.selectedAll = status;\n\n this._cdRef.markForCheck();\n });\n }\n }\n}\n","<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th \n fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n\n <!-- Drag -->\n <th *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n","export enum PageChangeType {\r\n Default = 0,\r\n LimitChanged = 1\r\n}\r\n","export enum FsListState {\r\n Idle,\r\n Load,\r\n Reload,\r\n Filter,\r\n Sort,\r\n PageChange,\r\n LoadMore,\r\n}\r\n","import { isNumber } from 'lodash-es';\nimport { BehaviorSubject, merge, Observable, Subject } from 'rxjs';\nimport { skip, takeUntil, tap } from 'rxjs/operators';\n\nimport { Column } from '../models/column.model';\nimport {\n FsListColumnChangeFn,\n FsListColumnConfig,\n FsListColumnDisabledFn,\n FsListColumnLoadFn,\n FsListColumnTitleFn,\n FsListColumnTooltipFn,\n} from '../interfaces/listconfig.interface';\n\n\nexport class ColumnsController {\n\n private _visibleColumns$ = new BehaviorSubject<Column[]>([]);\n private _visibleColumnsShared$ = this._visibleColumns$.pipe();\n private _theadClass = '';\n private _loadFn: FsListColumnLoadFn;\n private _changeFn: FsListColumnChangeFn;\n private _customizeFieldTitleFn: FsListColumnTitleFn;\n private _customizeFieldDisabledFn: FsListColumnDisabledFn;\n private _columnTooltipFn: FsListColumnTooltipFn;\n\n private _isConfigured = false;\n private _loadFnConfigured = false;\n private _changeFnConfigured = false;\n private _columnsFetched = false;\n private _hasHeader = false;\n private _hasFooter = false;\n private _columns: Column[] = [];\n private _defaultConfigs;\n\n private _columnsUpdated$ = new Subject<void>();\n private _destroy$ = new Subject<void>();\n\n constructor() {}\n\n public get columns() {\n return this._columns.slice();\n }\n\n public get visibleColumns(): Column[] {\n return this._visibleColumns$.getValue();\n }\n\n public get visibleColumns$(): Observable<Column[]> {\n return this._visibleColumnsShared$;\n }\n\n public get columnsForDialog() {\n const hasCustomTitle = !!this._customizeFieldTitleFn;\n const hasCustomDisabledStatus = !!this._customizeFieldDisabledFn;\n const hasCustomTooltip = !!this._columnTooltipFn;\n\n return this._columns\n .filter((column) => column.customize && !!column.name)\n .map((column) => {\n const title = hasCustomTitle\n ? this._customizeFieldTitleFn(column.name, column.title)\n : column.name;\n\n const disabled = hasCustomDisabledStatus\n ? this._customizeFieldDisabledFn(column.name)\n : false;\n\n const tooltip = hasCustomTooltip\n ? this._columnTooltipFn(column.name, column.visible, disabled)\n : void 0;\n\n return {\n template: column.headerTemplate,\n name: column.name,\n show: column.visible,\n title: title,\n disabled: disabled,\n tooltip: tooltip,\n }\n });\n }\n\n public get columnsFetched() {\n return this._columnsFetched;\n }\n\n public get hasHeader() {\n return this._hasHeader;\n }\n\n public get hasFooter() {\n return this._hasFooter;\n }\n\n public get theadClass() {\n return this._theadClass;\n }\n\n public get configured() {\n return this._isConfigured;\n }\n\n public get loadFnConfigured() {\n return this._loadFnConfigured;\n }\n\n public get changeFnConfigured() {\n return this._changeFnConfigured;\n }\n\n public get changeFn() {\n return this._changeFn;\n }\n\n public get visibleColumnsNames() {\n return this.visibleColumns\n .map((column) => column.name)\n .filter((name) => !!name);\n }\n\n public setDefaults(defaults) {\n this._defaultConfigs = defaults;\n }\n\n /**\n * Set data from list config\n * @param config\n */\n public initConfig(config: FsListColumnConfig) {\n if (config) {\n if (config.load) {\n this._loadFn = config.load;\n this._loadFnConfigured = true;\n }\n\n if (config.change) {\n this._changeFn = config.change;\n this._changeFnConfigured = true;\n }\n\n if (config.title) {\n this._customizeFieldTitleFn = config.title;\n }\n\n if (config.disabled) {\n this._customizeFieldDisabledFn = config.disabled;\n }\n\n if (config.tooltip) {\n this._columnTooltipFn = config.tooltip;\n }\n\n this._isConfigured = true;\n }\n }\n\n /**\n * Base initialization for columns\n * @param templates\n */\n public initializeColumns(templates) {\n this._columns = [];\n\n templates.forEach((column) => {\n const col = new Column(column, this._defaultConfigs);\n\n\n if (col.headerTemplate || col.title) {\n this._hasHeader = true;\n }\n if (col.footerTemplate) {\n this._hasFooter = true;\n }\n\n this._columns.push(col);\n });\n\n this._theadClass = this.hasHeader ? 'has-header' : '';\n\n this._updateColspans('headerConfigs', 'headerColspanned');\n this._updateColspans('groupHeaderConfigs', 'groupHeaderColspanned');\n this._updateColspans('groupFooterConfigs', 'groupFooterColspanned');\n this._updateColspans('cellConfigs', 'cellColspanned');\n this._updateColspans('footerConfigs', 'footerColspanned');\n\n this.updateVisibleColumns();\n this._listenColumnVisibilityUpdates();\n }\n\n /**\n * Load visiblity config for columns from remote\n */\n public loadRemoteColumnConfigs() {\n return this._loadFn()\n .pipe(\n takeUntil(this._destroy$),\n tap((columnConfigs) => {\n this._columnsFetched = true;\n this.updateVisibilityForCols(columnConfigs);\n })\n )\n }\n\n /**\n * Set visible columns based on current columns show status\n */\n public updateVisibleColumns() {\n this._visibleColumns$.next(\n this._columns.filter((column) => column.visible) || []\n );\n }\n\n /**\n * Update visibility based on passed config\n * @param columnsConfig\n */\n public updateVisibilityForCols(columnsConfig) {\n columnsConfig.forEach((columnConfig) => {\n const col = this._columns\n .find((column) => column.name === columnConfig.name);\n\n if (col) {\n col.updateVisibility(columnConfig.show);\n }\n });\n\n this.updateVisibleColumns();\n }\n\n public destroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._columnsUpdated$.complete();\n\n this._columns = void 0;\n this._visibleColumns$ = void 0;\n this._defaultConfigs = void 0;\n\n this._loadFn = void 0;\n this._changeFn = void 0;\n }\n\n private _listenColumnVisibilityUpdates() {\n this._columnsUpdated$.next();\n\n const columnsVisibility = this._columns.map((column) => {\n return column.visible$.pipe(skip(1))\n });\n\n merge(...columnsVisibility)\n .pipe(\n takeUntil(this._columnsUpdated$),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateVisibleColumns();\n })\n }\n\n private _updateColspans(config, updateFlag) {\n this._columns.forEach((col, index) => {\n\n if (col[config].colspan !== void 0) {\n const spanTo = index + +col[config].colspan;\n\n if (!isNumber(spanTo)) {\n return;\n }\n this._columns[index][updateFlag] = false;\n\n for (let i = index + 1; i < spanTo; i++) {\n if (this._columns[i]) {\n this._columns[i][updateFlag] = true;\n }\n }\n }\n })\n }\n\n}\n","import { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { isFunction, isObject } from 'lodash-es';\n\nimport { FsListState } from '../enums/state.enum';\nimport { RowType } from '../enums/row-type.enum';\nimport {\n FsListAbstractRow,\n FsListGroupConfig,\n FsListTrackByTargetRowFn\n} from '../interfaces/listconfig.interface';\nimport { GroupRow } from '../models/row/group-row';\nimport { ChildRow } from '../models/row/child-row';\nimport { Row } from '../models/row';\nimport { GroupFooterRow } from '../models/row/group-footer-row';\n\n\nexport class DataController {\n\n private readonly _visibleRows$ = new BehaviorSubject<Row[]>([]);\n private readonly _rowsRemoved$ = new Subject<Row[]>();\n private readonly _remoteRowsChange$ = new Subject<void>();\n\n private _store = new Map();\n private _rowsStack: Row[] = [];\n private _operation: FsListState;\n\n private _groupByFn: (row) => any[];\n private _footerRowFn: (\n row: { [key: string]: any },\n group: {\n [key: string]: any,\n children: {\n [key: string]: any\n }[],\n }\n ) => boolean;\n private _compareByFn: (group) => any;\n private _initialExpand = true;\n private _groupEnabled = false;\n\n private _infinityScrollEnabled: boolean;\n private _loadMoreEnabled: boolean;\n\n private _hasData = false;\n\n private readonly _destroy$ = new Subject<void>();\n\n constructor() {}\n\n get visibleRows$() {\n return this._visibleRows$;\n }\n\n get visibleRows() {\n return this._visibleRows$.getValue();\n }\n\n get visibleRowsData() {\n return this.visibleRows.map((row) => row.data);\n }\n\n get rowsStack() {\n return this._rowsStack.slice();\n }\n\n get groupEnabled() {\n return this._groupEnabled;\n }\n\n set groupEnabled(value: boolean) {\n this._groupEnabled = value;\n }\n\n get remoteRowsChange$() {\n return this._remoteRowsChange$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n get rowsRemoved$() {\n return this._rowsRemoved$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n get hasData() {\n return this._hasData;\n }\n\n get operation() {\n return this._operation;\n }\n\n set visibleRows(value: any[]) {\n this._visibleRows$.next(value);\n this._hasData = this.visibleRows.length > 0;\n }\n\n get visibleRowsCount() {\n return this.visibleRows.length;\n }\n\n get hasGroups() {\n return this._compareByFn && this._groupByFn;\n }\n\n get reorderData() {\n return this._rowsStack\n .map((row) => row.getReorderData());\n }\n\n public setGroupConfig(group: FsListGroupConfig) {\n if (group) {\n this._groupByFn = group.groupBy;\n this._compareByFn = group.compareBy;\n this._footerRowFn = group.footer || (() => false);\n this._initialExpand = group.initialExpand ?? true;\n\n // group mode enabled by default\n this._groupEnabled = (group.enabled !== void 0)\n ? group.enabled\n : true;\n }\n }\n\n public setAdditionalConfigs(configs: { scrollable: boolean, loadMoreEnabled: boolean }) {\n this._infinityScrollEnabled = configs.scrollable;\n this._loadMoreEnabled = configs.loadMoreEnabled;\n }\n\n /**\n * Rows what was received from fetch function\n * @param rows\n */\n public setRowsFromResponse(rows: any[]) {\n if (this._infinityScrollEnabled) {\n switch (this._operation) {\n case FsListState.Filter:\n case FsListState.Reload:\n case FsListState.Sort: {\n this._updateRowsStack(rows);\n } break;\n\n default: {\n this._extendRowsStack(rows);\n }\n }\n\n this._remoteRowsChange$.next();\n } else {\n if (\n this._operation === FsListState.LoadMore ||\n (this._operation === FsListState.PageChange && this._loadMoreEnabled)\n ) {\n this._extendRowsStack(rows);\n } else {\n this._updateRowsStack(rows);\n }\n }\n\n this._operation = FsListState.Idle;\n\n this._updateVisibleRows();\n }\n\n /**\n * Set current operation for list data flow\n * @param value\n */\n public setOperation(value: FsListState) {\n this._operation = value;\n }\n\n /**\n * Remove rows from visible\n */\n public clearRows() {\n this.visibleRows = [];\n }\n\n /**\n * Replace data for specified row\n * @param targetRow\n * @param trackBy\n */\n public replaceData(\n targetRow: FsListAbstractRow,\n trackBy?: FsListTrackByTargetRowFn\n ) {\n const rowIndex = this._rowsStack.findIndex((listRow) => {\n return trackBy(listRow.data, targetRow);\n });\n\n if (rowIndex > -1) {\n this._rowsStack[rowIndex] = new Row(\n targetRow,\n RowType.Simple,\n { initialExpand: this._initialExpand }\n );\n\n this._updateVisibleRows();\n\n return true;\n } else {\n return false;\n }\n\n }\n\n /**\n * Update data for specified row\n * @param rows\n * @param trackBy\n */\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n if (Array.isArray(rows)) {\n let updateSuccess = false;\n\n rows.forEach((item) => {\n if (this.updateRow(item, trackBy)) {\n updateSuccess = true;\n }\n });\n\n this._updateVisibleRows();\n\n return updateSuccess;\n } else {\n const updated = this.updateRow(rows, trackBy);\n\n this._updateVisibleRows();\n\n return updated;\n }\n }\n\n /**\n * Remove data for specified row\n * @param data\n */\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n const removedRows = [];\n\n const defaultTrackBy = (row, target) => {\n return row === target;\n };\n\n if (Array.isArray(data)) {\n //\n data.forEach((item) => {\n removedRows.push(...this.removeRow(item, defaultTrackBy));\n });\n } else if (isFunction(data)) {\n removedRows.push(...this.removeRow(null, (data as FsListTrackByTargetRowFn)));\n } else if (isObject(data)) {\n removedRows.push(...this.removeRow(data, defaultTrackBy));\n }\n\n if (removedRows.length > 0) {\n this._updateVisibleRows();\n\n this._rowsRemoved$.next(removedRows)\n }\n\n return !!removedRows.length;\n }\n\n public swapRows(row1, row2, selectedRows?: Row[], isMultipleDrag = false) {\n let tmpEl;\n const rowsStack = this._rowsStack;\n const row1GlobalIndex = rowsStack.indexOf(row1);\n const row2GlobalIndex = rowsStack.indexOf(row2);\n\n tmpEl = rowsStack[row1GlobalIndex];\n rowsStack[row1GlobalIndex] = rowsStack[row2GlobalIndex];\n rowsStack[row2GlobalIndex] = tmpEl;\n\n if (isMultipleDrag && Array.isArray(selectedRows)) {\n if (!selectedRows.includes(row1)) {\n selectedRows = [row1, ...selectedRows];\n }\n\n selectedRows\n .filter((selectedRow) => {\n return selectedRow !== row1;\n })\n .forEach((selectedRow) => {\n const idx = rowsStack.indexOf(selectedRow);\n rowsStack.splice(idx, 1);\n });\n\n const indexToInsertAfter = rowsStack.indexOf(tmpEl);\n\n rowsStack.splice(indexToInsertAfter, 1);\n\n selectedRows.forEach((selectedRow, offset) => {\n rowsStack.splice(indexToInsertAfter + offset, 0, selectedRow);\n });\n }\n\n this._rowsStack = [ ...rowsStack ];\n }\n\n public destroy() {\n this._destroyRowsStack();\n this._store.clear();\n\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public toggleRowGroup(rowData) {\n const row = this.visibleRows.find((visibleRow) => visibleRow.data === rowData );\n row.toggleRowExpandStatus();\n\n this._updateVisibleRows();\n }\n\n public finishReorder(): void {\n // TODO fixme remove or improve\n if (this.groupEnabled) {\n let group;\n this._rowsStack\n .forEach((row, index) => {\n if (row.isGroup && row !== group) {\n group = row;\n } else {\n row.index = index - this._rowsStack.indexOf(group) - 1;\n }\n });\n }\n\n this._updateVisibleRows();\n }\n\n private _updateRowsStack(rows) {\n this._destroyRowsStack();\n\n if (this.groupEnabled) {\n this._store.clear();\n this._rowsStack = [...this.groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return new Row(\n row,\n RowType.Simple,\n { initialExpand: this._initialExpand },\n );\n });\n this._rowsStack = [...rows];\n }\n }\n\n private _extendRowsStack(rows) {\n if (this.groupEnabled) {\n this._rowsStack = [...this.groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return new Row(\n row,\n RowType.Simple,\n { initialExpand: this._initialExpand },\n );\n });\n this._rowsStack = [...this._rowsStack, ...rows];\n }\n }\n\n private _destroyRowsStack() {\n this._rowsStack.forEach((row) => row.destroy());\n }\n\n private _updateVisibleRows() {\n this.visibleRows = this._rowsStack\n .filter((row, index) => {\n return (!(row as any).isChild && !row.isGroupFooter) || row.visible;\n });\n }\n\n private updateRow(\n targetRow: FsListAbstractRow,\n trackBy?: (listRow: FsListAbstractRow, targetRow?: FsListAbstractRow) => boolean) {\n\n if (trackBy === void 0) {\n trackBy = (row, target) => {\n return row === target;\n }\n }\n\n const targetIndex = this._rowsStack.findIndex((listRow) => trackBy(listRow.data, targetRow));\n\n if (targetIndex !== -1) {\n const updateTarget = this._rowsStack[targetIndex];\n const updatedData = Object.assign({}, updateTarget.data, targetRow);\n\n this._rowsStack[targetIndex] = new Row(\n updatedData,\n updateTarget.type,\n {\n parent: updateTarget.parent,\n initialExpand: updateTarget.expanded,\n }\n );\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Remove row from\n * @param targetRow\n * @param trackBy\n */\n private removeRow(\n targetRow: FsListAbstractRow | null,\n trackBy?: FsListTrackByTargetRowFn\n ) {\n\n const rows = this._rowsStack;\n const removedRows = [];\n\n rows.forEach((listRow, index) => {\n if (trackBy(listRow.data, targetRow)) {\n const removedRow = rows.splice(index, 1);\n\n removedRows.push(removedRow);\n }\n });\n\n return removedRows;\n }\n\n /**\n * Split existing rows by groups and store them for future use\n */\n private groupRowsBy(rows) {\n if (!this._groupByFn || !this._compareByFn) { return rows }\n\n let groupRows: GroupRow[] = [];\n const footerRows = new Map();\n\n rows.forEach((row) => {\n const mainGroup = this._groupByFn(row);\n const mainGroupKey = this._compareByFn(mainGroup);\n\n if (!this._store.has(mainGroupKey)) {\n const group = new GroupRow(\n mainGroup,\n this._initialExpand,\n );\n\n group.index = groupRows.length;\n groupRows.push(group);\n\n const childRow = new ChildRow(row, group);\n\n this._store.set(mainGroupKey, group);\n group.children.push(childRow);\n } else {\n const group = this._store.get(mainGroupKey);\n const childRow = new ChildRow(row, group);\n\n group.children.push(childRow);\n }\n });\n\n groupRows.forEach((groupRow) => {\n const footerIndex = groupRow.children\n .findIndex((row) => {\n return this._footerRowFn(row.data, {\n ...groupRow.data,\n children: groupRow.childrenData,\n });\n });\n\n if (footerIndex !== -1) {\n const footerRow = groupRow.children.splice(footerIndex, footerIndex + 1)[0];\n groupRow.children.push(new GroupFooterRow(footerRow.data, groupRow));\n }\n });\n\n return Array.from(this._store.values())\n .reduce((acc, item) => {\n if (item.isGroup) {\n acc.push(item, ...item.children);\n } else {\n acc.push(item);\n }\n\n return acc;\n }, []);\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\n\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PaginationController } from '../classes/pagination-controller';\nimport { SortingController } from '../classes/sorting-controller';\nimport { FsListSortConfig } from '../interfaces';\nimport {\n ExternalParams,\n ExternalQueryPagination,\n ExternalQuerySorting,\n} from '../interfaces/external-params.interface';\n\nimport { PersistanceController } from './persistance-controller';\n\n\nexport class ExternalParamsController {\n\n private _externalParams: ExternalParams = {\n page: null,\n limit: null,\n sortName: null,\n sortDirection: null,\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _paginator: PaginationController,\n private _sorting: SortingController,\n private _queryParamsEnabled: boolean,\n ) {\n this.initialize();\n }\n\n public get externalSorting(): FsListSortConfig {\n if (!this._enabled || !this._sortName || !this._sortDirection) {\n return null;\n }\n\n return {\n value: this._sortName,\n direction: this._sortDirection,\n };\n }\n\n private get _enabled(): boolean {\n return this._queryParamsEnabled || this._persistance.enabled;\n }\n\n private get _page(): number {\n return this._externalParams.page;\n }\n\n private get _limit(): number {\n return this._externalParams.limit;\n }\n\n private get _sortName(): string {\n return this._externalParams.sortName;\n }\n\n private get _sortDirection(): 'asc' | 'desc' {\n return this._externalParams.sortDirection;\n }\n\n public initialize() {\n\n // Restore from localStorage parameters if persistance enabled\n if (this._persistance.enabled) {\n this._restorePaginationParams(this._persistance.getDataFromScope('paging'));\n this._restoreSortingParams(this._persistance.getDataFromScope('sorting'));\n }\n\n // Restore from queryParams and override if persistance already had values for those params\n if (this._queryParamsEnabled) {\n this._restorePaginationParams(this._route.snapshot.queryParams as ExternalQueryPagination);\n this._restoreSortingParams(this._route.snapshot.queryParams as ExternalQuerySorting);\n }\n\n // Set initial pagination params\n // The same initial, but for sorting placed in list-controller \"tranformTemplatesToColumns\" method\n if (this._paginator.enabled && !this._paginator.infinityScrollEnabled) {\n if (this._limit) {\n this._paginator.setLimit(this._limit);\n }\n\n if (this._page) {\n this._paginator.goToPage(this._page);\n\n }\n }\n\n // Update pagination in stores\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n\n this._listenPaginatorChanges();\n this._listenSortingChanges();\n }\n\n public clearSortingParams() {\n this._updateSortingParams(null, null);\n }\n\n public destroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _restorePaginationParams(values: ExternalQueryPagination) {\n if (values?.page) {\n this._externalParams.page = +values.page;\n }\n\n if (values?.limit) {\n this._externalParams.limit = +values.limit;\n }\n }\n\n private _restoreSortingParams(values: ExternalQuerySorting) {\n if (values?.sortName) {\n this._externalParams.sortName = values.sortName;\n }\n\n if (values?.sortDirection) {\n this._externalParams.sortDirection = values.sortDirection;\n }\n }\n\n private _listenPaginatorChanges() {\n merge(\n this._paginator.pageChanged$,\n this._paginator.pages$,\n this._paginator.pageReset$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n });\n }\n\n private _listenSortingChanges() {\n merge(\n this._sorting.initialized$,\n this._sorting.sortingChanged$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n const sorting = this._sorting.value;\n\n if (sorting) {\n this._updateSortingParams(sorting.value, sorting.direction);\n } else {\n this.clearSortingParams();\n }\n });\n }\n\n private _updateSortingParams(name: string, direction: string) {\n if (this._queryParamsEnabled) {\n this._replaceState({\n sortName: name,\n sortDirection: direction,\n });\n }\n\n if (this._persistance.enabled) {\n if (name && direction) {\n this._persistance.saveDataToScope('sorting', { sortName: name, sortDirection: direction });\n } else {\n this._persistance.saveDataToScope('sorting', null);\n }\n }\n }\n\n private _updatePaginationParams(params) {\n if (this._queryParamsEnabled) {\n this._replaceState(params);\n }\n\n if (this._persistance.enabled) {\n this._persistance.saveDataToScope('paging', params);\n }\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .filter((name) => data[name] !== undefined && data[name] !== null)\n .forEach((name) => {\n url.searchParams.set(name,data[name]);\n });\n\n history.replaceState({}, null, url.pathname + url.search);\n }\n}\n","import { Observable, Subject } from 'rxjs';\r\n\r\nimport { FilterComponent } from '@firestitch/filter';\r\nimport { FsListAction } from '../interfaces/listconfig.interface';\r\n\r\n\r\nexport class ActionsController {\r\n\r\n private _filterRef: FilterComponent;\r\n\r\n private _actions: FsListAction[] = [];\r\n private _reorderAction: FsListAction;\r\n private _doneAction: FsListAction;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n constructor() {}\r\n\r\n public get destroy$(): Observable<void> {\r\n return this._destroy$.asObservable();\r\n }\r\n\r\n public get actions(): FsListAction[] {\r\n return this._actions;\r\n }\r\n\r\n public get hasActions(): boolean {\r\n return this._actions.length > 0;\r\n }\r\n\r\n public setFilterRef(ref: FilterComponent) {\r\n this._filterRef = ref;\r\n }\r\n\r\n public setActions(actions: FsListAction[]) {\r\n this.clearActions();\r\n this._actions = actions;\r\n\r\n if (this._reorderAction) {\r\n this._actions.unshift(this._reorderAction);\r\n }\r\n }\r\n\r\n public addReorderAction(action: FsListAction) {\r\n const actionClickFn = action.click;\r\n this._actions.unshift(action);\r\n\r\n action.click = () => {\r\n this._filterRef.updateActions([this._doneAction]);\r\n this._filterRef.hideKeywordField();\r\n this._filterRef.hideFiltersBtn();\r\n actionClickFn(null);\r\n }\r\n\r\n this._reorderAction = action;\r\n }\r\n\r\n public addReorderDoneAction(action: FsListAction) {\r\n this._doneAction = action;\r\n const actionClickFn = action.click;\r\n\r\n this._doneAction.click = () => {\r\n this._filterRef.updateActions(this._actions);\r\n this._filterRef.showKeywordField();\r\n this._filterRef.showFiltersBtn();\r\n actionClickFn(null);\r\n }\r\n }\r\n\r\n public clearActions() {\r\n this._actions = [];\r\n this._destroy$.next();\r\n }\r\n\r\n public updateDisabledState(): void {\r\n this._filterRef.updateDisabledState();\r\n }\r\n}\r\n","export enum PaginationStrategy {\r\n Page = 'page',\r\n Offset = 'offset',\r\n None = 'none',\r\n}\r\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { isObject } from 'lodash-es';\n\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { PaginationStrategy } from '../enums/pagination-strategy.enum';\nimport {\n FsListLoadMoreConfig,\n FsPaging,\n PageChange,\n QueryOffsetStrategy,\n QueryPageStrategy,\n} from '../interfaces';\nimport { IPaginationState } from '../interfaces/pagination-state.interface';\n\nexport class PaginationController {\n\n public limit = 25;\n public records: number;\n public manual = false;\n\n public page = 1; // Active page\n public offset = 0;\n\n // public pagesArray = [];\n public displayed = 0;\n\n private _pages$ = new BehaviorSubject<number>(0); // Total pages\n\n private _strategy: PaginationStrategy = PaginationStrategy.None;\n private _removedRows = 0;\n\n private _pageChanged$ = new Subject<PageChange>();\n private _pageReset$ = new Subject<void>();\n private _onDestroy$ = new Subject();\n\n private _loadMoreEnabled = false;\n private _infinityScrollEnabled = false;\n private _loadMoreText = 'Load More';\n private _limits = [10, 25, 50, 100, 200];\n\n constructor() {}\n\n // Total pages\n public set pages(value: number) {\n this._pages$.next(value);\n }\n\n public get pages(): number {\n return this._pages$.getValue();\n }\n\n public get pages$(): Observable<number> {\n return this._pages$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n /**\n * Fire if page was changed\n */\n public get pageChanged$(): Observable<PageChange> {\n return this._pageChanged$.pipe(takeUntil(this._onDestroy$));\n }\n\n public get pageReset$(): Observable<void> {\n return this._pageReset$.asObservable();\n }\n\n /**\n * Get enabled\n */\n public get enabled(): boolean {\n return !this.hasNoneStrategy;\n }\n\n /**\n * Get Limits\n */\n public get limits(): number[] {\n return this._limits;\n }\n\n /**\n * Set limits, update pages array and set new limit per page\n *\n * @param value\n */\n public set limits(value) {\n this._limits = value;\n\n if (this.limits.length > 0 && this.limits.indexOf(this.limit) === -1) {\n this.limit = this.limits[0];\n } else if (this.limits.length === 0) {\n this.limit = this.records;\n }\n }\n\n /**\n * Get query for request\n */\n public get query() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.queryPageStrategy;\n case PaginationStrategy.Offset:\n return this.queryOffsetStrategy;\n }\n\n return {};\n }\n\n public get loadMoreQuery() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.query;\n case PaginationStrategy.Offset:\n const query = this.queryOffsetStrategy;\n\n query.limit = query.offset + query.limit;\n query.offset = 0;\n\n return query;\n }\n\n return {};\n }\n\n /**\n * Query for Page Strategy\n */\n public get queryPageStrategy(): QueryPageStrategy {\n return this.hasNoneStrategy\n ? {}\n : {\n page: this.page || 1,\n limit: this.limit || 10,\n };\n }\n\n /**\n * Query for Offset Strategy\n */\n public get queryOffsetStrategy(): QueryOffsetStrategy {\n const page = this.page - 1 || 0;\n const limit = this.limit || 5;\n\n return {\n offset: page * limit,\n limit,\n };\n }\n\n /**\n * Get query for load only count of deleted rows\n */\n public get loadDeletedOffsetQuery() {\n const paginationOffset = this.limit * this.page;\n const actualOffset = Math.min(this.records, paginationOffset);\n const offset = Math.max(0, actualOffset - this._removedRows);\n\n return {\n offset,\n limit: this._removedRows,\n };\n }\n\n public get initialized() {\n return !!this.pages;\n }\n\n public get strategy() {\n return this._strategy;\n }\n\n public set strategy(strategy: PaginationStrategy) {\n this._strategy = (strategy === undefined) ? PaginationStrategy.Page : strategy;\n }\n\n /**\n * Check if pagination in Page Strategy Mode\n */\n public get hasPageStrategy() {\n return this.strategy === PaginationStrategy.Page;\n }\n\n /**\n * Check if pagination in Offset Strategy Mode\n */\n public get hasOffsetStrategy() {\n return this.strategy === PaginationStrategy.Offset;\n }\n\n /**\n * Check if pagination in None Strategy Mode\n */\n public get hasNoneStrategy(): boolean {\n return this.strategy === PaginationStrategy.None;\n }\n\n /**\n * If prev page can be activated\n *\n */\n public get hasPrevPage(): boolean {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasPrevPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasPrevPageOffsetStrategy;\n }\n\n return false;\n }\n\n /**\n * If next page can be activated\n */\n public get hasNextPage(): boolean { // Need to check if pages === page && page === 1\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasNextPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasNextPageOffsetStrategy;\n }\n\n return false;\n }\n\n public get loadMoreEnabled(): boolean {\n return this._loadMoreEnabled;\n }\n\n public get loadMoreText(): string {\n return this._loadMoreText;\n }\n\n public get infinityScrollEnabled() {\n return this._infinityScrollEnabled;\n }\n\n /**\n * SP-T1974\n * Showing 26-50 of 333 results sorted by Name, Ascending\n * Showing 0 results sorted by Name, Ascending\n */\n public get statusLabel(): string {\n const current = (this.page - 1) * this.limit;\n const from = current + 1;\n const to = Math.min(this.records, current + this.limit);\n\n return `${from}-${to}`;\n }\n\n public get state(): IPaginationState {\n return {\n enabled: this.enabled,\n strategy: this.strategy,\n page: this.page,\n offset: this.offset,\n limit: this.limit,\n records: this.records,\n displayed: this.displayed,\n }\n }\n\n public initWithConfig(\n config: FsPaging | false,\n loadMore: FsListLoadMoreConfig | boolean,\n infinityScrollEnabled = false,\n ) {\n\n if (config) {\n if (config.limits) {\n this.limits = config.limits;\n }\n\n if (config.limit) {\n this.limit = config.limit;\n }\n\n this.strategy = config.strategy;\n }\n\n if (loadMore) {\n this.setLoadMore(loadMore);\n }\n\n this._infinityScrollEnabled = infinityScrollEnabled;\n }\n\n /**\n * If pagination has prev page when Page Strategy\n */\n private get _hasPrevPagePageStrategy(): boolean {\n return this.page > 1 && this.pages > 1;\n }\n\n /**\n * If pagination has prev page when Offset Strategy\n */\n private get _hasPrevPageOffsetStrategy(): boolean {\n return this.offset >= this.limit && this.records > 1;\n }\n\n /**\n * If pagination has next page when Page Strategy\n */\n private get _hasNextPagePageStrategy(): boolean {\n return this.page < this.pages && this.pages > 1;\n }\n\n /**\n * If pagination has next page when Offset Strategy\n */\n private get _hasNextPageOffsetStrategy(): boolean {\n return (this.offset + this.limit) < this.records && this.records > 1;\n }\n\n /**\n * Update paging config and all related fields\n *\n * @param config\n * @param displayedRecords\n * @param loadMoreOperation\n */\n public updatePaging(config, displayedRecords = 0, loadMoreOperation = false) {\n if (!loadMoreOperation) {\n this._fromParams(config);\n this.displayed = displayedRecords;\n } else {\n this.records = config.records;\n\n if (this.records < this.displayed) {\n this.displayed = this.records;\n }\n\n this._removedRows = 0;\n }\n\n this._updateTotalPages();\n }\n\n // /**\n // * Update paging when data source not remove\n // * @param {any[]} rows\n // */\n /*public updatePagingManual(rows: any[]) {\n if (Array.isArray(rows) && rows.length > 0) {\n this.records = rows.length;\n this.pages = Math.ceil(rows.length / this.limit);\n }\n\n this.updatePagesArray();\n this.updateDisplayed();\n }*/\n\n /**\n * Update pages array with new pages count\n */\n // public updatePagesArray() {\n // const MIDDLE = 2;\n // const pagesArr = [];\n\n // let from = 0;\n // let to = 0;\n // if (this.page < MIDDLE) {\n // from = MIDDLE - 1;\n // to = MIDDLE + 1;\n // } else if (this.page >= MIDDLE && this.page <= this.pages - MIDDLE + 1) {\n // from = this.page - 1;\n // to = this.page + 1;\n // } else if (this.page > this.pages - MIDDLE + 1) {\n // from = this.pages - MIDDLE - 1;\n // to = this.pages;\n // }\n\n // if (!this.pages || this.pages < 5) {\n // from = 1;\n // to = this.pages || 0;\n // }\n\n // for (let i = from; i <= to; i++) {\n // pagesArr.push(i);\n // }\n\n // this.pagesArray = Object.assign([], pagesArr);\n // }\n\n public setLoadMore(config: FsListLoadMoreConfig | boolean) {\n this._loadMoreEnabled = !!config;\n\n if (this._loadMoreEnabled && isObject(config) && (config as FsListLoadMoreConfig).label) {\n this._loadMoreText = (config as FsListLoadMoreConfig).label;\n }\n }\n\n /**\n * Update dispayed records counter\n */\n // public updateDisplayed() {\n // this.displayed = this.getVisibleRecords();\n // }\n\n /**\n * Return count of records that could be shown on page\n */\n // public getVisibleRecords() {\n // const diff = this.hasOffsetStrategy\n // ? this.records - this.offset\n // : this.limit;\n //\n // return diff < this.limit\n // ? diff\n // : this.displayed;\n // }\n\n public getVisibleRecords() {\n return this.displayed;\n }\n\n /**\n * Set new limit\n *\n * @param limit\n */\n public setLimit(limit) {\n this.limit = limit;\n this.resetPaging();\n\n this._pageChanged$.next({\n type: PageChangeType.LimitChanged,\n payload: limit,\n });\n }\n\n /**\n * If page is activate page\n *\n * @param page\n */\n public isActive(page): boolean {\n return page === this.page;\n }\n\n /**\n * Go to page\n *\n * @param page\n */\n public goToPage(page) {\n if (page >= 1 && this.page !== page) {\n this.page = page;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: page,\n });\n }\n }\n\n /**\n * Reset paging like it was just initialized\n */\n public resetPaging() {\n this.page = 1;\n this.offset = 0;\n }\n\n /**\n * Go to next page\n */\n public goNext() {\n if (this.hasNextPage) {\n this.page++;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to first page\n */\n public goFirst() {\n if (this.page > 1) {\n this.page = 1;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to prev page\n */\n public goPrev() {\n if (this.page > 1) {\n this.page--;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Go to last page\n */\n public goLast() {\n if (this.page !== this.pages) {\n this.page = this.pages;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this.page,\n });\n }\n }\n\n /**\n * Update count of deleted rows. This count will be applied for offset calc\n *\n * @param count\n */\n public removeRows(count: number) {\n this._removedRows += count;\n }\n\n public updatePagination() {\n this._updateTotalPages();\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Update paging state\n *\n * @param params\n */\n private _fromParams(params): void {\n if (!this.loadMoreEnabled) {\n this.limit = params.limit ?? 25;\n }\n\n this.records = params.records;\n this.manual = params.manual;\n\n this.pages = params.pages || 0;\n }\n\n /**\n * Calc and update offset\n */\n private _updateOffset() {\n this.offset = this.limit * (this.page - 1);\n }\n\n /**\n * Calc and update total count of pages\n */\n private _updateTotalPages() {\n this.pages = Math.ceil(this.records / this.limit);\n }\n}\n","import { ElementRef, TemplateRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ChangeFn, FilterConfig, IFilterSavedFiltersConfig, ItemType } from '@firestitch/filter';\nimport { FsScrollInstance, FsScrollService } from '@firestitch/scroll';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { BehaviorSubject, combineLatest, EMPTY, from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { catchError, debounceTime, map, mapTo, shareReplay, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { cloneDeep } from 'lodash-es';\n\nimport { SortingDirection } from '../models/column.model';\n\n// Interfaces\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { FsListState } from '../enums/state.enum';\nimport {\n FsListAfterContentInitFn,\n FsListAfterFetchFn,\n FsListAfterInitFn,\n FsListBeforeFetchFn,\n FsListConfig,\n FsListEmptyStateConfig,\n FsListFetchFn,\n FsListFetchOptions,\n FsListFetchSubscription,\n FsListGroupConfig,\n FsListLoadMoreConfig,\n FsListNoResultsConfig,\n FsListPersitance,\n FsListRestoreConfig,\n FsListScrollableConfig,\n FsListSelectionConfig,\n FsListTrackByFn,\n FsPaging,\n PageChange,\n} from '../interfaces';\nimport { RowAction } from '../models/row-action.model';\nimport { StyleConfig } from '../models/styleConfig.model';\n\nimport { ColumnsController } from './columns-controller';\nimport { DataController } from './data-controller';\nimport { ExternalParamsController } from './external-params-controller';\nimport { ActionsController } from './index';\nimport { PaginationController } from './pagination-controller';\nimport { PersistanceController } from './persistance-controller';\nimport { SelectionController } from './selection-controller';\nimport { SortingController } from './sorting-controller';\n\nconst SHOW_DELETED_FILTERS_KEY = '_showDeleted_';\n\n\nexport class List {\n\n public heading: string;\n public trackBy: string;\n public subheading: string;\n public autoFocus: boolean;\n public rowHighlight: boolean;\n public rowActionsRaw: any[];\n public groupActionsRaw: any[];\n public rowClass;\n public rowEvents: any;\n public restore: FsListRestoreConfig;\n public persist: FsListPersitance;\n public filters = [];\n public filterInitCb: ChangeFn;\n public filterChangeCb: ChangeFn;\n public savedFilters: IFilterSavedFiltersConfig;\n public scrollable: FsListScrollableConfig;\n public noResults: FsListNoResultsConfig;\n public emptyState: FsListEmptyStateConfig;\n public fetchFn: FsListFetchFn;\n public beforeFetchFn: FsListBeforeFetchFn;\n public afterFetchFn: FsListAfterFetchFn;\n public afterContentInit: FsListAfterContentInitFn;\n public afterInit: FsListAfterInitFn;\n public style;\n public initialized$ = new BehaviorSubject(false);\n public loading$ = new BehaviorSubject(false);\n public hasRowActions;\n public paging = new PaginationController();\n public columns = new ColumnsController();\n public actions = new ActionsController();\n public dataController = new DataController();\n public sorting = new SortingController();\n public externalParams: ExternalParamsController;\n public selection: SelectionController;\n public filterConfig: FilterConfig = null;\n public fetchComplete$ = new Subject<{ scrollIntoView?: boolean }>();\n public filtersReady$ = new Subject<void>();\n public status = true;\n public chips = false;\n public filterInput = true;\n public queryParam = false;\n public restoreMode = false;\n\n public initialFetch = true;\n\n // Empty state\n public emptyStateEnabled = false;\n public emptyStateTemplate: TemplateRef<any>;\n\n public fsScrollInstance: FsScrollInstance;\n\n public onDestroy$ = new Subject();\n\n private _fetch$ = new Subject<FsListFetchSubscription | void>();\n private readonly _filtersQuery = new BehaviorSubject<Record<string, any>>(null);\n private readonly _activeFiltersCount$ = this._filtersQuery\n .pipe(map((v) => Object.keys(v).length), shareReplay());\n\n private readonly _headerConfig: StyleConfig;\n private readonly _groupCellConfig: StyleConfig;\n private readonly _cellConfig: StyleConfig;\n private readonly _footerConfig: StyleConfig;\n\n private _fsScrollSubscription: Subscription;\n\n constructor(\n private _el: ElementRef,\n private config: FsListConfig = {},\n private _fsScroll: FsScrollService,\n private _selectionDialog: SelectionDialog,\n private _router: Router,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _inDialog: boolean,\n ) {\n this._initialize(config);\n this._headerConfig = new StyleConfig(config.header);\n this._groupCellConfig = new StyleConfig(config.cell);\n this._cellConfig = new StyleConfig(config.cell);\n this._footerConfig = new StyleConfig(config.footer);\n this.initialized$.next(true);\n this.subscribe();\n\n if (this.initialFetch) {\n this.dataController.setOperation(FsListState.Load);\n this._fetch$.next();\n }\n }\n\n public get fetch$(): Observable<FsListFetchSubscription | void> {\n return this._fetch$.asObservable();\n }\n\n public get hasSavedFilters(): boolean {\n return !!this.filterConfig.savedFilters;\n }\n\n public get filtersQuery(): Record<string, any> {\n return this._filtersQuery.getValue();\n }\n\n public get activeFiltersCount$(): Observable<number> {\n return this._activeFiltersCount$;\n }\n\n public fetchRemote(query) {\n const options: FsListFetchOptions = {\n state: this.dataController.operation,\n };\n\n const result: any = this.fetchFn(query, options);\n\n return result instanceof Promise ? from(result) : result;\n }\n\n // public loadLocal() {\n // this.paging.updatePagingManual(this._rows);\n // const from = (this.paging.page - 1) * this.paging.limit;\n // const to = (this.paging.page === 1) ? this.paging.limit : this.paging.limit * this.paging.page;\n // const sliceOfRows = this._rows.slice(from, to);\n // this.data$.next(sliceOfRows);\n // }\n\n /**\n * Transform templates for using\n *\n * @param templates\n */\n public tranformTemplatesToColumns(templates) {\n const defaultConfigs = {\n header: this._headerConfig,\n groupCell: this._groupCellConfig,\n cell: this._cellConfig,\n footer: this._footerConfig,\n };\n\n this.columns.setDefaults(defaultConfigs);\n this.columns.initializeColumns(templates);\n\n // Set sortBy default column\n this._updateSortingColumns();\n\n // Default sort by\n const externalSorting = this.externalParams.externalSorting;\n const initialSortConfig = externalSorting || this.config.sort;\n this.sorting.initialSortBy(initialSortConfig);\n\n if (externalSorting && !this.sorting.isDefined) {\n this.externalParams.clearSortingParams();\n\n console.warn('Not able to restore persisted sorting params.', externalSorting);\n }\n\n this._initFilters();\n this._initInfinityScroll();\n }\n\n public reload() {\n this.loading$.next(true);\n\n this.dataController.setOperation(FsListState.Reload);\n\n if (this.fsScrollInstance) {\n this.paging.resetPaging();\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this._fetch$.next();\n }\n }\n\n /**\n * Watch page changes\n */\n public subscribe() {\n this.paging.pageChanged$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((event: PageChange) => {\n this.dataController.setOperation(FsListState.PageChange);\n\n // Remove all rows if limits was changed\n if (event.type === PageChangeType.LimitChanged && this.paging.hasPageStrategy) {\n this.dataController.clearRows();\n }\n\n if (this.paging.hasOffsetStrategy) {\n this.paging.updatePagination();\n\n if (this.selection) {\n this.selection.updateVisibleRecordsCount(this.paging.getVisibleRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n this.selection.pageChanged(this.scrollable);\n }\n }\n\n if (!this.scrollable && !this.paging.loadMoreEnabled) {\n const contains = [].slice.call(document.querySelectorAll('.cdk-overlay-container')).some((overlay) => {\n return this._el.nativeElement.contains(overlay);\n });\n\n let el = this._el.nativeElement;\n\n if (!contains) {\n const rect = this._el.nativeElement.getBoundingClientRect();\n if ((rect.top + window.pageYOffset) < window.innerHeight) {\n el = document.body;\n }\n }\n\n this.fetchComplete$.asObservable()\n .pipe(\n take(1),\n takeUntil(this.onDestroy$),\n )\n .subscribe((event) => {\n if(event?.scrollIntoView ?? true) {\n el.scrollIntoView({ behavior: 'smooth' });\n }\n });\n }\n\n this._fetch$.next();\n });\n\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n this.dataController.setOperation(FsListState.Sort);\n this.paging.page = 1;\n\n if (this.fsScrollInstance) {\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this._fetch$.next();\n }\n });\n\n this._listenVisibleColumnChanges();\n this._listenRowsRemove();\n this._listenFetch();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n let rowsData = this.dataController\n .visibleRowsData;\n\n if (trackBy) {\n rowsData = rowsData\n .filter(trackBy);\n }\n\n return rowsData\n .map((data) => {\n return cloneDeep(data);\n });\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.dataController.visibleRowsData.some(trackBy);\n }\n\n /**\n * Toggle group mode status\n *\n * @param value\n */\n public groupEnabled(value: boolean) {\n if (this.dataController.groupEnabled !== value) {\n this.dataController.groupEnabled = value;\n\n // Commented out because Ray wants to change group status in fetch map pipe\n // and it triggers extra requests\n // this.reload();\n }\n }\n\n public destroy() {\n if (this._fsScrollSubscription) {\n this._fsScrollSubscription.unsubscribe();\n }\n\n if (this.paging) {\n this.paging.destroy();\n }\n\n if (this.sorting) {\n this.sorting.destroy();\n }\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.filterConfig) {\n this.filterConfig = null;\n }\n\n if (this.externalParams) {\n this.externalParams.destroy();\n }\n\n this.columns.destroy();\n\n this.onDestroy$.next();\n this.onDestroy$.complete();\n\n this.dataController.destroy();\n }\n\n /**\n * Do initialization of table\n *\n * @param config\n */\n private _initialize(config: FsListConfig) {\n this._initVariables(config);\n this._initDefaultOptions(config);\n this._initRestore();\n this._initActions(config.actions);\n this._initPaging(config.paging, config.loadMore);\n this._initSelection(config.selection, this._selectionDialog);\n this._initGroups(config.group);\n this._initExternalParamsController();\n this._initializeData();\n }\n\n private _initVariables(config) {\n this.autoFocus = config.autoFocus;\n this.rowHighlight = config.rowHighlight ?? true;\n this.heading = config.heading;\n this.trackBy = config.trackBy;\n this.subheading = config.subheading;\n this.rowActionsRaw = config.rowActions;\n this.rowClass = config.rowClass;\n this.rowEvents = config.rowEvents;\n this.restore = config.restore;\n this.persist = config.persist;\n this.filters = config.filters ?? [];\n this.filterInitCb = config.filterInit;\n this.filterChangeCb = config.filterChange;\n this.savedFilters = config.savedFilters;\n this.scrollable = config.scrollable;\n this.noResults = config.noResults;\n this.emptyState = config.emptyState;\n this.fetchFn = config.fetch;\n this.afterFetchFn = config.afterFetch;\n this.beforeFetchFn = config.beforeFetch;\n this.afterInit = config.afterInit;\n this.style = config.style;\n this.columns.initConfig(config.column);\n }\n\n /**\n * Just init options by default it it wasn't specified\n *\n * @param config\n */\n private _initDefaultOptions(config) {\n // We should prevent initial fetch in cases when it will be fetched in any case\n // As ex. scrollable or filter will do fetch in any cases\n if (config.initialFetch === false || config.scrollable) { // TODO fixme after tsmodel version update\n this.initialFetch = false;\n }\n if (config.status === false) {\n this.status = false;\n }\n if (config.chips) {\n this.chips = config.chips;\n }\n if (config.filterInput === false) {\n this.filterInput = false;\n }\n\n if (this._inDialog) {\n this.queryParam = false;\n } else {\n this.queryParam = (config.queryParam === void 0)\n ? true\n : config.queryParam;\n }\n\n if (config.sorts) {\n this.sorting.initFakeColumns(config.sorts);\n }\n if (!config.trackBy) {\n this.trackBy = 'id';\n }\n\n if (config.afterContentInit) {\n this.afterContentInit = () => {\n config.afterContentInit(this.paging.query, this.dataController.visibleRows);\n };\n }\n }\n\n /**\n * Init restore row action and append Show Deleted option into filters\n */\n private _initRestore() {\n if (this.restore) {\n const restoreAction = new RowAction({\n label: this.restore.menuLabel || 'Restore',\n menu: true,\n click: (row) => {\n this._restoreClick(this.restore.click, row);\n }, // TODO fix me, move to special file\n restore: true,\n });\n\n if (!this.rowActionsRaw) {\n this.rowActionsRaw = [];\n }\n\n this.rowActionsRaw.push(restoreAction);\n\n if (!this.filters) {\n this.filters = [];\n }\n\n if (this.restore.filter !== false) {\n this.filters.push({\n name: SHOW_DELETED_FILTERS_KEY,\n type: ItemType.Checkbox,\n label: this.restore.filterLabel || 'Show Deleted',\n });\n }\n }\n\n }\n\n /**\n * Init paging\n *\n * @param pagingConfig\n * @param loadMore\n */\n private _initPaging(pagingConfig: FsPaging | false, loadMore: FsListLoadMoreConfig | boolean) {\n this.paging.initWithConfig(pagingConfig, loadMore, !!this.scrollable);\n }\n\n /**\n * Split actions by categories\n */\n private _initActions(actions) {\n if (actions) {\n this.actions.setActions(actions);\n }\n\n this.hasRowActions =\n (this.rowActionsRaw && this.rowActionsRaw.length > 0)\n || (this.groupActionsRaw && this.groupActionsRaw.length > 0);\n }\n\n private _initSelection(\n selectionConfig: FsListSelectionConfig,\n selectionDialog: SelectionDialog,\n ) {\n if (selectionConfig) {\n this.selection = new SelectionController(selectionConfig, this.trackBy, selectionDialog);\n this.selection.setRowsCallback(() => this.dataController.visibleRows);\n }\n }\n\n private _initializeData() {\n this.dataController.setAdditionalConfigs({\n scrollable: !!this.scrollable,\n loadMoreEnabled: this.paging.loadMoreEnabled,\n });\n }\n\n private _initGroups(groupConfig: FsListGroupConfig) {\n if (groupConfig) {\n this.dataController.setGroupConfig(groupConfig);\n this.groupActionsRaw = groupConfig.actions;\n }\n }\n\n private _initExternalParamsController() {\n this.externalParams = new ExternalParamsController(\n this._router,\n this._route,\n this._persistance,\n this.paging,\n this.sorting,\n this.queryParam,\n );\n }\n\n /**\n * Subscribe to fetch$ event with debounce\n */\n private _listenFetch() {\n let fetch$ = this.fetch$;\n\n // Should wait until saved filters not loaded\n if (!!this.filters) {\n fetch$ = combineLatest([fetch$, this.filtersReady$])\n .pipe(\n map(([params]) => params),\n );\n }\n\n fetch$\n .pipe(\n debounceTime(50),\n tap(() => {\n this.loading$.next(true);\n }),\n tap(() => {\n this.selection?.closeSelectionDialog();\n }),\n map((params: FsListFetchSubscription) => {\n let query = { ...this.filtersQuery };\n\n if (this.paging.hasOffsetStrategy && params?.loadOffset) {\n query = Object.assign(query, this.paging.loadDeletedOffsetQuery);\n } else {\n const allRecordsRangeNeeded = (this.initialFetch\n || this.dataController.operation === FsListState.Reload\n ) && this.paging.loadMoreEnabled;\n\n query = allRecordsRangeNeeded ? Object.assign(query, this.paging.loadMoreQuery) : Object.assign(query, this.paging.query);\n }\n\n if (this.sorting.sortingColumn) {\n Object.assign(\n query,\n {\n order: `${this.sorting.sortingColumn.name},${this.sorting.sortingColumn.direction}`,\n },\n );\n }\n\n if (this.columns.configured) {\n query = {\n ...query,\n columns: this.columns.visibleColumnsNames,\n };\n }\n\n return { params, query };\n }),\n switchMap(({ params, query }) => {\n if (this.columns.loadFnConfigured && !this.columns.columnsFetched) {\n return this.columns.loadRemoteColumnConfigs()\n .pipe(\n mapTo({ params, query }),\n );\n }\n\n return of({ params, query });\n }),\n switchMap(({ params, query }) => {\n if (this.beforeFetchFn) {\n return this.beforeFetchFn(query)\n .pipe(\n map((beforeFetchQuery) => ({ params, query: beforeFetchQuery })),\n catchError((error) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n }\n\n return of({ params, query });\n }),\n switchMap(({ params, query }) => {\n const remoteFetch = this.fetchRemote(query)\n .pipe(\n catchError((error) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n\n return combineLatest([of({ params, query }), remoteFetch]);\n }),\n catchError((error) => {\n console.error(error);\n\n return EMPTY;\n }),\n takeUntil(this.onDestroy$),\n )\n .subscribe(([paramsQuery, response]) => {\n this.initialFetch = false;\n this._completeFetch(paramsQuery.params, paramsQuery.query, response);\n });\n }\n\n private _listenRowsRemove() {\n this.dataController.rowsRemoved$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((rows: any[]) => {\n if (this.paging.enabled) {\n\n const removedCount = rows.length;\n\n if (this.paging.hasPageStrategy) {\n this._noDataPaginationUpdate(removedCount);\n } else {\n // Fetch more if has something for fetch\n if (this.dataController.hasData || this.paging.hasNextPage) {\n this.dataController.setOperation(FsListState.LoadMore);\n\n this.paging.removeRows(removedCount);\n this._fetch$.next({ loadOffset: true });\n } else {\n this._noDataPaginationUpdate(removedCount);\n }\n }\n }\n\n // Remove from selection\n if (this.selection) {\n rows.forEach((row) => {\n this.selection.removeRow(row.data);\n });\n }\n });\n }\n\n /**\n * Lister may have originally hidden columns, but visibility of those columns\n * can be changed programmaticaly in any time\n */\n private _listenVisibleColumnChanges(): void {\n this.columns.visibleColumns$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n this._updateSortingColumns();\n });\n }\n\n private _initInfinityScroll() {\n if (this.fsScrollInstance) {\n return;\n }\n\n if (this.scrollable) {\n // Scrollable status by default\n if (this.scrollable.status === void 0) {\n this.scrollable.status = true;\n }\n\n\n this._fsScroll\n .component(this.scrollable.name)\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe((fsScrollInstance: FsScrollInstance) => {\n this.fsScrollInstance = fsScrollInstance;\n this._fsScrollSubscription = fsScrollInstance\n .subscribe(() => {\n let startLoading = false;\n const operation = this.dataController.operation;\n\n // Initial loading if initialFetch equals false\n if (!this.initialFetch\n && !this.paging.initialized\n && operation !== FsListState.Reload\n ) {\n\n this.dataController.setOperation(FsListState.Load);\n startLoading = true;\n\n } else if (\n operation === FsListState.Reload ||\n operation === FsListState.Filter ||\n operation === FsListState.Sort\n ) {\n startLoading = true;\n } else if (this.paging.initialized && this.paging.hasNextPage) {\n // Loading if content has been scrolled\n startLoading = true;\n this.dataController.setOperation(FsListState.Load);\n this.paging.goNext();\n }\n\n if (startLoading) {\n this._fetch$.next();\n fsScrollInstance.loading();\n }\n });\n\n this.dataController.remoteRowsChange$\n .pipe(\n takeUntil(this.onDestroy$),\n )\n .subscribe(() => {\n fsScrollInstance.loaded();\n });\n });\n }\n }\n\n /**\n * Update and watch filter changes\n */\n private _initFilters() {\n if (this.filterConfig) {\n return;\n }\n\n // Merge sorting and fake sorting cols\n // Fake sorting cols it's cols which don't represented in table cols, like abstract cols\n const sortValues =\n [\n ...this.sorting.sortingColumns,\n ...this.sorting.fakeSortingColumns,\n ].reduce((acc, column) => {\n\n const sortingItem = {\n name: column.title,\n value: column.name,\n default: this.sorting.sortingColumn && this.sorting.sortingColumn.name === column.name,\n };\n\n acc.push(sortingItem);\n\n return acc;\n }, []);\n\n const sortConfig = this.sorting.sortingColumn\n ? { value: this.sorting.sortingColumn.name, direction: this.sorting.sortingColumn.direction }\n : null;\n\n // Config\n this.filterConfig = {\n persist: this.persist,\n items: this.filters || [],\n savedFilters: this.savedFilters,\n // inline: this.inlineFilters,\n actions: this.actions.actions,\n queryParam: this.queryParam,\n autofocus: this.autoFocus,\n sorts: sortValues,\n sort: sortConfig,\n chips: this.chips,\n init: this._filterInit.bind(this),\n change: this._filterChange.bind(this),\n reload: (this.config.reload ?? true) ? this.reload.bind(this) : null,\n sortChange: this._filterSort.bind(this),\n };\n }\n\n /**\n * Callback when Filter has been initialized\n *\n * @param filters\n */\n private _filterInit(filters) {\n if (this.filterInitCb) {\n this.filterInitCb(filters);\n }\n\n this._filtersQuery.next(filters);\n\n this._checkRestoreFilter();\n }\n\n /**\n * Callback when Filter has been changed\n *\n * @param filterQuery\n * @param filterSort\n */\n private _filterChange(filterQuery, filterSort) {\n if (this.filterChangeCb) {\n this.filterChangeCb(filterQuery, filterSort);\n }\n\n this._filtersQuery.next(filterQuery);\n\n this.restoreMode = false;\n\n // Restore option\n this._checkRestoreFilter();\n\n if (this.restore && this.restore.reload) {\n this.reload();\n }\n\n this.dataController.setOperation(FsListState.Filter);\n\n // Reset paging for request with correct offset\n this.paging.resetPaging();\n\n if (this.fsScrollInstance) {\n this.dataController.clearRows();\n this.fsScrollInstance.reload();\n } else {\n this._fetch$.next();\n }\n }\n\n private _checkRestoreFilter() {\n // Restore option\n if (this.restore && this.filtersQuery[SHOW_DELETED_FILTERS_KEY]) {\n delete this.filtersQuery[SHOW_DELETED_FILTERS_KEY];\n\n Object.assign(this.filtersQuery, this.restore.query);\n\n this.restoreMode = true;\n }\n }\n\n // Callback when Filter sort has been changed\n private _filterSort(filterQuery, filterSort) {\n if (filterSort) {\n this.sorting.sortByColumnWithName(filterSort.value);\n\n const sortDirection = filterSort.direction === 'asc' ? SortingDirection.asc : SortingDirection.desc;\n this.sorting.sortDirection(sortDirection);\n } else {\n // FIXME need to be refactored...\n this.sorting.sortingColumn = undefined;\n this.reload();\n }\n }\n\n private _completeFetch(params, query, response) {\n if (!this.paging.page) {\n this.paging.page = 1;\n }\n\n if (response.paging) {\n const displayed = (Array.isArray(response.data) && response.data.length) || 0;\n this.paging.updatePaging(\n response.paging,\n displayed,\n this.dataController.operation === FsListState.LoadMore,\n );\n } else if (this.paging.enabled) {\n console.log(\n '%c FsList Warning ',\n 'color: white; background-color: #ffcc0b',\n 'Pagination does not configured properly. ' +\n 'Pagination is enabled, but http response does not contain \"paging\" field. ' +\n 'You have to set \"paging: false\" in config or add \"paging\" field to response.',\n );\n }\n\n /// must be before selection, because seletion use records\n this.dataController.setRowsFromResponse(response.data);\n ///\n\n this._completeFetchUpdateSelecton(response);\n\n if (this.emptyState?.validate && this.emptyStateTemplate) {\n this.emptyStateEnabled = this.emptyState.validate(query, cloneDeep(this.dataController.visibleRowsData));\n }\n\n if (this.afterFetchFn) {\n this.afterFetchFn(query, this.dataController.visibleRowsData);\n }\n\n // case when have removed all results from last page\n if (this.dataController.visibleRows.length === 0\n && this.paging.page > 1\n && this.paging.page > this.paging.pages\n ) {\n this.paging.goLast();\n }\n\n this.fetchComplete$.next({ scrollIntoView: params?.scrollIntoView });\n this.loading$.next(false);\n }\n\n private _completeFetchUpdateSelecton(response) {\n // Update selection params\n if (this.selection) {\n if (this.paging.enabled) {\n this.selection.pageChanged(this.scrollable);\n this.selection.updateVisibleRecordsCount(this.paging.getVisibleRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n } else {\n const count = response.paging && response.paging.records\n || Array.isArray(response.data) && response.data.length;\n\n this.selection.updateVisibleRecordsCount(count);\n this.selection.updateTotalRecordsCount(count);\n }\n\n this.selection.selectedRowsIntersection(this.dataController.visibleRowsData);\n }\n }\n\n /**\n * Will do some actions if you removed item and item was last on his own page\n *\n * Ex: if list has 3 pages and on third page you have only one item. And you just deleted this item.\n * You must go to second page, but if it was last page and you can't go back -> just reload\n *\n * @param deletedCount\n */\n private _noDataPaginationUpdate(deletedCount) {\n if (!this.dataController.hasData) {\n if (this.paging.page > 1) {\n this.paging.goToPage(this.paging.page - 1 || 1);\n } else {\n this.reload();\n }\n }\n\n this.paging.records -= deletedCount;\n this.paging.updatePagination();\n\n if (this.dataController.hasData && this.selection) {\n this.selection.updateVisibleRecordsCount(this.dataController.visibleRowsCount);\n this.selection.updateTotalRecordsCount(this.paging.records);\n }\n }\n\n /**\n * Temporary solution, will do auto subscribe if was returned Observable.\n *\n * TODO: MOVE THIS PEACE OF CODE TO SPECIAL PLACE\n *\n * @param restoreClickCallback\n * @param row\n */\n private _restoreClick(restoreClickCallback, row) {\n const restoreClickResult = restoreClickCallback(row);\n\n if (restoreClickResult instanceof Observable) {\n restoreClickResult\n .pipe(\n take(1),\n takeUntil(this.onDestroy$),\n )\n .subscribe({\n next: () => this.reload(),\n error: () => { },\n });\n }\n }\n\n private _updateSortingColumns(): void {\n this.sorting.clearSortableColumns();\n this.columns.columns\n .filter((column) => column.sortable && column.visible)\n .forEach((column) => {\n this.sorting.addSortableColumn(column);\n });\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { FsPersistanceStore, FsStore } from '@firestitch/store';\r\nimport { FsListPersitance } from '../interfaces';\r\n\r\nconst FILTER_STORE_KEY = 'fs-list-persist';\r\n\r\n@Injectable()\r\nexport class PersistanceController extends FsPersistanceStore<FsListPersitance> {\r\n\r\n protected STORE_KEY = FILTER_STORE_KEY;\r\n\r\n constructor(\r\n _store: FsStore,\r\n _route: ActivatedRoute,\r\n ) {\r\n super(_store, _route);\r\n }\r\n\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-heading],[fsListHeading]' \r\n})\r\nexport class FsListHeadingDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-subheading],[fsListSubheading]' \r\n})\r\nexport class FsListSubheadingDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ \r\n selector: '[fs-list-heading-container],[fsListHeadingContainer]' \r\n})\r\nexport class FsListHeadingContainerDirective {\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-cell]' })\r\nexport class FsListCellDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-footer]' })\r\nexport class FsListFooterDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({ selector: '[fs-list-header]' })\r\nexport class FsListHeaderDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n\r\n@Injectable()\r\nexport class GroupExpandNotifierService implements OnDestroy {\r\n\r\n private _expandStatusChanged$ = new Subject();\r\n private _destroy$ = new Subject();\r\n\r\n get expandStatusChange$() {\r\n return this._expandStatusChanged$.pipe(\r\n takeUntil(this._destroy$)\r\n )\r\n }\r\n public toggleExpandStatus(rowData: any) {\r\n this._expandStatusChanged$.next(rowData);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","import { Directive, HostListener, Input } from '@angular/core';\r\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\r\n\r\n\r\n@Directive({ selector: '[fsListGroupExpandTrigger]' })\r\nexport class FsListGroupExpandTriggerDirective {\r\n\r\n @HostListener('click', ['$event'])\r\n public click(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this._expandNotifier.toggleExpandStatus(this.row);\r\n }\r\n\r\n @Input()\r\n public row;\r\n\r\n constructor(private _expandNotifier: GroupExpandNotifierService) {}\r\n}\r\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-footer]'\n})\nexport class FsListGroupFooterDirective extends FsListCellDirective {}\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-cell],[fs-list-group-header]'\n})\nexport class FsListGroupHeaderDirective extends FsListCellDirective {}\n","import {\n ContentChild,\n ContentChildren,\n Directive,\n Input,\n QueryList,\n TemplateRef\n} from '@angular/core';\n\n// Directives\nimport { FsListCellDirective } from '../cell/cell.directive';\nimport { FsListFooterDirective } from '../footer/footer.directive';\nimport { FsListHeaderDirective } from '../header/header.directive';\n\nimport { CellConfig } from '../../interfaces';\nimport { ColumnAttributes } from '../../models/column-attributes';\nimport { FsListGroupExpandTriggerDirective } from '../group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from '../group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from '../group-header/group-header.directive';\n\n\n@Directive({\n selector: 'fs-list-column'\n})\nexport class FsListColumnDirective {\n\n // Header\n @ContentChild(FsListHeaderDirective, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeaderDirective, { static: true })\n public headerConfigs: CellConfig;\n\n // Group\n @ContentChild(FsListGroupHeaderDirective, { read: TemplateRef, static: true })\n public groupHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupHeaderDirective, { static: true })\n public groupHeaderConfigs: CellConfig;\n\n // Group Footer\n @ContentChild(FsListGroupFooterDirective, { read: TemplateRef, static: true })\n public groupFooterTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupFooterDirective, { static: true })\n public groupFooterConfigs: CellConfig;\n\n // Trigger\n @ContentChildren(FsListGroupExpandTriggerDirective, { descendants: true })\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n // Cell\n @ContentChild(FsListCellDirective, { read: TemplateRef, static: true })\n public cellTemplate: TemplateRef<any>;\n\n @ContentChild(FsListCellDirective, { static: true })\n public cellConfigs: CellConfig;\n\n // Footer\n @ContentChild(FsListFooterDirective, { read: TemplateRef, static: true })\n public footerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListFooterDirective, { static: true })\n public footerConfigs: CellConfig;\n\n private readonly _columnAttributes = new ColumnAttributes();\n\n constructor() {}\n\n public get attributes(): ColumnAttributes {\n return this._columnAttributes;\n }\n\n @Input('show')\n public set visible(value: boolean) {\n this._columnAttributes.visible = value;\n }\n\n @Input()\n public set title(value: string) {\n this._columnAttributes.title = value;\n }\n\n @Input()\n public set name(value: string) {\n this._columnAttributes.name = value;\n }\n\n @Input()\n public set customize(value: boolean) {\n this._columnAttributes.customize = value;\n }\n\n @Input()\n public set sortable(value: boolean) {\n this._columnAttributes.sortable = value;\n }\n\n @Input()\n public set sortableDefault(value: boolean) {\n this._columnAttributes.sortableDefault = value;\n }\n\n @Input()\n public set sortableDirection(value: 'asc' | 'desc') {\n this.sortable = true;\n this._columnAttributes.direction = value;\n }\n\n /**\n * @deprecated\n */\n @Input()\n public set direction(value: 'asc' | 'desc') {\n this._columnAttributes.direction = value;\n }\n\n @Input()\n public set align(value: string) {\n this._columnAttributes.align = value;\n }\n\n @Input()\n public set width(value: string) {\n this._columnAttributes.width = value;\n }\n\n @Input('class')\n public set className(value: string | string[]) {\n this._columnAttributes.className = value;\n }\n\n}\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fs-list-empty-state]',\r\n})\r\nexport class FsListEmptyStateDirective {}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n\r\nexport const FS_LIST_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-list.default-config');\r\nexport const FS_LIST_CONFIG = new InjectionToken<any[]>('fs-list.config');\r\n","import { Component, ViewContainerRef } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { ExternalParamsController } from '@firestitch/filter';\n\nimport { Observable } from 'rxjs';\n\n\n@Component({\n selector: 'fs-list-saved-filters',\n templateUrl: './saved-filters.component.html',\n})\nexport class FsListSavedFiltersComponent {\n constructor(\n private _dialog: MatDialog,\n private _externalParams: ExternalParamsController,\n private _vcRef: ViewContainerRef,\n ) { }\n\n public get savedFiltersEnabled$(): Observable<boolean> {\n return this._externalParams.savedFiltersController.enabled$;\n }\n\n public showManageDialog(): void {\n // this._dialog.open(FsListManageSavedFiltersComponent, {\n // viewContainerRef: this._vcRef,\n // });\n }\n}\n","<ng-container *ngIf=\"savedFiltersEnabled$ | async\"><!--\r\n -->, saved filter\r\n <fs-filter-saved-filters-menu (manage)=\"showManageDialog()\"></fs-filter-saved-filters-menu>\r\n</ng-container>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { PaginationController } from '../../classes/pagination-controller';\r\nimport { SortingController } from '../../classes/sorting-controller';\r\nimport { SortingDirection } from '../../models/column.model';\r\n\r\n\r\n@Component({\r\n selector: 'fs-list-status',\r\n templateUrl: './status.component.html',\r\n styleUrls: ['./status.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: true,\r\n})\r\nexport class FsStatusComponent implements OnInit, OnDestroy {\r\n\r\n @Input() public paging: PaginationController;\r\n @Input() public sorting: SortingController;\r\n @Input() public rows;\r\n @Input() public scrollable;\r\n\r\n @Input()\r\n @HostBinding('class.first-load')\r\n @HostBinding('class.fs-skeleton-placeholder')\r\n public firstLoad: boolean;\r\n\r\n private _destroy$ = new Subject<void>();\r\n\r\n constructor(private _cdRef: ChangeDetectorRef) {\r\n }\r\n\r\n public ngOnInit() {\r\n this.sorting.sortingChanged$\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public toggleDirection() {\r\n if (this.sorting.sortingColumn.direction === 'asc') {\r\n this.sorting.sortDirection(SortingDirection.desc);\r\n } else {\r\n this.sorting.sortDirection(SortingDirection.asc);\r\n }\r\n }\r\n\r\n public setSortableColumn(column) {\r\n if (this.sorting.sortingColumn !== column) {\r\n this.sorting.sortBy(column);\r\n }\r\n }\r\n\r\n public setLimit(limit) {\r\n this.paging.setLimit(limit);\r\n }\r\n}\r\n","<div class=\"status\">\r\n <small>\r\n <ng-container *ngIf=\"paging.enabled && !scrollable\">\r\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\r\n </ng-container>\r\n <ng-template #emptyResults>\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><ng-container *ngIf=\"(!paging.enabled || scrollable) && paging.displayed > 0\">\r\n <ng-container *ngIf=\"!scrollable; else scrollable\">\r\n Showing\r\n <span *ngIf=\"paging.displayed == 1\">{{ paging.displayed }} result </span>\r\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\r\n </ng-container>\r\n\r\n <ng-template #scrollable>\r\n <span *ngIf=\"paging.records == 1\">{{ paging.records }} result </span>\r\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\r\n\r\n <fs-menu [hidden]=\"!paging.enabled || scrollable\" #limitsMenu>\r\n <ng-template\r\n ngFor\r\n let-limit\r\n [ngForOf]=\"paging.limits\">\r\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\r\n {{ limit }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\r\n <!-- Real sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.sortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\r\n {{ column.title }}\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- Fake sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.fakeSortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n {{ column.title }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <ng-template #sortedBy>\r\n <ng-container *ngIf=\"sorting.sortingColumn\">\r\n sorted by\r\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\r\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\r\n </a>,\r\n </ng-template>\r\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\r\n --></ng-container><!--\r\n --></ng-template>\r\n </small> \r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\nimport { random } from 'lodash-es';\r\n\r\n\r\n@Component({\r\n selector: 'fs-list-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsListLoaderComponent implements OnInit, OnChanges {\r\n\r\n public placeholderWidths = [[], [], []];\r\n public widths = [];\r\n\r\n @Input() public columns;\r\n\r\n @Input()\r\n public loaderLines: number;\r\n\r\n public cols = [];\r\n public rows = [];\r\n\r\n public ngOnInit() {\r\n\r\n this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;\r\n const length = this.cols.length;\r\n for (let w = length; w >= 0; w--) {\r\n this.widths[w] = w ? random(15, 100 / length, false) : 0;\r\n }\r\n\r\n for (let r = 0; r < 3; r++) {\r\n for (let c = 0; c < length; c++) {\r\n this.placeholderWidths[r].push(random(50, 90));\r\n }\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.loaderLines) {\r\n this.rows = new Array(this.loaderLines);\r\n }\r\n }\r\n}\r\n","<table>\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let col of cols; let column = index\" [width]=\"widths[column] + '%'\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of rows; let index=index\">\r\n <td *ngFor=\"let col of cols; let column = index\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\nimport { merge, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { PaginationController } from '../../classes/pagination-controller';\r\n\r\n@Component({\r\n selector: 'fs-list-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FsPaginationComponent implements OnInit, OnDestroy {\r\n\r\n @Input() public pagination: PaginationController;\r\n @Input() public rows;\r\n\r\n private _destroy$ = new Subject();\r\n\r\n constructor(\r\n private _cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n public ngOnInit(): void {\r\n merge(\r\n this.pagination.pageChanged$,\r\n this.pagination.pages$,\r\n )\r\n .pipe(\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe(() => {\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <ng-container *ngIf=\"pagination?.pages\">\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"first\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goFirst()\">\n <i class=\"material-icons\">first_page</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"previous\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goPrev()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </a>\n\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"next\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goNext()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"last\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goLast()\">\n <i class=\"material-icons\">last_page</i>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button mat-button (click)=\"pagination.goNext()\">{{ pagination.loadMoreText }}</button>\n </div>\n</ng-template>\n","import { AfterViewInit, Directive, Input } from '@angular/core';\n\n\n@Directive({\n selector: '[fsListContentInit]'\n})\nexport class FsListContentInitDirective implements AfterViewInit {\n\n @Input('fsListContentInit')\n public contentInitCallback: Function;\n\n constructor() {}\n\n public ngAfterViewInit() {\n if (this.contentInitCallback) {\n this.contentInitCallback();\n }\n }\n}\n","import { Location } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FilterComponent } from '@firestitch/filter';\nimport { FsScrollService } from '@firestitch/scroll';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { Subject } from 'rxjs';\nimport { filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { cloneDeep, mergeWith } from 'lodash-es';\n\nimport { List } from '../../classes/list-controller';\nimport { PersistanceController } from '../../classes/persistance-controller';\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';\nimport { FsListColumnDirective } from '../../directives/column/column.directive';\nimport { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';\nimport { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';\nimport {\n FsListAbstractRow,\n FsListAction,\n FsListConfig, FsListPersitance, FsListSelectionConfig,\n FsListTrackByFn,\n FsListTrackByTargetRowFn,\n} from '../../interfaces';\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\nimport { FsBodyComponent } from '../body/body.component';\nimport { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';\nimport { IPaginationState } from '../../interfaces/pagination-state.interface';\n\n\n@Component({\n selector: 'fs-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n GroupExpandNotifierService,\n PersistanceController,\n ReorderController,\n ],\n})\nexport class FsListComponent implements OnInit, OnDestroy, AfterContentInit {\n\n @HostBinding('class.fs-list') public classFsList = true;\n\n @HostBinding('class.fs-list-no-highlight')\n public noRowsHighlight: boolean;\n\n @Input('config')\n public set config(config: FsListConfig) {\n this._initWithConfig(config);\n }\n\n @Input()\n public loaderLines = 3;\n\n @Output()\n public filtersReady = new EventEmitter<void>();\n\n @ContentChild(FsListHeadingDirective, { read: TemplateRef })\n public headingTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeadingContainerDirective, { read: TemplateRef })\n public headingContainerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListSubheadingDirective, { read: TemplateRef })\n public subheadingTemplate: TemplateRef<any>;\n\n public list: List;\n public keywordVisible = true;\n\n // Event will fired if action remove: true will clicked\n public rowRemoved = new EventEmitter();\n public firstLoad = true;\n\n private _listColumnDirectives: QueryList<FsListColumnDirective>;\n private _filterRef: FilterComponent;\n private _filterParamsReady = false;\n private _inDialog = !!this._dialogRef || !!this._drawerRef;\n\n private _destroy = new Subject();\n\n @ViewChild(FsBodyComponent)\n public body: FsBodyComponent;\n\n @ViewChild(FilterComponent)\n public set filterReference(component) {\n this._filterRef = component;\n this.list.actions.setFilterRef(component);\n\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Set columns to config\n * Create Column Model instances\n */\n @ContentChildren(FsListColumnDirective)\n public set columnTemplates(listColumnDirectives: QueryList<FsListColumnDirective>) {\n this._listColumnDirectives = listColumnDirectives;\n if (this.list) {\n this.list.tranformTemplatesToColumns(listColumnDirectives);\n }\n }\n\n @ContentChild(FsListEmptyStateDirective, { read: TemplateRef })\n private set _emptyStateTemplate(template: TemplateRef<any>) {\n if (this.list) {\n this.list.emptyStateTemplate = template;\n }\n }\n\n constructor(\n public reorderController: ReorderController,\n @Optional() @Inject(FS_LIST_DEFAULT_CONFIG) private _defaultOptions: FsListConfig,\n @Optional() private _scroll: FsScrollService,\n @Optional() private _dialogRef: MatDialogRef<any>,\n @Optional() private _drawerRef: DrawerRef<any>,\n private _el: ElementRef,\n private _selectionDialog: SelectionDialog,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n private _groupExpandNotifier: GroupExpandNotifierService,\n private _router: Router,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _location: Location,\n ) { }\n\n /**\n * Return reference for filter\n */\n public get filterRef(): FilterComponent {\n return this._filterRef;\n }\n\n public set groupEnabled(value: boolean) {\n this.list.groupEnabled(value);\n }\n\n public get groupEnabled() {\n return this.list.dataController.groupEnabled;\n }\n\n public get hasFilterKeyword(): boolean {\n return this.list.filterInput && this.keywordVisible;\n }\n\n public get hasStatus() {\n return this.list.status &&\n (this.list.sorting.isDefined || this.list.paging.enabled) &&\n (\n !this.reorderController.enabled ||\n (this.reorderController.enabled && this.reorderController.status)\n ) &&\n ((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);\n }\n\n public get paginatorVisible(): boolean {\n return this.list.paging.enabled\n && !this.firstLoad\n && !this.list.scrollable\n && !this.list.emptyStateEnabled\n && this.list.dataController.visibleRowsCount > 0\n && this.list.paging.pages > 1;\n }\n\n public get filtersQuery(): Record<string, unknown> {\n return this.list.filtersQuery;\n }\n\n public get pagingState(): IPaginationState {\n return this.list.paging.state;\n }\n\n public ngAfterContentInit(): void {\n if (this.list.afterInit) {\n this.list.afterInit(this);\n }\n }\n\n public ngOnInit() {\n this._subscribeToRemoveRow();\n this._subscribeToGroupExpandStatusChange();\n }\n\n public ngOnDestroy() {\n if (this.list) {\n this.list.destroy();\n }\n\n this._destroy.next();\n this._destroy.complete();\n }\n\n public nextPage() {\n this.list.paging.goNext();\n }\n\n public prevPage() {\n this.list.paging.goPrev();\n }\n\n public firstPage() {\n this.list.paging.goFirst();\n }\n\n public lastPage() {\n this.list.paging.goLast();\n }\n\n public reload() {\n this.list.reload();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n return this.list.getData(trackBy);\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.list.hasData(trackBy);\n }\n\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.updateData(rows, trackBy);\n }\n\n public replaceRow(\n row: FsListAbstractRow,\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.replaceData(row, trackBy);\n }\n\n public updateSelectionConfig(config: FsListSelectionConfig) {\n this.list.selection.updateConfig(config);\n }\n\n public resetSelectionActions() {\n this.list.selection.resetActions();\n }\n\n public enableSelection() {\n this.list.selection.enableSelection();\n }\n\n public disableSelection() {\n this.list.selection.disableSelection();\n }\n\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n return this.list.dataController.removeData(data);\n }\n\n public setHeading(heading: string) {\n this.list.heading = heading;\n }\n\n public setSubheading(subheading: string) {\n this.list.subheading = subheading;\n }\n\n public reorderStart() {\n this.reorderController.enableReorder();\n }\n\n public reorderFinish() {\n this.reorderController.disableReorder();\n }\n\n public setActions(actions: FsListAction[]) {\n if (actions) {\n this.list.actions.clearActions();\n this.list.actions.setActions(actions);\n }\n }\n\n public filterReady() {\n this.list.filtersReady$.next();\n this._filterParamsReady = true;\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Update visibility for specific column\n */\n public columnVisibility(name: string, show: boolean) {\n this.columnsVisibility([{ name, show }]);\n }\n\n /**\n * Update visibility for list of specific columns\n */\n public columnsVisibility(columns: { name: string; show: boolean }[]) {\n this.list.columns.updateVisibilityForCols(columns);\n }\n\n private _emitFiltersReadyEvent(): void {\n if (!!this.filterRef && this._filterParamsReady) {\n this.filtersReady.emit();\n\n this.keywordVisible = this.filterRef.hasKeyword;\n this._cdRef.markForCheck();\n }\n }\n\n /**\n * Initialize config for list\n *\n * @param config\n */\n private _initWithConfig(config: FsListConfig) {\n if (this.list) {\n this.list.destroy();\n }\n\n const defaultOpts = this._defaultOptions\n ? cloneDeep(this._defaultOptions)\n : {};\n const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);\n\n if (listConfig.persist !== false) {\n this._restorePersistance(listConfig.persist);\n }\n\n this._updateCustomizeAction(listConfig.actions);\n\n this.list = new List(\n this._el,\n listConfig,\n this._scroll,\n this._selectionDialog,\n this._router,\n this._route,\n this._persistance,\n this._inDialog,\n );\n\n this.noRowsHighlight = !this.list.rowHighlight;\n\n this._waitFirstLoad();\n\n this.reorderController.initWithConfig(\n config.reorder,\n this.list.dataController,\n this.list.actions,\n this.list.selection,\n );\n\n if (this._listColumnDirectives) {\n this.list.tranformTemplatesToColumns(this._listColumnDirectives);\n }\n this._listenSortingChange();\n }\n\n /**\n * Find action with customize flag and re-declare click function for CustomizeColsDialog\n *\n * @param actions\n */\n private _updateCustomizeAction(actions: FsListAction[]) {\n const customizeAction = actions?.find((action) => action.customize);\n\n if (customizeAction) {\n const actionClickFn = customizeAction.click;\n\n customizeAction.click = () => {\n if (actionClickFn) {\n actionClickFn(null);\n }\n\n this._dialog.open(CustomizeColsDialogComponent, {\n data: {\n columns: this.list.columns.columnsForDialog,\n changeFn: this.list.columns.changeFn,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe((data) => {\n if (data) {\n this.list.columns.updateVisibilityForCols(data);\n\n this._cdRef.markForCheck();\n }\n });\n };\n }\n }\n\n /**\n * Update sorting in filter\n */\n private _listenSortingChange() {\n this.list.sorting\n .sortingChanged$\n .pipe(\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe((sort) => {\n this._filterRef.updateSort(sort);\n });\n }\n\n private _subscribeToRemoveRow() {\n this.rowRemoved\n .pipe(takeUntil(this._destroy))\n .subscribe((row) => {\n this.list.dataController.removeData(row);\n\n this.body.rows\n .forEach((row) => row.actionsUpdate())\n });\n }\n\n private _subscribeToGroupExpandStatusChange() {\n if (this.list.dataController.hasGroups) {\n this._groupExpandNotifier.expandStatusChange$\n .pipe(\n takeUntil(this._destroy),\n )\n .subscribe((row) => {\n this.list.dataController.toggleRowGroup(row);\n });\n }\n }\n\n private _waitFirstLoad() {\n this.list.loading$\n .pipe(\n skip(1),\n filter((value) => !value),\n take(1),\n takeUntil(this.list.onDestroy$),\n takeUntil(this._destroy),\n )\n .subscribe(() => {\n this.firstLoad = false;\n this._cdRef.markForCheck();\n });\n }\n\n private _configMergeCustomizer(objValue: any, srcValue: any) {\n if (Array.isArray(objValue)) {\n return objValue;\n }\n }\n\n private _restorePersistance(persistConfig: FsListPersitance) {\n const namespace = getNormalizedPath(this._location);\n this._persistance.setConfig(persistConfig, namespace, this._inDialog);\n }\n}\n","<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport {\n ExternalParamsController,\n IFilterSavedFilter,\n SavedFiltersController,\n} from '@firestitch/filter';\n\nimport { map, tap } from 'rxjs/operators';\n\nimport { ReorderPosition } from '../../classes/reorder-controller';\nimport { FsListConfig } from '../../interfaces/listconfig.interface';\n\n\n@Component({\n templateUrl: './manage-saved-filters.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsListManageSavedFiltersComponent {\n\n public config: FsListConfig;\n\n private _reorderReady = true;\n\n constructor(\n private _externalParams: ExternalParamsController,\n ) {\n this._initList();\n }\n\n private get savedFiltersController(): SavedFiltersController {\n return this._externalParams.savedFiltersController;\n }\n\n private _initList(): void {\n this.config = {\n status: false,\n filterInput: false,\n queryParam: false,\n persist: false,\n paging: false,\n reorder: {\n position: ReorderPosition.Left,\n moveDrop: () => {\n return this._reorderReady;\n },\n done: (reorderData) => {\n this._reorderReady = false;\n\n const filterData = reorderData.map((data) => data.data);\n this.savedFiltersController.order(filterData)\n .pipe(\n tap(() => {\n this._reorderReady = true;\n }),\n )\n .subscribe(() => { });\n },\n },\n rowActions: [\n {\n label: 'Apply',\n click: (filter: IFilterSavedFilter) => {\n this._externalParams.setActiveSavedFilter(filter);\n },\n },\n {\n label: 'Delete',\n remove: {\n title: 'Confirm',\n template: 'Are you sure you want to delete this filter?',\n },\n click: (savedFilter) => {\n return this.savedFiltersController.delete(savedFilter);\n },\n },\n ],\n fetch: (query) => {\n return this.savedFiltersController.load()\n .pipe(\n map((response) => {\n return { data: response };\n }),\n );\n },\n\n };\n }\n}\n","<h1 mat-dialog-title>\r\n Manage Saved Filters\r\n</h1>\r\n<div mat-dialog-content>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"name\" title=\"Name\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.name }}\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button\r\n [mat-dialog-close]=\"null\"\r\n type=\"button\"\r\n color=\"primary\">\r\n Done\r\n </button>\r\n</div>\r\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fs-list-content]',\n})\nexport class FsListContentDirective { }\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFilterModule } from '@firestitch/filter';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { FsPromptModule } from '@firestitch/prompt';\nimport { FsScrollModule } from '@firestitch/scroll';\n\nimport { merge } from 'lodash-es';\n\nimport { FsBodyComponent } from './components/body/body.component';\nimport { FsRowActionsComponent } from './components/body/row/actions/actions.component';\nimport { FsCellComponent } from './components/body/row/cell/cell.component';\nimport { FsRowInlineActionComponent } from './components/body/row/inline-action/inline-action.component';\nimport { FsRowMenuActionComponent } from './components/body/row/menu-action/menu-action.component';\nimport { FsRowComponent } from './components/body/row/row.component';\nimport { CustomizeColsDialogComponent } from './components/customize-cols/customize-cols.component';\nimport { FsFooterCellComponent } from './components/footer/footer-row/footer-cell/footer-cell.component';\nimport { FsFooterRowComponent } from './components/footer/footer-row/footer-row.component';\nimport { FsFooterComponent } from './components/footer/footer.component';\nimport { FsHeadCellComponent } from './components/head/head-cell/head-cell.component';\nimport { FsHeadComponent } from './components/head/head.component';\nimport { FsListComponent } from './components/list/list.component';\nimport { FsListLoaderComponent } from './components/loader/loader.component';\nimport { FsListManageSavedFiltersComponent } from './components/manage-saved-filters/manage-saved-filters.component';\nimport { FsPaginationComponent } from './components/pagination/pagination.component';\nimport { FsListSavedFiltersComponent } from './components/saved-filters/saved-filters.component';\nimport { FsStatusComponent } from './components/status/status.component';\nimport {\n FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective,\n} from './directives';\nimport { FsListCellDirective } from './directives/cell/cell.directive';\nimport { FsListColumnDirective } from './directives/column/column.directive';\nimport { FsListContentInitDirective } from './directives/content-init/content-init.directive';\nimport { FsListContentDirective } from './directives/content/content.directive';\nimport { FsListDraggableListDirective } from './directives/draggable-list/draggable-list.directive';\nimport { FsListDraggableRowDirective } from './directives/draggable-row/draggable-row.directive';\nimport { FsListEmptyStateDirective } from './directives/empty-state/empty-state.directive';\nimport { FsListFooterDirective } from './directives/footer/footer.directive';\nimport { FsListGroupExpandTriggerDirective } from './directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from './directives/group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from './directives/group-header/group-header.directive';\nimport { FsListHeaderDirective } from './directives/header/header.directive';\nimport { FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG } from './fs-list.providers';\nimport { FsListConfig } from './interfaces';\nimport { ActionLabelPipe } from './pipes';\n\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatRippleModule,\n FsFilterModule,\n FsMenuModule,\n FsScrollModule,\n FsPromptModule,\n MatDialogModule,\n MatTooltipModule,\n FsFileModule,\n FsCommonModule,\n ],\n declarations: [\n // Components\n FsListComponent,\n FsRowComponent,\n FsRowActionsComponent,\n FsRowInlineActionComponent,\n FsRowMenuActionComponent,\n FsCellComponent,\n FsFooterRowComponent,\n FsFooterCellComponent,\n FsStatusComponent,\n FsListLoaderComponent,\n FsListSavedFiltersComponent,\n FsListManageSavedFiltersComponent,\n\n // Internal Components\n FsHeadComponent,\n FsHeadCellComponent,\n FsBodyComponent,\n FsFooterComponent,\n FsPaginationComponent,\n\n // Directives\n FsListColumnDirective,\n FsListCellDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListDraggableListDirective,\n FsListDraggableRowDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListContentInitDirective,\n FsListSubheadingDirective,\n FsListHeadingDirective,\n FsListHeadingContainerDirective,\n\n // Dialog\n CustomizeColsDialogComponent,\n\n //Pipes\n ActionLabelPipe,\n ],\n exports: [\n FsListComponent,\n FsRowComponent,\n FsCellComponent,\n FsListLoaderComponent,\n FsListColumnDirective,\n FsListCellDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListSubheadingDirective,\n FsListHeadingDirective,\n FsListHeadingContainerDirective,\n ],\n})\nexport class FsListModule {\n public static forRoot(config: FsListConfig = {}): ModuleWithProviders<FsListModule> {\n return {\n ngModule: FsListModule,\n providers: [\n { provide: FS_LIST_CONFIG, useValue: config },\n {\n provide: FS_LIST_DEFAULT_CONFIG,\n useFactory: fsListConfigFactory,\n deps: [FS_LIST_CONFIG],\n },\n ],\n };\n }\n}\n\nexport function fsListConfigFactory(config: FsListConfig) {\n return merge({\n noResults: {\n message: 'No Results Found',\n },\n } as FsListConfig, config);\n}\n","/*\n * Public API Surface of fs-menu\n */\n\n// Modules\nexport { FsListModule } from './app/fs-list.module';\n\n// Providers\nexport { FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG } from './app/fs-list.providers';\n\n// Components\nexport { FsBodyComponent } from './app/components/body/body.component';\nexport { FsCellComponent } from './app/components/body/row/cell/cell.component';\nexport { FsRowComponent } from './app/components/body/row/row.component';\nexport {\n FsFooterCellComponent,\n} from './app/components/footer/footer-row/footer-cell/footer-cell.component';\nexport { FsFooterRowComponent } from './app/components/footer/footer-row/footer-row.component';\nexport { FsFooterComponent } from './app/components/footer/footer.component';\nexport { FsHeadCellComponent } from './app/components/head/head-cell/head-cell.component';\nexport { FsHeadComponent } from './app/components/head/head.component';\nexport { FsListComponent } from './app/components/list/list.component';\nexport { FsListLoaderComponent } from './app/components/loader/loader.component';\nexport { FsPaginationComponent } from './app/components/pagination/pagination.component';\nexport { FsStatusComponent } from './app/components/status/status.component';\n\n// Directives\nexport { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from './app/directives';\nexport { FsListCellDirective } from './app/directives/cell/cell.directive';\nexport { FsListColumnDirective } from './app/directives/column/column.directive';\nexport { FsListContentDirective } from './app/directives/content/content.directive';\nexport { FsListEmptyStateDirective } from './app/directives/empty-state/empty-state.directive';\nexport { FsListFooterDirective } from './app/directives/footer/footer.directive';\nexport { FsListGroupExpandTriggerDirective } from './app/directives/group-expand-trigger/group-expand-trigger.directive';\nexport { FsListGroupFooterDirective } from './app/directives/group-footer/group-footer.directive';\nexport { FsListGroupHeaderDirective } from './app/directives/group-header/group-header.directive';\nexport { FsListHeaderDirective } from './app/directives/header/header.directive';\n\n// Models\nexport { List } from './app/classes/list-controller';\nexport { PaginationController } from './app/classes/pagination-controller';\nexport { ReorderController, ReorderPosition } from './app/classes/reorder-controller';\nexport { SelectionChangeType, SelectionController } from './app/classes/selection-controller';\nexport { SortingController } from './app/classes/sorting-controller';\nexport { Column, SortingDirection } from './app/models/column.model';\nexport { RowAction } from './app/models/row-action.model';\nexport { StyleConfig } from './app/models/styleConfig.model';\n\n// Interfaces\nexport { CellConfig } from './app/interfaces/cellconfig.interface';\nexport {\n FsListAbstractRow, FsListAction, FsListActionSelected, FsListCellConfig, FsListColumn, FsListColumnChangeFn, FsListColumnConfig, FsListColumnLoadFn, FsListConfig, FsListEmptyStateConfig, FsListFetchFn, FsListFetchOptions, FsListFetchSubscription, FsListFooterConfig, FsListGroupConfig, FsListHeaderConfig,\n FsListNoResultsConfig,\n FsListReorderConfig, FsListReorderData, FsListReorderDoneCallback, FsListReorderMoveInGroupCallback, FsListReorderMovedCallback, FsListRestoreConfig, FsListRowAction, FsListRowActionFile, FsListRowActionFileFn, FsListRowActionGroup, FsListRowActionLink,\n FsListRowActionLinkFn, FsListRowClassOptions, FsListScrollableConfig,\n FsListSelectionConfig,\n FsListSortsConfig, FsListStateValidationFn, FsListTrackByFn,\n FsListTrackByTargetRowFn,\n FsPaging,\n} from './app/interfaces/listconfig.interface';\nexport { QueryOffsetStrategy, QueryPageStrategy } from './app/interfaces/pagination.interface';\nexport { SortingChangeEvent } from './app/interfaces/sorting-change-event.interface';\nexport { IPaginationState } from './app/interfaces/pagination-state.interface';\n\n// Enums\nexport { ActionType } from './app/enums/button-type.enum';\nexport { PaginationStrategy } from './app/enums/pagination-strategy.enum';\nexport { RowType } from './app/enums/row-type.enum';\nexport { FsListState } from './app/enums/state.enum';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_get","i1.ReorderController","i1","i3","i4","i5","i5.ActionLabelPipe","i2.FsRowInlineActionComponent","i4.FsRowMenuActionComponent","i6","i7.ActionLabelPipe","i1.FsListDraggableListDirective","i2","i3.FsCellComponent","i4.FsRowActionsComponent","i2.FsListDraggableListDirective","i1.FsRowComponent","i3.FsListDraggableRowDirective","i1.FsFooterCellComponent","i1.FsFooterRowComponent","i2.FsHeadCellComponent","i1.GroupExpandNotifierService","i1.FsListSavedFiltersComponent","i6.GroupExpandNotifierService","i8.PersistanceController","i9","i10","i11.FsStatusComponent","i12.FsHeadComponent","i13.FsBodyComponent","i14.FsFooterComponent","i15.FsListLoaderComponent","i16.FsPaginationComponent","i17.FsListContentInitDirective","i18.FsListDraggableListDirective","i19.FsListFooterDirective","i2.FsListComponent","i5.FsListColumnDirective","i6.FsListCellDirective","merge"],"mappings":"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"}
|