@one-paragon/angular-utilities 2.2.2 → 2.2.3
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/fesm2022/one-paragon-angular-utilities.mjs +159 -80
- package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
- package/package.json +1 -1
- package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +5 -6
- package/table-builder/enums/filterTypes.d.ts +1 -1
- package/table-builder/interfaces/report-def.d.ts +67 -15
- package/table-builder/services/transform-creator.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-paragon-angular-utilities.mjs","sources":["../../../projects/angular-utilities/src/http-request-state/types.ts","../../../projects/angular-utilities/src/http-request-state/helpers.ts","../../../projects/angular-utilities/src/rxjs/defaultShareReplay.ts","../../../projects/angular-utilities/src/http-request-state/directives/request-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/HttpStateDirectiveBase.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-error-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-inProgress-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-notStarted-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-success-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorBody.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorState.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapError.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapSuccess.ts","../../../projects/angular-utilities/src/rxjs/mapError.ts","../../../projects/angular-utilities/src/http-request-state/request-state.ts","../../../projects/angular-utilities/src/http-request-state/http-state-module.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/rxjs/subjectifier.ts","../../../projects/angular-utilities/src/rxjs/subscriber.directive.ts","../../../projects/angular-utilities/src/http-request-state/RequestStateStore.ts","../../../projects/angular-utilities/src/http-request-state/RequestStateFactory.ts","../../../projects/angular-utilities/src/http-request-state/deprecated.ts","../../../projects/angular-utilities/src/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder-general-settings.ts","../../../projects/angular-utilities/src/table-builder/classes/TableState.ts","../../../projects/angular-utilities/src/table-builder/classes/DefaultSettings.ts","../../../projects/angular-utilities/src/table-builder/directives/custom-cell-directive.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/table-wrapper.directive.ts","../../../projects/angular-utilities/src/table-builder/enums/filterTypes.ts","../../../projects/angular-utilities/src/table-builder/directives/tb-filter.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/table-builder/functions/null-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/string-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/number-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/date-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/boolean-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.ts","../../../projects/angular-utilities/src/table-builder/classes/filter-info.ts","../../../projects/angular-utilities/src/utilities/array-helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.html","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/utilities/directives/auto-focus.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/clickEmitterDirective.ts","../../../projects/angular-utilities/src/utilities/directives/dialog-service.ts","../../../projects/angular-utilities/src/utilities/directives/dialog.ts","../../../projects/angular-utilities/src/utilities/directives/styler.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/directives/trim-whitespace.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/directives/conditional-classes.directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html","../../../projects/angular-utilities/src/table-builder/pipes/key-display.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-type.pipe.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-value.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html","../../../projects/angular-utilities/src/table-builder/services/transform-creator.ts","../../../projects/angular-utilities/src/table-builder/components/link-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization.component.html","../../../projects/angular-utilities/src/table-builder/services/table-template-service.ts","../../../projects/angular-utilities/src/table-builder/components/column-header-menu/column-header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-header-menu/column-header-menu.component.html","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-helpers.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/data-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.html","../../../projects/angular-utilities/src/table-builder/functions/download-data.ts","../../../projects/angular-utilities/src/table-builder/services/export-to-csv.service.ts","../../../projects/angular-utilities/src/table-builder/services/link-creator.service.ts","../../../projects/angular-utilities/src/table-builder/ngrx/tableBuilderStateStore.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/paginator.component.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderDataSource.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/meta-data.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.html","../../../projects/angular-utilities/src/table-builder/components/profiles-menu/profiles-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/profiles-menu/profiles-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component-store.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/reset-menu/reset-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/reset-menu/reset-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/table-header-menu/table-header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-header-menu/table-header-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/scroll-strategy.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/virtual-scroll-container.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.component.html","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/MatTableObservableDataSource.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.ts","../../../projects/angular-utilities/src/action-state/ngrx.ts","../../../projects/angular-utilities/src/action-state/ngrx-ext/ngrx-ext.module.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.html","../../../projects/angular-utilities/src/action-state/action-state-ui/action-state-ui.module.ts","../../../projects/angular-utilities/src/action-state/index.ts","../../../projects/angular-utilities/src/ngrx/actionable-selector.ts","../../../projects/angular-utilities/src/public-api.ts","../../../projects/angular-utilities/src/one-paragon-angular-utilities.ts"],"sourcesContent":["import { Injector } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nexport enum RequestStatus {\r\n notStarted,\r\n inProgress,\r\n success,\r\n fail,\r\n cancelled,\r\n }\r\n\r\nexport type RequestStateCancelled = {\r\n status: RequestStatus.cancelled\r\n }\r\n\r\nexport type RequestStateNotStarted = {\r\n status: RequestStatus.notStarted\r\n }\r\n\r\nexport type RequestStateInProgress = {\r\n status: RequestStatus.inProgress\r\n }\r\n\r\nexport type RequestStateSuccess<T> = {\r\n status: RequestStatus.success;\r\n body: T;\r\n }\r\n\r\nexport type RequestStateError = {\r\n status: RequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\nexport type RequestState<T = any> =\r\n RequestStateCancelled |\r\n RequestStateNotStarted |\r\n RequestStateInProgress |\r\n RequestStateSuccess<T> |\r\n RequestStateError ;\r\n\r\nexport enum RequestStrategy {\r\n concurrent = 1,\r\n singleUse = 2,\r\n cancelPrevious = 3,\r\n sequential = 4,\r\n}\r\nexport interface RequestStateOptions<TParam extends any[] = any> {\r\n strategy?: RequestStrategy;\r\n autoRequest?: TParam extends never[] ? true : never;\r\n}\r\n\r\nexport interface RequestCreatorOptions<TParam extends any[] = any> extends RequestStateOptions<TParam> { injector?: Injector }\r\n\r\nexport type RequestFactory<TParam extends any[], T> = (...params: [...TParam]) => Observable<T>\r\n","import { RequestState, RequestStateError, RequestStateInProgress, RequestStateNotStarted, RequestStateSuccess, RequestStatus } from \"./types\";\r\n\r\nexport function isErrorState<T>(state: RequestState<T>): state is RequestStateError {\r\n return state.status === RequestStatus.fail;\r\n}\r\n\r\nexport function isSuccessState<T>(state: RequestState<T>): state is RequestStateSuccess<T> {\r\n return state.status === RequestStatus.success;\r\n}\r\n\r\nexport function isSuccessOrErrorState<T>(state: RequestState<T>): state is (RequestStateSuccess<T> | RequestStateError) {\r\n return state.status === RequestStatus.success || state.status === RequestStatus.fail;\r\n}\r\n\r\nexport function createSuccess<T>(body: T): RequestStateSuccess<T> {\r\n return { status: RequestStatus.success, body };\r\n}\r\n\r\nexport function createFailure(error: any): RequestStateError {\r\n return { status: RequestStatus.fail, error };\r\n}\r\n\r\nexport const notStarted: RequestStateNotStarted = { status: RequestStatus.notStarted };\r\n\r\n\r\nexport const inProgress: RequestStateInProgress = { status: RequestStatus.inProgress };\r\n\r\nexport function statusIsSuccessOrInProgress( status: RequestStatus) {\r\n return [RequestStatus.success, RequestStatus.inProgress].includes(status);\r\n}","import { Observable } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\n\r\nexport function defaultShareReplay<T>() {\r\n return function (src: Observable<T>): Observable<T> {\r\n return src.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\r\n };\r\n}","import { Directive, Input, TemplateRef, ViewContainerRef, OnDestroy } from '@angular/core';\r\nimport { defaultShareReplay } from '../../rxjs/defaultShareReplay';\r\nimport { isObservable, Observable, Subject, Unsubscribable } from 'rxjs';\r\nimport { map, switchAll } from 'rxjs/operators';\r\nimport { RequestStateStore } from '../RequestStateStore';\r\nimport { RequestState, RequestStatus } from '../types';\r\n\r\nexport interface HttpRequestStateViewContext<T> {\r\n $implicit?: HttpRequestStateAny<T>;\r\n state?: HttpRequestStateAny<T>;\r\n status: {\r\n inProgress: boolean;\r\n notStarted: boolean;\r\n success: boolean;\r\n error: boolean;\r\n };\r\n}\r\n\r\n@Directive({ selector: '[httpRequestState]', })\r\nexport class HttpRequestStateDirective<TParam extends any[], V, R, T = R extends null ? V : R> implements OnDestroy {\r\n private viewContainer: ViewContainerRef;\r\n\r\n readonly ViewContext: HttpRequestStateViewContext<T> = {\r\n $implicit: undefined,\r\n state: undefined,\r\n status: {\r\n inProgress: false,\r\n notStarted: true,\r\n success: false,\r\n error: false,\r\n }\r\n };\r\n\r\n\r\n subject = new Subject<Observable<RequestState<T>>>();\r\n state = this.subject.pipe(switchAll(), defaultShareReplay());\r\n subscription: Unsubscribable;\r\n hooks: ((state: RequestState<T>) => void)[] = [];\r\n\r\n @Input('httpRequestState') set stateStore(store: RequestStateStore<TParam, V, R, T> | Observable<RequestState<T>>) {\r\n if(isObservable(store)) {\r\n this.subject.next(store);\r\n } else {\r\n this.subject.next(store.state$.pipe(map(state => state.response)));\r\n }\r\n\r\n }\r\n constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef) {\r\n this.viewContainer = viewContainer;\r\n this.viewContainer.createEmbeddedView(templateRef, this.ViewContext);\r\n this.subscription = this.state.subscribe(state => {\r\n this.ViewContext.$implicit = state;\r\n this.ViewContext.state = state;\r\n this.ViewContext.status.inProgress = state.status === RequestStatus.inProgress;\r\n this.ViewContext.status.notStarted = state.status === RequestStatus.notStarted;\r\n this.ViewContext.status.success = state.status === RequestStatus.success;\r\n this.ViewContext.status.error = state.status === RequestStatus.fail;\r\n this.hooks.forEach(hook => hook(state));\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.viewContainer.clear();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpRequestStateDirective<any, V, R>, ctx: any): ctx is HttpRequestStateViewContext<R extends null ? V : R> {\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport type HttpRequestStateAny<T> = {\r\n status: RequestStatus;\r\n body?: T;\r\n error?: any;\r\n}\r\n","import { Directive, inject, Injector, TemplateRef, ViewContainerRef, OnInit } from '@angular/core';\r\nimport { RequestState } from '../types';\r\nimport { HttpRequestStateDirective } from './request-state-directive';\r\n\r\n@Directive()\r\nexport abstract class HttpStateDirectiveBase<V, R = null> implements OnInit {\r\n hasView = false;\r\n private injector = inject(Injector);\r\n protected templateRef = inject(TemplateRef<{ $implicit: R extends null ? V : R }>);\r\n protected viewContainer = inject(ViewContainerRef);\r\n ngOnInit() {\r\n const parent = this.injector.get(HttpRequestStateDirective);\r\n if(parent == null) {\r\n throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');\r\n }\r\n parent.hooks.push(this.baseRender);\r\n this.baseRender(parent.ViewContext.state);\r\n }\r\n\r\n private baseRender = (state: RequestState): void => {\r\n if(this.hasView) {\r\n this.viewContainer.clear();\r\n this.hasView = false;\r\n }\r\n this.hasView = this.render(state);\r\n }\r\n\r\n abstract render: (state: RequestState) => boolean;\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { isErrorState } from '../helpers';\r\nimport { RequestState } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n@Directive({ selector: '[httpErrorState]', })\r\nexport class HttpErrorStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n\r\n\r\n render = (state: RequestState<any>) => {\r\n if(isErrorState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}","import { Directive, OnInit } from '@angular/core';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { RequestState, RequestStatus } from '../types'\r\n\r\n\r\n@Directive({ selector: '[httpInProgressState]', })\r\nexport class HttpInProgressStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n render = (state: RequestState<any>) => {\r\n if(state.status === RequestStatus.inProgress){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { RequestState, RequestStatus } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n\r\n@Directive({ selector: '[httpNotStartedState]', })\r\nexport class HttpNotStartedStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n render = (state: RequestState<any>) => {\r\n if(state.status === RequestStatus.notStarted){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { RequestState } from '../types';\r\nimport { RequestStateStore } from '../RequestStateStore';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpSuccessStateViewContext<T> {\r\n $implicit: T;\r\n}\r\n@Directive({ selector: '[httpSuccessState]', })\r\nexport class HttpSuccessStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n @Input() httpSuccessStateTypeSafety?: RequestStateStore<any, V, R> | Observable<RequestState<V>>;\r\n render = (state: RequestState<R extends null ? V : R>) => {\r\n if(isSuccessState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpSuccessStateDirective<V, R>, ctx: any): ctx is HttpSuccessStateViewContext<R extends null ? V : R> {\r\n return true;\r\n }\r\n}\r\n","import { isSuccessState } from '../helpers';\r\nimport { RequestState } from '../types';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nexport const getRequestorBody = <T>(source: Observable<RequestState<T>>) =>\r\n source.pipe(\r\n filter(isSuccessState),\r\n map( res => res.body)\r\n );","import { RequestState } from '../types';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const getRequestorStatus = <T>(source: Observable<RequestState<T>>) =>\r\n source.pipe(\r\n map( res => res.status)\r\n );","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { RequestState } from '../types';\r\nimport { isErrorState } from '../helpers';\r\n\r\nexport function tapError(onError: (error: any) => void) {\r\n return function (src: Observable<RequestState>): Observable<RequestState> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isErrorState(result)) {\r\n onError(result.error);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { RequestState } from '../types';\r\nimport { isSuccessState } from '../helpers';\r\n\r\nexport function tapSuccess<T>(onSuccess: (body: T) => void) {\r\n return function (src: Observable<RequestState<T>>): Observable<RequestState<T>> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isSuccessState(result)) {\r\n onSuccess(result.body);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nexport function mapError<T, TResult>(projection: (error: any) => TResult) {\r\n return function (src: Observable<T>): Observable<T | TResult> {\r\n return src.pipe(catchError(e => of(projection(e))),);\r\n };\r\n}","import { map, startWith, switchMap } from 'rxjs/operators';\r\nimport { getRequestorBody } from './rxjs/getRequestorBody';\r\nimport { getRequestorStatus } from './rxjs/getRequestorState';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { RequestFactory, RequestState, RequestStatus } from './types';\r\nimport { createFailure, createSuccess, inProgress, notStarted } from './helpers';\r\n\r\nexport type HttpRequestState$ <T> = Observable<RequestState<T>>;\r\n\r\nexport interface HttpRequestor <Res, Req> {\r\n httpState$: Observable<RequestState<Res>>;\r\n status$: Observable<RequestStatus>;\r\n body$: Observable<Res>;\r\n request: Req;\r\n}\r\n\r\nexport function httpRequest<T = any>(req: Observable<T>): HttpRequestState$<T> {\r\n return req.pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n defaultShareReplay()\r\n );\r\n}\r\n\r\nexport function httpRequestor<TParam extends any[], T>(req: RequestFactory<TParam, T> ): HttpRequestor<T, (...params: [...TParam]) => Observable<RequestState<T>>> {\r\n const request$ = new ReplaySubject<[...TParam]>(1);\r\n const httpState$ : HttpRequestState$<T> = request$.pipe(\r\n switchMap( (params) => httpRequest<T>(req(...params)) ),\r\n startWith(notStarted),\r\n defaultShareReplay(),\r\n );\r\n const request = (...params: [...TParam]) => {\r\n request$.next(params);\r\n return httpState$;\r\n };\r\n return ({\r\n request,\r\n httpState$,\r\n body$: httpState$.pipe(getRequestorBody),\r\n status$: httpState$.pipe(getRequestorStatus)\r\n });\r\n}\r\n\r\nexport function chainRequest<TParam extends any[], T, TT>(\r\n httpState$: Observable<RequestState<T>>,\r\n request:RequestFactory<TParam, TT>,\r\n requestParams: ((responseFromPrevious: T) => [...TParam]) | (() => [...TParam])\r\n): Observable<RequestState<TT>> {\r\n return httpState$.pipe(\r\n switchMap( res => {\r\n if(res.status === RequestStatus.success) {\r\n const secondReq = httpRequestor<[...TParam], TT>(request);\r\n const param = requestParams(res.body);\r\n secondReq.request(...param );\r\n return secondReq.httpState$;\r\n } else {\r\n return of(res);\r\n }\r\n }),\r\n );\r\n}\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpSuccessStateDirective } from './directives/http-success-state-directive';\r\nimport { HttpRequestStateDirective } from './directives/request-state-directive';\r\nimport { HttpErrorStateDirective } from './directives/http-error-state-directive';\r\nimport { HttpInProgressStateDirective } from './directives/http-inProgress-state-directive';\r\nimport { HttpNotStartedStateDirective } from './directives/http-notStarted-state-directive';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ],\r\n exports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ]\r\n}) export class HttpRequestModule { }","import { Predicate } from '@angular/core';\r\nimport {\r\n filter,\r\n first,\r\n map,\r\n pairwise,\r\n startWith,\r\n Observable,\r\n combineLatest,\r\n Subscription,\r\n MonoTypeOperatorFunction,\r\n OperatorFunction,\r\n concatMap,\r\n merge,\r\n of,\r\n delay,\r\n pipe\r\n} from 'rxjs';\r\n\r\n\r\nexport const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {\r\n return src.pipe(filter(predicate), first());\r\n}\r\n\r\nexport const mapArray = <T, U>(mapFunc: (src: T, index?: number) => U ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.map(mapFunc) ) );\r\n\r\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.filter(filterFunc) ) );\r\n\r\nexport const onWait = startWithIfEmpty;\r\nexport function startWithIfEmpty<T, V extends T>(val: V, wait = 0) : MonoTypeOperatorFunction<T> {\r\n return (source: Observable<T>) => {\r\n return new Observable<T>(subscriber => {\r\n let emitted = false;\r\n setTimeout(() => {\r\n if(!emitted) {\r\n subscriber.next(val);\r\n }\r\n }, wait);\r\n const sub = source.subscribe({\r\n next(x) { emitted = true; subscriber.next(x) },\r\n error(err) { emitted = true; subscriber.error(err) },\r\n complete() { emitted = true; subscriber.complete(); }\r\n });\r\n return () => sub.unsubscribe();\r\n });\r\n }\r\n\r\n}\r\n\r\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\r\n return combineLatest(\r\n sources.map( src => src.pipe(startWithIfEmpty([] as T [])))\r\n ).pipe(\r\n map( res => res.flat() )\r\n );\r\n};\r\n\r\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsciber => {\r\n let isOn = defaultState;\r\n const subscription = new Subscription();\r\n subscription.add( switchSource.subscribe( on => isOn = on ));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(isOn) {\r\n subsciber.next(value);\r\n }\r\n },\r\n error: error => subsciber.error(error),\r\n complete: () => subsciber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function skipOneWhen( skipper: Observable<any> ) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsriber => {\r\n const subscription = new Subscription();\r\n let skipNext = false;\r\n subscription.add(skipper.subscribe( _ => skipNext = true));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(skipNext) {\r\n skipNext = false;\r\n } else {\r\n subsriber.next(value);\r\n }\r\n },\r\n error: error => subsriber.error(error),\r\n complete: () => subsriber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\r\n return (source: Observable<T>) => {\r\n return source.pipe(startWith(startingValue), pairwise());\r\n }\r\n}\r\n\r\nexport function notNull<T>() {\r\n return pipe(filter<T, NonNullable<T>>((o): o is NonNullable<T> => o != null))\r\n}\r\n\r\nexport function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {\r\n return (src: Observable<T>) => {\r\n return src.pipe(\r\n concatMap(r => {\r\n if(predicate(r)) {\r\n return merge(\r\n of({ r }),\r\n of(null).pipe(delay(delayTime))\r\n ).pipe(\r\n notNull(),\r\n map(d => d.r)\r\n );\r\n } else {\r\n return of(r);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { merge, Observable, Observer, Subject } from 'rxjs';\r\ntype PipeLike<T> = Observable<T>['pipe'];\r\nexport class Subjectifier<T> extends Observable<T>{\r\n private _subj = new Subject<T>();\r\n private merged: Observable<T>;\r\n constructor(_source: Observable<T>){\r\n super((obs: Observer<T>) => {\r\n const s = merge( _source, this._subj ).subscribe(obs);\r\n return s;\r\n });\r\n\r\n this.merged = merge(_source, this._subj);\r\n }\r\n next: Subject<T>['next'] = this._subj.next.bind(this._subj);\r\n newSubj = (...operations: Parameters<PipeLike<T>>) =>\r\n new Subjectifier(this.merged.pipe(...operations));\r\n}","import { DestroyRef, Directive, Injector, OnDestroy, assertInInjectionContext, inject } from \"@angular/core\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\n\r\n@Directive()\r\nexport class Subscriber implements OnDestroy{\r\n subscriptions: Subscription[] = [];\r\n handle = (subscription: Subscription) => {\r\n this.subscriptions.push(subscription);\r\n }\r\n on = <T = any>(obs: Observable<T>, action: (t: T) => any) => {\r\n this.handle(obs.subscribe(action));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n}\r\n\r\nexport function subscriber(injector: Injector): Subscriber\r\nexport function subscriber(subscription?: Subscription, injector?: Injector): Subscriber\r\nexport function subscriber<T = any>(obs: Observable<T>, action: (t: T) => any, injector?: Injector): Subscriber\r\nexport function subscriber<T = any>(obsOrSubOrInjector?: Observable<T> | Subscription | Injector, actionOrInjector?: ((t: T) => any) | Injector, injector?: Injector): Subscriber {\r\n\r\n const destroyRef = getDestroyRef(obsOrSubOrInjector, actionOrInjector, injector);\r\n\r\n const subscriber = new Subscriber();\r\n\r\n if(obsOrSubOrInjector instanceof Subscription){\r\n subscriber.handle(obsOrSubOrInjector);\r\n } else if(obsOrSubOrInjector instanceof Observable){\r\n subscriber.handle(obsOrSubOrInjector.subscribe(actionOrInjector as (t: T) => any));\r\n }\r\n\r\n destroyRef.onDestroy(() => subscriber?.ngOnDestroy());\r\n\r\n return subscriber;\r\n}\r\n\r\nfunction getDestroyRef(obsOrSubOrInjector: any, actionOrInjector?: any, injector?: Injector){\r\n const providedInjector = obsOrSubOrInjector instanceof Injector ? obsOrSubOrInjector\r\n : actionOrInjector instanceof Injector ? actionOrInjector\r\n : injector;\r\n\r\n if(!providedInjector){\r\n try {\r\n assertInInjectionContext(subscriber);\r\n } catch (error) {\r\n throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');\r\n }\r\n }\r\n\r\n const destroyRef = providedInjector?.get(DestroyRef) || inject(DestroyRef);\r\n\r\n return destroyRef;\r\n}","import { combineLatest, Observable, of, pipe, Subject, Subscription } from 'rxjs';\r\nimport { RequestFactory as RequestFactory, RequestStrategy as RequestStrategy, RequestStatus, RequestState, RequestStateOptions, RequestStateCancelled } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { concatMap, filter, map, mergeMap, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { assertInInjectionContext, computed, DestroyRef, inject, InjectionToken, Injector, isSignal, signal, Signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { notNull } from '../rxjs';\r\n\r\nexport interface RequestResponse<TParam extends any[], T> {\r\n requestParams: [...TParam];\r\n response: RequestState<T>;\r\n}\r\n\r\nexport class RequestStateStore<TParam extends any[], V, R = null, T = R extends null ? V : R> {\r\n private _state = signal<RequestResponse<TParam, T>>({ requestParams: null as any, response: notStarted });\r\n private setState = (state: RequestResponse<TParam, T>) => this._state.set(state);\r\n state = this._state.asReadonly();\r\n state$ = toObservable(this.state);\r\n private options?: RequestStateOptions;\r\n private project?: (v: V) => R;\r\n private req: RequestFactory<TParam, V>;\r\n private injector = inject(Injector)\r\n private destroy$ = new Subject<void>();\r\n private defaultErrorHandling?: (e?: any) => void;\r\n private _useDefaultErrorHandler?: boolean;\r\n private defaultSuccessHandling?: (e?: T) => void;\r\n\r\n constructor(req: RequestFactory<TParam, V>, options?: RequestStateOptions<TParam>, project?: (v: V) => R) {\r\n this.assertInjectionContext();\r\n this.injector.get(DestroyRef).onDestroy(() => this.destroy$.next());\r\n\r\n this.project = project;\r\n this.options = options;\r\n this.req = req;\r\n\r\n const config = inject(RequestStateStoreConfigToken, { optional: true });\r\n if(config){\r\n this.defaultErrorHandling = config.defaultErrorHandling;\r\n this._useDefaultErrorHandler = config.useDefaultErrorHandler;\r\n this.defaultSuccessHandling = config.defaultSuccessHandling;\r\n\r\n if(this._useDefaultErrorHandler){\r\n this.subscriber(this.selectError$, e => {\r\n if(!this.errorHandled){\r\n this.#onDefaultErrorHandling(e);\r\n }\r\n })\r\n }\r\n }\r\n\r\n this.request = (this.options?.strategy === RequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;\r\n if(options?.autoRequest){\r\n (this.request as any)();\r\n }\r\n }\r\n\r\n reset() {\r\n this._state.set({ requestParams: null as any, response: notStarted });\r\n }\r\n\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy === RequestStrategy.concurrent)\r\n return mergeMap( (params: [...TParam]) => this.createRequest(...params));\r\n\r\n if(this.options?.strategy === RequestStrategy.sequential)\r\n return concatMap( (params: [...TParam]) => this.createRequest(...params));\r\n\r\n return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?\r\n of({ requestParams: params[0], response: { status: RequestStatus.cancelled } as RequestStateCancelled } ) : this.createRequest(...params) );\r\n }\r\n\r\n private createRequestPipeline = () => {\r\n const origin$ = new Subject<[...TParam]>();\r\n const sub = origin$.pipe(\r\n this.flatteningStrategy(),\r\n tap<RequestResponse<TParam, T>>(state => this.setState(state)),\r\n pipe(takeUntil(this.destroy$))\r\n ).subscribe();\r\n return (params: [...TParam]) => {\r\n origin$.next(params);\r\n return sub;\r\n }\r\n }\r\n\r\n private requestPipeLine = this.createRequestPipeline();\r\n\r\n private flattenedRequest = (...value: [...TParam]) => {\r\n return this.requestPipeLine(value);\r\n }\r\n private singleUseRequest = (...value: [...TParam]) => {\r\n if(this.state().response.status !== RequestStatus.notStarted) {\r\n throw new Error(\"state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.\");\r\n }\r\n return this.requestPipeLine(value);\r\n }\r\n\r\n $selectRequestState = computed(() => this.state().response);\r\n selectRequestState$ = this.state$.pipe(map(s => s.response));\r\n /**\r\n * @deprecated use selectRequestState$ instead\r\n */\r\n selectHttpState$ = this.selectRequestState$;\r\n $selectStatus = computed(() => this.$selectRequestState()?.status);\r\n selectStatus$ = this.selectRequestState$.pipe(map(s => s.status));\r\n $isSuccess = computed(() => isSuccessState(this.$selectRequestState()));\r\n $isError = computed(() => isErrorState(this.$selectRequestState()));\r\n $isInProgress = computed(() => this.$selectStatus() === RequestStatus.inProgress);\r\n $isNotStarted = computed(() => this.$selectStatus() === RequestStatus.notStarted);\r\n\r\n selectError$ = this.selectRequestState$.pipe(\r\n filter(isErrorState),\r\n map(state => state.error)\r\n );\r\n\r\n $selectError = computed(() => {\r\n const state = this.$selectRequestState();\r\n if(isErrorState(state)) return state.error\r\n })\r\n\r\n selectResponse$: Observable<T> = this.selectRequestState$.pipe(\r\n filter(isSuccessState),\r\n map( state => state.body)\r\n );\r\n\r\n $selectResponse = computed(() => {\r\n const state = this.$selectRequestState();\r\n if(isSuccessState(state)){\r\n return state.body\r\n }\r\n return undefined;\r\n })\r\n\r\n private selectSuccessOrError$: Observable<void> = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessOrErrorState),\r\n map(() => undefined)\r\n );\r\n\r\n errorHandled = false;\r\n onError( cb: (error: HttpErrorResponse) => void) {\r\n this.errorHandled = true;\r\n this.subscriber(this.selectError$, cb);\r\n return this;\r\n }\r\n\r\n #onDefaultErrorHandling = (e: any) => {\r\n if(this.defaultErrorHandling) this.defaultErrorHandling(e)\r\n else console.error(e)\r\n }\r\n /**\r\n * if no handler was provided will call `console.error`\r\n */\r\n useDefaultErrorHandler(){\r\n this.subscriber(this.selectError$, this.#onDefaultErrorHandling);\r\n return this;\r\n }\r\n\r\n /**\r\n * if no handler was provided will call `console.log` with 'Success'\r\n */\r\n useDefaultSuccessHandler(){\r\n this.subscriber(this.selectResponse$, this.defaultSuccessHandling || (() => console.log('Success')));\r\n return this;\r\n }\r\n\r\n onSuccess( cb: (body?: T) => void) {\r\n this.subscriber(this.selectResponse$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessOrError(cb: () => void){\r\n this.subscriber(this.selectSuccessOrError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessWithRequest(\r\n func: (state: { requestParams: [...TParam]; body: T; }) => void\r\n ) {\r\n this.subscriber(this.state$,\r\n ({ requestParams, response }) => {\r\n\r\n if(isSuccessState(response)) func({ requestParams, body: response.body });\r\n }\r\n );\r\n return this;\r\n }\r\n\r\n onErrorWithRequest(\r\n func: (state: { error: HttpErrorResponse; requestParams: [...TParam]; }) => void\r\n ) {\r\n this.errorHandled = true;\r\n this.subscriber(this.state$,\r\n ({ requestParams, response }) => {\r\n\r\n if(isErrorState(response)) func({ requestParams, error: response.error });\r\n }\r\n );\r\n\r\n return this;\r\n }\r\n\r\n private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam, T>> {\r\n return this.req(...params).pipe(\r\n map(re => createSuccess((this.project ? this.project(re) : re) as T)),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n map( state => ({ requestParams: params, response: state })),\r\n defaultShareReplay()\r\n );\r\n }\r\n\r\n private subscriber = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {\r\n return srcObservable.pipe(tap(func), takeUntil(this.destroy$)).subscribe();\r\n }\r\n\r\n /**\r\n * @deprecated use the standalone subscriber helper function\r\n */\r\n on = this.subscriber;\r\n request: (...value: [...TParam] ) => Subscription;\r\n\r\n requestWith = (params: Observable<[...TParam]> | Signal<[...TParam]>) => {\r\n if(isSignal(params)){\r\n params = toObservable(params, { injector: this.injector }).pipe(notNull());\r\n }\r\n params.pipe(takeUntil(this.destroy$)).subscribe((p) => this.request(...p));\r\n return this;\r\n }\r\n\r\n private assertInjectionContext(){\r\n try {\r\n assertInInjectionContext(RequestStateStore);\r\n } catch (error) {\r\n throw new Error('RequestStateStore must be created in an Injection Context');\r\n }\r\n }\r\n\r\n destroy() {\r\n this.destroy$.next();\r\n }\r\n}\r\nexport class CancellationToken {}\r\n\r\nexport function wrapInArr<T extends [Signal<any>, ...Signal<any>[]]>(...sigs: T) : Signal<{ [K in keyof T]: T[K] extends Signal<infer U> ? U : never }>;\r\nexport function wrapInArr<T extends [Observable<any>, ...Observable<any>[]]>(...obs: T): Observable<{ [K in keyof T]: T[K] extends Observable<infer U> ? U : never }>;\r\n/**\r\n * If any values from the array of signals or observables are null or undefined, all values will be filtered\r\n */\r\nexport function wrapInArr<T extends Signal<any>[] | Observable<any>[]>(...sigOrObs: T){\r\n if(isSignal(sigOrObs[0])){\r\n return computed(() => {\r\n const arr = (sigOrObs as Signal<T>[]).map(s => s()) as { [K in keyof T]: T[K] extends Signal<infer U> ? U : never };\r\n if(arr.some(s => s == undefined)) return undefined;\r\n return arr;\r\n });\r\n }\r\n else {\r\n return combineLatest(sigOrObs as Observable<any>[]).pipe(filter(vals => vals.every(val => val != undefined))) as Observable<{ [K in keyof T]: T[K] extends Observable<infer U> ? U : never }>;\r\n\r\n }\r\n}\r\n\r\nexport interface RequestStateStoreConfig {\r\n /**\r\n * if `useDefaultErrorHandler` is `true` this will run on each error if no other handler provided.\r\n * else can be used by call `.useDefaultHandler`\r\n */\r\n defaultErrorHandling?: (e?: any) => void;\r\n /**\r\n * if `useDefaultErrorHandler` is `true` `defaultErrorHandling` will run on each error if no other handler provided.\r\n */\r\n useDefaultErrorHandler?: boolean;\r\n\r\n /**\r\n * will be called if `useDefaultSuccess` is used\r\n */\r\n defaultSuccessHandling?: <T>(e?: T) => void;\r\n}\r\n\r\nexport const RequestStateStoreConfigToken = new InjectionToken<RequestStateStoreConfig>('RequestStateConfig');\r\n\r\n","import { Injectable, Injector, OnDestroy, assertInInjectionContext, inject, runInInjectionContext } from \"@angular/core\";\r\nimport { RequestFactory, RequestStateOptions, RequestCreatorOptions } from \"./types\";\r\nimport { RequestStateStore } from './RequestStateStore';\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class RequestStateFactory implements OnDestroy {\r\n\r\n constructor() {}\r\n ngOnDestroy(): void {\r\n this.requestors.forEach( request => request.destroy());\r\n }\r\n private requestors: RequestStateStore<any, any, any>[] = [];\r\n\r\n create<TParam extends any[], V>( req: RequestFactory<TParam, V>, options?: RequestStateOptions<TParam>) : RequestStateStore<TParam, V>\r\n create<TParam extends any[], V, R, T = R>( req: RequestFactory<TParam, V>, project: (v: V) => R, options?: RequestStateOptions<TParam>) : RequestStateStore<TParam, V, T>\r\n create<TParam extends any[], V, R = null, T = R extends null ? V : R>(req: RequestFactory<TParam, V>, optionsOrProject?: RequestStateOptions<TParam> | ((v: V) => R), options?: RequestStateOptions<TParam> ) : RequestStateStore<TParam, V, R, T> {\r\n const requestor = (typeof (optionsOrProject) === 'function' ? new RequestStateStore<TParam, V, R, T>(req, options, optionsOrProject) : new RequestStateStore<TParam, V, R, T>(req, optionsOrProject));\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n createHttpClient<T>( r: (o: Observable<T> ) => Observable<T>, options?: RequestStateOptions<any> ) {\r\n const requestor = new RequestStateStore(r, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n}\r\n\r\nexport function createRequestor<TParam extends any[], V>( req: RequestFactory<TParam, V>, options?: RequestCreatorOptions<TParam>) : RequestStateStore<TParam, V>\r\nexport function createRequestor<TParam extends any[], V, R, T = R>( req: RequestFactory<TParam, V>, project: (v: V) => R, options?: RequestCreatorOptions<TParam>) : RequestStateStore<TParam, V, T>\r\nexport function createRequestor<TParam extends any[], V, R = null, T = R extends null ? V : R>( req: RequestFactory<TParam, V>, optionsOrProject?: RequestCreatorOptions<TParam> | ((v: V) => R), options?: RequestCreatorOptions<TParam> ) : RequestStateStore<TParam, V, R, T>{\r\n const ops = typeof (optionsOrProject) === 'function' ? options : optionsOrProject;\r\n const injector = getInjector(ops);\r\n return runInInjectionContext(injector, () => {\r\n const requestStore = typeof (optionsOrProject) === 'function' ?\r\n new RequestStateStore<TParam, V, R, T>(req, options, optionsOrProject)\r\n : new RequestStateStore<TParam, V, R, T>(req, optionsOrProject);\r\n\r\n return requestStore;\r\n })\r\n}\r\n\r\nfunction getInjector(options?: RequestCreatorOptions<any>){\r\n const providedInjector = options?.injector;\r\n\r\n if(!providedInjector){\r\n try {\r\n assertInInjectionContext(createRequestor);\r\n } catch (error) {\r\n throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');\r\n }\r\n }\r\n\r\n return providedInjector ?? inject(Injector);\r\n}","/**\r\n * @deprecated use RequestStateFactory\r\n */\r\nexport { RequestStateFactory as HttpRequestStateFactory } from './RequestStateFactory';\r\n/**\r\n * @deprecated use RequestStatus\r\n */\r\nexport { RequestStatus as HttpRequestStatus } from './types';\r\n/**\r\n * @deprecated use RequestState\r\n */\r\nexport type { RequestState as HttpRequestState } from './types'\r\n/**\r\n * @deprecated use RequestStateStore\r\n */\r\nexport { RequestStateStore as HttpRequestStateStore } from './RequestStateStore';\r\n/**\r\n * @deprecated use RequestStrategy\r\n */\r\nexport { RequestStrategy as HttpRequestStrategy } from './types';","import { Dictionary } from './dictionary';\r\nimport { PipeTransform, Predicate, TemplateRef } from '@angular/core';\r\nimport { TableBuilderExport } from '../classes/TableBuilderConfig';\r\nimport { QueryParamsHandling } from '@angular/router';\r\nimport { StylerStyle } from '../../utilities/directives/styler';\r\n\r\n\r\nexport enum FieldType {\r\n Unknown = 0,\r\n Date = 1,\r\n /**\r\n * @deprecated If `additional.link` is set the column will be treated as a link.\r\n */\r\n Link = 2,\r\n ImageUrl = 3,\r\n Currency = 4,\r\n Array = 5,\r\n Hidden = 6,\r\n Number = 7,\r\n String = 8,\r\n Boolean = 9,\r\n PhoneNumber = 10,\r\n /**\r\n * @deprecated For mapped properties use proper type (for sorting and filtering) with `map`.\r\n * For unmapped properties use `FieldType.NotMapped` with map.\r\n */\r\n Expression = 11,\r\n Enum = 12,\r\n DateTime = 13,\r\n NotMapped = 14,\r\n}\r\n\r\nexport enum SortDirection {\r\n asc= 'asc',\r\n desc= 'desc'\r\n}\r\n\r\nexport enum Target {\r\n Blank = '_blank',\r\n Self = '_self',\r\n Parent = '_parent',\r\n Top = '_top'\r\n}\r\n\r\ninterface BaseMeta <T = any> {\r\n displayName?: string;\r\n additional?: Additional<T>;\r\n order?: number;\r\n preSort?: SortDef;\r\n sortLogic?: {\r\n /**\r\n * defaults to last\r\n */\r\n nulls?: 'first' | 'last';\r\n sortBy?: ((t: T) => any) | 'use map';\r\n }\r\n noSort?: boolean;\r\n width?: string;\r\n noExport?: boolean;\r\n filterLogic?: {\r\n filterBy?: ((t: T) => any) | 'use map';\r\n /**\r\n * defaults to the MetaData's Field type\r\n */\r\n filterType?: FieldType;\r\n },\r\n noFilter?: boolean;\r\n customCell?: boolean;\r\n /**\r\n * @deprecated Please use map instead\r\n */\r\n transform?: ((o: T, ...args: any[])=> any) | ((o: string, ...args: any[])=> any) | PipeTransform;\r\n click?: (element: T, key?: string, event?: MouseEvent ) => void;\r\n template?: TemplateRef<any>;\r\n classes?: Dictionary<Predicate<T> | true>;\r\n toolTip?: string | ((t:T) => string);\r\n useIcon?: boolean;\r\n map? : (t:T) => any;\r\n}\r\ntype Path<T, U = never, P = never> =\r\n (T extends P ? never : T extends object ?\r\n { [K in keyof T]: K extends string | number ? `${K}` | (T[K] extends (Array<any> | undefined) ? `${K}.${keyof Array<any> & (string | number)}` : `${K}.${Path<T[K], T[K], P | U >}`) : never; }[keyof T]\r\n : never)\r\n\r\nexport interface MappedMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMeta<T> {\r\n key: (Path<T> | AdditionalFields[number]) & string;\r\n fieldType: Exclude<typeof FieldType[keyof typeof FieldType], FieldType.NotMapped | FieldType.Expression>;\r\n /**\r\n * if used with map, `mapItem` will only be used where the row is not available, ex. group header\r\n */\r\n mapItem?: (i: string) => any;\r\n}\r\n\r\nexport type MetaData<T = any, AdditionalFields extends string[] = []> = MappedMetaData<T, AdditionalFields> | NotMappedMetaData<T>;\r\n\r\nexport interface NotMappedMetaData<T = any> extends BaseMeta<T> {\r\n key: string;\r\n fieldType: FieldType.NotMapped | FieldType.Expression;\r\n}\r\nexport interface ReportDef<DataType = any> {\r\n data: DataType[];\r\n metaData: MetaData [];\r\n totalRecords?: number;\r\n count: number;\r\n}\r\n\r\nexport interface SortDef {\r\n direction: SortDirection;\r\n precedence?: number;\r\n}\r\n\r\nexport interface FilterOptions {\r\n filterableValues : string[]\r\n}\r\nexport interface DateTimeOptions {\r\n format?: string;\r\n includeSeconds?: boolean;\r\n includeMilliseconds: boolean;\r\n}\r\ntype interpolatedRoute = string;\r\nexport interface Additional<T = any> {\r\n link? : {\r\n base?: string;\r\n urlKey?: string;\r\n target?: Target;\r\n useRouterLink?: boolean;\r\n /**\r\n * If you want to use a route with interpolated params, you can use this. Wrap the property name in curly braces.\r\n * For example, if interpolatedRoute = /users/{id}/edit, {id} will be replaced with the value of the element's id property.\r\n */\r\n interpolatedRoute?: interpolatedRoute | ((t: T) => string);\r\n routerLinkOptions?:{\r\n queryParams?: [string, interpolatedRoute | ((t: T) => string)][];\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n }\r\n footer?: { type: 'sum' };\r\n export?: TableBuilderExport;\r\n dateFormat?: string;\r\n dateTimeOptions?: DateTimeOptions;\r\n filterOptions?: FilterOptions;\r\n styles?: StylerStyle<T>;\r\n columnPartStyles?: {\r\n header?: Dictionary<string>,\r\n body?: StylerStyle<T>,\r\n innerBody?: StylerStyle<T>,\r\n footer?: Dictionary<string>,\r\n }\r\n columnPartClasses?: {\r\n header?: Dictionary<Predicate<T> | true>,\r\n footer?: Dictionary<Predicate<T> | true>,\r\n }\r\n enumMap?: {[key:number]:string};\r\n boolean? : {\r\n showForFalse? : true | { icon : string },\r\n forTrue? : { icon : string }\r\n }\r\n}\r\n\r\nexport enum ArrayStyle {\r\n CommaDelimited,\r\n NewLine\r\n}\r\n\r\nexport interface ArrayAdditional extends Additional {\r\n limit?: number;\r\n arrayStyle?: ArrayStyle;\r\n}\r\n\r\n\r\nexport function metaDataArrToDict<T = MetaData>(arr: MetaData[], transform?: (m : MetaData) => T): Dictionary<T>{\r\n const dict = {};\r\n if(transform){\r\n arr.forEach(e => dict[e.key] = transform(e));\r\n } else {\r\n arr.forEach(e => dict[e.key] = e);\r\n }\r\n return dict;\r\n}\r\n\r\nexport interface CustomCellMeta extends Pick<MetaData, 'key' | 'displayName' | 'preSort' | 'fieldType' | 'order' | 'width'>{\r\n customCell: true;\r\n noExport?: boolean;\r\n}\r\n","import { Predicate } from \"@angular/core\";\r\nimport { merge } from \"lodash\";\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\nimport { StylerStyle } from \"../../utilities/directives/styler\";\r\n\r\nexport interface TableBuilderSettings<T = any> {\r\n headerSettings? : Partial<TableWrapperHeaderSettings>;\r\n footerSettings? : Partial<TableWrapperFooterSettings>;\r\n columnHeaderSettings? : Partial<TableColumnHeaderSettings>;\r\n columnFooterSettings? : Partial<TableColumnFooterSettings>;\r\n tableSettings? : Partial<TableSettings<T>>;\r\n}\r\n\r\nexport class GeneralTableSettings implements TableBuilderSettings {\r\n headerSettings = new TableWrapperHeaderSettings();\r\n footerSettings = new TableWrapperFooterSettings();\r\n columnHeaderSettings = new TableColumnHeaderSettings();\r\n columnFooterSettings = new TableColumnFooterSettings();\r\n tableSettings = new TableSettings();\r\n}\r\n\r\nexport class TableWrapperHeaderSettings {\r\n hideExport = false\r\n hideFilter = false\r\n hideColumnSettings = false\r\n hideHeader = false\r\n hideSort = false\r\n collapse = false\r\n showTitleWhenCollapsed = true;\r\n headerHeight: TbSize | undefined = undefined;\r\n}\r\n\r\nexport class TableWrapperFooterSettings {\r\n collapse = false\r\n}\r\n\r\nexport class TableColumnHeaderSettings {\r\n stickyHeaderRow = true;\r\n noFilters = false;\r\n noHeader = false;\r\n}\r\n\r\nexport class TableColumnFooterSettings {\r\n stickyFooterRow = false;\r\n}\r\n\r\nexport class TableSettings<T = any> {\r\n tableId?: string | undefined = undefined;\r\n trackBy?: string | undefined = undefined;\r\n includeIndexColumn = false;\r\n includeSelectionColumn = false;\r\n usePaginator: boolean | undefined = undefined;\r\n useVirtualScroll: boolean | undefined = undefined;\r\n paginatorSettings: Partial<PaginatorOptions> | undefined = undefined;\r\n virtualScrollSettings: Partial<VirtualScrollOptions> | undefined = undefined;\r\n rowHeight: TbSize | undefined = undefined;\r\n groupHeaderHeight?: TbSize = undefined;\r\n minColumnWidth: TbSize | undefined;\r\n rowClasses: Dictionary<Predicate<T> | true> | undefined;\r\n rowStyles: StylerStyle<T> | undefined;\r\n rowClick: ((row: T, event?: MouseEvent) => void) | undefined = undefined;\r\n}\r\n\r\nexport class PersistedTableSettings {\r\n constructor(tableSettings?: NonFunctionProperties<PersistedTableSettings>){\r\n if(tableSettings){\r\n this.collapseHeader = tableSettings.collapseHeader;\r\n this.collapseFooter = tableSettings.collapseFooter;\r\n }\r\n }\r\n\r\n merge(tableSettings?: TableBuilderSettings){\r\n const newPts = new PersistedTableSettings(this);\r\n if(tableSettings){\r\n newPts.collapseHeader = tableSettings.headerSettings?.collapse ?? newPts.collapseHeader;\r\n newPts.collapseFooter = tableSettings.footerSettings?.collapse ?? newPts.collapseFooter;\r\n }\r\n return newPts;\r\n }\r\n\r\n collapseHeader = false;\r\n collapseFooter = false;\r\n}\r\n\r\nexport class NotPersistedTableSettings {\r\n merge(tableSettings?: TableBuilderSettings){\r\n const newNpts = merge(this, new NotPersistedTableSettings());\r\n if(tableSettings){\r\n newNpts.hideExport = tableSettings.headerSettings?.hideExport ?? newNpts.hideExport;\r\n newNpts.hideColumnSettings = tableSettings.headerSettings?.hideColumnSettings ?? newNpts.hideColumnSettings;\r\n newNpts.hideFilter = tableSettings.headerSettings?.hideFilter ?? newNpts.hideFilter;\r\n newNpts.hideSort = tableSettings.headerSettings?.hideSort ?? newNpts.hideSort;\r\n newNpts.showTitleWhenHeaderCollapsed = tableSettings.headerSettings?.showTitleWhenCollapsed ?? newNpts.showTitleWhenHeaderCollapsed;\r\n newNpts.hideHeader = tableSettings.headerSettings?.hideHeader ?? newNpts.hideHeader;\r\n newNpts.hideColumnHeaderFilters = tableSettings.columnHeaderSettings?.noFilters ?? newNpts.hideColumnHeaderFilters;\r\n newNpts.hideColumnHeader = tableSettings.columnHeaderSettings?.noHeader ?? newNpts.hideColumnHeader;\r\n newNpts.usePaginator = tableSettings.tableSettings?.usePaginator ?? newNpts.usePaginator;\r\n newNpts.useVirtualScroll = tableSettings.tableSettings?.useVirtualScroll != undefined ? tableSettings.tableSettings?.useVirtualScroll :\r\n tableSettings.tableSettings?.virtualScrollSettings ? true\r\n : newNpts.useVirtualScroll;\r\n newNpts.rowHeight = tableSettings.tableSettings?.rowHeight ?? newNpts.rowHeight;\r\n newNpts.headerHeight = tableSettings.headerSettings?.headerHeight ?? newNpts.headerHeight;\r\n newNpts.groupHeaderHeight = tableSettings.tableSettings?.groupHeaderHeight ?? newNpts.groupHeaderHeight;\r\n newNpts.minColumnWidth = tableSettings.tableSettings?.minColumnWidth ?? newNpts.minColumnWidth;\r\n newNpts.rowClasses = tableSettings.tableSettings?.rowClasses ?? newNpts.rowClasses;\r\n newNpts.rowStyles = tableSettings.tableSettings?.rowStyles ?? newNpts.rowStyles;\r\n newNpts.rowClick = tableSettings.tableSettings?.rowClick ?? newNpts.rowClick;\r\n\r\n if(tableSettings.tableSettings?.virtualScrollSettings){\r\n const currVirt = tableSettings.tableSettings?.virtualScrollSettings || newNpts.virtualSettings;\r\n if(!currVirt.headerHeight){\r\n currVirt.headerHeight = tableSettings.headerSettings?.headerHeight || DefaultVirtualScrollOptions.headerHeight;\r\n }\r\n if(!currVirt.rowHeight){\r\n currVirt.rowHeight = tableSettings.tableSettings?.rowHeight || DefaultVirtualScrollOptions.rowHeight;\r\n }\r\n newNpts.virtualSettings = { ...new VirtualScrollOptions(), ...currVirt }\r\n } else newNpts.virtualSettings ??= new VirtualScrollOptions();\r\n if(tableSettings.tableSettings?.paginatorSettings){\r\n const currPag = tableSettings.tableSettings?.paginatorSettings ? merge(newNpts.paginatorSettings, tableSettings.tableSettings?.paginatorSettings) : (newNpts.paginatorSettings ?? new PaginatorOptions());\r\n currPag.includeAllInOptions = (currPag.defaultAll && currPag.includeAllInOptions !== false) || currPag.includeAllInOptions;\r\n newNpts.paginatorSettings = { ...new PaginatorOptions(), ...currPag };\r\n } else newNpts.paginatorSettings ??= new PaginatorOptions();\r\n }\r\n return newNpts;\r\n }\r\n hideExport = false\r\n hideFilter = false\r\n hideColumnSettings = false\r\n hideSort = false\r\n showTitleWhenHeaderCollapsed = true;\r\n hideHeader = false\r\n hideColumnHeaderFilters = false;\r\n hideColumnHeader = false;\r\n usePaginator: boolean = true;\r\n useVirtualScroll: boolean = false;\r\n paginatorSettings: PaginatorOptions | undefined = undefined;\r\n virtualSettings: VirtualScrollOptions | undefined = undefined;\r\n groupHeaderHeight?: TbSize = undefined;\r\n rowHeight?: TbSize | undefined;\r\n headerHeight?: TbSize = undefined;\r\n minColumnWidth?: TbSize | undefined;\r\n rowClasses?: Dictionary<Predicate<any> | true> | undefined;\r\n rowStyles?: StylerStyle | undefined;\r\n rowClick?: ((row: any, event?: MouseEvent) => void) | undefined = undefined;\r\n}\r\n\r\nexport class VirtualScrollOptions {\r\n rowHeight: TbSize = 48;\r\n enforceRowHeight = true;\r\n headerHeight: TbSize = 56;\r\n enforceHeaderHeight = true;\r\n amountOfVisibleItems = 10;\r\n /**\r\n * This will win over `amountOfVisibleItems`\r\n */\r\n maxViewPortHeight: TbSize | undefined = undefined;\r\n /**\r\n * Will try to bring the table to the bottom of the screen\r\n * If `amountOfVisibleItems` is set that will be the minimum number of rows\r\n * If `maxViewPortHeight` is set that will be the max table size\r\n */\r\n dynamicHeight = false;\r\n\r\n /**\r\n * If `dynamicHeight` is set to true, we will try to add this amount of space from the bottom of view port\r\n */\r\n dynamicalHeightBuffer: TbSize = 0;\r\n}\r\n\r\nexport class PaginatorOptions {\r\n pageSize: number | undefined = undefined;\r\n defaultAll = false;\r\n includeAllInOptions = false;\r\n}\r\n\r\nexport const DefaultVirtualScrollOptions = {\r\n rowHeight: 48,\r\n headerHeight: 56,\r\n};\r\n\r\ntype NonFunctionPropertyNames<T> = {\r\n [K in keyof T]: T[K] extends Function ? never : K\r\n}[keyof T];\r\n\r\nexport type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;\r\nexport type TbSize = number | `${number}${'px' | 'rem' }`\r\n\r\nexport function parseTbSizeToPixels(size?: TbSize) {\r\n if(!size) return undefined;\r\n if(typeof size === 'number') return size;\r\n if(size.endsWith('px')) return Number(size.replace('px', ''));\r\n if(size.endsWith('rem')) {\r\n const htmlElement = document.documentElement;\r\n const remSize = window.getComputedStyle(htmlElement).getPropertyValue('font-size');\r\n const remSizeNum = Number(remSize.replace('px', ''));\r\n const num = Number(size.replace('rem', ''));\r\n return num * remSizeNum;\r\n }\r\n return undefined;\r\n}\r\n","import { CustomFilter, FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';\r\nimport { LinkInfo } from '../services/link-creator.service';\r\nimport { TableProps } from '../components/table-container/tableProps';\r\n\r\nexport type NoneGroupHeader = { isGroupHeader: never } ;\r\nexport interface BaseGroup {\r\n key: string;\r\n groupName: string;\r\n groupHeaderDisplay: string;\r\n uniqueName: string;\r\n isGroupHeader: true;\r\n padding: number;\r\n length: number;\r\n hasTheData: boolean;\r\n level: number;\r\n}\r\n\r\nexport interface DataGroup<T extends NoneGroupHeader = any> extends BaseGroup {\r\n children: T[];\r\n hasTheData: true;\r\n}\r\n\r\nexport interface GroupGroup<T extends NoneGroupHeader = any> extends BaseGroup {\r\n groups: (DataGroup<T> | GroupGroup<T>)[];\r\n hasTheData: false;\r\n}\r\n\r\nexport type Group<T extends NoneGroupHeader = any> = GroupGroup<T> | DataGroup<T>\r\n\r\nexport interface GroupedData {\r\n key: string,\r\n expandedHeaders: string[]\r\n}\r\n\r\nexport function isGroupHeader(data: any): data is Group {\r\n return !!data?.isGroupHeader;\r\n}\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n filters: Dictionary<FilterInfo | CustomFilter>;\r\n sorted : Sort [];\r\n userDefined : {\r\n order:Dictionary<number>,\r\n widths:Dictionary<number>,\r\n table:{ width?:number },\r\n pageSize?: number,\r\n showAll?: boolean,\r\n rowHeight?: number,\r\n headerHeight?: number,\r\n };\r\n persistedTableSettings : PersistedTableSettings;\r\n groupBy: GroupedData[];\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n initializationState: InitializationState;\r\n metaData: Dictionary<MetaData>;\r\n notPersistedTableSettings : NotPersistedTableSettings;\r\n pageSize: number;\r\n currentPage: number;\r\n linkMaps: Dictionary<LinkInfo>;\r\n props: TableProps;\r\n showAll: boolean;\r\n}\r\nexport interface DataState {\r\n virtualScrollOffset: number;\r\n virtualEnds: {start: number, end: number};\r\n sortedFilteredDataLength: number;\r\n sortedFilteredGroupedDataLength: number;\r\n}\r\ntype RequireNull<T> = { [K in keyof T]: null };\r\nclass KeysToDelete implements RequireNull<Omit<TableState, keyof PersistedTableState>> {\r\n initializationState = null;\r\n metaData = null;\r\n notPersistedTableSettings = null;\r\n linkMaps = null;\r\n pageSize = null;\r\n currentPage = null;\r\n virtualScrollOffset = null;\r\n dataLen = null;\r\n virtualEnds = null;\r\n virtualEnd = null;\r\n props = null;\r\n showAll = null;\r\n minColumnWidth = null;\r\n}\r\nexport const keysToDelete = Object.keys(new KeysToDelete());\r\n\r\nexport enum InitializationState {\r\n Created,\r\n MetaDataLoaded,\r\n TableSettingsLoaded,\r\n Ready,\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n initializationState: InitializationState.Created,\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined: { order: {}, widths: {}, table: {} },\r\n persistedTableSettings: new PersistedTableSettings(),\r\n notPersistedTableSettings: new NotPersistedTableSettings(),\r\n pageSize: 10,\r\n linkMaps: {},\r\n groupBy: [],\r\n currentPage: 0,\r\n\r\n props: {} as TableProps,\r\n showAll: false,\r\n};\r\nexport const defaultDataState: DataState = {\r\n virtualScrollOffset: 0,\r\n sortedFilteredDataLength: 0,\r\n sortedFilteredGroupedDataLength: 0,\r\n virtualEnds: {\r\n start: 0, end: 20\r\n },\r\n}\r\n","import { ArrayStyle } from '../interfaces/report-def';\r\n\r\nexport interface DefaultSettings {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n}\r\n\r\nexport const ArrayDefaults = {\r\n limit: 3,\r\n arrayStyle: ArrayStyle.CommaDelimited\r\n}","import { Directive, TemplateRef, inject, input, computed, signal, OnInit } from '@angular/core';\r\nimport { CdkColumnDef } from '@angular/cdk/table';\r\nimport { CustomCellMeta, FieldType, SortDef } from '../interfaces/report-def';\r\nimport { TableBuilder } from '../classes/table-builder';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\n\r\ninterface CustomCellContext<T> {\r\n $implicit: T,\r\n element: T,\r\n}\r\n// here is how to use it\r\n// <generic-table [report]=\"report\">\r\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\r\n// <p *customCell=\"'column2'\">I am custom cell two </p>\r\n// </generic-table>\r\n@Directive({ selector: '[customCell]' })\r\nexport class CustomCellDirective<T = any> implements OnInit {\r\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true });\r\n public columnDef = inject(CdkColumnDef, { optional: true });\r\n $customCell = input.required<string>({ alias: 'customCell' });\r\n $displayName = input<string | undefined>(undefined, { alias: 'customCellDisplayName' });\r\n $preSort = input<SortDef | undefined>(undefined, { alias: 'preSort' });\r\n $templateRef = input<TemplateRef<any> | undefined>(this.templateRef || undefined, { alias: 'templateRef' });\r\n $customCellOrder = input<number | undefined>(undefined, { alias: 'customCellOrder' });\r\n $customCellWidth = input<string | undefined>(undefined, { alias: 'customCellWidth' });\r\n /**\r\n * for type safety, this is a reference to the table builder instance.\r\n */\r\n $customCellTableRef = input<TableBuilder<T> | undefined>(undefined, { alias: 'customCellTableRef' });\r\n /**\r\n * true if column not mapped to a property in the data source. Default is false.\r\n */\r\n $customCellNotMapped = input(false, { alias: 'customCellNotMapped', transform: coerceBooleanProperty });\r\n $metaData = computed((): CustomCellMeta | undefined => {\r\n const c = this.$customCell();\r\n if(!c) return;\r\n return ({\r\n key: this.$customCell(),\r\n displayName: this.$displayName(),\r\n preSort: this.$preSort(),\r\n fieldType: this.$customCellNotMapped() ? FieldType.NotMapped : FieldType.Unknown,\r\n order: this.$customCellOrder(),\r\n width: this.$customCellWidth(),\r\n customCell: true,\r\n noExport: true,\r\n })\r\n });\r\n $inited = signal(false);\r\n\r\n ngOnInit(){\r\n this.$inited.set(true);\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: CustomCellDirective<T>, ctx: any): ctx is CustomCellContext<T> {\r\n return true;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2, Input, ElementRef, booleanAttribute, inject } from \"@angular/core\";\r\nimport { fromEvent } from \"rxjs\";\r\nimport { filter, map, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { defaultShareReplay } from \"../../rxjs\";\r\nimport { TableStore } from \"../classes/table-store\";\r\n\r\n@Directive({\r\n selector: \"[resizeColumn]\",\r\n})\r\nexport class ResizeColumnDirective implements OnInit{\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n store = inject(TableStore);\r\n\r\n @Input({ alias: 'resizeColumn', transform: booleanAttribute }) resizable: boolean | string = false;\r\n\r\n @Input() key!: string;\r\n\r\n ngOnInit(){\r\n if(this.resizable){\r\n const { table, columnHead } = this.getTableAndColumnHeadHtmlElements();\r\n const resizer = this.createResizerSpanInColumnHead(columnHead);\r\n\r\n const aggregateMouseEventsMapped$ = this.mouseDownThroughMouseUpEventMapper(resizer, columnHead, table)\r\n\r\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\r\n filter(({ mouseMove }) => !!mouseMove.buttons),\r\n map( ({ mouseDownData, mouseMove }) => {\r\n const { newTableWidth, newColumnWidth } = this.calculateNewWidths(mouseDownData, mouseMove)\r\n return ({\r\n key: this.key,\r\n widthInPixel: newColumnWidth,\r\n tableSize: newTableWidth,\r\n })\r\n }),\r\n defaultShareReplay()\r\n );\r\n\r\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\r\n map(resizeData => ([{ key: this.key, widthInPixel: resizeData.widthInPixel }]))\r\n ));\r\n\r\n this.store.setTableWidth(resizeColsData$.pipe(\r\n map(resizeData => resizeData.tableSize )));\r\n }\r\n\r\n }\r\n\r\n createResizerSpanInColumnHead(columnHead:HTMLElement){\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n resizer.style['cursor'] = 'col-resize';\r\n resizer.style['user-select'] = 'none';\r\n resizer.style['width'] = '10px';\r\n resizer.style['height'] = '100%';\r\n resizer.style['position'] = 'absolute';\r\n resizer.style['right'] = '0';\r\n resizer.style['top'] = '0';\r\n resizer.style['z-index'] = '1';\r\n this.renderer.appendChild(columnHead, resizer);\r\n return resizer;\r\n }\r\n\r\n getTableAndColumnHeadHtmlElements():{table:HTMLElement, columnHead:HTMLElement}{\r\n const columnHead: HTMLElement = this.el.nativeElement;\r\n const row = this.renderer.parentNode(columnHead);\r\n const table = this.renderer.parentNode(row);\r\n return ({ table, columnHead })\r\n }\r\n\r\n mouseDownThroughMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return this.resizerMouseDownEventMapper(resizer, columnHead, table)\r\n .pipe(\r\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\r\n map( mouseMove => ({ mouseDownData, mouseMove })),\r\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\r\n ) ),\r\n )\r\n }\r\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\r\n map(event => ({\r\n startPageX: event.pageX,\r\n startColumnWidth: this.getElementWidth(columnHead),\r\n startTableWidth: this.getElementWidth(table),\r\n }))\r\n );\r\n }\r\n\r\n calculateNewWidths(mouseDownData: MouseDownData, mouseMove: MouseEvent):{newTableWidth:number, newColumnWidth:number}{\r\n const change = (mouseMove.pageX - mouseDownData.startPageX );\r\n let newColumnWidth = mouseDownData.startColumnWidth + change;\r\n if(newColumnWidth < 1){\r\n newColumnWidth = 1;\r\n }\r\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\r\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\r\n return ({ newTableWidth, newColumnWidth })\r\n }\r\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px', '')))\r\n\r\n}\r\ninterface MouseDownData{\r\n startPageX:number,\r\n startColumnWidth:number,\r\n startTableWidth:number,\r\n}\r\n","import { Directive, signal } from \"@angular/core\";\r\nimport { TableCustomFilterDirective, TableFilterDirective } from \"./tb-filter.directive\";\r\n\r\n@Directive({\r\n selector: '[tbWrapper]',\r\n})\r\nexport class TableWrapperDirective {\r\n $registrations = signal([] as (TableCustomFilterDirective | TableFilterDirective)[]);\r\n\r\n register(filter: TableCustomFilterDirective | TableFilterDirective) {\r\n this.$registrations.update( registrations => [...registrations, filter] );\r\n }\r\n}\r\n","\r\nexport const FilterType = {\r\n NumberEquals: 'Equals',\r\n NumberNotEqual: 'Does Not Equal',\r\n NumberGreaterThan: 'Greater Than',\r\n NumberLessThan: 'Less Than',\r\n NumberBetween: 'Between',\r\n StringEquals: 'Equals',\r\n StringContains: 'Contains',\r\n StringDoesNotContain: 'Does Not Contain',\r\n StringStartWith: 'Start With',\r\n StringEndsWith: 'Ends With',\r\n DateIsOn: 'Is on',\r\n DateIsNotOn: 'Is Not On',\r\n DateOnOrAfter: 'On or After',\r\n DateOnOrBefore: 'On or Before',\r\n DateBetween: 'Between',\r\n DateTimeIsAt: 'Is At',\r\n DateTimeIsNotAt: 'Is Not At',\r\n DateTimeAtOrAfter: 'At or After',\r\n DateTimeAtOrBefore: 'At or Before',\r\n DateTimeBetween: 'Between',\r\n BooleanEquals: 'Is',\r\n IsNull: 'Is Blank',\r\n Or: 'Or',\r\n And: 'And',\r\n In: 'In',\r\n Custom: 'Custom',\r\n} as const;\r\n\r\nexport type FilterType = typeof FilterType[keyof typeof FilterType];\r\n\r\nexport type SubFilterTypes<T extends typeof FilterType[keyof typeof FilterType]> = T;\r\n\r\nexport type StringFilterTypes = SubFilterTypes<'Equals' | 'Contains' | 'Does Not Contain' | 'Start With' | 'Ends With' | 'Is Blank' | 'In'>;\r\nexport type NumberFilterTypes = SubFilterTypes<'Equals' | 'Does Not Equal' | 'Greater Than' | 'Less Than' | 'Between' | 'Is Blank' | 'In'>;\r\nexport type DateFilterTypes = SubFilterTypes<'Is on' | 'Is Not On' | 'On or After' | 'On or Before' | 'Between' | 'Is Blank'>;\r\nexport type DateTimeFilterTypes = SubFilterTypes<'Is At' | 'Is Not At' | 'At or After' | 'At or Before' | 'Between' | DateFilterTypes>;\r\nexport type BooleanFilterTypes = SubFilterTypes<'Is' | 'Is Blank'>;\r\nexport type EnumFilterTypes = SubFilterTypes<'In' | 'Is Blank'>;","import { Directive, Input, Predicate, Signal, SimpleChanges, inject, OnChanges, OnInit, OnDestroy } from \"@angular/core\";\r\nimport { Observable, ReplaySubject, takeUntil, tap } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo } from \"../classes/filter-info\";\r\nimport { FilterType } from \"../enums/filterTypes\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { MatRadioButton } from \"@angular/material/radio\";\r\nimport { MatButtonToggle } from '@angular/material/button-toggle';\r\nimport { MatCheckbox } from \"@angular/material/checkbox\";\r\nimport { FieldType } from \"../interfaces/report-def\";\r\nimport { NgControl } from \"@angular/forms\";\r\nimport { TableWrapperDirective } from \"./table-wrapper.directive\";\r\nimport { MatOption } from \"@angular/material/core\";\r\nimport { subscriber } from \"../../rxjs\";\r\nimport { toSignal } from \"@angular/core/rxjs-interop\";\r\n\r\n\r\nconst inputs = [\r\n 'predicate: tbCustomFilter',\r\n 'filterId: filterId',\r\n];\r\n\r\n\r\n@Directive({\r\n selector: 'tb-abstract'\r\n})\r\nexport abstract class TableCustomFilterDirective {\r\n abstract filter$ : Observable<CustomFilter>;\r\n abstract $filter: Signal<CustomFilter | undefined>;\r\n filterId!: string;\r\n savable = false;\r\n abstract active: boolean;\r\n abstract reset(): void;\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[tbFilter]\",\r\n}) export class TableFilterDirective implements OnChanges, OnInit {\r\n protected model = inject(NgControl, { optional: true });\r\n private wrapper = inject(TableWrapperDirective, { optional: true });\r\n constructor() {\r\n if(this.wrapper) {\r\n this.wrapper.register(this);\r\n }\r\n if(this.model) {\r\n subscriber(this.model!.valueChanges!, val => {\r\n if(this.filterType === FilterType.StringContains && val === ''){\r\n val = undefined\r\n }\r\n this.filterValue = val;\r\n this.update();\r\n })\r\n }\r\n }\r\n reset() {\r\n this.filterValue = undefined;\r\n }\r\n filter$ = new ReplaySubject<FilterInfo>(1);\r\n $filter = toSignal(this.filter$);\r\n\r\n @Input() filterType!: FilterType;\r\n @Input() key!: string;\r\n @Input() fieldType!: FieldType;\r\n @Input() filterId!: string;\r\n @Input() active = true;\r\n @Input() filterValue: any = null;\r\n\r\n setFilterValue(value: any) {\r\n if(this.model) {\r\n setTimeout(() => {\r\n this.model!.reset(value);\r\n }, 0);\r\n } else {\r\n this.filterValue = value;\r\n }\r\n }\r\n\r\n savable = false;\r\n ready = false;\r\n\r\n _userActive = true;\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.update();\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = crypto.randomUUID();\r\n } else {\r\n this.savable = true;\r\n }\r\n this.ready = true;\r\n this.update();\r\n }\r\n\r\n protected setFilter(filter: FilterInfo ) {\r\n this.filter$.next(filter);\r\n }\r\n\r\n update() {\r\n if(this.ready) {\r\n this.setFilter(\r\n {\r\n filterId: this.filterId,\r\n key: this.key,\r\n filterType: this.filterType,\r\n fieldType: this.fieldType,\r\n filterValue: this.filterValue,\r\n active: this.active && this.filterValue !== undefined,\r\n _isExternallyManaged: true,\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[tbFilterStringContains]',\r\n providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }],\r\n inputs: [\r\n 'key:tbFilterStringContains',\r\n 'filterValue:filterValue',\r\n 'filterId: filterId',\r\n 'active: active',\r\n ],\r\n}) export class TableFilterStringContainsDirective extends TableFilterDirective implements OnChanges {\r\n constructor() {\r\n super();\r\n this.filterType = FilterType.StringContains;\r\n this.fieldType = FieldType.String;\r\n }\r\n\r\n override reset() {\r\n if(this.model) {\r\n this.model.reset();\r\n }\r\n super.reset();\r\n }\r\n\r\n override setFilter(filter: FilterInfo) {\r\n filter.active = filter.filterValue && this._userActive;\r\n super.setFilter(filter);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes['active']) {\r\n this._userActive = changes['active'].currentValue;\r\n }\r\n super.ngOnChanges(changes);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[tbCustomFilter]\",\r\n})\r\nexport abstract class TableCustomFilterDirectiveBase<T = any> extends TableCustomFilterDirective implements OnInit {\r\n\r\n filter$ = new ReplaySubject<CustomFilter>(1);\r\n $filter = toSignal(this.filter$);\r\n filter!: CustomFilter;\r\n\r\n _predicate!: Predicate<T>;\r\n @Input('tbCustomFilter') set predicate( val: Predicate<T> ) {\r\n this._predicate = val;\r\n this.update({ predicate: val });\r\n }\r\n\r\n _active: boolean = false;\r\n ready = false;\r\n\r\n update(val: Partial<CustomFilter> ) {\r\n if(this.ready) {\r\n this.filter = { ...this.filter, ...val };\r\n this.filter$.next(this.filter);\r\n }\r\n }\r\n\r\n @Input() set active(val: boolean) {\r\n if(this._active !== val) {\r\n this._active = val;\r\n this.update({ active: val });\r\n }\r\n }\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = crypto.randomUUID();\r\n } else {\r\n this.savable = true;\r\n }\r\n\r\n this.filter = {\r\n filterType: FilterType.Custom,\r\n filterId: this.filterId,\r\n active: this._active,\r\n predicate: this._predicate,\r\n };\r\n this.ready = true;\r\n this.filter$.next(this.filter);\r\n }\r\n}\r\n\r\n@Directive()\r\nexport abstract class TbSelectedFilterDirective extends TableCustomFilterDirectiveBase implements OnDestroy, OnInit {\r\n\r\n protected wrapper = inject(TableWrapperDirective, { optional: true });\r\n protected constructor(private change: Observable<any>, private isActive: () => boolean) {\r\n super();\r\n if(this.wrapper) {\r\n this.wrapper.register(this);\r\n }\r\n }\r\n\r\n reset() {\r\n this.active = false;\r\n }\r\n\r\n destroySubject$ = new ReplaySubject<void>(1);\r\n ngOnDestroy() {\r\n this.destroySubject$.next();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._active = this.isActive();\r\n super.ngOnInit();\r\n this.change.pipe(takeUntil(this.destroySubject$)).subscribe( () => {\r\n this.active = this.isActive();\r\n });\r\n }\r\n}\r\n\r\n// Checkbox\r\n@Directive({\r\n selector: 'mat-checkbox[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }],\r\n})\r\nexport class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {\r\n private matCheckbox = inject(MatCheckbox);\r\n\r\n\r\n override set active(val: boolean) {\r\n this.matCheckbox.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matCheckbox = inject(MatCheckbox);\r\n super(matCheckbox.change, () => matCheckbox.checked);\r\n this.matCheckbox = matCheckbox;\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'mat-slide-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }],\r\n})\r\nexport class MatSlideToggleTbFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matSlideToggle: MatSlideToggle;\r\n\r\n override set active(val: boolean) {\r\n this.matSlideToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matSlideToggle = inject(MatSlideToggle);\r\n\r\n super(matSlideToggle.change, () => matSlideToggle.checked);\r\n this.matSlideToggle = matSlideToggle;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Radio button\r\n@Directive({\r\n selector: 'mat-radio-button[tbCustomFilter]',\r\n inputs: ['predicate: tbCustomFilter'],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }],\r\n})\r\nexport class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matRadioButton: MatRadioButton;\r\n\r\n\r\n override set active(val: boolean) {\r\n this.matRadioButton.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matRadioButton = inject(MatRadioButton);\r\n\r\n super(matRadioButton.change, () => matRadioButton.checked);\r\n this.matRadioButton = matRadioButton;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Option (select)\r\n@Directive({\r\n selector: 'mat-option[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }],\r\n})\r\nexport class MatOptionTbFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matOption: MatOption;\r\n\r\n override set active(val: boolean) {\r\n if(val) {\r\n this.matOption.select();\r\n } else {\r\n this.matOption.deselect();\r\n }\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matOption = inject(MatOption);\r\n\r\n super( matOption.onSelectionChange.pipe(tap( d => {\r\n if(!matOption.value) {\r\n matOption.value = crypto.randomUUID();\r\n }\r\n }\r\n\r\n )), () => matOption.selected);\r\n this.matOption = matOption;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Button toggle\r\n@Directive({\r\n selector: 'mat-button-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }],\r\n})\r\nexport class MatButtonToggleFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matButtonToggle: MatButtonToggle;\r\n\r\n override set active(val: boolean) {\r\n this.matButtonToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matButtonToggle = inject(MatButtonToggle);\r\n\r\n super(matButtonToggle.change, () => matButtonToggle.checked);\r\n this.matButtonToggle = matButtonToggle;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'phone' })\r\nexport class PhoneNumberPipe implements PipeTransform {\r\n\r\n transform(phoneNum: string): any {\r\n return phoneFormatter(phoneNum);\r\n }\r\n}\r\n\r\nexport function phoneFormatter(phoneNum: string): string {\r\n if(phoneNum) {\r\n phoneNum = phoneNum.replace(/\\D/g, '');\r\n if(phoneNum[0] === '1') {\r\n phoneNum = phoneNum.substring(1);\r\n }\r\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\r\n }\r\n return '';\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'spaceCase' })\r\nexport class SpaceCasePipe implements PipeTransform {\r\n transform(value: string): string {\r\n return spaceCase(value);\r\n }\r\n}\r\n\r\n/**\r\n * Adds a space before uppercase letters that either\r\n * 1. follows a lowercase letter or digit\r\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\r\n *\r\n * Uppercases the first digit\r\n *\r\n * Turns underscores into spaces\r\n */\r\nexport function spaceCase(value: string){\r\n const phrase = value?.replace(regex1, '$1$3 $2$4')\r\n // uppercase the first character of every word\r\n return phrase?.replace(regex2, x => x.toUpperCase());\r\n}\r\n\r\nconst regex1 = /([a-z0-9])([A-Z])|([a-zA-Z0-9])([A-Z])(?=[a-z])|_/g;\r\nconst regex2 = /(^| )(\\w)/g;\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\nimport { ArrayDefaults, DefaultSettings } from './DefaultSettings';\r\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\r\nimport { MultiSortDirective } from '../directives';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../../utilities/pipes/space-case.pipes';\r\nimport { TableBuilderSettings } from './table-builder-general-settings';\r\nexport interface TableBuilderConfig {\r\n defaultTableSettings: Partial<Omit<TableBuilderSettings, 'injector' >> & { pageSize?: number };\r\n export?: TableBuilderExport;\r\n dateFormats?: DefaultSettings;\r\n arrayDefaults?: ArrayAdditional;\r\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\r\n}\r\n\r\nconst defaultConfig: TableBuilderConfig = {\r\n defaultTableSettings: {\r\n pageSize: 10\r\n },\r\n arrayDefaults: ArrayDefaults\r\n}\r\n\r\nexport interface TableBuilderExport {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n onSave?: (event?: any) => void;\r\n prepend? : string;\r\n}\r\n\r\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\r\n\r\nexport function provideTableBuilder(config?: TableBuilderConfig) : EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n MultiSortDirective,\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n { provide: TableBuilderConfigToken, useValue: config || defaultConfig }\r\n ])\r\n}\r\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\r\n\r\nexport const isNull:FilterFunc<boolean, any> = (filterInfo:FilterInfo) => {\r\n const func = filterInfo.filterValue ?\r\n (val: any) => val == null || val === ''\r\n :\r\n (val: any) => val != null && val !== '';\r\n return func;\r\n}\r\n","import { FilterFunc, FilterFuncs, FilterInfo } from '../classes/filter-info';\r\nimport { EnumFilterTypes, FilterType, StringFilterTypes } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst stringEqualFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const equalsVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val) === equalsVal );\r\n}\r\n\r\nconst stringContainsFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const containsVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val).includes(containsVal));\r\n}\r\n\r\nconst stringDoesNotContainFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const doesNotContainVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => !prepareForStringCompare(val)?.includes(doesNotContainVal));\r\n}\r\n\r\nconst stringStartsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val).startsWith(startsWith));\r\n}\r\n\r\nconst stringEndsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val).endsWith(startsWith));\r\n}\r\n\r\nconst multipleStringValuesEqualsFunc:FilterFunc<string[], string> = (filterInfo:FilterInfo) => {\r\n const filterVals = filterInfo.filterValue.map( (v: string) => prepareForStringCompare(v));\r\n return ((val) => filterVals.some((s:string) => prepareForStringCompare(val) === s));\r\n}\r\n\r\nexport const StringFilterFuncs: FilterFuncs<StringFilterTypes> = {\r\n [FilterType.StringEquals]: stringEqualFunc,\r\n [FilterType.StringContains]: stringContainsFunc,\r\n [FilterType.StringDoesNotContain]: stringDoesNotContainFunc,\r\n [FilterType.StringStartWith]: stringStartsWithFunc,\r\n [FilterType.StringEndsWith]: stringEndsWithFunc,\r\n [FilterType.IsNull]: isNull,\r\n [FilterType.In]: multipleStringValuesEqualsFunc,\r\n};\r\n\r\nexport const EnumFilterFuncs: FilterFuncs<EnumFilterTypes> = {\r\n [FilterType.IsNull]: isNull,\r\n [FilterType.In]: multipleStringValuesEqualsFunc,\r\n};\r\n\r\nexport const prepareForStringCompare = (val: any):string => (val?.toString().trim().toLowerCase());\r\n","import { Range, FilterFunc, FilterInfo, FilterFuncs } from '../classes/filter-info';\r\nimport { FilterType, NumberFilterTypes } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\ntype NumberFilterFunc = FilterFunc<number>\r\n\r\nconst numberEqalsFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val === filterInfo.filterValue;\r\n}\r\n\r\nconst numberNotEqualFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val !== filterInfo.filterValue;\r\n}\r\n\r\nconst numberGreaterThanFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val > filterInfo.filterValue;\r\n}\r\n\r\nconst numberLessThanFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val < filterInfo.filterValue;\r\n}\r\n\r\nconst numberBetweenFunc:FilterFunc<Range<number>, number> = (filterInfo : FilterInfo) => {\r\n const startVal = Number(filterInfo.filterValue.Start);\r\n const endVal = Number(filterInfo.filterValue.End);\r\n return ((val) => (val > startVal) && (val < endVal));\r\n}\r\n\r\nexport const multipleNumberValuesEqualsFunc:FilterFunc<number[], number> = (filterInfo:FilterInfo) => {\r\n return ((val) => filterInfo.filterValue.some((value: any) => val === value));\r\n}\r\n\r\nexport const NumberFilterFuncs: FilterFuncs<NumberFilterTypes> = {\r\n [FilterType.NumberEquals]: numberEqalsFunc,\r\n [FilterType.NumberNotEqual]: numberNotEqualFunc,\r\n [FilterType.NumberGreaterThan]: numberGreaterThanFunc,\r\n [FilterType.NumberLessThan]: numberLessThanFunc,\r\n [FilterType.NumberBetween]: numberBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n [FilterType.In]: multipleNumberValuesEqualsFunc,\r\n};\r\n","import { FilterFunc, FilterFuncs, FilterInfo, Range } from '../classes/filter-info';\r\nimport { DateFilterTypes, DateTimeFilterTypes, FilterType } from '../enums/filterTypes';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() === isOnVal);\r\n}\r\n\r\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() !== isNotOnVal);\r\n}\r\n\r\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const afterVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() >= afterVal);\r\n}\r\n\r\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const beforeVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() <= beforeVal);\r\n}\r\n\r\nconst dateBetweenFunc:FilterFunc<Range<Date>, Date> = (filterInfo:FilterInfo) => {\r\n const startVal = new Date(filterInfo.filterValue.Start);\r\n const endVal = new Date(filterInfo.filterValue.End);\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return (\r\n (val) => {\r\n const cleanedVal = clean(filterInfo, val);\r\n return cleanedVal >= startVal && cleanedVal <= endVal;\r\n });\r\n}\r\n\r\nconst cleanDateTime = (filterInfo:FilterInfo, val: Date) => {\r\n if(!!DateFilterFuncs[filterInfo.filterType]){\r\n const d = new Date(val);\r\n d.setHours(0, 0, 0, 0);\r\n return d;\r\n }\r\n return val;\r\n}\r\n\r\nexport const DateFilterFuncs: FilterFuncs<DateFilterTypes> = {\r\n [FilterType.DateIsOn]: dateIsOnFunc,\r\n [FilterType.DateIsNotOn]: dateIsNotOnFunc,\r\n [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateBetween]: dateBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n\r\nexport const DateTimeFilterFuncs: FilterFuncs<DateTimeFilterTypes> = {\r\n ...DateFilterFuncs,\r\n [FilterType.DateTimeIsAt]: dateIsOnFunc,\r\n [FilterType.DateTimeIsNotAt]: dateIsNotOnFunc,\r\n [FilterType.DateTimeAtOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateTimeAtOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateTimeBetween]: dateBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n","import { FilterFunc, FilterFuncs, FilterInfo } from '../classes/filter-info';\r\nimport { BooleanFilterTypes, FilterType } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\nconst booleanEqualsFunc : FilterFunc<boolean> = (filterInfo:FilterInfo) => (val): boolean => {\r\n return filterInfo.filterValue === val;\r\n}\r\n\r\nexport const BooleanFilterFuncs: FilterFuncs<BooleanFilterTypes> = {\r\n [FilterType.BooleanEquals]: booleanEqualsFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n","import { Predicate } from \"@angular/core\";\r\nimport { TableBuilderSort } from \"../components/table-container/table-container.helpers/sort-state.helpers\";\r\n\r\nexport function sortData<T>(data: T[], sorted: TableBuilderSort[]): T[] {\r\n return data.sort(compareT(sorted));\r\n}\r\n\r\nexport function filterData<T>(data: T[], filters: Predicate<T>[], resetAll = false){\r\n if(filters.length === 0){\r\n if(resetAll){\r\n for(let index = 0; index < data.length; index++) {\r\n const element = data[index];\r\n element[tbNoShowSymbol] = false;\r\n }\r\n }\r\n return data;\r\n }\r\n for(let index = 0; index < data.length; index++) {\r\n const element = data[index];\r\n const hide = !filters.every(filter => filter(element));\r\n if(hide || resetAll){\r\n element[tbNoShowSymbol] = hide;\r\n }\r\n }\r\n return data;\r\n}\r\n\r\nexport const tbNoShowSymbol = Symbol('tb_no_show');\r\n\r\nfunction compareT<T>(criteria: TableBuilderSort[]) {\r\n const transforms = criteria.reduce((acc, c) => {\r\n acc[c.active] = {\r\n transform: c.sortBy ? c.sortBy : getFactory(c.active), nulls: c.nulls === 'first' ? -1 : 1 };\r\n return acc;\r\n }, {} as Record<string, { transform: (t: T) => any, nulls: 1 | -1}>);\r\n\r\n return function (a: T, b: T): number {\r\n for(let index = 0; index < criteria.length; index++) {\r\n const c = criteria[index];\r\n const d = transforms[c.active];\r\n const nullValue = d.nulls;\r\n if(a == null) {\r\n if(b == null) return 0;\r\n return nullValue;\r\n }\r\n if(b == null) return -nullValue;\r\n const transform = d.transform;\r\n const aVal = transform(a);\r\n const bVal = transform(b);\r\n if(aVal == null) {\r\n if(bVal == null) return 0;\r\n return nullValue;\r\n }\r\n\r\n if(bVal == null) return -nullValue;\r\n if(aVal < bVal) return c.direction === 'asc' ? -1 : 1;\r\n if(aVal > bVal) return c.direction === 'asc' ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n}\r\n\r\nexport function getFactory(b: string){\r\n if(typeof b !== 'string') return (a) => a[b];\r\n if(!b.includes('.')) return (a) => {\r\n if(!a) return a;\r\n return a[b];\r\n };\r\n const arr = b.split('.');\r\n return (a) => {\r\n let val = a;\r\n if(!a) return a;\r\n for(let index = 0; index < arr.length; index++) {\r\n val = val[arr[index]];\r\n if(val == undefined) return undefined;\r\n if(typeof val !== 'object' && index + 1 < arr.length) return undefined;\r\n }\r\n return val;\r\n }\r\n}","import { FilterType } from '../enums/filterTypes';\r\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\r\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\r\nimport { DateFilterFuncs, DateTimeFilterFuncs } from '../functions/date-filter-function';\r\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Predicate } from '@angular/core';\r\nimport { getFactory } from '../functions/sort-data-function';\r\n\r\nconst filterFactoryMap: Dictionary<FilterFunc<any, any>> = {\r\n [FilterType.And]: (filter: FilterInfo ): ((obj: any) => boolean) => {\r\n const filters = createFilterFuncs(filter.filterValue as FilterInfo[]);\r\n return (obj: any) : boolean => filters.every( f => f(obj));\r\n },\r\n [FilterType.In]: (filter: FilterInfo ): (obj: any) => boolean => {\r\n const filters = createFilterFuncs(filter.filterValue as FilterInfo[]);\r\n return (obj: any) : boolean => filters.some( f => f(obj));\r\n },\r\n};\r\n\r\nconst filterTypeFuncMap : Record<FieldType, FilterFuncs<any>> = {\r\n [FieldType.Array]: StringFilterFuncs,\r\n [FieldType.Boolean]: BooleanFilterFuncs,\r\n [FieldType.Currency]: NumberFilterFuncs,\r\n [FieldType.Date]: DateFilterFuncs,\r\n [FieldType.DateTime]: DateTimeFilterFuncs,\r\n [FieldType.Enum]: EnumFilterFuncs,\r\n [FieldType.Link]: StringFilterFuncs,\r\n [FieldType.Number]: NumberFilterFuncs,\r\n [FieldType.PhoneNumber]: StringFilterFuncs,\r\n [FieldType.String]: StringFilterFuncs,\r\n [FieldType.Unknown]: StringFilterFuncs,\r\n} as Record<FieldType, FilterFuncs<any>>;\r\n\r\nexport const filterTypeMap = Object.entries(filterTypeFuncMap).reduce(\r\n (acc, [key, value]) => ({ ...acc, [key]: Object.keys(value) }), {} as Record<FieldType, FilterType[]>\r\n)\r\n\r\nexport interface FilterState {\r\n filterId: string;\r\n filterType: FilterType;\r\n filterValue?: any;\r\n active?: boolean;\r\n filterBy?: (t: any) => any\r\n}\r\n\r\nexport interface FilterInfo<T extends FieldType = any, U = any> extends FilterState {\r\n key: string & keyof U;\r\n fieldType: T;\r\n _isExternallyManaged?: boolean;\r\n}\r\n\r\nexport interface PartialFilter {\r\n filterId?: string;\r\n key: string;\r\n fieldType: FieldType;\r\n filterType?: FilterType;\r\n filterValue?: any;\r\n filterBy?: (t: any) => any\r\n}\r\n\r\n\r\nexport interface CustomFilter<T = any> extends FilterState {\r\n predicate: Predicate<T>;\r\n filterType: typeof FilterType.Custom;\r\n}\r\n\r\nexport function isCustomFilter(filter : FilterInfo | CustomFilter) : filter is CustomFilter {\r\n return filter && filter.filterType === FilterType.Custom;\r\n}\r\n\r\nexport function isFilterInfo(filter : FilterInfo | CustomFilter) : filter is FilterInfo {\r\n return filter && typeof (filter as FilterInfo).key === 'string' && filter.filterType !== FilterType.Custom;\r\n}\r\n\r\nconst defaultPredicate: Predicate<any> = () => true;\r\n\r\nexport function createFilterFuncs(filters: (FilterInfo | CustomFilter)[]){\r\n return filters.filter(needsFilterCreation).map(createFilterFunc);\r\n}\r\n\r\nexport function needsFilterCreation(filter: FilterInfo | CustomFilter): boolean {\r\n if(isCustomFilter(filter)) {\r\n return filter.active !== false;\r\n }\r\n return filter.filterValue != undefined && filter.active !== false;\r\n}\r\n\r\nexport function createFilterFunc(filter: FilterInfo | CustomFilter): Predicate<any> {\r\n if(isCustomFilter(filter)) {\r\n return filter.active ? filter.predicate : defaultPredicate;\r\n }\r\n if(filter.filterValue == undefined) {\r\n return defaultPredicate;\r\n }\r\n\r\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\r\n if(!func) {\r\n if(filterFactoryMap[filter.filterType]){\r\n return filterFactoryMap[filter.filterType!](filter);\r\n }\r\n }\r\n\r\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\r\n const getter = filter.filterBy || getFactory(filter.key);\r\n return (rowObj) => {\r\n const value = getter(rowObj);\r\n return ((value == undefined) && cannotBeTrueForNull)\r\n ? false\r\n : func( value);\r\n };\r\n}\r\n\r\nexport type FilterFunc<T, V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\r\nexport type Range<T> = { Start:T, End:T };\r\n\r\nconst FalseyValueCanBeIncludedFilterTypes = [\r\n FilterType.IsNull,\r\n FilterType.NumberNotEqual,\r\n FilterType.DateIsNotOn,\r\n FilterType.StringDoesNotContain,\r\n] as FilterType[];\r\n\r\nexport type FilterFuncs<T extends FilterType > = Partial<Record<T, FilterFunc<any, any>>>;\r\n","export const replaceInArrayWithClone = <T = any>(arr: T[], findMeth: (t: T) => boolean, actionOnClone: (t: T) => any = ((t: T) => {})): T[] => {\r\n const index = arr.findIndex(findMeth);\r\n const clonedArray = [...arr];\r\n const t = clonedArray[index];\r\n clonedArray[index] =\r\n t != null && typeof t === 'object' ?\r\n Array.isArray(t) ?\r\n [...t] as any\r\n : { ...t }\r\n : t;\r\n actionOnClone(clonedArray[index]);\r\n return clonedArray;\r\n}","import { Dictionary } from \"../interfaces/dictionary\";\r\nimport { FieldType, MetaData, SortDef } from \"../interfaces/report-def\";\r\nimport { isCustomFilter } from \"./filter-info\";\r\nimport { keysToDelete, PersistedTableState, TableState } from \"./TableState\";\r\nimport { TableBuilderSort } from \"../components/table-container/table-container.helpers/sort-state.helpers\";\r\n\r\nexport const orderedStateVisibleMetaData = (state: TableState) => {\r\n const ordered = orderStateMetaData(state);\r\n const orderedVisible = ordered\r\n .filter(metaData => !state.hiddenKeys.includes(metaData.key) && state.metaData[metaData.key].fieldType !== FieldType.Hidden);\r\n return orderedVisible;\r\n}\r\n\r\nexport const orderedCodeVisibleMetaData = (state: TableState) =>\r\n orderStateMetaData(state).filter(md => md.fieldType !== FieldType.Hidden);\r\n\r\nexport const orderStateMetaData = (state:TableState) => {\r\n return orderMetaData(state.metaData, state.userDefined.order);\r\n}\r\n\r\nexport const orderMetaData = (metaData: Dictionary<MetaData>, userDefined: Dictionary<number>) => {\r\n const userOrderArr = Object.entries(userDefined);\r\n return userOrderArr.length ?\r\n Object.values(metaData).sort((a, b) => {\r\n const orderA = userDefined[a.key];\r\n const orderB = userDefined[b.key];\r\n return order(orderA, orderB);\r\n })\r\n :\r\n Object.values(metaData).sort((a, b) => {\r\n const orderA = a.order;\r\n const orderB = b.order;\r\n return order(orderA, orderB);\r\n })\r\n}\r\n\r\nexport function order(orderA: number | undefined, orderB: number | undefined){\r\n if(orderA == null && orderB == null) {\r\n return 0;\r\n }\r\n if(orderA == null) {\r\n return 1;\r\n }\r\n if(orderB == null) {\r\n return -1;\r\n }\r\n return orderA - orderB;\r\n}\r\n\r\nexport function cleanPersistedState(state: TableState, pState: PersistedTableState) {\r\n const metas = Object.values(state.metaData);\r\n const filters = Object.values(pState.filters).filter(fltr => isCustomFilter(fltr) || metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\r\n obj[filter.filterId!] = pState.filters[filter.filterId!];\r\n return obj;\r\n }, {});\r\n const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));\r\n return ({ ...pState, filters, sorted })\r\n}\r\n\r\nexport const mapSaveableState = (s: PersistedTableState) => {\r\n const savableState = { ...s } as Partial<TableState>;\r\n keysToDelete.forEach(key => delete savableState[key]);\r\n return savableState as PersistedTableState;\r\n}\r\n\r\nexport const createPreSort = (metaDatas: Dictionary<MetaData>): TableBuilderSort[] => {\r\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\r\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\r\n .map(( { key, preSort: { direction } } ) => ({ active: key, direction }))\r\n}\r\n\r\nexport const mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\r\n return {\r\n key: orig.key,\r\n displayName: merge.displayName ?? orig.displayName,\r\n fieldType: merge.fieldType || orig.fieldType,\r\n additional: { ...orig.additional, ...merge.additional },\r\n order: merge.order ?? orig.order,\r\n preSort: merge.preSort ?? orig.preSort,\r\n width: merge.width ?? orig.width,\r\n noExport: merge.noExport || orig.noExport,\r\n noFilter: merge.noFilter || orig.noFilter,\r\n customCell: merge.customCell ?? orig.customCell,\r\n transform: merge.transform ?? orig.transform,\r\n map: merge.map ?? orig.map,\r\n click: merge.click ?? orig.click,\r\n classes: merge.classes ?? orig.classes,\r\n noSort: merge.noSort ?? orig.noSort,\r\n template: merge.template ?? orig.template,\r\n toolTip: merge.toolTip ?? orig.toolTip,\r\n useIcon: merge.useIcon ?? orig.useIcon,\r\n filterLogic: merge.filterLogic ?? orig.filterLogic,\r\n sortLogic: merge.sortLogic ?? orig.sortLogic\r\n } as MetaData;\r\n}\r\n\r\nexport const initializeOrder = (state:TableState, mds: Dictionary<MetaData>) : Dictionary<number> => {\r\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\r\n let userDefinedOrder = state.userDefined.order;\r\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\r\n return {}\r\n }\r\n return userDefinedOrder;\r\n}","import { FieldType, MetaData } from '../interfaces/report-def';\r\nimport { Observable } from 'rxjs';\r\nimport { defaultTableState, GroupedData, InitializationState, PersistedTableState, TableState } from './TableState';\r\nimport { Injectable, Signal, computed, inject } from '@angular/core';\r\nimport { TableBuilderConfigToken } from './TableBuilderConfig';\r\nimport { CustomFilter, FilterInfo, isCustomFilter, isFilterInfo } from './filter-info';\r\nimport { Sort, SortDirection } from '@angular/material/sort' ;\r\nimport { ComponentStore } from '@ngrx/component-store' ;\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { distinctUntilChanged, filter, switchMap, tap } from 'rxjs/operators'\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { NonFunctionProperties, NotPersistedTableSettings, parseTbSizeToPixels, PersistedTableSettings, TableBuilderSettings } from './table-builder-general-settings';\r\nimport { replaceInArrayWithClone } from '../../utilities/array-helpers';\r\nimport { sortsAreSame } from '../directives';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { TableProps } from '../components/table-container/tableProps';\r\nimport { cleanPersistedState, createPreSort, initializeOrder, mapSaveableState, mergeMeta, orderedStateVisibleMetaData, orderMetaData } from './table-store.helpers';\r\nimport { TableBuilderSort } from '../components/table-container/table-container.helpers/sort-state.helpers';\r\n\r\n@Injectable()\r\nexport class TableStore extends ComponentStore<TableState> {\r\n constructor() {\r\n const config = inject(TableBuilderConfigToken);\r\n const settingsFromConfig: Pick<TableState, 'notPersistedTableSettings' | 'persistedTableSettings'> =\r\n {\r\n persistedTableSettings: new PersistedTableSettings().merge(config.defaultTableSettings),\r\n notPersistedTableSettings: new NotPersistedTableSettings().merge(config.defaultTableSettings),\r\n };\r\n if(config.defaultTableSettings?.pageSize){\r\n settingsFromConfig.notPersistedTableSettings.paginatorSettings!.pageSize = config.defaultTableSettings?.pageSize;\r\n }\r\n const pageSize = settingsFromConfig.notPersistedTableSettings.paginatorSettings!.pageSize || defaultTableState.pageSize;\r\n const showAll = settingsFromConfig.notPersistedTableSettings.paginatorSettings!.defaultAll || defaultTableState.showAll;\r\n super( { ...defaultTableState, ...settingsFromConfig, pageSize, showAll });\r\n }\r\n\r\n $initializationState = this.selectSignal(state => state.initializationState);\r\n $savableState = computed(() => {\r\n const state = this.state();\r\n return mapSaveableState(state);\r\n });\r\n $userDefinedOrder = this.selectSignal( state => state.userDefined.order);\r\n metaData$ = this.select( state => state.metaData);\r\n $metaData = this.selectSignal( state => state.metaData);\r\n $metaDataArray = this.selectSignal(\r\n this.$metaData,\r\n this.$userDefinedOrder,\r\n orderMetaData\r\n );\r\n $orderedCodeVisibleMetaDatas = this.selectSignal(\r\n this.$metaDataArray, (mds) => mds.filter(m => m.fieldType !== FieldType.Hidden),\r\n { equal: (a: MetaData[], b) => b.length === a.length && b.every((s, i) => a[i].key === s.key) }\r\n )\r\n $getMetaData = (key: string) => computed(() => {\r\n const metaData = this.state().metaData[key];\r\n if(!metaData)console.warn(`Meta data with key ${key} not found`);\r\n return metaData;\r\n });\r\n\r\n $hiddenKeys = this.selectSignal( state => state.hiddenKeys);\r\n\r\n $orderedVisibleColumns = this.selectSignal(this.$orderedCodeVisibleMetaDatas, this.$hiddenKeys,\r\n (cs, hiddenKeys) => cs.filter(m => !hiddenKeys.includes(m.key)).map(m => m.key));\r\n\r\n $getUserDefinedWidths = this.selectSignal(state => state.userDefined.widths);\r\n $tableSettingsMinWidth = this.selectSignal(state => parseTbSizeToPixels(state.notPersistedTableSettings.minColumnWidth));\r\n $getUserDefinedWidth = (key:string) => this.selectSignal(this.$getUserDefinedWidths, widths => widths[key]);\r\n\r\n $filters = this.selectSignal(state => state.filters);\r\n filters$ = this.select(state => state.filters );\r\n $getFilter = (filterId: string) : Signal<FilterInfo | CustomFilter | undefined> => {\r\n return this.selectSignal(this.$filters, filters => filters[filterId] );\r\n }\r\n $preSort = computed(() => createPreSort(this.$metaData()));\r\n\r\n _$selectSorted = this.selectSignal(state => state.sorted, {\r\n equal: sortsAreSame\r\n });\r\n $selectSorted = computed<TableBuilderSort[]>(() => {\r\n const metaDict = this.$metaData();\r\n return this._$selectSorted().map(s => {\r\n const meta = metaDict[s.active];\r\n const sortLogic = meta.sortLogic;\r\n const sortBy = sortLogic?.sortBy === 'use map' ? meta.map : sortLogic?.sortBy;\r\n return ({ ...s, ...sortLogic, sortBy })\r\n })\r\n })\r\n selectSorted$ = this.select(state => state.sorted).pipe(distinctUntilChanged(sortsAreSame));\r\n $getSorts = this.selectSignal(() => this.$initializationState() !== InitializationState.Ready ? [] : this.$selectSorted());\r\n\r\n sort$ = toObservable(this.$getSorts);\r\n $getUserDefinedTableWidth = this.selectSignal(state => state.userDefined.table.width);\r\n getUserDefinedTableWidth$ = this.select(state => state.userDefined.table.width);\r\n $userDefinedRowHeight = this.selectSignal(state => (state.userDefined.rowHeight));\r\n $userDefinedHeaderHeight = this.selectSignal(state => (state.userDefined.headerHeight));\r\n $userDefinedPageSize = this.selectSignal(state => (state.userDefined.pageSize));\r\n $footerCollapsed = this.selectSignal(state => state.persistedTableSettings.collapseFooter);\r\n $headerCollapsed = this.selectSignal(state => state.persistedTableSettings.collapseHeader);\r\n\r\n $groupBy = this.selectSignal(state => state.groupBy);\r\n $groupByKeys = this.selectSignal(this.$groupBy, gb => gb.map(gbk => gbk.key), {\r\n equal: (prev: string[], curr: string[]) => prev.length === curr.length && curr.every((k, i) => prev[i] === k)\r\n })\r\n groupByKeys$ = this.select(state => state.groupBy.map(gbk => gbk.key))\r\n .pipe(distinctUntilChanged<string[]>((prev, curr) => prev.length === curr.length && curr.every((k, i) => prev[i] === k)));\r\n\r\n expandedGroups$ = this.select(state => state.groupBy).pipe(distinctUntilChanged((a, b) => {\r\n const aa = a.flatMap(g => g.expandedHeaders);\r\n const bb = b.flatMap(g => g.expandedHeaders);\r\n return aa.length === bb.length && aa.every((k) => bb.includes(k));\r\n }));\r\n $expandGroups = this.selectSignal(state => state.groupBy, { equal: (a, b) => {\r\n const aa = a.flatMap(g => g.expandedHeaders);\r\n const bb = b.flatMap(g => g.expandedHeaders);\r\n return aa.length === bb.length && aa.every((k) => bb.includes(k));\r\n } })\r\n\r\n $getIsExpanded = (columnKey: string, groupHeaderKey: string) => {\r\n return this.selectSignal(state => !!state.groupBy.filter(g => g.key === columnKey && g.expandedHeaders.includes(groupHeaderKey)).length);\r\n };\r\n\r\n $currentPage = this.selectSignal(state => state.currentPage);\r\n $pageSize = this.selectSignal(s => s.userDefined?.pageSize || s.pageSize!);\r\n $showAll = this.selectSignal(s => s.userDefined?.showAll ?? s.showAll);\r\n\r\n\r\n $tableSettings = this.selectSignal(state => {\r\n const ts : NonFunctionProperties<PersistedTableSettings & NotPersistedTableSettings> =\r\n { ...state.persistedTableSettings, ...state.notPersistedTableSettings };\r\n return ts;\r\n });\r\n $notPersistedTableSettings = this.selectSignal(state => state.notPersistedTableSettings)\r\n tableSettings$ = toObservable(this.$tableSettings);\r\n\r\n $props = this.selectSignal(s => s.props);\r\n\r\n $getLinkInfo = (md:MetaData) => this.selectSignal(state => state.linkMaps[md.key]);\r\n\r\n $isVirtual = this.selectSignal(state =>\r\n state.notPersistedTableSettings.useVirtualScroll\r\n || state.showAll\r\n || state.userDefined?.showAll\r\n );\r\n $viewType = this.selectSignal<ViewType>(state => {\r\n const usePaginator = state.notPersistedTableSettings.usePaginator;\r\n const showAll = state.showAll || state.userDefined?.showAll;\r\n const useVirtualScroll = state.notPersistedTableSettings.useVirtualScroll;\r\n if(showAll || (useVirtualScroll && !usePaginator)){\r\n return 'virtual all';\r\n } else if(useVirtualScroll && usePaginator) {\r\n return 'virtual paginator';\r\n } else if(usePaginator) {\r\n return 'paginator';\r\n } else {\r\n return 'all';\r\n }\r\n });\r\n\r\n readonly resetState = this.updater((state) => {\r\n const sorted = this.$preSort();\r\n return ({ ...state, hiddenKeys: [], sorted, filters: {}, groupBy: [], userDefined: { widths: {}, order: {}, table: {} } });\r\n });\r\n\r\n readonly resetPart = this.updater((state, part: typeof resetable[number]) => {\r\n const newState = { ...state };\r\n switch (part){\r\n case 'Sorting':\r\n newState.sorted = this.$preSort();\r\n return newState;\r\n case 'Filters':\r\n newState.filters = {};\r\n return newState;\r\n case 'Group By':\r\n newState.groupBy = [];\r\n return newState;\r\n case 'Hidden Columns':\r\n newState.hiddenKeys = [];\r\n return newState;\r\n case 'Column Widths':\r\n newState.userDefined.widths = {};\r\n newState.userDefined.table = {};\r\n return newState;\r\n case 'Column Order':\r\n newState.userDefined.order = {};\r\n return newState;\r\n case 'Page Size':\r\n delete newState.userDefined.pageSize;\r\n return newState;\r\n case 'Show All':\r\n delete newState.userDefined.showAll;\r\n return newState;\r\n case 'Row Height':\r\n delete newState.userDefined.rowHeight;\r\n return newState;\r\n case 'Header Height':\r\n delete newState.userDefined.headerHeight;\r\n return newState;\r\n }\r\n return newState;\r\n })\r\n\r\n readonly updateStateFromPersistedState = this.updater( ( state: TableState, persistedState: PersistedTableState) : TableState => {\r\n const incomingTableState: Partial<TableState> = cleanPersistedState(state, persistedState);\r\n const newState = this.updateStateFunc(state, incomingTableState);\r\n newState.initializationState = state.initializationState <= InitializationState.MetaDataLoaded ? InitializationState.TableSettingsLoaded : state.initializationState;\r\n return newState;\r\n });\r\n private updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\r\n const metaData = state.metaData;\r\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted\r\n : state.initializationState <= InitializationState.Created ? createPreSort(metaData) : state.sorted;\r\n return { ...state, ...incomingTableState, metaData, sorted };\r\n };\r\n\r\n readonly setTableSettings = this.updater((state, settings: TableBuilderSettings) => {\r\n const s: TableState = {\r\n ...state,\r\n persistedTableSettings: state.persistedTableSettings.merge(settings),\r\n notPersistedTableSettings: state.notPersistedTableSettings.merge(settings),\r\n initializationState: InitializationState.TableSettingsLoaded\r\n };\r\n s.pageSize = settings.tableSettings?.paginatorSettings?.pageSize ?? s.pageSize;\r\n s.showAll = settings.tableSettings?.paginatorSettings?.defaultAll ?? s.showAll;\r\n\r\n return s;\r\n });\r\n\r\n readonly setMetaData = this.updater((state, md: MetaData[]) => {\r\n const metaData = md\r\n .reduce((prev: Dictionary<MetaData>, curr) => {\r\n if(prev[curr.key]) {\r\n prev[curr.key] = mergeMeta(prev[curr.key], curr);\r\n } else {\r\n prev[curr.key] = curr;\r\n }\r\n return prev;\r\n }, {});\r\n\r\n const sortedInitialized = state.sorted.length > 0;\r\n const sorted = sortedInitialized ? state.sorted : createPreSort(metaData);\r\n const order = initializeOrder(state, metaData);\r\n const initializationState = state.initializationState == InitializationState.Created ? InitializationState.MetaDataLoaded : state.initializationState;\r\n return { ...state, initializationState, metaData, sorted, userDefined: { ...state.userDefined, order: order } };\r\n });\r\n\r\n readonly showColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\r\n }));\r\n readonly hideColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\r\n }));\r\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\r\n return ({ ...state, hiddenKeys: displayCols.filter(d => !d.visible).map(d => d.key) })\r\n });\r\n\r\n readonly setUserDefinedWidth = this.updater((state, colWidths:{key: string, widthInPixel:number}[]) => {\r\n const userDefinedWidths = { ...state.userDefined.widths };\r\n colWidths.forEach(cw => {\r\n userDefinedWidths[cw.key] = cw.widthInPixel;\r\n });\r\n return { ...state, userDefined: { ...state.userDefined, widths: userDefinedWidths } };\r\n });\r\n\r\n readonly setUserDefinedOrder = this.updater((state, moved: { newOrder: number, oldOrder: number }) => {\r\n const { newOrder, oldOrder } = moved;\r\n const mdsArr = orderedStateVisibleMetaData(state);\r\n moveItemInArray(mdsArr, oldOrder, newOrder);\r\n\r\n const userDefinedOrder = mdsArr.reduce((aggregate: any, current, index) => {\r\n aggregate[current.key] = index;\r\n return aggregate\r\n }, {});\r\n return ({ ...state, userDefined: { ...state.userDefined, order: userDefinedOrder } })\r\n })\r\n\r\n readonly setUserDefinedRowHeight = this.updater((state, rowHeight: number) => {\r\n return ({ ...state, userDefined: { ...state.userDefined, rowHeight } });\r\n });\r\n readonly setUserDefinedHeaderHeight = this.updater((state, headerHeight: number) => {\r\n return ({ ...state, userDefined: { ...state.userDefined, headerHeight } });\r\n });\r\n readonly addFilter = this.updater( (state, filter: FilterInfo | CustomFilter ) => {\r\n return this.addFiltersToState(state, [filter]);\r\n });\r\n\r\n readonly addFilters = this.updater((state, filters:(FilterInfo | CustomFilter )[]) => {\r\n return this.addFiltersToState(state, filters);\r\n });\r\n readonly removeFilter = this.updater( (state, filterId: string) => {\r\n const filtersCopy = { ...state.filters };\r\n delete filtersCopy[filterId];\r\n return ({ ...state, filters: filtersCopy });\r\n });\r\n\r\n readonly removeFilters = this.updater( (state, filterIds: string[]) => {\r\n const filtersCopy = { ...state.filters };\r\n filterIds.forEach(id => { delete filtersCopy[id] })\r\n return ({ ...state, filters: filtersCopy });\r\n });\r\n readonly clearFilters = this.updater((state) =>\r\n ({ ...state, filters: {} }));\r\n private addFiltersToState = (state:TableState, filters:(FilterInfo | CustomFilter)[]) : TableState => {\r\n\r\n var customFilters = filters.filter(isCustomFilter);\r\n\r\n var filterInfos = filters.filter(isFilterInfo);\r\n\r\n const filtersObj = filterInfos\r\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\r\n .reduce((filtersObj: {[k: string]: any}, filter) => {\r\n if(!filter.filterId) {\r\n filter.filterId = crypto.randomUUID();\r\n }\r\n filtersObj[filter.filterId] = filter;\r\n return filtersObj;\r\n }, {});\r\n\r\n customFilters.forEach( fltr => {\r\n if(!fltr.filterId) {\r\n fltr.filterId = crypto.randomUUID();\r\n }\r\n filtersObj[fltr.filterId] = fltr;\r\n })\r\n return {\r\n ...state,\r\n filters: { ...state.filters, ...filtersObj }\r\n };\r\n }\r\n\r\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, { key, direction } ) => {\r\n const sortArray = state.sorted.filter( s => s.active !== key );\r\n if(direction) {\r\n sortArray.unshift({ active: key, direction });\r\n }\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n readonly setAllSort = this.updater((state, sortArray:Sort[]) => {\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n readonly setCurrentPage = this.updater((state, currentPage: number) => ({ ...state, currentPage }))\r\n readonly setPageSize = this.updater((state, pageSize: number) =>\r\n ({ ...state, pageSize }));\r\n readonly setUserDefinedPageSize = this.updater((state, pageSize: number) =>\r\n ({ ...state, userDefined: { ...state.userDefined, pageSize } }));\r\n readonly setUserDefinedShowAll = this.updater((state, showAll: boolean) =>\r\n ({ ...state, showAll, userDefined: { ...state.userDefined, showAll } }))\r\n\r\n readonly setProps = this.updater((state, props: TableProps) => {\r\n return ({ ...state, props });\r\n });\r\n\r\n readonly setTableWidth = this.updater((state, widthInPixels:number) =>\r\n ({ ...state, userDefined: { ...state.userDefined, table: { width: widthInPixels } } }));\r\n\r\n readonly setInitializationState = this.updater( (state, initializationState: InitializationState) => {\r\n return { ...state, initializationState };\r\n });\r\n\r\n readonly toggleCollapseHeader = this.updater((state) => {\r\n const tableSettings = { ...state.persistedTableSettings };\r\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\r\n return ({ ...state, persistedTableSettings: new PersistedTableSettings(tableSettings) });\r\n })\r\n readonly toggleCollapseFooter = this.updater((state) => {\r\n const tableSettings = { ...state.persistedTableSettings };\r\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\r\n return ({ ...state, persistedTableSettings: new PersistedTableSettings(tableSettings) });\r\n });\r\n\r\n readonly addGroupByKey = this.updater((state, metaDataKey: string) => ({\r\n ...state,\r\n groupBy: [...state.groupBy, { key: metaDataKey, expandedHeaders: [] }]\r\n }));\r\n readonly removeGroupByKey = this.updater((state, groupByKey: string) => ({\r\n ...state,\r\n groupBy: state.groupBy.filter(key => groupByKey !== key.key)\r\n }));\r\n readonly updateExpandedGroups = this.updater((state, data: {key: string, groupKey: string, isExpanded: boolean}) => {\r\n const gbk = replaceInArrayWithClone(state.groupBy, k => k.key === data.key, gk => {\r\n gk.expandedHeaders = data.isExpanded ? [...gk.expandedHeaders, data.groupKey] : gk.expandedHeaders.filter(g => g !== data.groupKey);\r\n });\r\n return ({\r\n ...state,\r\n groupBy: gbk\r\n })}\r\n );\r\n readonly expandAllOfGroup = this.updater((state, data: { groupHeadersByKey: Dictionary<{ groupName: string }[]> }) => {\r\n const newGroupedData = state.groupBy.map(gb => ({\r\n key: gb.key,\r\n expandedHeaders: data.groupHeadersByKey[gb.key]?.map(g => g.groupName) ?? gb.expandedHeaders\r\n } as GroupedData));\r\n return ({ ...state, groupBy: newGroupedData });\r\n });\r\n readonly collapseAll = this.updater((state) => ({\r\n ...state,\r\n groupBy: state.groupBy.map(gb => ({ key: gb.key, expandedHeaders: [] }))\r\n }));\r\n readonly collapseAllOfKey = this.updater((state, data: { keys: string[] }) => ({\r\n ...state,\r\n groupBy: state.groupBy.map(gb => ({\r\n key: gb.key,\r\n expandedHeaders: data.keys.includes(gb.key) ? [] : gb.expandedHeaders\r\n }))\r\n }));\r\n\r\n readonly setLinkMaps = this.updater((state, maps: any) => {\r\n return ({ ...state, linkMaps: maps });\r\n });\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\r\n this.effect(() => srcObservable.pipe(\r\n tap(func)\r\n ));\r\n return this;\r\n };\r\n}\r\n\r\n\r\nexport type ViewType = 'virtual paginator' | 'paginator' | 'virtual all' | 'all';\r\nexport const resetable = [\r\n 'Sorting',\r\n 'Filters',\r\n 'Group By',\r\n 'Hidden Columns',\r\n 'Column Widths',\r\n 'Column Order',\r\n 'Row Height',\r\n 'Header Height',\r\n 'Page Size',\r\n 'Show All',\r\n] as const\r\n","import { Directive, OnInit, OnDestroy, inject } from '@angular/core';\r\nimport { MatSort, Sort, SortDirection } from '@angular/material/sort';\r\nimport { distinctUntilChanged, distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../classes/table-store';\r\n\r\n@Directive({\r\n selector: '[multiSort]',\r\n exportAs: 'multiSort',\r\n inputs: ['disabled: matSortDisabled'],\r\n providers: [\r\n { provide: MatSort, useExisting: MultiSortDirective }\r\n ],\r\n})\r\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\r\n private state = inject(TableStore);\r\n\r\n\r\n constructor() {\r\n super();\r\n this.state.setSort(this.sortChange.pipe(\r\n distinctUntilChanged((f, s) => f.active === s.active && f.direction === s.direction),\r\n map(sc => ({ key: sc.active, direction: sc.direction }))));\r\n this.state.on(\r\n this.state.sort$,\r\n (rules) => {\r\n const topRule = { active: rules[0]?.active || '', direction: rules[0]?.direction || '' as SortDirection };\r\n const topActiveChanged = topRule.active !== this.active || '';\r\n const topDirectionChanged = topRule.direction !== this.direction || '';\r\n if(topActiveChanged || topDirectionChanged){\r\n this.active = topRule.active;\r\n this.direction = topRule.direction;\r\n this.sortChange.emit(topRule);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n\r\nexport function sortsAreSame(a: Sort[], b: Sort[]) {\r\n if(a.length !== b.length) {\r\n return false;\r\n }\r\n for(let i = 0; i < a.length; i++) {\r\n if(a[i].active !== b[i].active || a[i].direction !== b[i].direction) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n selector: 'tb-date-filter',\r\n templateUrl: './date-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\r\n imports: [\r\n MatInputModule, FormsModule, MatDatepickerModule\r\n ]\r\n})\r\nexport class DateFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if (CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull)\r\n{\r\n <mat-form-field>\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\r\n <mat-datepicker-toggle class=\"small-button date-toggle\" matSuffix preventEnter [for]=\"cal\" />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.DateBetween)\r\n{\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" placeholder=\"From\" [ngModel]=\"info.filterValue?.Start\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" preventEnter [for]=\"fromVal\" />\r\n <mat-datepicker #fromVal />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" placeholder=\"To\" [ngModel]=\"info.filterValue?.End\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" preventEnter [for]=\"toVal\" />\r\n <mat-datepicker #toVal />\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'preventEnter',\r\n})\r\nexport class PreventEnterDirective {\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown() {\r\n return false\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[stop-propagation]\",\r\n})\r\nexport class StopPropagationDirective\r\n{\r\n @HostListener(\"click\", [\"$event\"])\r\n public onClick(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener(\"mousedown\", [\"$event\"])\r\n public onMousedown(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { Directive, ElementRef, AfterViewInit, Input, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[autoFocus]',\r\n})\r\nexport class AutoFocusDirective implements AfterViewInit {\r\n private elementRef = inject(ElementRef);\r\n\r\n\r\n @Input() autoFocus = true;\r\n\r\n ngAfterViewInit() {\r\n if(this.autoFocus){\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[clickSubject]',\r\n exportAs: 'clickSubject',\r\n host: {\r\n '(click)': 'next(this._val)'\r\n },\r\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\r\n constructor( ) {\r\n super();\r\n }\r\n _val!: T;\r\n\r\n @Input('clickSubject') set clickSubject( val: T) {\r\n this._val = val;\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Directive({\r\n selector: '[clickEmitter]',\r\n exportAs: 'clickEmitter',\r\n host: {\r\n '(click)': 'next(true)'\r\n },\r\n}) export class ClickEmitterDirective extends Subject<boolean> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n allOpenOpDialogs: MatDialogRef<any>[] = [];\r\n\r\n addDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs.push(ref);\r\n }\r\n\r\n removeDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs = this.allOpenOpDialogs.filter(rf => ref.id !== rf.id);\r\n }\r\n\r\n closeAllOpDialogs() {\r\n this.allOpenOpDialogs.forEach(ref => ref.close());\r\n }\r\n}\r\n","import { Directive, TemplateRef, Input, Component, Output, EventEmitter, ViewContainerRef, Injector, ChangeDetectionStrategy, inject, untracked, Signal, isSignal } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DialogService } from './dialog-service';\r\nimport { subscriber } from '../../rxjs';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { DialogConfig } from '@angular/cdk/dialog';\r\n\r\ninterface DialogViewContext<T> {\r\n $implicit: T,\r\n opDialog: T,\r\n close: () => void,\r\n}\r\n\r\n@Component({\r\n selector: 'dialog-wrapper',\r\n template: ``,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DialogWrapper<T = any> {\r\n private vcr = inject(ViewContainerRef);\r\n\r\n viewEmbedded = false;\r\n viewContext = {\r\n close: () => {},\r\n } as DialogViewContext<T>;\r\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\r\n if(this.viewEmbedded) {\r\n this.vcr.clear();\r\n }\r\n this.viewEmbedded = true;\r\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\r\n }\r\n\r\n set close(closeMethod: () => void ) {\r\n this.viewContext.close = closeMethod;\r\n }\r\n\r\n set data(value: T) {\r\n this.viewContext.$implicit = value;\r\n this.viewContext.opDialog = value;\r\n }\r\n\r\n}\r\n\r\n\r\nconst defaultDialogConfig: MatDialogConfig = {\r\n maxHeight: '95vh',\r\n}\r\n\r\n\r\n@Directive(\r\n { selector: '[opDialog]', }\r\n) export class DialogDirective<T> {\r\n private templateRef = inject<TemplateRef<DialogViewContext<T>>>(TemplateRef);\r\n private dialog = inject(MatDialog);\r\n private dialogConfig = inject(MAT_DIALOG_DEFAULT_OPTIONS, { optional: true }) || {};\r\n private service = inject(DialogService);\r\n\r\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\r\n _dialogConfig: MatDialogConfig<T> = { ...this.dialogConfig, ...defaultDialogConfig };\r\n @Input() opDialogAddDialogClass = true;\r\n @Input() set opDialogConfig(config: MatDialogConfig<T>) {\r\n\r\n this._dialogConfig = { ...this.dialogConfig, ...defaultDialogConfig, ...config };\r\n }\r\n\r\n get opDialogConfig() : MatDialogConfig<T> {\r\n return this._dialogConfig;\r\n }\r\n injector = inject(Injector);\r\n subscriber = subscriber(this.injector);\r\n @Input('opDialog') set setControl(i: Observable<T> | Signal<T>){\r\n let o: Observable<T>;\r\n if(isSignal(i)){\r\n o = toObservable<T>(i, { injector: this.injector })\r\n } else {\r\n o = i;\r\n }\r\n untracked(() => {\r\n this.subscriber.on(o, this.setDataAndState);\r\n });\r\n }\r\n\r\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\r\n dialogRef?: MatDialogRef<any, boolean>;\r\n componentWrapper?: DialogWrapper<T>;\r\n\r\n _data = new Subject<Observable<T>>();\r\n\r\n close() {\r\n this.dialogRef?.close();\r\n }\r\n\r\n initDialog() {\r\n if(this.nativeElement){\r\n const rect = this.nativeElement.getBoundingClientRect();\r\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\r\n this.opDialogConfig = { ...this.opDialogConfig, position };\r\n }\r\n if(this.opDialogAddDialogClass) {\r\n this.opDialogConfig.panelClass = [...(Array.isArray(this.opDialogConfig.panelClass) ? this.opDialogConfig.panelClass : this.opDialogConfig.panelClass ? [this.opDialogConfig.panelClass] : []), 'opDialog'];\r\n }\r\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\r\n this.componentWrapper = this.dialogRef.componentInstance;\r\n this.componentWrapper!.close = () => this.dialogRef?.close();\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n this.componentWrapper!.template = this.templateRef;\r\n if(!this.opDialogConfig.disableClose) {\r\n this.service.addDialogRef(this.dialogRef);\r\n }\r\n const sub = this.dialogRef.afterClosed().subscribe(() => {\r\n this.opDialogClosed.emit(true);\r\n this.service.removeDialogRef(this.dialogRef!);\r\n this.dialogRef = undefined;\r\n sub.unsubscribe();\r\n });\r\n }\r\n setDataAndState = (data: T) => {\r\n if(data){\r\n this.opDialogConfig.data = data;\r\n this.setDialogState(true);\r\n } else {\r\n this.setDialogState(false);\r\n }\r\n }\r\n\r\n setDialogState(open: boolean) {\r\n if(open) {\r\n if(!this.dialogRef) {\r\n this.initDialog();\r\n } else {\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n }\r\n } else if(!open && this.dialogRef) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false | 0 | '' | null | undefined>> {\r\n return true;\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Renderer2, inject, input, effect, signal, untracked } from '@angular/core';\r\nimport { Dictionary } from '@ngrx/entity';\r\n\r\n@Directive({ selector: '[styler]' })\r\nexport class StylerDirective {\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n $stylesApplied = signal<Dictionary<string>>({});\r\n $element = input.required<any>({ alias: 'element' });\r\n $styler = input.required<StylerStyle>({ alias: 'styler' });\r\n #stylerEffect = effect(() => {\r\n const styles = this.$styler();\r\n untracked(() => {\r\n const element = this.$element();\r\n\r\n const toApply = Object.entries(styles ?? {}).reduce((acc, [key, val]) => {\r\n if(!val) return acc;\r\n if(typeof (val) === 'string'){\r\n acc[key] = val;\r\n this.el.nativeElement.style[key] = val;\r\n } else if(!val?.condition || val?.condition === true || val?.condition(element)){\r\n const value = typeof (val.value) === 'string' ? val.value : val?.value(element);\r\n acc[key] = value;\r\n this.el.nativeElement.style[key] = value;\r\n }\r\n return acc;\r\n }, {} as Dictionary<string>);\r\n\r\n Object.keys(this.$stylesApplied()).filter(key => !Object.keys(toApply).includes(key)).forEach(key => {\r\n this.renderer.removeStyle(this.el.nativeElement, key);\r\n });\r\n\r\n this.$stylesApplied.set(toApply);\r\n })\r\n\r\n });\r\n}\r\n\r\nexport type StylerStyle<T = any> = Dictionary<\r\n string | {\r\n condition?: ((t: T) => boolean) | true,\r\n value: ((t: T) => string) | string\r\n }>\r\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\r\n\r\n\r\n@Directive(\r\n { selector: '[opMatSlideToggleGroup]',\r\n }\r\n) export class MatSlideToggleGroupDirective {\r\n @Input() allowMultiple = false;\r\n\r\n _toggles!: QueryList<MatSlideToggle>;\r\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\r\n this._toggles = val;\r\n this._ready.next(true);\r\n }\r\n\r\n private _ready = new ReplaySubject<boolean>(1);\r\n\r\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\r\n return this._ready.pipe( switchMap( _ => this.getObs()));\r\n }\r\n\r\n\r\n getInitValue() {\r\n const startValue = this._toggles.reduce( (prev, cur) => {\r\n if(!cur.name) {\r\n throw new Error('toggle must have the name attribute set');\r\n }\r\n prev[cur.name] = cur.checked\r\n return prev;\r\n }, {} as {[k:string]: boolean});\r\n return startValue;\r\n }\r\n\r\n getObs() {\r\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\r\n\r\n const startValue = this.getInitValue();\r\n\r\n return toggleChanges.pipe(\r\n scan( (prev, cur) => {\r\n const toggleName = cur.source.name!;\r\n const newVal = { ...prev, [toggleName]: cur.checked };\r\n if(cur.checked && !this.allowMultiple) {\r\n Object.keys(prev)\r\n .filter( key => key !== toggleName && prev[key])\r\n .forEach( key => {\r\n newVal[key] = false;\r\n this._toggles.find( toggle => toggle.name === key)!.toggle();\r\n });\r\n }\r\n return newVal;\r\n }, startValue),\r\n startWith(startValue),\r\n );\r\n\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'input[trimWhitespace]',\r\n})\r\nexport class TrimWhitespaceDirective {\r\n private elem = inject(ElementRef);\r\n\r\n\r\n @HostListener('blur') onBlur() {\r\n const inputString = this.elem.nativeElement.value;\r\n if(inputString) {\r\n const newValue = inputString.trim().replace(/\\t/g, '');\r\n if(inputString !== newValue) {\r\n this.elem.nativeElement.value = newValue;\r\n this.elem.nativeElement.dispatchEvent(new Event('input', { bubbles: true }));\r\n }\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\ntype Args<S extends object, O extends keyof S> = S[O] extends (...args: infer Params) => any ? Params : never;\r\ntype Return<S extends object, O extends keyof S> = S[O] extends (...args: any[]) => infer R ? R : never;\r\n\r\n\r\n@Pipe({\r\n name: 'func',\r\n})\r\nexport class FunctionPipe implements PipeTransform {\r\n transform<T, TParam extends any []>(func: (...args: TParam) => T, ...args: TParam): T;\r\n transform<O extends object, S extends keyof O>(s: S, obj: O, ...args: Args<O, S>): Return<O, S>;\r\n transform(func: any, ...args: any[]) {\r\n if(typeof func === 'string') {\r\n const [instance, ...tail] = args;\r\n const method = (instance[func] as Function).bind(instance);\r\n return method(...tail);\r\n }\r\n return func(...args);\r\n }\r\n}","import { Directive, ElementRef, Renderer2, effect, inject, input, untracked } from '@angular/core';\r\nimport { Dictionary, Predicate } from '@ngrx/entity';\r\n\r\n@Directive({\r\n selector: '[conditionalClasses]',\r\n})\r\nexport class ConditionalClassesDirective {\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n $element = input.required<any>({ alias: 'element' });\r\n $classes = input<Dictionary<Predicate<any> | true>>(undefined, { alias: 'conditionalClasses' });\r\n\r\n classesApplied: string[] = [];\r\n\r\n #onClasses = effect(() => {\r\n const classes = this.$classes();\r\n untracked(() => {\r\n const element = this.$element();\r\n let toApply: string [] = [];\r\n if(classes) {\r\n toApply = Object.keys(classes)\r\n .filter( key => (classes![key] === true) || classes![key]!(element) );\r\n }\r\n\r\n var classesNotYetApplied = toApply.filter( c => !this.classesApplied.includes(c) );\r\n var classesToRemove = this.classesApplied.filter( c => !toApply.includes(c));\r\n\r\n classesToRemove.forEach( c => this.renderer.removeClass( this.el.nativeElement, c ) );\r\n\r\n classesNotYetApplied.forEach( c => this.renderer.addClass( this.el.nativeElement, c ) );\r\n\r\n this.classesApplied = toApply;\r\n })\r\n });\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\r\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\r\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\r\nimport { ConditionalClassesDirective } from \"./directives/conditional-classes.directive\";\r\nimport { DialogDirective } from \"./directives/dialog\";\r\nimport { DialogService } from \"./directives/dialog-service\";\r\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\r\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\r\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\r\nimport { TrimWhitespaceDirective } from \"./directives/trim-whitespace.directive\";\r\nimport { StylerDirective } from \"./directives/styler\";\r\nimport { FunctionPipe } from \"./pipes/function.pipe\";\r\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\r\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\r\n\r\n@NgModule({\r\n exports: [\r\n StopPropagationDirective,\r\n PreventEnterDirective,\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n TrimWhitespaceDirective,\r\n StylerDirective,\r\n AutoFocusDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n imports: [\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n TrimWhitespaceDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n providers: [\r\n DialogService\r\n ]\r\n})\r\nexport class UtilitiesModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ChangeDetectorRef, inject, input } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { AutoFocusDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'lib-in-filter',\r\n templateUrl: './in-filter.component.html',\r\n styleUrls: ['./in-filter.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InFilterComponent,\r\n multi: true\r\n }],\r\n imports: [\r\n FormsModule, AutoFocusDirective\r\n ]\r\n})\r\nexport class InFilterComponent implements ControlValueAccessor {\r\n private ref = inject(ChangeDetectorRef);\r\n\r\n FieldType = FieldType;\r\n $type = input.required<FieldType>({ alias: 'type' })\r\n value: (string | number | undefined)[] = [undefined];\r\n\r\n constructor() {\r\n this.value = [undefined];\r\n }\r\n writeValue(obj: any[]): void {\r\n if(!obj?.length) obj = [undefined];\r\n this.value = obj;\r\n this.ref.markForCheck();\r\n }\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n addInput(){\r\n this.value = [...this.value, undefined];\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n removeInput(index: number){\r\n this.value = [...this.value];\r\n this.value.splice(index, 1);\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n onValueChange(i:number, value: number | string){\r\n this.value = [...this.value];\r\n this.value[i] = value;\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","<div class=inline>\r\n @for (val of value; track $index)\r\n {\r\n <div>\r\n @if($type() === FieldType.Number || $type() === FieldType.Currency)\r\n {\r\n <input type=\"number\" [ngModel]=\"val\"\r\n [readonly]=\"$index + 1 < value.length\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\" (ngModelChange)=\"onValueChange($index, $event)\"/>\r\n }\r\n @else\r\n {\r\n <input #input type=\"string\"\r\n [ngModel]=\"val\" [readonly]=\"$index + 1 < value.length\" [ngModelOptions]=\"{standalone:true}\"\r\n [autoFocus]=\"$index === value.length - 1\" (ngModelChange)=\"onValueChange($index ,$event)\" />\r\n }\r\n </div>\r\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput($index)\">-</button>\r\n @if ($index === value.length - 1)\r\n {\r\n <button [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\r\n }\r\n }\r\n</div>\r\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\n\r\n\r\n@Component({\r\n selector: 'tb-number-filter',\r\n templateUrl: './number-filter.component.html',\r\n styleUrls: ['./number-filter.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\r\n imports: [\r\n MatInputModule, FormsModule, InFilterComponent\r\n ]\r\n})\r\nexport class NumberFilterComponent {\r\n FilterType = FilterType;\r\n FieldType = FieldType;\r\n $currentFilterType = input.required<FilterType>({ alias: 'CurrentFilterType' });\r\n $info = input.required<PartialFilter>({ alias: 'info' })\r\n}\r\n","@let CurrentFilterType = $currentFilterType();\r\n@let info = $info();\r\n\r\n@if(CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In)\r\n{\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" type=\"number\" [ngModel]=\"info.filterValue\"/>\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.NumberBetween)\r\n{\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" placeholder=\"Start\" type=\"number\" [ngModel]=\"info.filterValue?.Start\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" placeholder=\"End\" type=\"number\" [ngModel]=\"info.filterValue?.End\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n@if (CurrentFilterType === FilterType.In)\r\n{\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' />\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tb-date-time-filter',\r\n templateUrl: './date-time-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\r\n imports: [\r\n FormsModule\r\n ]\r\n})\r\nexport class DateTimeFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if(CurrentFilterType !== FilterType.DateTimeBetween && CurrentFilterType !== FilterType.IsNull)\r\n{\r\n <input type=\"datetime-local\" preventEnter name=\"filterValue\" class=\"op-date-time-input\" [ngModel]=\"info.filterValue\"/>\r\n}\r\n@if(CurrentFilterType === FilterType.DateTimeBetween)\r\n{\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <input type=\"datetime-local\" preventEnter name=\"Start\" class=\"op-date-time-input\" [ngModel]=\"info.filterValue?.Start\"/>\r\n <input type=\"datetime-local\" preventEnter name=\"End\" class=\"op-date-time-input\" [ngModel]=\"info.filterValue?.End\"/>\r\n </ng-container>\r\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { FieldType } from '../../../interfaces/report-def';\r\nimport { KeyValuePipe } from '@angular/common';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FunctionPipe, SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\n\r\n\r\n@Component({\r\n selector: 'tb-in-list-filter , [tb-in-list-filter]',\r\n template: `\r\n @for (item of $keyValues() | keyvalue; track item.key) {\r\n <div>\r\n <mat-checkbox [checked]=\"'includes' | func : $selectedKeys() : item.key\" stop-propagation (change)='selectFilterChanged($event, item.key)' >\r\n {{$metaData().fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InListFilterComponent,\r\n multi: true\r\n }],\r\n imports: [\r\n KeyValuePipe, MatCheckboxModule, StopPropagationDirective, SpaceCasePipe, FunctionPipe\r\n ]\r\n})\r\nexport class InListFilterComponent implements ControlValueAccessor {\r\n private ref = inject(ChangeDetectorRef);\r\n private tableState = inject(TableStore);\r\n\r\n value: string[] = [];\r\n FieldType = FieldType;\r\n writeValue(obj: string[]): void {\r\n this.value = obj;\r\n\r\n if(this.value) {\r\n this.$selectedKeys.set(this.value.map( f => f ));\r\n }\r\n this.ref.markForCheck();\r\n }\r\n\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n $key = input.required<string>({ alias: 'key' });\r\n $selectedKeys = signal<string[]>([]);\r\n $metaData = computed(() => this.tableState.$getMetaData(this.$key())());\r\n $keyValues = computed((): {\r\n [key: number]: string;\r\n } => {\r\n const metaData = this.$metaData();\r\n if(metaData?.additional?.filterOptions?.filterableValues ) {\r\n return metaData.additional.filterOptions.filterableValues.reduce((prev: any, cur) => { prev[cur] = cur; return prev }, {});\r\n } else {\r\n if(metaData?.fieldType === FieldType.Enum ) {\r\n return metaData.additional!.enumMap!;\r\n }\r\n }\r\n return {};\r\n });\r\n\r\n selectFilterChanged($event, val: string) {\r\n if($event.checked) {\r\n this.$selectedKeys.update( keys => [...keys, val]);\r\n } else {\r\n this.$selectedKeys.update(keys => keys.filter( item => item !== val));\r\n }\r\n\r\n this.value = this.$selectedKeys();\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, input, computed, output, signal } from '@angular/core';\r\nimport { filterTypeMap, FilterInfo, PartialFilter } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SpaceCasePipe } from '../../../utilities';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NumberFilterComponent } from '../number-filter/number-filter.component';\r\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\r\nimport { DateTimeFilterComponent } from '../date-time-filter/date-time-filter.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\nimport { InListFilterComponent } from './in-list/in-list-filter.component';\r\n\r\n@Component({\r\n selector: 'tb-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatCardModule, FormsModule, SpaceCasePipe, MatButtonModule, MatTooltipModule, MatIconModule,\r\n MatInputModule, MatSelectModule, NumberFilterComponent,\r\n DateFilterComponent, DateTimeFilterComponent, MatRadioModule, InFilterComponent, InListFilterComponent,\r\n NgTemplateOutlet\r\n ]\r\n})\r\nexport class FilterComponent {\r\n protected state = inject(TableStore);\r\n\r\n filterTypes = filterTypeMap;\r\n FilterType = FilterType;\r\n FieldType = FieldType;\r\n\r\n $filter = input.required<PartialFilter, PartialFilter>({\r\n alias: 'filter',\r\n transform: (f) => ({ ...f })\r\n });\r\n\r\n close = output();\r\n\r\n $enteredFilterType = signal<FilterType | undefined>(undefined);\r\n $currentFilterType = computed(() => this.$enteredFilterType() || this.$filter()?.filterType);\r\n $availableFilterTypes = computed(() => this.filterTypes[this.$filter()?.fieldType]);\r\n $filterBy = computed(() => this.$filter().filterBy)\r\n\r\n onEnter(filter: FilterInfo, event: any) {\r\n event.preventDefault();\r\n if(filter.filterValue != null && filter.filterType) {\r\n this.addFilter(filter);\r\n this.close.emit();\r\n }\r\n }\r\n\r\n addFilter(filter: FilterInfo){\r\n this.state.addFilter({ ...filter, filterBy: this.$filterBy() });\r\n }\r\n}\r\n","@let filter = $filter();\r\n@let currentFilterType = $currentFilterType();\r\n\r\n@if (filter)\r\n{\r\n <mat-card appearance=\"outlined\" class=\"filter-card\">\r\n <mat-card-content>\r\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\r\n <div class=\"head-row\" >\r\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\r\n <button class=\"cancel-button small-button\" color=\"primary\" mat-icon-button type=\"button\" [matTooltip]=\"'Close'\"\r\n (click)=\"close.emit();\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"filter-row\">\r\n <div class=\"inline\">\r\n <mat-form-field class=\"my-filter\" >\r\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [ngModel]=\"$currentFilterType()\" [panelWidth]=\"null\" (ngModelChange)=\"$enteredFilterType.set($event)\">\r\n @for (kvp of filterTypes[filter.fieldType]; track kvp)\r\n {\r\n <mat-option [value]=\"kvp\">\r\n {{ kvp }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n @if(\r\n filter.fieldType === FieldType.String\r\n || filter.fieldType === FieldType.Array\r\n || filter.fieldType === FieldType.Link\r\n || filter.fieldType === FieldType.Unknown\r\n || filter.fieldType === FieldType.PhoneNumber)\r\n {\r\n <ng-container *ngTemplateOutlet=\"String\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency)\r\n {\r\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Boolean)\r\n {\r\n <ng-container *ngTemplateOutlet=\"Boolean\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Date)\r\n {\r\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.DateTime)\r\n {\r\n <tb-date-time-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Enum)\r\n {\r\n <ng-container *ngTemplateOutlet=\"Enum\" />\r\n }\r\n\r\n @if(currentFilterType === FilterType.IsNull)\r\n {\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\">\r\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\r\n </mat-radio-group>\r\n }\r\n </div>\r\n <button mat-button disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\" (click)=\"addFilter(form.value)\">\r\n Apply\r\n </button>\r\n \r\n \r\n <ng-template #String>\r\n @if(currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In)\r\n {\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n </mat-form-field>\r\n }\r\n @else if(currentFilterType === FilterType.In)\r\n {\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.String\" [(ngModel)]=\"filter.filterValue\" />\r\n }\r\n </ng-template>\r\n \r\n <ng-template #Boolean >\r\n @if(currentFilterType === FilterType.BooleanEquals)\r\n {\r\n <div class=\"switch\">\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\r\n <mat-radio-button preventEnter [value]=\"true\">True</mat-radio-button>\r\n <mat-radio-button preventEnter [value]=\"false\">False</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n </ng-template>\r\n <ng-template #Enum>\r\n @if(currentFilterType === FilterType.In)\r\n {\r\n <tb-in-list-filter name='filterValue' [key]='filter.key' [(ngModel)]='filter.filterValue' />\r\n\r\n }\r\n </ng-template>\r\n </form>\r\n </mat-card-content>\r\n </mat-card>\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\r\nimport { DisplayCol } from '../../classes/display-col';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-col-displayer',\r\n templateUrl: './gen-col-displayer.component.html',\r\n styleUrls: ['./gen-col-displayer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatTooltipModule, MatIconModule, MatButtonModule, MatMenuModule, StopPropagationDirective,\r\n DragDropModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenColDisplayerComponent {\r\n private tableState = inject(TableStore);\r\n $columns = computed(() => this.tableState.$orderedCodeVisibleMetaDatas().map( md => ({\r\n key: md.key,\r\n displayName: md.displayName,\r\n isVisible: !this.tableState.$hiddenKeys().includes(md.key)\r\n })));\r\n\r\n reset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = true);\r\n this.emit(displayCols);\r\n }\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.tableState.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder: event.previousIndex })\r\n }\r\n unset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = false);\r\n this.emit(displayCols);\r\n }\r\n\r\n emit(displayCols: DisplayCol[]) {\r\n this.tableState.setHiddenColumns(displayCols.map( c => ({ key: c.key, visible: c.isVisible })));\r\n }\r\n}\r\n","@if($columns(); as displayCols)\r\n{\r\n <span matTooltip=\"Show/hide columns\">\r\n <button color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button color=\"primary\" mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button color=\"primary\" mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList stop-propagation [cdkDropListLockAxis]=\"'y'\" (cdkDropListDropped)=\"drop($event)\">\r\n @for (col of displayCols; track col.key)\r\n {\r\n <button stop-propagation mat-menu-item cdkDrag [class.isHidden]=\"!col.isVisible\" [cdkDragData]=\"col\">\r\n <div style=\"display: flex; align-items: center;\" (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\">\r\n @if(col.isVisible)\r\n {\r\n <button color=\"primary\" mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n }\r\n \r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n </div>\r\n </button>\r\n }\r\n\r\n </div>\r\n </mat-menu>\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { PartialFilter } from \"../../classes/filter-info\";\r\n@Injectable()\r\nexport class WrapperFilterStore extends ComponentStore<{filterInfo:PartialFilter[]}>{\r\n constructor(){\r\n super({ filterInfo: [] });\r\n }\r\n\r\n clearAll = this.updater(() => ({ filterInfo: [] }));\r\n deleteByIndex = this.updater((state, index:number) => {\r\n const arr = [...state.filterInfo];\r\n arr.splice(index, 1);\r\n return { filterInfo: arr };\r\n });\r\n\r\n $currentFilters = this.selectSignal(state => state.filterInfo);\r\n\r\n addFilter = this.updater((state, filter:PartialFilter) => {\r\n return ({ ...state, filterInfo: [...state.filterInfo, filter] });\r\n })\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\r\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'tb-filter-displayer',\r\n templateUrl: './gen-filter-displayer.component.html',\r\n styleUrls: ['./gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatButtonModule, MatMenuModule, MatTooltipModule, StopPropagationDirective, MatIconModule,\r\n SpaceCasePipe\r\n ]\r\n})\r\nexport class GenFilterDisplayerComponent {\r\n protected tableState = inject(TableStore);\r\n protected filterStore = inject(WrapperFilterStore);\r\n $filterCols = computed(() => {\r\n const mds = this.tableState.$metaDataArray();\r\n return mds.filter(m => m.fieldType !== FieldType.Hidden && (m.fieldType !== FieldType.NotMapped || m.filterLogic?.filterBy) && !m.noFilter);\r\n });\r\n\r\n addFilter(metaData: MetaData) {\r\n this.filterStore.addFilter({\r\n key: metaData.key,\r\n fieldType: metaData.filterLogic?.filterType || metaData.fieldType,\r\n filterBy: metaData.filterLogic?.filterBy === 'use map' ? metaData.map : metaData.filterLogic?.filterBy\r\n });\r\n }\r\n}","<button color=\"primary\" stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" [matTooltip]=\"'Add Filter'\">\r\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n @for (md of $filterCols(); track md.key)\r\n {\r\n <button mat-menu-item (click)=\"addFilter(md)\">\r\n <span class=\"filter-labels\">{{md.displayName || (md.key | spaceCase)}}</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n","import { Pipe, PipeTransform, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({ name: 'keyDisplay' })\r\nexport class KeyDisplayPipe implements PipeTransform {\r\n tableState = inject(TableStore);\r\n\r\n transform = (key: string) =>\r\n computed(() => this.tableState.$getMetaData(key)()?.displayName || spaceCase(key))\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FilterType } from '../enums/filterTypes';\r\n\r\n@Pipe({ name: 'formatFilterType' })\r\nexport class FormatFilterTypePipe implements PipeTransform {\r\n transform(filterType: FilterType, value: any){\r\n if(filterType === FilterType.IsNull){\r\n return value ? filterType : 'Is Not Blank'\r\n }\r\n return filterType;\r\n }\r\n}","import { Pipe, PipeTransform, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { FieldType, MetaData } from '../interfaces/report-def';\r\nimport { DatePipe } from '@angular/common';\r\nimport { FilterType } from '../enums/filterTypes';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { DateTimeFilterFuncs } from '../functions/date-filter-function';\r\n\r\n\r\n@Pipe({ name: 'formatFilterValue' })\r\nexport class FormatFilterValuePipe implements PipeTransform {\r\n tableState = inject(TableStore);\r\n private datePipe = inject(DatePipe);\r\n\r\n transform(value: any, key: string, filterType: FilterType) {\r\n return computed(() => transform(value, this.tableState.$getMetaData(key)(), filterType));\r\n }\r\n}\r\n\r\nconst transform = (value: any, meta: MetaData, filterType: FilterType): string => {\r\n if(filterType === FilterType.IsNull) {\r\n return '';\r\n }\r\n if(value && (filterType === FilterType.In )){\r\n if(meta.fieldType === FieldType.Enum) {\r\n return value.map( (v: any) => spaceCase(meta.additional!.enumMap![v])).join(', ') ?? value;\r\n }\r\n return value.join(', ') ?? value;\r\n }\r\n if(filterType === FilterType.NumberBetween){\r\n return value.Start + ' - ' + value.End;\r\n }\r\n if(meta.fieldType === FieldType.Date){\r\n return new DatePipe('en-US').transform(value, 'MM/dd/yy') || '';\r\n }\r\n if(meta.fieldType === FieldType.DateTime){\r\n return (!!DateTimeFilterFuncs[filterType] ? new DatePipe('en-US').transform(value, 'short') : new DatePipe('en-US').transform(value, 'MM/dd/yy')) || '';\r\n }\r\n return value\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { FilterInfo, isFilterInfo } from '../../../classes/filter-info';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FilterComponent } from '../../filter/filter.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { KeyDisplayPipe } from '../../../pipes/key-display';\r\nimport { FormatFilterTypePipe } from '../../../pipes/format-filter-type.pipe';\r\nimport { FormatFilterValuePipe } from '../../../pipes/format-filter-value.pipe';\r\n\r\n@Component({\r\n selector: 'lib-filter-list',\r\n templateUrl: './filter-list.component.html',\r\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatButtonModule, MatTooltipModule, MatIconModule, FilterComponent,\r\n MatChipsModule, KeyDisplayPipe, FormatFilterTypePipe, FormatFilterValuePipe\r\n ]\r\n})\r\nexport class FilterChipsComponent {\r\n\r\n tableState = inject(TableStore);\r\n filterStore = inject(WrapperFilterStore);\r\n\r\n $filters = computed(() =>\r\n Object.values(this.tableState.$filters()).filter(f => isFilterInfo(f) && !f._isExternallyManaged) as FilterInfo[])\r\n deleteByIndex(index: number) {\r\n this.filterStore.deleteByIndex(index);\r\n }\r\n\r\n addFilter(filter:FilterInfo<any>){\r\n this.filterStore.addFilter(filter);\r\n }\r\n\r\n clearAll() {\r\n this.filterStore.clearAll();\r\n }\r\n\r\n $currentFilters = this.filterStore.$currentFilters;\r\n}\r\n","<div class=\"d-w\">\r\n\r\n @if ($currentFilters().length)\r\n {\r\n <button class=\"cancel-button\" mat-icon-button matTooltip=\"Close all Filters Cards\" (click)=\"clearAll()\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n <div class=\"float\">\r\n @for (filter of $currentFilters(); track filter.key)\r\n {\r\n <div class=\"filter\">\r\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex($index)\" />\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-chip-set>\r\n @for (filter of $filters(); track filter.key)\r\n {\r\n <mat-chip (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\r\n {{ (filter.key | keyDisplay)() }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ (filter.filterValue | formatFilterValue: filter.key : filter.filterType)() }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n @if ($filters().length > 1)\r\n {\r\n <mat-chip (removed)=\"tableState.clearFilters()\">\r\n Clear All\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n\r\n</div>\r\n","import { PipeTransform } from '@angular/core';\r\nimport { FieldType, MappedMetaData, MetaData } from '../interfaces/report-def';\r\nimport { formatDate, formatCurrency } from '@angular/common';\r\nimport { phoneFormatter } from '../../utilities/pipes/phone.pipe';\r\nimport { TableBuilderConfig } from '../classes/TableBuilderConfig';\r\nimport { spaceCase } from '../../utilities';\r\nimport { getFactory } from '../functions/sort-data-function';\r\n\r\nexport function isPipe(o : any ): o is PipeTransform {\r\n return typeof ((o as PipeTransform).transform ) === 'function';\r\n}\r\n\r\nexport function createTransformer(metaData: MetaData<any, any>, config: TableBuilderConfig, noIcons = false, forItem = false): ((value: any, ...args: any[]) => any) {\r\n const defaultFunc = getFactory(metaData.key);\r\n if(metaData.map && !forItem){\r\n return (value: any) => {\r\n return metaData.map!(value)};\r\n }\r\n if((metaData as MappedMetaData).mapItem){\r\n return (value: any) => {\r\n return (metaData as MappedMetaData).mapItem!(defaultFunc(value))};\r\n }\r\n if( metaData.transform) {\r\n if(isPipe(metaData.transform)){\r\n return (value: any) => (metaData!.transform as PipeTransform).transform(defaultFunc(value));\r\n }\r\n return metaData.fieldType === FieldType.Expression ? metaData.transform : (value: any) => (metaData.transform as (a:any, b:any)=>any)(defaultFunc(value), value);\r\n }\r\n if(config.transformers && config.transformers[metaData.fieldType]) {\r\n var transformer = config.transformers![metaData.fieldType]!;\r\n return (value: any) => transformer(defaultFunc(value));\r\n }\r\n const defaultDateFormat = config.dateFormats?.dateFormat ?? 'shortDate';\r\n const defaultDateTimeFormat = config.dateFormats?.dateTimeFormat ?? 'short';\r\n switch (metaData.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = metaData.additional?.dateFormat ?? defaultDateFormat;\r\n return (value: any) => dateFormatter(defaultFunc(value), dateFormat);\r\n case FieldType.DateTime:\r\n const dateTimeFormat = metaData.additional?.dateTimeOptions?.format ?? defaultDateTimeFormat;\r\n return (value: any) => dateFormatter(defaultFunc(value), dateTimeFormat);\r\n case FieldType.Currency:\r\n return (value: any) => currencyFormatter(defaultFunc(value));\r\n case FieldType.PhoneNumber:\r\n return (value: any) => phoneFormatter(defaultFunc(value));\r\n case FieldType.Enum:\r\n return (value: any) => spaceCase(metaData.additional?.enumMap![defaultFunc(value)] as string) ;\r\n case FieldType.Boolean:\r\n if(noIcons) {\r\n return defaultFunc\r\n }\r\n let forTrue = 'check'\r\n let forFalse = '';\r\n if(metaData.additional?.boolean?.forTrue) {\r\n forTrue = metaData?.additional.boolean.forTrue.icon;\r\n }\r\n if(metaData.additional?.boolean?.showForFalse === true) {\r\n forFalse = 'clear';\r\n } else if(metaData.additional?.boolean?.showForFalse?.icon) {\r\n forFalse = metaData.additional?.boolean?.showForFalse?.icon;\r\n }\r\n return (value: any) => defaultFunc(value) ? forTrue : forFalse ;\r\n }\r\n return defaultFunc;\r\n}\r\n\r\nexport function createItemTransformer<T = any, AdditionalFields extends string[] = []>(metaData: MetaData<T, AdditionalFields>, config: TableBuilderConfig, noIcons = false, mutate = false){\r\n const transform = createTransformer(metaData, config, noIcons);\r\n return (t: T) => {\r\n if(!mutate){\r\n t = { ...t }\r\n }\r\n t[metaData.key as string] = transform(t)\r\n }\r\n}\r\n\r\nexport function createItemTransformers<T = any, AdditionalFields extends string[] = []>(metaDatas: MetaData<T, AdditionalFields>[], config: TableBuilderConfig, noIcons = false, mutate = false){\r\n const transformers = metaDatas.map(meta => createItemTransformer(meta, config, noIcons, true));\r\n return (t: T) => {\r\n if(!t) return t;\r\n if(!mutate){\r\n t = { ... t }\r\n }\r\n transformers.forEach(m => m(t));\r\n return t;\r\n }\r\n}\r\n\r\nfunction dateFormatter(date: string | Date | number, format: string){\r\n if(!date) return;\r\n return formatDate(date, format, 'en-US');\r\n}\r\n\r\nfunction currencyFormatter(amt: number) {\r\n return formatCurrency(amt, 'en-US', '$');\r\n}","import { ChangeDetectionStrategy, Component, computed, input } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { LinkInfo } from \"../services/link-creator.service\";\r\n\r\n@Component({\r\n selector: \"tb-router-link-column\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterModule\r\n ],\r\n template: `\r\n <a target=\"{{additional().target}}\"\r\n [routerLink]=\" [link()]\"\r\n [queryParams]=\"queryParams()\"\r\n [fragment]=\"routerLinkOptions().fragment\"\r\n [preserveFragment]=\"routerLinkOptions().preserveFragment\"\r\n [queryParamsHandling]=\"routerLinkOptions().queryParamsHandling\"\r\n >\r\n <ng-content></ng-content>\r\n </a>\r\n `\r\n}) export class RouterLinkColumnComponent {\r\n additional = input.required<LinkInfo>();\r\n element = input.required<any>();\r\n queryParams = computed(() => this.additional().routerLinkOptions!.queryParams(this.element()));\r\n routerLinkOptions = computed(() => this.additional().routerLinkOptions!);\r\n link = input.required<string>();\r\n}\r\n\r\n@Component({\r\n selector: \"tb-link-column\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <a target=\"{{additional().target}}\" href=\"{{link()}}\">\r\n <ng-content></ng-content>\r\n </a>\r\n `\r\n}) export class LinkColumnComponent {\r\n element = input.required<any>();\r\n additional = input.required<LinkInfo>();\r\n link = input.required<string>();\r\n}","import { ChangeDetectionStrategy, Component, input, computed } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tb-comma-array-column',\r\n template: `\r\n @for(val of displayArray(); track $index){\r\n {{val + (!$last ? ',' : '')}}\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayCommaColumnComponent {\r\n\r\n value = input.required<(string | number)[]>();\r\n additional = input(3);\r\n displayArray = computed(() => (this.value() || []).slice(0, this.additional()))\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'tb-new-line-array-column',\r\n template: `\r\n @for(val of displayArray(); track $index){\r\n {{val}}\r\n @if(!$last){ <br/> }\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayNewLineColumnComponent {\r\n value = input.required<(string | number)[]>();\r\n additional = input(3);\r\n displayArray = computed(() => (this.value() || []).slice(0, this.additional()));\r\n}\r\n","import { Component, TemplateRef, viewChild } from \"@angular/core\";\r\nimport { LinkColumnComponent, RouterLinkColumnComponent } from \"../link-column.component\";\r\nimport { ArrayCommaColumnComponent, ArrayNewLineColumnComponent } from \"../array-column.component\";\r\nimport { MatIcon } from \"@angular/material/icon\";\r\nimport { StylerDirective } from \"../../../utilities/directives/styler\";\r\nimport { FunctionPipe } from \"../../../utilities\";\r\n\r\n@Component({\r\n selector: 'initialization',\r\n templateUrl: './initialization.component.html',\r\n imports: [\r\n LinkColumnComponent, ArrayCommaColumnComponent, MatIcon,\r\n RouterLinkColumnComponent, ArrayNewLineColumnComponent,\r\n StylerDirective, FunctionPipe\r\n ]\r\n})\r\nexport class InitializationComponent {\r\n $linkTemplate = viewChild.required<TemplateRef<any>>('link');\r\n $routerLinkTemplate = viewChild.required<TemplateRef<any>>('routerLink');\r\n $linkWithIconTemplate = viewChild.required<TemplateRef<any>>('linkWithIcon');\r\n $routerLinkWithIconTemplate = viewChild.required<TemplateRef<any>>('routerLinkWithIcon');\r\n $imageUrlTemplate = viewChild.required<TemplateRef<any>>('imageUrl');\r\n $arrayNewLineTemplate = viewChild.required<TemplateRef<any>>('arrayNewLine');\r\n $arrayCommaTemplate = viewChild.required<TemplateRef<any>>('arrayComma');\r\n $defaultTemplate = viewChild.required<TemplateRef<any>>('default');\r\n $defaultWithIcon = viewChild.required<TemplateRef<any>>('defaultWithIcon');\r\n}\r\n","<ng-template #link let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n </tb-link-column>\r\n }\r\n @else\r\n {\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #routerLink let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-router-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n </tb-router-link-column>\r\n }\r\n @else\r\n {\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n }\r\n\r\n</ng-template>\r\n\r\n<ng-template #linkWithIcon let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{ value}}</mat-icon>\r\n </tb-link-column>\r\n }\r\n @else\r\n {\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #routerLinkWithIcon let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{ value}}</mat-icon>\r\n </tb-link-column>\r\n }\r\n @else\r\n {\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{ value}}</mat-icon>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-value='value'>\r\n <span>\r\n <img height=\"75px\" width=\"75px\" [src]=\"value\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #arrayNewLine let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n <tb-new-line-array-column [value]='value' [additional]='additional' [styler]=\"styles\" [element]=\"element\"/>\r\n</ng-template>\r\n\r\n<ng-template #arrayComma let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n <tb-comma-array-column [value]='value' [additional]='additional' [styler]=\"styles\" [element]=\"element\"/>\r\n</ng-template>\r\n\r\n<ng-template #default let-value='value' let-element='element' let-styles=\"innerStyles\">\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-value='value' let-element='element' let-styles=\"innerStyles\">\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{value}}</mat-icon>\r\n</ng-template>\r\n","import { EnvironmentInjector, createComponent, inject } from \"@angular/core\";\r\nimport { Injectable, TemplateRef } from \"@angular/core\";\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { InitializationComponent } from \"../components/initialization-component/initialization.component\";\r\nimport { TableBuilderConfigToken } from \"../classes/TableBuilderConfig\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TableTemplateService {\r\n environmentInjector = inject(EnvironmentInjector);\r\n tableConfig = inject(TableBuilderConfigToken);\r\n initConfig = createComponent(InitializationComponent, {\r\n environmentInjector: this.environmentInjector,\r\n });\r\n initializationComponentInstance = this.initConfig.instance;\r\n getTemplate(metaData: MetaData) : TemplateRef<any> {\r\n\r\n if(metaData.fieldType === FieldType.Array){\r\n const arrayStyle = (metaData.additional as ArrayAdditional)?.arrayStyle ?? this.tableConfig?.arrayDefaults?.arrayStyle;\r\n return arrayStyle === ArrayStyle.NewLine\r\n ? this.initializationComponentInstance.$arrayNewLineTemplate()\r\n : this.initializationComponentInstance.$arrayCommaTemplate();\r\n }\r\n\r\n if(metaData.fieldType === FieldType.ImageUrl) {\r\n return this.initializationComponentInstance.$imageUrlTemplate();\r\n }\r\n\r\n const useIcon = metaData.useIcon || metaData.fieldType === FieldType.Boolean;\r\n if(metaData.fieldType === FieldType.Link || metaData.additional?.link){\r\n const router = metaData.additional?.link?.useRouterLink;\r\n if(router) {\r\n return useIcon\r\n ? this.initializationComponentInstance.$routerLinkWithIconTemplate()\r\n : this.initializationComponentInstance.$routerLinkTemplate();\r\n }\r\n return useIcon\r\n ? this.initializationComponentInstance.$linkWithIconTemplate()!\r\n : this.initializationComponentInstance.$linkTemplate();\r\n }\r\n\r\n if(useIcon){\r\n return this.initializationComponentInstance.$defaultWithIcon();\r\n }\r\n\r\n return this.initializationComponentInstance.$defaultTemplate();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, linkedSignal, viewChild } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InListFilterComponent } from '../filter/in-list/in-list-filter.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n selector: 'tb-header-menu',\r\n templateUrl: './column-header-menu.component.html',\r\n styleUrl: './column-header-menu.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatMenuModule, MatIconModule, MatButtonModule, FormsModule, InListFilterComponent,\r\n MatInputModule, MatTooltipModule, StopPropagationDirective, MatRadioModule, MatDatepickerModule\r\n ]\r\n})\r\nexport class ColumnHeaderMenuComponent {\r\n protected tableState = inject(TableStore);\r\n\r\n FieldType = FieldType;\r\n FilterType = FilterType;\r\n\r\n $metaData = input.required<MetaData>({ alias: 'metaData' });\r\n $fieldType = computed(() => this.$metaData().filterLogic?.filterType || this.$metaData().fieldType)\r\n $trigger = viewChild(MatMenuTrigger);\r\n\r\n hideField(key: string) {\r\n this.tableState.hideColumn(key);\r\n }\r\n\r\n $metaFilterType = computed<FilterType>(() => {\r\n if(this.$metaData().additional?.filterOptions?.filterableValues) {\r\n return FilterType.In;\r\n }\r\n switch (this.$fieldType()) {\r\n case FieldType.String:\r\n case FieldType.Link:\r\n case FieldType.PhoneNumber:\r\n case FieldType.Array:\r\n case FieldType.Unknown:\r\n return FilterType.StringContains;\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n return FilterType.NumberEquals;\r\n case FieldType.Boolean:\r\n return FilterType.BooleanEquals;\r\n case FieldType.Date:\r\n case FieldType.DateTime:\r\n return FilterType.DateIsOn;\r\n case FieldType.Enum:\r\n return FilterType.In;\r\n default: return FilterType.StringContains\r\n }\r\n });\r\n\r\n $currentFilterType = linkedSignal(() => this.$metaFilterType());\r\n $key = computed(() => this.$metaData().key || crypto.randomUUID());\r\n\r\n setStringFilterType() {\r\n if(this.$currentFilterType() === FilterType.StringContains){\r\n this.$currentFilterType.set(FilterType.StringDoesNotContain);\r\n } else {\r\n this.$currentFilterType.set(FilterType.StringContains);\r\n }\r\n }\r\n\r\n setFilterType(filterType: FilterType) {\r\n this.$currentFilterType.set(filterType)\r\n }\r\n\r\n onEnter(filter: FilterInfo, metaData: MetaData) {\r\n if(filter.filterValue != undefined && this.$currentFilterType()) {\r\n this.tableState.addFilter({\r\n fieldType: this.$fieldType(),\r\n filterId: `header-column-${metaData.key}`,\r\n filterType: this.$currentFilterType(),\r\n filterValue: filter.filterValue,\r\n key: metaData.key,\r\n filterBy: metaData.filterLogic?.filterBy === 'use map' ? metaData.map : metaData.filterLogic?.filterBy\r\n });\r\n this.$trigger()!.closeMenu();\r\n }\r\n }\r\n}\r\n","@let metaData = $metaData();\r\n@let fieldType = $fieldType();\r\n@let currentFilterType = $currentFilterType();\r\n\r\n<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n @if (!(fieldType === FieldType.NotMapped))\r\n {\r\n <button color=\"primary\" mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n }\r\n <button color=\"primary\" mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <div (keydown)=\"$event.stopImmediatePropagation()\">\r\n @if (!(fieldType === FieldType.NotMapped))\r\n {\r\n <ng-form #myForm=\"ngForm\" class=\"tb-header-filter\" (keydown.enter)=\"onEnter(myForm.value, metaData)\">\r\n @if(currentFilterType === FilterType.Or || currentFilterType === FilterType.In)\r\n {\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [ngModel]=\"undefined\"/>\r\n }\r\n @else if(fieldType === FieldType.Link || fieldType === FieldType.String || fieldType === FieldType.Array || fieldType === FieldType.Unknown || fieldType === FieldType.PhoneNumber)\r\n {\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{currentFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"undefined\"/>\r\n <span matSuffix [matTooltip]=\"currentFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" class=\"header-filter-icon-button\" (click)=\"setStringFilterType()\">\r\n <mat-icon [class]=\"{'chosen-icon': currentFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (fieldType === FieldType.Number || fieldType === FieldType.Currency)\r\n {\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n <mat-label>{{currentFilterType === FilterType.NumberEquals ? 'Equals...' : currentFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"undefined\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.NumberLessThan }\"\r\n (click)=\"setFilterType(FilterType.NumberLessThan)\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.NumberGreaterThan }\"\r\n (click)=\"setFilterType(FilterType.NumberGreaterThan)\" >\r\n <mat-icon class=\"suffix-icons\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.NumberEquals }\"\r\n (click)=\"setFilterType(FilterType.NumberEquals)\">\r\n <span class=\"suffix-icons\">=</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (fieldType === FieldType.Boolean)\r\n {\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group #ctrl=\"matRadioGroup\" #boolField='ngModel' stop-propagation class=\"font\" name=\"filterValue\" [ngModel]=\"undefined\" >\r\n <mat-radio-button class=\"filter-radio-button\" [value]=\"true\" (click)=\"boolField.control.setValue(true);\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" [value]=\"false\" (click)=\"boolField.control.setValue(false)\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (fieldType === FieldType.Date || fieldType === FieldType.DateTime)\r\n {\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.DateOnOrAfter }\"\r\n (click)=\"setFilterType(FilterType.DateOnOrAfter)\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.DateOnOrBefore }\"\r\n (click)=\"setFilterType(FilterType.DateOnOrBefore)\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.DateIsOn }\"\r\n (click)=\"setFilterType(FilterType.DateIsOn)\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{currentFilterType === FilterType.DateIsOn ? 'On...' :\r\n currentFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"undefined\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix preventEnter [for]=\"calendar\" />\r\n <mat-datepicker #calendar />\r\n </mat-form-field>\r\n }\r\n <button mat-button disableRipple [disabled]=\"myForm.value.filterValue == undefined\" (click)=\"onEnter(myForm.value, metaData)\">\r\n Apply\r\n </button>\r\n </ng-form>\r\n }\r\n </div>\r\n\r\n</mat-menu>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport { sumBy } from 'lodash';\r\n\r\n@Pipe({\r\n name: 'columnTotal',\r\n})\r\nexport class ColumnTotalPipe implements PipeTransform {\r\n transform(data: any[], metaData: MetaData) {\r\n const dataToCalculate = data.filter(d => !d.isGroupHeader)\r\n switch (metaData.additional!.footer!.type) {\r\n case 'sum':\r\n return sumBy(dataToCalculate, metaData.key);\r\n }\r\n }\r\n}\r\n","import { Dictionary } from \"@ngrx/entity\";\r\nimport { MetaData, metaDataArrToDict } from \"../../interfaces/report-def\";\r\nimport { StylerStyle } from \"../../../utilities/directives/styler\";\r\n\r\nexport const calculateWidths = (metaData: MetaData, userDefinedWidth: number | undefined) => {\r\n const definedWidth = (userDefinedWidth && `${userDefinedWidth}px`) || metaData.width;\r\n return definedWidth;\r\n}\r\n\r\nexport function calculateUserDefinedWidth(userDefinedWidth: number | undefined){\r\n if(userDefinedWidth) return { flex: `0 0 ${userDefinedWidth}px`, maxWidth: 'none' };\r\n return undefined;\r\n}\r\n\r\nexport function calculateTableDefinedWidth(metaData: MetaData, tableSettingsMinWidth: number | undefined){\r\n if(metaData.width) return ({ flex: `0 0 ${metaData.width}`, maxWidth: 'none' });\r\n const style = { flex: `${1}` };\r\n if(tableSettingsMinWidth) style['minWidth'] = `${tableSettingsMinWidth}px`;\r\n return style;\r\n}\r\n\r\nexport const calculateFlexWidth = (metaData: MetaData, userDefinedWidth: number | undefined, tableSettingsMinWidth: number | undefined) => {\r\n const definedWidth = calculateWidths(metaData, userDefinedWidth);\r\n if(definedWidth) return ({ flex: `0 0 ${definedWidth}`, maxWidth: 'none' });\r\n const style = { flex: `${1}` };\r\n if(tableSettingsMinWidth) style['minWidth'] = `${tableSettingsMinWidth}px`;\r\n return style;\r\n}\r\n\r\nexport const columnStyles = (metaData: MetaData, userDefinedWidth: number | undefined, tableSettingsMinWidth?: number | undefined) => {\r\n const fullMetaStyles = metaData.additional?.styles ?? {};\r\n const userWidth = calculateUserDefinedWidth(userDefinedWidth) ?? {};\r\n const tableWidth = userDefinedWidth ? {} : calculateTableDefinedWidth(metaData, tableSettingsMinWidth);\r\n const styles: {\r\n header: Dictionary<string>;\r\n body: StylerStyle;\r\n innerBody: StylerStyle;\r\n footer: Dictionary<string>;\r\n } = {\r\n header: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.header, ...userWidth },\r\n footer: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.footer, ...userWidth },\r\n innerBody: { ...metaData.additional?.columnPartStyles?.innerBody },\r\n body: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.body, ...userWidth },\r\n };\r\n return styles;\r\n}\r\n\r\nexport const calculateFlexWidths = (metaDatas: MetaData[], userDefinedWidths: Dictionary<number>, tableSettingsMinWidth: number | undefined) => {\r\n return metaDataArrToDict(metaDatas, md => calculateFlexWidth(md, userDefinedWidths[md.key], tableSettingsMinWidth));\r\n}\r\n\r\nexport const columnsStyles = (metaDatas: MetaData[], userDefinedWidths: Dictionary<number>) => {\r\n return metaDataArrToDict(metaDatas, md => columnStyles(md, userDefinedWidths[md.key]));\r\n}\r\n","import { Component, ChangeDetectionStrategy, TemplateRef, Predicate, Injector, computed, inject, viewChild, signal, Signal, AfterViewInit } from '@angular/core';\r\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { MatColumnDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { CustomCellDirective, ResizeColumnDirective } from '../../directives';\r\nimport { createTransformer } from '../../services/transform-creator';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { TableTemplateService } from '../../services/table-template-service';\r\nimport { CdkDropList, CDK_DROP_LIST, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { CurrencyPipe, DecimalPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { ConditionalClassesDirective, FunctionPipe, SpaceCasePipe } from '../../../utilities';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { ColumnHeaderMenuComponent } from '../column-header-menu/column-header-menu.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ColumnTotalPipe } from '../../pipes/column-total.pipe';\r\nimport { StylerDirective } from '../../../utilities/directives/styler';\r\nimport { columnStyles } from './column-helpers';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\n\r\n@Component({\r\n templateUrl: './column-builder.component.html',\r\n styleUrls: ['./column-builder.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\r\n ],\r\n imports: [\r\n MatTableModule, NgTemplateOutlet, ResizeColumnDirective, FunctionPipe, StylerDirective,\r\n ConditionalClassesDirective, DragDropModule, MatSortModule, SpaceCasePipe, ColumnHeaderMenuComponent,\r\n MatTooltipModule, ColumnTotalPipe, CurrencyPipe, DecimalPipe\r\n ]\r\n})\r\nexport class ColumnBuilderComponent implements AfterViewInit {\r\n FieldType = FieldType;\r\n private config = inject(TableBuilderConfigToken);\r\n private table = inject<MatTable<any>>(MatTable);\r\n private state = inject(TableStore);\r\n private templateService = inject(TableTemplateService);\r\n private tableConfig = inject(TableBuilderConfigToken);\r\n protected injector = inject(Injector);\r\n\r\n $columnDef = viewChild(MatColumnDef);\r\n $bodyTemplate = viewChild<TemplateRef<any>>('body');\r\n protected $metaData = signal<MetaData | undefined>(undefined);\r\n $additional = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n const linkInfo = this.state.$getLinkInfo(metaData)();\r\n if(linkInfo){\r\n return linkInfo;\r\n }\r\n if(metaData.fieldType === FieldType.Array){\r\n return (metaData.additional as ArrayAdditional)?.limit || this.tableConfig?.arrayDefaults?.limit;\r\n }\r\n return undefined;\r\n });\r\n setMetaData(md: MetaData){\r\n this.$metaData.set(md);\r\n }\r\n $customCell = signal<CustomCellDirective | undefined>(undefined);\r\n $data!: Signal<any[]>;\r\n\r\n $transform = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n return createTransformer(metaData, this.config)\r\n });\r\n $innerTemplate = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n return metaData.template || this.$customCell()?.$templateRef() || this.templateService.getTemplate(metaData);\r\n });\r\n $showFilters = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n const settings = this.state.$tableSettings();\r\n return !(settings.hideColumnHeaderFilters || metaData.noFilter)\r\n });\r\n $outerTemplate = computed(() => {\r\n return this.$customCell()?.columnDef?.cell?.template ?? this.$bodyTemplate();\r\n });\r\n $classes: Signal<Dictionary<Predicate<any> | true> | undefined> = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n if(metaData.fieldType === FieldType.Currency) {\r\n return ({\r\n ['negative-currency']: (element) => element[metaData.key] < 0,\r\n ...metaData.classes\r\n })\r\n }\r\n return metaData.classes;\r\n });\r\n $styles = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return\r\n return columnStyles(metaData, this.state.$getUserDefinedWidth(metaData.key)(), this.state.$tableSettingsMinWidth());\r\n });\r\n\r\n private viewInited = false;\r\n ngAfterViewInit() {\r\n this.table.addColumnDef(this.$columnDef()!);\r\n this.onViewInit();\r\n this.viewInited = true;\r\n }\r\n private onViewInit: () => void = () => {};\r\n whenViewInited = (callback: () => void) => {\r\n if(this.viewInited) {\r\n callback();\r\n return;\r\n }\r\n this.onViewInit = callback;\r\n }\r\n\r\n cellClicked(element: any, key: string, event: MouseEvent) {\r\n const metaData = this.$metaData();\r\n if(metaData?.click) {\r\n metaData.click(element, key, event);\r\n }\r\n }\r\n\r\n getTooltip = (element: any) => {\r\n const metaData = this.$metaData();\r\n if(!metaData?.toolTip) return;\r\n if(typeof metaData.toolTip === 'string') {\r\n return metaData.toolTip;\r\n }\r\n return metaData.toolTip!(element);\r\n }\r\n}\r\n","@let metaData = $metaData();\r\n@let customCell = $customCell();\r\n@let styles = $styles()!;\r\n\r\n@if(metaData)\r\n{\r\n <ng-container [matColumnDef]=\"metaData.key\">\r\n\r\n <!-- header -->\r\n <ng-template #myHeader matHeaderCellDef>\r\n <mat-header-cell class=\"column-head\" cdkDrag resizeColumn [style]='styles?.header' [key]=\"metaData.key\"\r\n [class]='metaData.additional?.columnPartClasses?.header'>\r\n <div class=\"header-container\" cdkDragHandle>\r\n @if(!customCell?.columnDef?.headerCell)\r\n {\r\n @if(metaData.fieldType !== FieldType.NotMapped || !!metaData.sortLogic?.sortBy)\r\n {\r\n <div mat-sort-header style=\"width: 100%\" [disabled]=\"metaData.noSort\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n }\r\n @else if(metaData.fieldType === FieldType.NotMapped)\r\n {\r\n <div style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n }\r\n @if($showFilters())\r\n {\r\n <tb-header-menu #menu [metaData]='metaData' />\r\n }\r\n }\r\n @else\r\n {\r\n <ng-container *ngTemplateOutlet=\"customCell!.columnDef!.headerCell.template; context: {metaData: metaData, styles: styles?.header} \" />\r\n }\r\n </div>\r\n </mat-header-cell>\r\n </ng-template>\r\n \r\n <!-- body -->\r\n <ng-container *matCellDef=\"let element;\">\r\n <ng-container *ngTemplateOutlet=\"$outerTemplate()!; context: { metaData: metaData, element: element , styles: styles?.body, $implicit: element }\"/>\r\n </ng-container>\r\n <ng-template #body let-element='element' >\r\n <mat-cell [matTooltip]=\"metaData.toolTip ? (getTooltip | func : element) : ''\" \r\n [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body'\r\n (click)='cellClicked(element, metaData.key, $event)' >\r\n <ng-container *ngTemplateOutlet=\"$innerTemplate()!;\r\n context: {\r\n value: ($transform()! | func : element),\r\n element: element,\r\n additional: $additional(),\r\n innerStyles: styles.innerBody,\r\n $implicit: element\r\n }; Injector: injector\" />\r\n </mat-cell>\r\n </ng-template>\r\n \r\n <!-- footer -->\r\n <ng-template matFooterCellDef>\r\n @if(customCell?.columnDef?.footerCell)\r\n {\r\n <ng-container\r\n *ngTemplateOutlet=\"customCell!.columnDef!.footerCell.template;\r\n context: {metaData: metaData, data: $data, styles : styles.footer }\"/>\r\n }\r\n @else\r\n {\r\n @let data = $data();\r\n <mat-footer-cell [style]='styles.footer' [class]='metaData.additional?.columnPartClasses?.footer'>\r\n @if(!!data?.length && metaData.additional?.footer)\r\n {\r\n <span class=\"bold\">\r\n @switch (metaData.fieldType)\r\n {\r\n @case (FieldType.Currency) { {{ data | columnTotal: metaData | currency }} }\r\n @case (FieldType.Number) { {{ data | columnTotal: metaData | number }} }\r\n }\r\n </span>\r\n }\r\n \r\n </mat-footer-cell>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n}","import { Sort } from \"@angular/material/sort\";\r\nimport { SortDirection } from \"../../../interfaces/report-def\";\r\nimport { difference } from \"lodash\";\r\n\r\n// If we are only sorting due to a change in the Sorts[] we can 'optimize'. If the sort array was first by column a asc then by column b desc then by column c asc,\r\n// and now it is first by column d asc then by column a desc then by column b desc then by column c asc, we dont need to rerun the tail, i.e. for culumn b and c.\r\n// So we need to calculate the matching tail of the sort array. Then sortsToRun will be the non-matching head.\r\n// But if any sorts were removed the only way to 'unsort' is to start by the original data and run all the existing sorts again, so 'sorts to run' will be all\r\n// the sorts.\r\n// We always pass allSorts to the container because if the table data changes all the sorts will need to be run.\r\nexport function updateSortState(previousSorts: SortState, currentSorts: TableBuilderSort[]): SortState{\r\n currentSorts = addInitSort(currentSorts);\r\n if(sortsRemoved(previousSorts.allSorts, currentSorts)){\r\n return ({ sortsToRun: currentSorts, allSorts: currentSorts });\r\n }\r\n const sameTailLength = getSameTailLength(previousSorts.allSorts, currentSorts);\r\n const sortsToRun = currentSorts.slice(0, currentSorts.length - sameTailLength);\r\n return ({ sortsToRun, allSorts: currentSorts });\r\n}\r\n\r\nexport interface SortState { sortsToRun: TableBuilderSort[], allSorts: TableBuilderSort[]}\r\n\r\nfunction addInitSort(sorts: TableBuilderSort[]){\r\n return [...sorts, { active: initIndexSymbol as unknown as string, direction: 'asc' as SortDirection }];\r\n}\r\n\r\nfunction sortsRemoved(previousSorts: TableBuilderSort[], currentSorts: TableBuilderSort[]): boolean{\r\n const previousSortedColumns = previousSorts.map(s => s.active);\r\n const currentSortedColumns = currentSorts.map(s => s.active);\r\n const sortsRemoved = !!difference(previousSortedColumns, currentSortedColumns).length;\r\n return sortsRemoved;\r\n}\r\n\r\n\r\nfunction getSameTailLength(previousSorts: TableBuilderSort[], currentSorts: TableBuilderSort[]){\r\n previousSorts = [...previousSorts].reverse();\r\n currentSorts = [...currentSorts].reverse();\r\n let indexOfChange = currentSorts.findIndex((s, i) => s.active !== previousSorts[i]?.active || s.direction !== previousSorts[i]?.direction);\r\n if(indexOfChange === -1) return indexOfChange = currentSorts.length;\r\n return indexOfChange;\r\n}\r\n\r\nexport const initIndexSymbol = Symbol('tb_init_index');\r\n\r\nexport const initialSortState: SortState = { sortsToRun: [], allSorts: [] };\r\n\r\nexport type TableBuilderSort = Sort & { nulls?: 'first' | 'last', sortBy?: (t) => any }","import { Injectable } from \"@angular/core\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { DataState, defaultDataState } from \"./TableState\";\r\n\r\n@Injectable()\r\nexport class DataStore extends ComponentStore<DataState> {\r\n constructor() {\r\n super({ ...defaultDataState });\r\n }\r\n}\r\n","import { groupBy } from \"lodash\";\r\nimport { Timestamp } from \"rxjs\";\r\nimport { DataGroup, Group, GroupedData, GroupGroup, NoneGroupHeader } from \"../../../classes/TableState\";\r\nimport { initIndexSymbol } from \"./sort-state.helpers\";\r\nimport { Dictionary } from \"@ngrx/entity\";\r\nimport { getFactory } from \"../../../functions/sort-data-function\";\r\n\r\nconst supportsGroupBy = typeof Object.groupBy === 'function'\r\n\r\nfunction getGroupedData<T extends NoneGroupHeader>(data: T[], groupByKeys: string[]) {\r\n return tbGroupBy(data, groupByKeys);\r\n}\r\n\r\nconst tbGroupBy = <T extends NoneGroupHeader = any>(data: T[], groupByKeys: string[], level = 1, parentGroupName?: string) => {\r\n const currentKey = groupByKeys[0];\r\n const groupedDataArr = groupData(currentKey, data, level, parentGroupName);\r\n\r\n const remainingGroupByKeys = groupByKeys.slice(1);\r\n const hasChildrenGroups = !!remainingGroupByKeys.length;\r\n\r\n if(hasChildrenGroups) {\r\n //group the children by iterating over each group and grouping it by the next keys\r\n const groupOfGroups = groupedDataArr.map((group: DataGroup<T>) => {\r\n const children = group.children;\r\n const groupGroup = {\r\n groupName: group.groupName,\r\n groupHeaderDisplay: group.groupHeaderDisplay,\r\n uniqueName: group.uniqueName,\r\n key: currentKey,\r\n hasTheData: false,\r\n isGroupHeader: true,\r\n padding: group.padding,\r\n level: group.level,\r\n length: group.length,\r\n groups: tbGroupBy(children as T[], remainingGroupByKeys, level + 1, group.groupName),\r\n [initIndexSymbol]: group[initIndexSymbol],\r\n } as GroupGroup<T>;\r\n return groupGroup;\r\n });\r\n return groupOfGroups;\r\n }\r\n\r\n return groupedDataArr;\r\n}\r\n\r\nfunction groupData<T extends NoneGroupHeader = any>(groupByKey: string, groupData: T[], level = 1, parentGroupName?: string){\r\n const getter = getFactory(groupByKey);\r\n const groupedDataDict: Record<string, (T)[]> = supportsGroupBy ? Object.groupBy(groupData, d => getter(d) ?? 'BLANK') as Record<string, T[]> : groupBy(groupData, groupByKey);\r\n const groupedDataArr = Object.entries(groupedDataDict).map(([name, groupData]) => {\r\n const uniqueName = parentGroupName ? `${parentGroupName}-${name}` : `${name}`;\r\n\r\n return ({\r\n isGroupHeader: true,\r\n groupHeaderDisplay: name,\r\n hasTheData: true,\r\n children: groupData,\r\n groupName: `tb_group_${uniqueName}`,\r\n padding: 1 + (20 * (level - 1)),\r\n key: groupByKey,\r\n length: groupData.length,\r\n uniqueName,\r\n level,\r\n [initIndexSymbol]: uniqueName,\r\n } as DataGroup<T>)\r\n });\r\n return groupedDataArr;\r\n}\r\n\r\nexport function updateGroupByState<T extends NoneGroupHeader = any>(groupedData: any[], { data, groups, expanded }: { data: Timestamp<T[]>, groups: Timestamp<string[]>, expanded: Timestamp<GroupedData[]>}, firstRun: boolean){\r\n if(\r\n firstRun\r\n || dataUpdated(data, groups, expanded)\r\n || groupsUpdated(groups, expanded)\r\n ){\r\n groupedData = groups.value.length ? getGroupedData(data.value, groups.value) : data.value;\r\n }\r\n const newDisplayData = expanded.value.length === 0\r\n ? groupedData\r\n : groupedData.map(group => mapGroupHeader(group, expanded.value.flatMap(g => g.expandedHeaders))).flat();\r\n return ({ displayData: newDisplayData, groupedData }) as GroupByState;\r\n}\r\n\r\nexport function mapGroupHeader(obj: DataGroup | GroupGroup, expandedHeaders: string[] | true): any[]{\r\n const showChildren = expandedHeaders === true || expandedHeaders.includes(obj.groupName);\r\n const children = !showChildren ? [] :\r\n obj.hasTheData ? obj.children\r\n : obj.groups.map(a => mapGroupHeader(a, expandedHeaders))\r\n return [obj, ...children].flat() as any[]\r\n}\r\n\r\nfunction dataUpdated(data: Timestamp<any[]>, groups: Timestamp<string[]>, expandedGroups: Timestamp<GroupedData[]>){\r\n return data.timestamp > groups.timestamp && data.timestamp > expandedGroups.timestamp;\r\n}\r\n\r\nfunction groupsUpdated(groups: Timestamp<string[]>, expandedGroups: Timestamp<GroupedData[]>){\r\n return groups.timestamp >= expandedGroups.timestamp;\r\n}\r\n\r\nexport interface GroupByState { displayData: any[], groupedData: DataGroup[]}\r\n\r\nexport const initialGroupByState = { displayData: [], groupedData: [] }\r\n\r\nexport const getAllGroupHeaderNames = (data: any[]) => {\r\n const groups = getGroupHeaders(data, (d:any) => d.isGroupHeader);\r\n const a = supportsGroupBy ? Object.groupBy(groups, group => group.key) as Dictionary<Group[]> : groupBy(groups, 'key');\r\n return Object.entries(a).reduce((names, [key, groups]) => {\r\n names[key] = groups!.map(g => ({ groupName: g.groupName, key: g.key }));\r\n return names;\r\n }, {})\r\n}\r\n\r\nexport const getAllGroupHeaderNamesByKeys = (data: any[], keys: string[]) => {\r\n const groups = getGroupHeaders(data, (d:any) => d.isGroupHeader && keys.includes(d.key));\r\n return supportsGroupBy ? Object.groupBy(groups, group => group.key) as Dictionary<Group[]> : groupBy(groups, 'key');\r\n}\r\n\r\nconst getGroupHeaders = (data: any[], filterFunc: (d:any) => boolean, arr:Group[] = []) => {\r\n const headers: Group[] = data.filter(filterFunc);\r\n arr.push(...headers);\r\n headers.forEach(h => {if(h.hasTheData === false && !!h.groups.length) getGroupHeaders(h.groups, filterFunc, arr)});\r\n return arr;\r\n}","import { Component, ChangeDetectionStrategy, ViewContainerRef, Injector, computed, inject, input, viewChild, effect, untracked, signal, output, linkedSignal } from '@angular/core';\r\nimport { MatFooterRowDef, MatHeaderRowDef, MatRowDef, MatTable, MatTableDataSource, MatTableModule } from '@angular/material/table';\r\nimport { SelectionChange, SelectionModel } from '@angular/cdk/collections';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\r\nimport { CdkDragDrop, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { ConditionalClassesDirective, FunctionPipe, StylerDirective } from '../../../utilities';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { formatNumber, NgTemplateOutlet } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { createTransformer } from '../../services/transform-creator';\r\nimport { initIndexSymbol } from '../table-container/table-container.helpers/sort-state.helpers';\r\nimport { parseTbSizeToPixels } from '../../classes/table-builder-general-settings';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\nimport { Group, isGroupHeader } from '../../classes/TableState';\r\nimport { mapGroupHeader } from '../table-container/table-container.helpers/groupBy.helpers';\r\n\r\n@Component({\r\n selector: 'tb-generic-table',\r\n templateUrl: './generic-table.component.html',\r\n styleUrls: ['./generic-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatTableModule, DragDropModule, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,\r\n MatTooltipModule, FunctionPipe, StylerDirective, ConditionalClassesDirective\r\n ],\r\n})\r\nexport class GenericTableComponent {\r\n protected state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n private viewContainer = inject(ViewContainerRef);\r\n private config = inject(TableBuilderConfigToken);\r\n private _injector = inject(Injector);\r\n\r\n smallFooter = 10\r\n\r\n $headerRow = viewChild(MatHeaderRowDef);\r\n $footerRow = viewChild(MatFooterRowDef);\r\n $table = viewChild(MatTable);\r\n $dropList = viewChild(CdkDropList);\r\n\r\n selection$ = output<SelectionChange<any>>({ alias: 'selection' });\r\n\r\n $displayDataLength = input.required<number>({ alias: 'displayDataLength' });\r\n $data = input.required<any[]>({ alias: 'data' });\r\n $rows = input<MatRowDef<any>[]>([], { alias: 'rows' });\r\n $columnInfos = input.required<ColumnInfo[]>({ alias: 'columnInfos' });\r\n $dataSource = input.required<MatTableDataSource<any>>({ alias: 'dataSource' });\r\n\r\n\r\n $keys = computed(() => {\r\n const displayed = this.state.$orderedVisibleColumns();\r\n const built = this.$columns();\r\n const keys = displayed.filter(d => !!built[d]);\r\n if(this.$hasSelectColumn()){\r\n keys.unshift('select');\r\n }\r\n if(this.$hasIndexColumn()) {\r\n keys.unshift('index');\r\n }\r\n return keys;\r\n });\r\n keys$ = toObservable(this.$keys);\r\n\r\n $trackBy = input<string | undefined>(undefined, { alias: 'trackBy' });\r\n $trackByFunction = computed(() => {\r\n const trackBy = this.$trackBy();\r\n if(!trackBy) return (index:number, item: any) => item[initIndexSymbol];\r\n return ((index:number, item: any) => item[trackBy]);\r\n });\r\n\r\n $hasFooterMeta = computed(() => this.state.$metaDataArray().some(md => !!md.additional?.footer))\r\n $hasCustomFooter = computed(() => this.$columnInfos()?.some(ci => !!ci.customCell?.columnDef?.footerCell));\r\n $footerRowStyle = computed(() => {\r\n const hasData = !!this.$displayDataLength();\r\n const metaFooter = this.$hasFooterMeta();\r\n const customFooter = this.$hasCustomFooter();\r\n const hasSelectionColumn = this.state.$props().selectionColumn;\r\n return customFooter || hasSelectionColumn || (hasData && metaFooter) ? 'regular-footer' : hasData ? 'no-footer' : 'small-footer';\r\n });\r\n $showFooterRow = computed(() => this.$footerRowStyle() !== 'no-footer');\r\n\r\n injector = Injector.create({\r\n providers: [\r\n { provide: MatTable, useFactory: () => this.$table() },\r\n { provide: CdkDropList, useFactory: () => this.$dropList() },\r\n ],\r\n parent: this._injector\r\n });\r\n\r\n $hasIndexColumn = computed(() => this.state.selectSignal(state => state.props.indexColumn)());\r\n $columns = signal<Dictionary<ColumnBuilderComponent>>({});\r\n $showHeader = computed(() => !this.state.$tableSettings().hideColumnHeader)\r\n $offset = this.dataStore.selectSignal( s => s.virtualScrollOffset );\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.state.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder: event.previousIndex })\r\n }\r\n\r\n #buildColumnsEffect = effect(() => {\r\n const columnInfos = this.$columnInfos() || [];\r\n const table = this.$table();\r\n if(!table) return;\r\n\r\n untracked(() => {\r\n\r\n Object.entries(this.$columns()).forEach(([key, value]) => {\r\n const columnInfo = columnInfos.find(ci => ci.metaData.key === key);\r\n if(!columnInfo || columnInfo.customCell !== value.$customCell()) {\r\n delete this.$columns()[key];\r\n table?.removeColumnDef(value.$columnDef()!);\r\n }\r\n });\r\n\r\n columnInfos.forEach(ci => this.buildColumn(ci))\r\n })\r\n });\r\n\r\n #buildRowsEffect = effect(() => {\r\n const table = this.$table();\r\n const rows = this.$rows();\r\n const keys = this.$keys();\r\n if(!table) return;\r\n\r\n untracked(() => {\r\n rows.forEach(row => {\r\n table.removeRowDef(row);\r\n row.columns = keys;\r\n table.addRowDef(row);\r\n });\r\n })\r\n });\r\n\r\n #buildHeaderRowEffect = effect(() => {\r\n const headerRow = this.$headerRow();\r\n const showHeader = this.$showHeader();\r\n const table = this.$table();\r\n untracked(() => {\r\n if(headerRow && showHeader && table) table.addHeaderRowDef(headerRow);\r\n else if(headerRow && table) table.removeHeaderRowDef(headerRow);\r\n })\r\n });\r\n\r\n #buildFooterEffect = effect(() => {\r\n const footerRow = this.$footerRow();\r\n const showFooter = this.$showFooterRow();\r\n const table = this.$table();\r\n\r\n untracked(() => {\r\n if(footerRow && showFooter && table) table.addFooterRowDef(footerRow);\r\n else if(footerRow && table) table.removeFooterRowDef(footerRow);\r\n })\r\n });\r\n\r\n $usePaginator = computed(() => this.state.$tableSettings().usePaginator);\r\n $useVirtualScroll = computed(() => this.state.$viewType().includes('virtual'));\r\n $virtualStart = this.dataStore.selectSignal(d => d.virtualEnds.start);\r\n $offsetIndex = computed(() => {\r\n const virtualStart = this.$virtualStart();\r\n const pageSize = this.state.$pageSize();\r\n const currentPage = this.state.$currentPage();\r\n if(this.$useVirtualScroll()){\r\n return virtualStart;\r\n }\r\n if(this.$usePaginator()){\r\n return pageSize * currentPage;\r\n }\r\n return 0;\r\n });\r\n\r\n rowClicked(t: any, event?: MouseEvent){\r\n const tbs = this.state.$tableSettings();\r\n if(tbs.rowClick) tbs.rowClick(t, event);\r\n }\r\n\r\n isGroupHeader(_: number, row: { isGroupHeader: boolean }) {\r\n return row.isGroupHeader;\r\n }\r\n\r\n setExpanded(key: string, groupKey: string, isExpanded: boolean): void {\r\n this.state.updateExpandedGroups({ key, isExpanded, groupKey });\r\n }\r\n\r\n buildColumn(column: ColumnInfo) {\r\n const alreadyBuiltColumn = this.$columns()[column.metaData.key];\r\n if(alreadyBuiltColumn) {\r\n alreadyBuiltColumn.setMetaData(column.metaData);\r\n } else {\r\n const component = this.viewContainer.createComponent(ColumnBuilderComponent, {\r\n index: 0,\r\n injector: this.injector\r\n });\r\n component.instance.$customCell.set(column.customCell);\r\n component.instance.setMetaData(column.metaData);\r\n component.instance.$data = this.$data;\r\n component.instance.whenViewInited(() => {\r\n this.$columns.update(columnsDict => ({\r\n ...columnsDict,\r\n [column.metaData.key]: component.instance\r\n }));\r\n });\r\n }\r\n }\r\n\r\n $hasSelectColumn = computed(() => this.state.selectSignal(state => state.props.selectionColumn)());\r\n $selection = computed(() => {\r\n const trackBy = this.$trackBy();\r\n if(trackBy){\r\n return new SelectionModel<any>(true, [], true, (a, b) => a[trackBy] === b[trackBy]);\r\n }\r\n return new SelectionModel<any>(true, []);\r\n });\r\n selectionChange$ = toObservable(this.$selection).pipe(switchMap(s => s.changed));\r\n $selectionChange = toSignal(this.selectionChange$);\r\n onSelectionChangeEffect = effect(() => {\r\n const selectionChange = this.$selectionChange();\r\n if(!selectionChange) return ;\r\n untracked(() => this.selection$.emit(selectionChange))\r\n });\r\n $isAllSelected = computed(() => {\r\n this.$selectionChange();\r\n const selected = this.$selection()?.selected;\r\n if(!selected?.length) return false;\r\n return this.$selectableData()?.length === selected.length;\r\n });\r\n $masterToggleChecked = this.$isAllSelected;\r\n $masterToggleIndeterminate = computed(() => {\r\n this.$selectionChange();\r\n return !!this.$selection()?.selected.length && !this.$masterToggleChecked()});\r\n\r\n $paginated = computed(() => this.state.$viewType() === 'virtual paginator' || this.state.$viewType() === 'paginator');\r\n $selectableData = computed(() => {\r\n const isGrouped = !!this.state.$groupByKeys().length;\r\n this.state.$expandGroups();\r\n if(this.$paginated()){\r\n const previousPageRecords = this.state.$currentPage() * this.state.$pageSize();\r\n if(isGrouped){\r\n const onScreen = this.$dataSource().data.slice(previousPageRecords, previousPageRecords + this.state.$pageSize());\r\n const nested = onScreen.flatMap(\r\n (group: Group) => (group.isGroupHeader && !this.state.$getIsExpanded(group.key, group.groupName)()) ? mapGroupHeader(group, true) : []\r\n );\r\n return onScreen.concat(nested).filter(row => !row.isGroupHeader);\r\n }\r\n return this.$data().slice(previousPageRecords, previousPageRecords + this.state.$pageSize());\r\n }\r\n else if(this.state.$viewType() === 'all' || this.state.$viewType() === 'virtual all'){\r\n return this.$data();\r\n }\r\n return [];\r\n });\r\n\r\n $selectAllMessage = computed(() => {\r\n if(this.$isAllSelected()) return `Deselect all ${this.$selection().selected.length} selected`;\r\n const selectable = formatNumber(this.$selectableData().length, 'en-US');\r\n let message = `Select all ${selectable}`;\r\n if(this.$paginated()){\r\n message += ' on this page';\r\n }\r\n return message;\r\n })\r\n\r\n #onSelectableDataChangeEffect = effect(() => {\r\n const selectableData = this.$selectableData();\r\n untracked(() => {\r\n const selected = this.$selection()?.selected;\r\n if(!selected.length) return;\r\n const trackBy = this.$trackBy();\r\n const trackByFunc = trackBy ? (s) => selectableData.every(d => d[trackBy!] !== s[trackBy!]) : s => !selectableData.includes(s);\r\n const removed = selected.filter(trackByFunc);\r\n this.$selection().deselect(removed)\r\n })\r\n });\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n if(this.$isAllSelected()){\r\n this.$selection().clear()\r\n } else {\r\n this.$selection().select(...this.$selectableData());\r\n }\r\n }\r\n\r\n $tableWidth = linkedSignal<number | undefined, { width: string }>({\r\n source: this.state.$getUserDefinedTableWidth,\r\n computation: (currentUserDefinedWidth, { source: previousUserDefinedWidth } = { value: null as any, source: 0 as any }) => {\r\n if( currentUserDefinedWidth){\r\n return ({ width: `${currentUserDefinedWidth}px`, minWidth: 'initial' });\r\n } if( wasReset() ){\r\n return ({ width: 'initial' });\r\n }\r\n return ({} as { width: string });\r\n\r\n function wasReset(){\r\n return (previousUserDefinedWidth ?? 0) >= 0 && currentUserDefinedWidth == null;\r\n }\r\n }\r\n });\r\n\r\n getTransform = (key: string, val: string) => computed(() => {\r\n if(val == undefined || val === 'null') return '';\r\n try {\r\n return createTransformer(this.state.$getMetaData(key)(), this.config, true, true)({ [`${key}`]: val }) || val;\r\n } catch (error) {\r\n return signal(val);\r\n }\r\n })\r\n\r\n $rowHeight = computed(() => {\r\n if(this.state.$userDefinedRowHeight()){\r\n return this.state.$userDefinedRowHeight() + 'px';\r\n }\r\n const notPersistedTableSettings = this.state.$notPersistedTableSettings();\r\n if(this.state.$isVirtual() && notPersistedTableSettings.virtualSettings?.enforceRowHeight){\r\n const height = notPersistedTableSettings.virtualSettings!.rowHeight;\r\n return parseTbSizeToPixels(height) + 'px';\r\n }\r\n if(notPersistedTableSettings.rowHeight){\r\n return parseTbSizeToPixels(notPersistedTableSettings.rowHeight) + 'px';\r\n }\r\n return undefined;\r\n });\r\n\r\n $headerHeight = computed(() => {\r\n if(this.state.$userDefinedHeaderHeight()){\r\n return this.state.$userDefinedHeaderHeight() + 'px';\r\n }\r\n const notPersistedTableSettings = this.state.$notPersistedTableSettings();\r\n if(this.state.$isVirtual() && notPersistedTableSettings.virtualSettings?.enforceHeaderHeight){\r\n const height = notPersistedTableSettings.virtualSettings!.headerHeight;\r\n return parseTbSizeToPixels(height) + 'px';\r\n }\r\n if(notPersistedTableSettings.headerHeight){\r\n return parseTbSizeToPixels(notPersistedTableSettings.headerHeight) + 'px';\r\n }\r\n return undefined;\r\n });\r\n\r\n $groupHeaderHeight = computed(() => {\r\n const groupHeaderHeight = this.state.$notPersistedTableSettings().groupHeaderHeight;\r\n if(groupHeaderHeight){\r\n return parseTbSizeToPixels(groupHeaderHeight) + 'px';\r\n }\r\n return this.$rowHeight();\r\n });\r\n\r\n $footerHeight = computed(() => {\r\n const footerStyle = this.$footerRowStyle();\r\n switch (footerStyle) {\r\n case 'regular-footer':\r\n return this.$rowHeight();\r\n case 'small-footer':\r\n return `${this.smallFooter}px`;\r\n default:\r\n return '0px';\r\n }\r\n });\r\n\r\n $stickyFooter = computed(() => this.state.$props().stickyFooter || this.state.$isVirtual());\r\n\r\n $rowStyles = computed(() => this.state.$tableSettings().rowStyles || {});\r\n $rowClasses = computed(() => this.state.$tableSettings().rowClasses || {});\r\n\r\n allOfGroupSelected = (uniqueName: string) => computed(() => {\r\n //make sure signal is marked dirty when selection or over all data changes\r\n this.$selectionChange();\r\n this.$data();\r\n const header = this.$dataSource().data.find(d => isGroupHeader(d) && d.uniqueName === uniqueName);\r\n const children = mapGroupHeader(header, true).filter(i => !isGroupHeader(i));\r\n if(!children.length) return { containsAll: false, containsSome: false, length: 0 };\r\n let containsAll = true;\r\n let containsSome = false;\r\n for(var a of children){\r\n const contains = this.$selection().isSelected(a);\r\n if(contains) containsSome = true;\r\n else containsAll = false;\r\n if(!containsAll && containsSome) break;\r\n }\r\n return { containsAll, containsSome, length: children.length };\r\n });\r\n\r\n toggleGroup = (uniqueName: string, allSelected: boolean) => {\r\n const header = this.$dataSource().data.find(d => isGroupHeader(d) && d.uniqueName === uniqueName);\r\n const children = mapGroupHeader(header, true).filter(i => !isGroupHeader(i));\r\n if(allSelected){\r\n this.$selection().deselect(...children)\r\n } else {\r\n this.$selection().select(...children);\r\n }\r\n }\r\n\r\n toggleGroupMessage = (amountOfItems: number, allSelected: boolean) => {\r\n if(allSelected) return `Deselect all in this group`;\r\n const selectable = formatNumber(amountOfItems, 'en-US');\r\n return `Select all ${selectable} in this group`;\r\n }\r\n}\r\n","<mat-table\r\n #table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n class=\"table-drag-list\"\r\n [dataSource]=\"$dataSource()\"\r\n [trackBy]=\"$trackByFunction()\"\r\n [style]=\"$tableWidth()\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n>\r\n\r\n <!-- select column -->\r\n <ng-container matColumnDef=\"select\">\r\n @let selection = $selection();\r\n <mat-header-cell *matHeaderCellDef class=\"select-column\">\r\n <mat-checkbox [checked]=\"!!($masterToggleChecked())\"\r\n [indeterminate]=\"$masterToggleIndeterminate()\"\r\n [matTooltip]=\"$selectAllMessage()\"\r\n (change)=\"$event ? masterToggle() : null\" />\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\r\n <mat-checkbox\r\n [checked]=\"selection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"/>\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef class=\"select-column\">\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n\r\n <!-- index column -->\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" class=\"index-column\">#\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index; let t\" class=\"index-column\">\r\n {{ 1 + i + $offsetIndex() }}\r\n </mat-cell>\r\n <mat-footer-cell *matFooterCellDef class=\"index-column\" />\r\n </ng-container>\r\n\r\n <!-- Grouping -->\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n @let expanded = (state.$getIsExpanded | func : row.key : row.groupName );\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\">\r\n @if($hasSelectColumn())\r\n {\r\n @let contains = (allOfGroupSelected | func : row.uniqueName)();\r\n <mat-checkbox [checked]=\"!!contains.containsAll\"\r\n [indeterminate]=\"!!contains.containsSome && !contains.containsAll\"\r\n [matTooltip]=\"toggleGroupMessage | func : contains.length : contains.containsAll\"\r\n (change)=\"$event ? toggleGroup(row.uniqueName, contains.containsAll) : null\" />\r\n }\r\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\r\n @if (!expanded())\r\n {\r\n <mat-icon>chevron_right</mat-icon>\r\n }\r\n @else\r\n {\r\n <mat-icon>expand_more</mat-icon>\r\n }\r\n </button>\r\n {{ (getTransform | func : row.key : row.groupHeaderDisplay)() }} ({{ row.length }})\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"state.$props().groupHeaderTemplate!; context: { element: row }\" />\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-row\r\n *matRowDef=\"let row; columns: $keys(); let i = index\"\r\n [style.height]=\"$rowHeight()\"\r\n [style.min-height]=\"$rowHeight()\"\r\n [styler]=\"$rowStyles()\"\r\n [element]=\"row\"\r\n [conditionalClasses]=\"$rowClasses()\"\r\n (click)=\"rowClicked(row, $event)\"\r\n />\r\n\r\n <!-- group row -->\r\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\"\r\n style=\"background-color: unset;\"\r\n [style.height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\" [style.min-height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"/>\r\n</mat-table>\r\n\r\n<mat-header-row *matHeaderRowDef=\"$keys(); sticky: state.$props().isSticky\" [style.height]=\"$headerHeight()\"\r\n [style.min-height]=\"$headerHeight()\" [style.top.px]=\"($offset()! * -1)\"/>\r\n<mat-footer-row *matFooterRowDef=\"$keys(); sticky: $stickyFooter() \" [style.height]=\"$footerHeight()\"\r\n [style.min-height]=\"$footerHeight()\"\r\n [style.bottom.px]=\"$stickyFooter() ? ($offset()) : undefined\"/>\r\n","export function downloadData(data: string, filename: string, mimeType: string) {\r\n const url = URL.createObjectURL(new Blob([data], { type: mimeType }));\r\n const downloadLink = document.createElement('a');\r\n downloadLink.download = filename;\r\n downloadLink.href = url;\r\n downloadLink.style.display = 'none';\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n document.body.removeChild(downloadLink);\r\n URL.revokeObjectURL(url);\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { TableBuilderConfigToken } from '../classes/TableBuilderConfig';\r\nimport { downloadData } from '../functions/download-data';\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\r\nimport { isPipe } from './transform-creator';\r\nimport { getFactory } from '../functions/sort-data-function';\r\n\r\n@Injectable()\r\nexport class ExportToCsvService<T> {\r\n state = inject(TableStore);\r\n private config = inject(TableBuilderConfigToken);\r\n private datePipe = inject(DatePipe);\r\n\r\n\r\n exportToCsv = (data: T[]) => {\r\n const hiddenKeys = this.state.selectSignal(s => s.hiddenKeys)();\r\n const meta = this.state.$metaDataArray().filter(md => !md.noExport && !hiddenKeys.includes(md.key));\r\n const csv = this.csvData(data, meta);\r\n downloadData(csv, 'export.csv', 'text/csv') ;\r\n }\r\n\r\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\r\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\r\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\r\n return res.join('\\n');\r\n }\r\n\r\n metaToField = (meta: MetaData<T>, row: T) => {\r\n let val: any = getFactory(meta.key)(row);\r\n if(val == null && !meta.transform) return val\r\n if(meta.transform && meta.fieldType !== FieldType.Expression){\r\n const transform = meta.transform as any;\r\n return isPipe(transform) ? transform.transform(val) : transform(val);\r\n }\r\n if(meta.map){\r\n return meta.map(row);\r\n }\r\n switch (meta.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\r\n val = this.transform(val, dateFormat);\r\n break;\r\n case FieldType.DateTime:\r\n const dateTimeFormat = meta.additional?.export?.dateTimeFormat || this.config?.export?.dateTimeFormat || meta.additional?.dateTimeOptions?.format;\r\n val = this.transform(val, dateTimeFormat);\r\n break;\r\n case FieldType.String:\r\n const prepend: string = meta.additional?.export?.prepend || this.config?.export?.prepend || '';\r\n val = prepend + val;\r\n break;\r\n case FieldType.Array:\r\n const style = (meta.additional as ArrayAdditional).arrayStyle ?? this.config.arrayDefaults?.arrayStyle;\r\n const limit = (meta.additional as ArrayAdditional).limit ?? this.config.arrayDefaults?.limit;\r\n val = (val as Array<string>).slice(0, limit).join(style === ArrayStyle.NewLine ? '\\n' : ', ');\r\n break;\r\n case FieldType.Expression:\r\n val = (meta.transform as any)(row);\r\n break;\r\n }\r\n if(typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\r\n val = val.replaceAll('\"', '\"\"');\r\n val = '\"' + val + '\"';\r\n }\r\n return val;\r\n }\r\n\r\n private transform(val: any, dateFormat: any) {\r\n if(this.config.transformers && this.config.transformers[FieldType.Date]) {\r\n return this.config.transformers[FieldType.Date]!(val);\r\n }\r\n return this.datePipe.transform(val, dateFormat);\r\n }\r\n}\r\n","import { FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { Dictionary } from \"@ngrx/entity\";\r\nimport { QueryParamsHandling } from \"@angular/router\";\r\nimport { getFactory } from \"../functions/sort-data-function\";\r\n\r\nexport function createLinkCreatorDict<T>(metaDatas: MetaData<T>[]){\r\n return metaDatas.reduce((acc, md) => {\r\n if(md.additional?.link || md.fieldType === FieldType.Link){ acc[md.key] = createLinkCreator(md)}\r\n return acc;\r\n }, {} as Dictionary<LinkInfo>)\r\n}\r\n\r\nexport function createLinkCreator<T>(metaData: MetaData<T>): LinkInfo{\r\n const target = metaData.additional?.link?.target || '_blank';\r\n const useRouterLink = metaData.additional?.link?.useRouterLink || false;\r\n const hasRoute = !!metaData.additional?.link?.interpolatedRoute;\r\n\r\n const qp = useRouterLink ?\r\n metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = typeof value === 'function' ? value : parseInterpolated(value);\r\n return map;\r\n }, {})\r\n : undefined;\r\n\r\n const routerLinkOptions = useRouterLink ? {\r\n queryParams: (element: T) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = qp;\r\n return map;\r\n }, {}) ?? null,\r\n fragment: metaData.additional!.link?.routerLinkOptions?.fragment,\r\n preserveFragment: metaData.additional!.link!.routerLinkOptions?.preserveFragment ?? false,\r\n queryParamsHandling: metaData.additional!.link!.routerLinkOptions?.queryParamsHandling ?? '',\r\n }\r\n : undefined;\r\n\r\n if(hasRoute) {\r\n const value = metaData.additional!.link!.interpolatedRoute!;\r\n return ({\r\n link: typeof value === 'function' ? (element: T) => value(element) : parseInterpolated(value),\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n } else {\r\n const slashIfNeeded = !metaData.additional?.link?.base?.endsWith('/') ? '/' : '';\r\n const base = metaData.additional!.link?.base;\r\n const getKey = key(metaData);\r\n return ({\r\n link: (element: T) => `${base}${slashIfNeeded}${getKey(element)}`,\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n }\r\n}\r\n\r\nconst key = (metaData : MetaData) => metaData.additional!.link?.urlKey ?\r\n getFactory(metaData.additional!.link!.urlKey as string)\r\n :\r\n getFactory(metaData.key);\r\n\r\nexport interface LinkInfo {\r\n link: (element: any) => string;\r\n target: string;\r\n useRouterLink: boolean;\r\n routerLinkOptions?: {\r\n queryParams: (element: any) => any;\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n}\r\n\r\nfunction parseInterpolated(input: string) {\r\n // Match either content inside curly braces or content between curly braces\r\n const parts = input.split(/({[\\w.]+})/);\r\n\r\n const result = parts\r\n .filter(part => part !== '') // Remove empty strings\r\n .map(part => {\r\n if(part.startsWith('{') && part.endsWith('}')) {\r\n // For interpolated values, remove the curly braces\r\n return {\r\n type: 'interpolated',\r\n val: getFactory(part.slice(1, -1))\r\n };\r\n } else {\r\n return {\r\n type: 'string',\r\n val: part\r\n };\r\n }\r\n }) as ({type: 'string', val:string} | {type:'interpolated', val: (t:any) => string})[];\r\n\r\n return function(val: any){\r\n return result.map(part => part.type === 'string' ? part.val : part.val(val)).join('');\r\n }\r\n}\r\n","import { ComponentStore } from \"@ngrx/component-store\";\r\nimport { Injectable, Signal } from \"@angular/core\";\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\nimport { PersistedTableState } from \"../classes/TableState\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TableBuilderStateStore extends ComponentStore<GlobalStorageState> {\r\n constructor(){\r\n super(loadGlobalStorageState() || defaultStorageState)\r\n }\r\n\r\n //selectors\r\n $selectLocalTableProfile = (profileKey:string): Signal<Profile | undefined> => this.selectSignal(state =>\r\n state.localProfiles[profileKey]);\r\n\r\n $selectLocalTableStateForView = (tableId: string) => this.selectSignal(\r\n this.$selectLocalTableProfile(tableId),\r\n (profile) => {\r\n if(profile?.current) {\r\n return profile.states[profile.current];\r\n }\r\n if(profile?.localSavedState) return profile.localSavedState;\r\n return null;\r\n }\r\n )\r\n\r\n $selectLocalProfileCurrentKey = (key:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(key),\r\n (profile) => profile?.current);\r\n\r\n $selectLocalProfileDefaultKey = (key:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(key),\r\n (profile) => profile?.default);\r\n\r\n $selectLocalProfileKeys = (tableId:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(tableId),\r\n (profile) => Object.keys(profile?.states || {})\r\n );\r\n\r\n\r\n // reducers\r\n\r\n\r\n saveTableSettingsToLocalAndStorage = (tableId: string, stateName: string, tableState: PersistedTableState, asDefault?: boolean) => {\r\n this.saveTableStateToStorage(tableId, stateName, tableState, asDefault);\r\n this.saveTableStateToLocal({ tableId, tableState, stateName, asDefault });\r\n }\r\n\r\n saveTableStateToLocal = this.updater((state, props: { tableId: string, tableState: PersistedTableState, stateName?: string, asDefault?: boolean }) => {\r\n let profile = state.localProfiles[props.tableId];\r\n if(!profile?.states) {\r\n profile = { states: {} };\r\n }\r\n if(!props.stateName){\r\n profile = { ...profile, localSavedState: props.tableState };\r\n } else {\r\n profile = { ...profile, states: { ...profile.states, [props.stateName]: props.tableState } };\r\n }\r\n if(props.asDefault){\r\n profile.default = props.stateName;\r\n }\r\n return { ...state, localProfiles: { ...state.localProfiles, [props.tableId]: profile } }\r\n });\r\n\r\n saveTableStateToStorage = (tableId: string, stateName: string, tableState: PersistedTableState, asDefault = false) => {\r\n const globalSavedState: PersistedGlobalStorageSate = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n globalSavedState.localProfiles[tableId] ??= { states: {} }\r\n globalSavedState.localProfiles[tableId].states[stateName] = tableState;\r\n if(asDefault){\r\n globalSavedState.localProfiles[tableId].default = stateName;\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n\r\n addNewStateToLocalAndStorage = (tableId: string, newStateName: string, tableState: PersistedTableState, asDefault?: boolean) => {\r\n this.saveTableSettingsToLocalAndStorage(tableId, newStateName, tableState, asDefault);\r\n this.setLocalCurrentState({ tableId: tableId, currentStateKey: newStateName });\r\n }\r\n\r\n setLocalCurrentState = this.updater((state, props: { tableId: string, currentStateKey: string }) => {\r\n const profile = state.localProfiles[props.tableId] || { states: {} };\r\n profile.current = props.currentStateKey;\r\n return { ...state, localProfiles: { ...state.localProfiles, [props.tableId]: { ...profile } } };\r\n });\r\n\r\n setDefaultInLocalAndStorage = (tableId: string, newDefault: string) => {\r\n this.setDefaultInLocal({ default: newDefault, key: tableId });\r\n this.setDefaultInStorage(tableId, newDefault);\r\n }\r\n\r\n setDefaultInLocal = this.updater((state, props: { key: string, default: string }) => {\r\n if(state.localProfiles[props.key]?.states[props.default]) {\r\n return ({ ...state, localProfiles: { ...state.localProfiles, [props.key]: { ...state.localProfiles[props.key], default: props.default } } });\r\n }\r\n return state;\r\n });\r\n\r\n unsetDefaultFromLocalAndStorage = (tableId: string) => {\r\n this.unsetDefaultFromLocal(tableId);\r\n this.unsetDefaultFromStorage(tableId);\r\n }\r\n\r\n unsetDefaultFromLocal = (tableId: string) => {\r\n this.patchState(tables => {\r\n const profile = { ...tables.localProfiles[tableId] };\r\n if(profile) {\r\n delete profile.default;\r\n }\r\n return { ...tables, localProfiles: { ...tables.localProfiles, [tableId]: profile } };\r\n });\r\n }\r\n\r\n unsetDefaultFromStorage = (tableId: string) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(globalSavedState.localProfiles[tableId]) {\r\n delete globalSavedState.localProfiles[tableId].default;\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n }\r\n\r\n setDefaultInStorage = (tableId: string, stateName: string) => {\r\n const tableProfile = this.$selectLocalTableProfile(tableId)();\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n let savedProfile = globalSavedState.localProfiles[stateName];\r\n if(!savedProfile?.states) {\r\n savedProfile = { default: stateName, states: tableProfile!.states };\r\n } else {\r\n savedProfile.default = stateName;\r\n }\r\n globalSavedState.localProfiles[tableId] = savedProfile;\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n\r\n deleteLocalProfilesState = this.updater((state, props: { key: string, stateKey: string }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(profile) {\r\n const current = profile.current === props.stateKey ? profile.default : profile.current;\r\n profile = { ...profile, current, states: { ...profile.states } };\r\n delete profile.states[props.stateKey];\r\n if(current === props.stateKey) {\r\n profile.current = undefined;\r\n }\r\n return { ...state, localProfiles: { ...state.localProfiles, [props.key]: profile } };\r\n } else {\r\n return state;\r\n }\r\n });\r\n\r\n deleteProfileFromLocalAndStorage = (key: string, stateKey: string) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[key]) {\r\n return;\r\n } else {\r\n delete (globalSavedState.localProfiles[key].states ?? {})[stateKey];\r\n }\r\n if(globalSavedState.localProfiles[key].default === stateKey) {\r\n globalSavedState.localProfiles[key].default = undefined;\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n this.deleteLocalProfilesState({ key, stateKey })\r\n }\r\n}\r\n\r\nfunction loadGlobalStorageState() : GlobalStorageState | void {\r\n const storage = localStorage.getItem('global-state-storage');\r\n\r\n if(storage) {\r\n const s: GlobalStorageState = (JSON.parse(storage) as PersistedGlobalStorageSate);\r\n s.localProfiles ??= {};\r\n for(const key in s.localProfiles){\r\n const profile = s.localProfiles[key];\r\n s.localProfiles[key] = { ...profile, current: profile.default } as Profile\r\n }\r\n return { ...defaultStorageState, ...s };\r\n }\r\n}\r\n\r\ninterface PersistedProfile {\r\n states: Dictionary<PersistedTableState>;\r\n default?: string;\r\n}\r\nexport interface Profile extends PersistedProfile {\r\n current?: string;\r\n localSavedState?: PersistedTableState;\r\n}\r\n\r\nexport interface GlobalStorageState {\r\n localProfiles: Dictionary<Profile>;\r\n}\r\n\r\ninterface PersistedGlobalStorageSate {\r\n localProfiles: Dictionary<PersistedProfile>;\r\n}\r\n\r\nexport const defaultStorageState: GlobalStorageState = {\r\n localProfiles: {}\r\n}","import { Timestamp } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo, createFilterFunc, isCustomFilter, isFilterInfo, needsFilterCreation } from \"../../../classes/filter-info\";\r\nimport { Dictionary } from \"../../../interfaces/dictionary\";\r\nimport { Predicate } from \"@angular/core\";\r\nimport { difference, intersection } from \"lodash\";\r\nimport { TableCustomFilterDirective, TableFilterDirective } from \"../../../directives\";\r\n\r\n//The idea of this is that if filters were only added, and none were removed or changed, then we only need to tag more rows to not be shown. We don't need to remove any 'dont show' tags.\r\n// So if filters were only added this method will return the added filters, if filters were removed or changed this method will return undefined.\r\nexport const updateFilterInfoState = <T>(previousState: FilterInfoState<T>, filterInfos: FilterInfoDict) => {\r\n filterInfos = filterNonActiveOrNotReadyFilters(filterInfos);\r\n const currentState: FilterInfoState<T> = {\r\n allFilters: filterInfos,\r\n onlyAddedFilters: filterInfoOnlyAdded(previousState.allFilters, filterInfos)\r\n }\r\n return currentState;\r\n}\r\n\r\nexport const mapFilterInfoStateToPredicateState = <T>(s: FilterInfoState<T>): FilterPredicateState<T> => {\r\n const mappedAddOnly: {[key in keyof T]: Predicate<T>} =\r\n s.onlyAddedFilters\r\n ?\r\n Object.entries(s.onlyAddedFilters).filter(([, v]) => needsFilterCreation(v)).reduce((obj, [key, value]) => {\r\n obj[key] = createFilterFunc(value);\r\n return obj;\r\n }, {} as {[key in keyof T]: Predicate<T>})\r\n : {} as {[key in keyof T]: Predicate<T>};\r\n const mappedAll = Object.entries(s.allFilters).filter(([, v]) => needsFilterCreation(v))\r\n .filter(([, v]) => !isCustomFilter(v) || !!v.predicate)\r\n .map(([key, value]) => {\r\n return mappedAddOnly[key] || createFilterFunc(value);\r\n });\r\n return ({\r\n allFilters: mappedAll,\r\n onlyAddedFilters: s.onlyAddedFilters ? Object.values(mappedAddOnly) : undefined\r\n })\r\n}\r\n\r\nexport const updateFilterPredicateState = <T>(previousState: FilterPredicateState<T>, filters: Predicate<any>[]) => {\r\n const currentState: FilterPredicateState<T> = {\r\n allFilters: filters,\r\n onlyAddedFilters: predicatesOnlyAdded(previousState.allFilters, filters)\r\n }\r\n return currentState;\r\n}\r\n\r\nexport const updateFilterState = <T>(filterInfos: Timestamp<FilterInfoState<T>>, predicates: Timestamp<FilterPredicateState<T>>): FilterPredicateState<T> => {\r\n const infos = mapFilterInfoStateToPredicateState(filterInfos.value);\r\n const filtersState: FilterPredicateState<T> = {\r\n allFilters: [...infos.allFilters, ...predicates.value.allFilters]\r\n }\r\n if(filterInfos.timestamp > predicates.timestamp && !!filterInfos.value.onlyAddedFilters){\r\n filtersState.onlyAddedFilters = infos.onlyAddedFilters;\r\n } else {\r\n filtersState.onlyAddedFilters = predicates.value.onlyAddedFilters\r\n }\r\n return filtersState\r\n}\r\n\r\n\r\nconst filterNonActiveOrNotReadyFilters = (filtersDict : FilterInfoDict) => Object.entries(filtersDict).reduce((obj, [key, value]) => {\r\n if(value.active !== false && (!isCustomFilter(value) || !!value.predicate)){\r\n obj[key] = value\r\n }\r\n return obj;\r\n}, {} as Dictionary<FilterInfo | CustomFilter>);\r\n\r\n\r\nfunction filterInfoOnlyAdded(previousFilterInfos: FilterInfoDict, currentFilterInfos: FilterInfoDict): FilterInfoDict | undefined{\r\n const previousKeys = Object.keys(previousFilterInfos);\r\n const currentKeys = Object.keys(currentFilterInfos);\r\n const keysInBoth = intersection(previousKeys, currentKeys);\r\n const someRemoved = previousKeys.length > keysInBoth.length;\r\n if(someRemoved || !previousKeys.length){\r\n return undefined;\r\n }\r\n if(filtersInfosUpdated(previousFilterInfos, currentFilterInfos)){\r\n return undefined;\r\n }\r\n const addedFilters = difference(currentKeys, keysInBoth).reduce((dict, key) => {\r\n dict[key] = currentFilterInfos[key];\r\n return dict;\r\n }, {} as FilterInfoDict);\r\n return addedFilters;\r\n}\r\n\r\nfunction predicatesOnlyAdded(previousPredicates: Predicate<any>[], currentPredicates: Predicate<any>[]){\r\n if(!previousPredicates.length){\r\n return undefined;\r\n }\r\n const predicateFiltersRemoved = difference(previousPredicates, currentPredicates).length;\r\n if(predicateFiltersRemoved){\r\n return undefined;\r\n }\r\n return difference(currentPredicates, previousPredicates);\r\n}\r\n\r\nfunction filtersInfosUpdated(previousFilterInfos: FilterInfoDict<any>, currentFilterInfos: FilterInfoDict<any>){\r\n return !Object.entries(previousFilterInfos).every(([key, val]) => {\r\n return currentFilterInfos[key].filterType === val.filterType && currentFilterInfos[key].filterValue === val.filterValue\r\n })\r\n}\r\n\r\nexport function patchDirectiveFromState(directive: (TableCustomFilterDirective | TableFilterDirective), stateFilter: FilterInfo | CustomFilter){\r\n if(isFilterInfo(stateFilter)) {\r\n const filterDirective: TableFilterDirective = directive as TableFilterDirective;\r\n filterDirective.setFilterValue(stateFilter.filterValue);\r\n filterDirective.update();\r\n }\r\n if(isCustomFilter(stateFilter)) {\r\n directive.active = stateFilter.active ?? false;\r\n }\r\n}\r\n\r\nexport interface FilterInfoState<T> {\r\n allFilters: FilterInfoDict<T>,\r\n onlyAddedFilters?: FilterInfoDict<T> | undefined,\r\n}\r\n\r\nexport interface FilterPredicateState<T> {\r\n allFilters: Predicate<T>[],\r\n onlyAddedFilters?: Predicate<T>[] | undefined,\r\n}\r\n\r\nexport type FilterInfoDict<T = any> = Dictionary<FilterInfo<any, T> | CustomFilter<any>>;","import { Observable, Timestamp, combineLatest, map, scan, tap, timestamp } from \"rxjs\";\r\nimport { SortState } from \"./sort-state.helpers\";\r\nimport { FilterPredicateState } from \"./filter-state.helpers\";\r\nimport { filterData, getFactory, sortData, tbNoShowSymbol } from \"../../../functions/sort-data-function\";\r\nimport { defaultShareReplay } from \"../../../../rxjs/defaultShareReplay\";\r\nimport { FieldType, MetaData } from \"../../../interfaces/report-def\";\r\nimport { set } from \"lodash\";\r\n\r\nexport const _sortAndFilterData = <T>(data: Observable<T[]>, sortState: Observable<SortState>, filterState: Observable<FilterPredicateState<T>>) => combineLatest([\r\n data.pipe(timestamp()),\r\n sortState.pipe(timestamp()),\r\n filterState.pipe(timestamp())\r\n]).pipe(\r\n scan((mappedData, [data, sort, f], index) => {\r\n return mapDataSortsAndFilters( data, f, sort, index === 0, mappedData);\r\n }, [] as T[])\r\n).pipe(\r\n map((resultData) => resultData.filter(item => !item[tbNoShowSymbol])),\r\n defaultShareReplay()\r\n);\r\n\r\nconst mapDataSortsAndFilters = <T>(allData: Timestamp<T[]>, filters: Timestamp<FilterPredicateState<T>>, sort: Timestamp<SortState>, firstRun: boolean, filteredAndSortedData: T[]) => {\r\n const fresh = firstRun || (allData.timestamp > sort.timestamp && allData.timestamp > filters.timestamp);\r\n const sortChanged = !fresh && sort.timestamp > filters.timestamp;\r\n const filterRemoved = !fresh && !sortChanged && !filters.value.onlyAddedFilters;\r\n const runAllOnAllData = fresh || filterRemoved;\r\n const resetFilters = !fresh && filterRemoved;\r\n\r\n if(runAllOnAllData){\r\n const filteredData = filterData(sortData(allData.value, sort.value.allSorts ), filters.value.allFilters, resetFilters);\r\n return filteredData;\r\n }\r\n if(sortChanged){\r\n return (sortData(filteredAndSortedData, sort.value.sortsToRun));\r\n }\r\n return (filterData(filteredAndSortedData, filters.value.onlyAddedFilters || filters.value.allFilters, resetFilters));\r\n}\r\n\r\nexport const sortAndFilterData = <T>(data: Timestamp<T[]>, filters: Timestamp<FilterPredicateState<T>>, sort: Timestamp<SortState>, firstRun: boolean, resultData: T[]) => {\r\n const markedAndSortedData = mapDataSortsAndFilters( data, filters, sort, firstRun, resultData);\r\n const filteredData = markedAndSortedData.filter(item => !item[tbNoShowSymbol]);\r\n return filteredData;\r\n}\r\nexport const createDataCleaners = <T>(metadatas: MetaData<T>[], mutate = false) => {\r\n const transforms = createCleaners(metadatas);\r\n return (data: T) => {\r\n if(!mutate){\r\n data = { ...data }\r\n }\r\n for(const transform of transforms){\r\n transform(data);\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nconst createCleaners = <T>(metadatas: MetaData<T> []) => {\r\n return metadatas.reduce((transforms, metaData) => {\r\n const getter = getFactory(metaData.key);\r\n const setter = metaData.key.includes('.') ? (t, val) => set(t, metaData.key, val) : (t, val) => t[metaData.key as unknown as keyof T] = val\r\n switch ( metaData.fieldType ) {\r\n case FieldType.Currency:\r\n case FieldType.Number: {\r\n const transform = (t:T) => {\r\n const val = getter(t);\r\n const num = Number( val );\r\n setter(t, isNaN(num) || val == null ? null : num)\r\n };\r\n transforms.push(transform);\r\n break;\r\n }\r\n case FieldType.Date: {\r\n const transform = (t:T) => {\r\n const val = getter(t);\r\n const date = Date.parse(val);\r\n let mappedDate: Date;\r\n if(isNaN(date)){\r\n mappedDate = null as any;\r\n } else {\r\n mappedDate = new Date(date);\r\n mappedDate.setHours(0, 0, 0, 0);\r\n }\r\n setter(t, mappedDate);\r\n };\r\n transforms.push(transform);\r\n break;\r\n }\r\n\r\n case FieldType.DateTime: {\r\n const transform = (t:T) => {\r\n const val = getter(t);\r\n const date = Date.parse(val);\r\n let mappedDate: Date;\r\n if(isNaN(date)){\r\n mappedDate = null as any;\r\n } else {\r\n mappedDate = new Date(date);\r\n if(!metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n mappedDate.setMilliseconds(0);\r\n } else {\r\n mappedDate.setSeconds(0, 0);\r\n }\r\n }\r\n }\r\n setter(t, mappedDate);\r\n };\r\n transforms.push(transform);\r\n }\r\n }\r\n return transforms;\r\n }, [] as ((t:T) => void)[])\r\n}","import { Component, ChangeDetectionStrategy, computed, inject, viewChild, effect, untracked } from '@angular/core';\r\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { notNull } from '../../../rxjs';\r\nimport { InitializationState } from '../../classes/TableState';\r\n\r\n@Component({\r\n selector: 'tb-paginator',\r\n imports: [MatPaginatorModule, MatButtonModule],\r\n template: `\r\n <div class=\"paginator-row\">\r\n @if($currentPageData(); as pageData)\r\n {\r\n <div [class]=\"{ 'hide' : ! $collapseFooter(), 'page-amounts':true}\">\r\n @if(!$showAll()){ {{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}\r\n </div>\r\n }\r\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons\r\n [class]=\"{ 'hide' : $collapseFooter() }\">\r\n </mat-paginator>\r\n @if ($showAllOption() && !$collapseFooter())\r\n {\r\n <button mat-button (click)=\"showAll()\">\r\n <span [style.text-decoration]=\"$showAll() ? 'line-through' : ''\" >All</span>\r\n </button>\r\n }\r\n </div>\r\n `,\r\n styleUrls: ['./generic-table.component.scss', '../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaginatorComponent {\r\n private state = inject(TableStore);\r\n private data = inject(DataStore);\r\n $paginator = viewChild(MatPaginator);\r\n\r\n $dataLength = this.data.selectSignal(d => d.sortedFilteredDataLength);\r\n $viewableDataLength = this.data.selectSignal(d => d.sortedFilteredGroupedDataLength);\r\n pageEvent$ = toObservable(this.$paginator).pipe(notNull(), switchMap(p => p.page));\r\n $pageEvent = toSignal(this.pageEvent$);\r\n $pageIndexChangeEvent = computed(() => this.$pageEvent()?.pageIndex);\r\n $pageSizeChangeEvent = computed(() => this.$pageEvent()?.pageSize);\r\n $currentPageData = computed(() => {\r\n const pageEvent = this.$pageEvent();\r\n if(!pageEvent) return;\r\n const paginator = this.$paginator()!;\r\n // Reset because initial page event does not have page length\r\n pageEvent.pageIndex = paginator.pageIndex;\r\n pageEvent.pageSize = paginator.pageSize;\r\n pageEvent.length = paginator.length;\r\n const pageDetails = mapPaginationEventToCurrentPageDetails(pageEvent);\r\n const dataLength = this.$dataLength();\r\n return ({ ...pageDetails, total: dataLength })\r\n })\r\n\r\n #onPageIndexEffect = effect(() => {\r\n const index = this.$pageIndexChangeEvent();\r\n if(index === undefined) return;\r\n untracked(() => this.state.setCurrentPage(index))\r\n });\r\n #onPageSizeEffect = effect(() => {\r\n const size = this.$pageSizeChangeEvent();\r\n const initialized = this.state.$initializationState() >= InitializationState.Ready;\r\n if(!size || !initialized) return;\r\n untracked(() => this.state.setUserDefinedPageSize(size));\r\n });\r\n #onMetaPageSizeEffect = effect(() => {\r\n const paginator = this.$paginator();\r\n if(!paginator) return;\r\n const metaPageSize = this.state.$pageSize();\r\n const initialized = this.state.$initializationState() >= InitializationState.Ready;\r\n untracked(() => initialized && paginator._changePageSize(metaPageSize));\r\n });\r\n onDataLengthEffect = effect(() => {\r\n const paginator = this.$paginator();\r\n const dataLength = this.$viewableDataLength();\r\n untracked(() => {\r\n if(paginator){\r\n paginator.length = dataLength;\r\n const maxIndex = Math.max(0, Math.ceil(dataLength / paginator.pageSize) - 1);\r\n if(paginator.pageIndex > maxIndex){\r\n paginator.pageIndex = maxIndex;\r\n this.state.setCurrentPage(maxIndex);\r\n }\r\n }\r\n })\r\n });\r\n $collapseFooter = computed(() => this.state.selectSignal(state => state.persistedTableSettings.collapseFooter)() || this.$showAll());\r\n $showAllOption = this.state.selectSignal(s => s.notPersistedTableSettings?.paginatorSettings?.includeAllInOptions);\r\n $showAll = this.state.$showAll;\r\n showAll(){\r\n this.state.setUserDefinedShowAll(!this.$showAll());\r\n }\r\n}\r\n\r\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => {\r\n return ({\r\n currentStart: (pageData.pageIndex * pageData.pageSize) + 1,\r\n currentEnd: Math.min(pageData.length, ((pageData.pageIndex + 1) * pageData.pageSize)),\r\n total: pageData.length\r\n })};\r\n\r\n\r\ninterface CurrentPageDetails {\r\n currentStart:number,\r\n currentEnd:number,\r\n total:number\r\n}","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Subscription } from 'rxjs';\r\nimport { TableStore } from './table-store';\r\nimport { DataStore } from './data-store';\r\nimport { computed, effect, signal, Signal, untracked } from '@angular/core';\r\n\r\nexport class TableBuilderDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n #$dataSrc = signal<T[]>([]);\r\n $dataSize: Signal<{ start: number, end: number }> = signal({ start: 0, end: 0 }, {\r\n equal: (a, b) => a.start === b.start && a.end === b.end\r\n });\r\n _ = effect(() => {\r\n const data = this.#$dataSrc();\r\n const dataSize = this.$dataSize();\r\n untracked(() => this.data = data.slice(dataSize.start, dataSize.end));\r\n });\r\n setData(data: T[]) {\r\n this.#$dataSrc.set(data);\r\n }\r\n constructor(\r\n state: TableStore,\r\n data: DataStore,\r\n ) {\r\n super([]);\r\n\r\n const $currentPage = state.$currentPage;\r\n const $pageSize = state.$pageSize;\r\n const $virtualEnds = data.selectSignal(d => d.virtualEnds);\r\n\r\n const $dataLength = computed(() => this.#$dataSrc().length);\r\n\r\n this.$dataSize = computed(() => {\r\n const viewType = state.$viewType();\r\n const dataLength = $dataLength();\r\n const currentPage = $currentPage();\r\n const pageSize = $pageSize();\r\n const virtualEnds = $virtualEnds();\r\n const previousPageRecords = currentPage * pageSize;\r\n if(viewType === 'virtual paginator'){\r\n return ({ start: virtualEnds.start + previousPageRecords, end: Math.min(virtualEnds.end, pageSize) + previousPageRecords });\r\n }\r\n if(viewType === 'paginator'){\r\n return ({ start: previousPageRecords, end: previousPageRecords + pageSize });\r\n }\r\n if(viewType === 'all'){\r\n return ({ start: 0, end: dataLength });\r\n }\r\n return ({ start: virtualEnds.start, end: virtualEnds.end });\r\n });\r\n }\r\n\r\n\r\n connect() {\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if(this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import { CustomCellMeta, MetaData } from \"../../../interfaces/report-def\";\r\n\r\nexport function mergeCustomCellMetaData(metaData1: CustomCellMeta, metaData2?: MetaData): MetaData {\r\n if(!metaData2){\r\n metaData1.noExport = true;\r\n return metaData1\r\n }\r\n if(!metaData1.displayName) metaData1.displayName = metaData2.displayName;\r\n if(!metaData1.preSort) metaData1.preSort = metaData2.preSort;\r\n if(!metaData1.order) metaData1.order = metaData2.order;\r\n if(!metaData1.width) metaData1.width = metaData2.width;\r\n if(metaData2.fieldType) metaData1.fieldType = metaData2.fieldType;\r\n metaData1.noExport = metaData2.noExport;\r\n\r\n return ({ ...metaData2, ...metaData1 });\r\n}","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpaceCasePipe } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'group-by-list',\r\n templateUrl: './group-by-list.component.html',\r\n styleUrls: ['./group-by-list.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatChipsModule, MatIconModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GroupByListComponent {\r\n tableStore = inject(TableStore);\r\n $groups = computed(() => {\r\n const dict = this.tableStore.$metaData();\r\n return this.tableStore.$groupByKeys().map(gbk => ({\r\n key: gbk,\r\n name: dict[gbk].displayName || gbk\r\n }))\r\n })\r\n}\r\n","<span class=\"tb-group-label\">Group By:</span>\r\n<mat-chip-set>\r\n @for (groupBy of $groups(); track groupBy.key)\r\n {\r\n @if($index > 0)\r\n {\r\n <mat-icon class=\"nested-arrow\">arrow_right</mat-icon>\r\n }\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupBy.key)\">\r\n {{groupBy.name | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n</mat-chip-set>\r\n","import { Component, computed, inject, input, output, signal, viewChild } from '@angular/core';\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\nimport { MatMenu, MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { MatButton, MatIconButton } from '@angular/material/button';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\nimport { MatInput, MatInputModule } from '@angular/material/input';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { Subject } from 'rxjs';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tb-profiles-menu',\r\n imports: [MatIcon, MatTooltip, MatIconButton, MatMenuModule, MatButton, MatInput,\r\n MatCheckbox, StopPropagationDirective, MatInputModule, FormsModule\r\n ],\r\n templateUrl: './profiles-menu.component.html',\r\n styleUrl: './profiles-menu.component.scss'\r\n})\r\nexport class ProfilesMenuComponent {\r\n stateService = inject(TableBuilderStateStore);\r\n tableStore = inject(TableStore);\r\n $tableId = input.required<string>({ alias: 'tableId' });\r\n $isMatMenuChild = input<boolean>(false, { alias: 'isMatMenuChild' });\r\n trigger = viewChild<MatMenuTrigger>('trigger');\r\n menu = viewChild.required(MatMenu)\r\n allProfilesPanelOpened = signal(false);\r\n newProfilePanelOpened = signal(false);\r\n $currentProfile = computed(() => this.stateService.$selectLocalProfileCurrentKey(this.$tableId())());\r\n $defaultProfile = computed(() => this.stateService.$selectLocalProfileDefaultKey(this.$tableId())());\r\n $keys = computed(() => this.stateService.$selectLocalProfileKeys(this.$tableId())());\r\n saveState(key: string) {\r\n const tableState = this.tableStore.$savableState();\r\n this.stateService.saveTableSettingsToLocalAndStorage(this.$tableId(), key, tableState);\r\n }\r\n\r\n addState(key: string, asDefault: boolean){\r\n const tableState = this.tableStore.$savableState();\r\n this.stateService.addNewStateToLocalAndStorage(this.$tableId(), key, tableState, asDefault);\r\n }\r\n\r\n setDefault(key: string){\r\n this.stateService.setDefaultInLocalAndStorage(this.$tableId(), key);\r\n }\r\n\r\n unsetDefault(){\r\n this.stateService.unsetDefaultFromLocalAndStorage(this.$tableId());\r\n }\r\n\r\n defaultName = 'My Profile';\r\n position$ = new Subject<{ top: string, right: string} | undefined>();\r\n setPosition = (e: HTMLElement) => {\r\n const rect = e.getBoundingClientRect();\r\n if(rect.top === 0) return;\r\n const a = {\r\n right: `${(window.innerWidth - rect.right)}px`,\r\n top: `${rect.top}px`,\r\n }\r\n return a;\r\n }\r\n}\r\n","@if(!$isMatMenuChild())\r\n{\r\n <button #trigger=\"matMenuTrigger\" color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"menu\" [matTooltip]=\"'Profiles'\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n </button>\r\n}\r\n<mat-menu #menu=\"matMenu\" (closed)=\"addedKey.value = null; allProfilesPanelOpened.set(false); newProfilePanelOpened.set(false)\">\r\n @if(!!$currentProfile())\r\n {\r\n <div mat-menu-item mat-stroked-button [matTooltip]=\"'Save Profile'\" (click)=\"saveState($currentProfile()!)\">\r\n <mat-icon color=\"primary\">save</mat-icon>\r\n <span>{{$currentProfile()}}</span>\r\n </div>\r\n }\r\n @else\r\n {\r\n <div class=\"profile-line\">\r\n <button color=\"primary\" class=\"first-in-line first-button\" mat-stroked-button (click)=\"addState(defaultName, m.checked);\">\r\n <mat-icon class=\"save-for-default-icon button-save-icon\" color=\"primary\">save</mat-icon>\r\n <span>Save as <span class=\"current-name\">{{defaultName}}</span> </span>\r\n </button>\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Created As Default'\" (click)=\"m.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox #m class=\"display-none\" [checked]=\"true\" />\r\n </div>\r\n }\r\n @if (allProfilesPanelOpened()) {<hr class=\"divider\"/>}\r\n <div mat-menu-item stop-propagation [class]=\"{ hide: !$keys().length, 'all-profile-row': true }\" (click)=\"allProfilesPanelOpened.set(!allProfilesPanelOpened())\">\r\n <div class=\"all-profiles\">\r\n <span>All Profiles</span>\r\n <span class=\"arrow\" [class]=\"`${(allProfilesPanelOpened() ? 'all-profile-arrow-close' : 'all-profile-arrow-open')} all-profile-arrow`\"></span>\r\n </div>\r\n </div>\r\n <div [class]=\"{ hide: !allProfilesPanelOpened(), panel: true }\">\r\n @for (key of $keys() ; track key)\r\n {\r\n <div class=\"profile-line\" [class]=\"key === $currentProfile() ? 'current-in-list' : 'not-current-in-list'\">\r\n <button class=\"menu-item first-in-line\" mat-stroked-button [matTooltip]=\"'Select Profile'\" (click)='stateService.setLocalCurrentState({ tableId: $tableId(), currentStateKey: key})'>\r\n <span>{{key}}</span>\r\n </button>\r\n @if(key !== $defaultProfile())\r\n {\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Default'\" (click)=\"setDefault(key)\">\r\n <mat-icon style=\"color: green;\">star_border</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Default'\" (click)=\"unsetDefault()\">\r\n <mat-icon style=\"color: green;\">star</mat-icon>\r\n </button>\r\n }\r\n <button color=\"warn\" class=\"last-in-line\" stop-propagation mat-icon-button [matTooltip]=\"'Delete Profile'\" (click)='stateService.deleteProfileFromLocalAndStorage($tableId(), key)'>\r\n <mat-icon color='warn'>delete_forever</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <hr class=\"divider\"/>\r\n </div>\r\n <div class=\"add-new-profile-row\" mat-menu-item stop-propagation (click)=\"newProfilePanelOpened.set(!newProfilePanelOpened()); addedKey.focus()\">Add New Profile</div>\r\n <div [class]=\"{ hide: !newProfilePanelOpened(), panel: true }\" >\r\n <div class=\"profile-line\" stop-propagation>\r\n <div class=\"new-name-input\">\r\n <i class=\"input-hint\">Enter New Name</i>\r\n <input #addedKey=\"matInput\" matInput [name]=\"'key'\" />\r\n </div>\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Created As Default'\" (click)=\"m2.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m2.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox #m2 class=\"display-none\" [ngModel]=\"!$defaultProfile()\" />\r\n </div>\r\n <button class=\"add-button\" color=\"primary\" mat-raised-button [matTooltip]=\"'Create New Profile'\" [disabled]=\"!addedKey.value\" (click)=\"addState(addedKey.value, m2.checked); addedKey.value = null\">\r\n Add\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { Injectable, effect, inject, untracked } from '@angular/core';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { FieldType } from '../../interfaces/report-def';\r\n\r\n@Injectable()\r\nexport class SortMenuComponentStore extends ComponentStore<ComponentStoreState> {\r\n private tableState = inject(TableStore);\r\n setStoreStateEffect = effect(() => {\r\n const metaData = this.tableState.$metaData();\r\n if(!metaData) return;\r\n this.tableState.$selectSorted();\r\n untracked(() => this.setStateFromTableStore());\r\n });\r\n\r\n setStateFromTableStore = () => {\r\n const metaData = this.tableState.$metaData();\r\n const sorted = [...this.tableState.$selectSorted()].map(s => ({\r\n ...s,\r\n displayName: metaData[s.active]?.displayName\r\n } as SortWithName));\r\n const notSorted = this.tableState.$metaDataArray()\r\n .filter(md => (md.fieldType !== FieldType.NotMapped || md.sortLogic?.sortBy) && !md.noSort && !sorted.some(s => s.active === md.key))\r\n .map(meta => ({ active: meta.key, displayName: meta.displayName } as SortWithName));\r\n this.setState({ sorted, notSorted })\r\n }\r\n constructor(){\r\n super({ notSorted: [], sorted: [] })\r\n }\r\n\r\n setSorted = this.updater((state, sorted: SortWithName[]) => ({ ...state, sorted }));\r\n setNotSorted = this.updater((state, notSorted: SortWithName[]) => ({ ...state, notSorted }));\r\n\r\n $sorted = this.selectSignal(state => state.sorted);\r\n $notSorted = this.selectSignal(state => state.notSorted);\r\n\r\n setDirection = this.updater((state, sort: SortWithName) => {\r\n const index = state.sorted.findIndex(s => s.active === sort.active);\r\n const sorted = [...state.sorted];\r\n sorted.splice(index, 1, sort);\r\n return ({ ...state, sorted });\r\n });\r\n\r\n reset = () => {\r\n this.setStateFromTableStore();\r\n }\r\n}\r\n\r\nexport interface ComponentStoreState {\r\n sorted : SortWithName[];\r\n notSorted: SortWithName[];\r\n}\r\n\r\nexport interface SortWithName extends Sort{\r\n displayName : string;\r\n}\r\n","import { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { SortDirection } from '../../interfaces/report-def';\r\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-sort-menu',\r\n templateUrl: './sort-menu.component.html',\r\n styleUrls: ['./sort-menu.component.scss'],\r\n providers: [SortMenuComponentStore],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, StopPropagationDirective, DragDropModule,\r\n SpaceCasePipe\r\n ]\r\n})\r\nexport class SortMenuComponent {\r\n SortDirection = SortDirection;\r\n private tableState = inject(TableStore);\r\n protected store = inject(SortMenuComponentStore);\r\n\r\n $sorted = computed(() => [...this.store.$sorted()]);\r\n $notSorted = computed(() => [...this.store.$notSorted()]);\r\n $dirty = signal(false);\r\n\r\n reset(){\r\n this.$dirty.set(false);\r\n this.store.reset();\r\n }\r\n\r\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\r\n this.$dirty.set(true);\r\n const sorted = [...event.container.data];\r\n if(event.previousContainer === event.container) {\r\n moveItemInArray(sorted, event.previousIndex, event.currentIndex);\r\n this.store.setSorted(sorted);\r\n } else {\r\n const notSorted = [...event.previousContainer.data];\r\n transferArrayItem(\r\n notSorted,\r\n sorted,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n sorted[event.currentIndex] = { ...sorted[event.currentIndex], direction: SortDirection.asc };\r\n this.store.setSorted(sorted);\r\n this.store.setNotSorted(notSorted);\r\n }\r\n }\r\n\r\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\r\n if(event.previousContainer === event.container) {\r\n return;\r\n } else {\r\n this.$dirty.set(true);\r\n const sorted = [...event.previousContainer.data];\r\n const notSorted = [...event.container.data];\r\n transferArrayItem(\r\n sorted,\r\n notSorted,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n notSorted[event.currentIndex] = { ...notSorted[event.currentIndex] };\r\n\r\n this.store.setNotSorted(notSorted);\r\n this.store.setSorted(sorted);\r\n }\r\n }\r\n\r\n apply = () => {\r\n this.$dirty.set(false);\r\n this.tableState.setAllSort(this.store.$sorted());\r\n }\r\n\r\n setDirection(sort:SortWithName){\r\n this.$dirty.set(true);\r\n this.store.setDirection(sort);\r\n }\r\n}\r\n\r\n\r\n","@let dirty = $dirty();\r\n@let sorted = $sorted();\r\n@let notSorted = $notSorted();\r\n\r\n<!-- Menu Trigger -->\r\n<span matTooltip=\"Sort\">\r\n <button color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">swap_vert</mat-icon>\r\n </button>\r\n</span>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\r\n <div mat-menu-item class=\"menu-button\">\r\n <div class=\"close-button-wrapper\">\r\n <span matTooltip=\"Close\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n @if(dirty)\r\n {\r\n <span matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\r\n <mat-icon>undo</mat-icon>\r\n </span>\r\n }\r\n \r\n </div>\r\n </div>\r\n\r\n <!-- Apply Button -->\r\n <div class=\"apply-button-wrapper\">\r\n <button mat-button color=\"primary\" stop-propagation\r\n [class.apply-border]=\"dirty\" [disabled]=\"!dirty\"\r\n (click)=\"apply()\">\r\n Apply @if (dirty) { Unsaved Changes }\r\n </button>\r\n </div>\r\n\r\n <!-- Default Sorting Text -->\r\n @if (!sorted.length)\r\n {\r\n <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div #sortedGroup=\"cdkDropList\"\r\n class=\"list\"\r\n cdkDropList\r\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\r\n [cdkDropListData]=\"sorted\"\r\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\r\n\r\n <!-- Menu Item Wrapper -->\r\n @for (sort of sorted; track sort.active)\r\n {\r\n <!-- Menu Item Headers -->\r\n @if (sorted.length > 1)\r\n {\r\n <span class=\"description sort-header\">{{$index === 0 ? 'First By' : 'Then By'}}</span>\r\n }\r\n\r\n <!-- Menu Item -->\r\n <div mat-menu-item cdkDrag class=\"menu-item\">\r\n <div class=\"sort-item\">\r\n <span class=\"sorted-name\">\r\n {{sort.displayName || (sort.active | spaceCase)}}\r\n <span class=\"direction-text\">{{sort.direction}}</span>\r\n </span>\r\n\r\n <!-- Sort Direction Buttons -->\r\n <div class=\"up-down-buttons-wrapper\">\r\n <button class=\"up-down-button up-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\r\n <mat-icon class=\"up-down-icon\" [class]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\">\r\n arrow_upward\r\n </mat-icon>\r\n </button>\r\n\r\n <button class=\"up-down-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\r\n <mat-icon class=\"up-down-icon\" [class]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\">\r\n arrow_downward\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Default Not Sorted Text -->\r\n @if(!notSorted.length)\r\n {\r\n <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div #notSortedGroup=\"cdkDropList\"\r\n class=\"list\"\r\n cdkDropList\r\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\r\n [cdkDropListData]=\"notSorted\"\r\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\r\n @for (sort of notSorted; track sort.active)\r\n {\r\n <div mat-menu-item class=\"menu-item\" cdkDrag>\r\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\r\n </div>\r\n }\r\n </div>\r\n</mat-menu>\r\n","import { ChangeDetectionStrategy, Component, computed, inject, output, viewChild } from '@angular/core';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { resetable } from '../../classes/table-store';\r\nimport { TableContainerComponent } from '../table-container/table-container.component';\r\nimport { sortsAreSame } from '../../directives';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { isCustomFilter } from '../../classes/filter-info';\r\n\r\n@Component({\r\n selector: 'lib-reset-menu',\r\n imports: [MatMenuModule, MatButtonModule],\r\n templateUrl: './reset-menu.component.html',\r\n styleUrl: './reset-menu.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ResetMenuComponent {\r\n menu = viewChild.required(MatMenu);\r\n protected tableContainer = inject(TableContainerComponent);\r\n state = this.tableContainer.state;\r\n onStateReset$ = output<null>({ alias: 'onStateReset' });\r\n protected resetState() {\r\n this.tableContainer.$customFilterDirectives().forEach( cf => cf.reset());\r\n this.tableContainer.$filterDirectives().forEach( cf => cf.reset() );\r\n this.state.resetState();\r\n this.onStateReset$.emit(null)\r\n }\r\n\r\n $filtersSet = computed(() => {\r\n return Object.values(this.state.$filters())\r\n .filter(f => (isCustomFilter(f) && f.active) || f.filterValue != undefined)\r\n .length;\r\n });\r\n $sortSet = computed(() => {\r\n const sorts = this.state.$selectSorted();\r\n if(!sorts.length) return false;\r\n const preSorts = this.state.$preSort();\r\n if(!preSorts.length) return true;\r\n return !sortsAreSame(preSorts, sorts);\r\n });\r\n $groupBySet = computed(() => this.state.$groupByKeys().length);\r\n $hiddenSet = computed(() => this.state.$hiddenKeys().length);\r\n $orderSet = computed(() => Object.keys(this.state.$userDefinedOrder()).length);\r\n $widthsSet = computed(() => Object.keys(this.state.$getUserDefinedWidths()).length);\r\n $rowHeightSet = this.state.$userDefinedRowHeight;\r\n headerHeightSet = this.state.$userDefinedHeaderHeight;\r\n pageSizeSet = computed(() => this.state.$userDefinedPageSize() && this.state.$userDefinedPageSize() !== this.state.selectSignal(s => s.pageSize)());\r\n showAllSet = this.state.selectSignal(s => s.userDefined.showAll);\r\n $set = computed(() => {\r\n const arr: (typeof resetable[number])[] = [] as (typeof resetable[number])[];\r\n if(this.$filtersSet()){\r\n arr.push('Filters')\r\n }\r\n if(this.$sortSet()){\r\n arr.push('Sorting')\r\n }\r\n if(this.$groupBySet()){\r\n arr.push('Group By')\r\n }\r\n if(this.$hiddenSet()){\r\n arr.push('Hidden Columns')\r\n }\r\n if(this.$orderSet()){\r\n arr.push('Column Order')\r\n }\r\n if(this.$widthsSet()){\r\n arr.push('Column Widths')\r\n }\r\n if(this.$rowHeightSet()){\r\n arr.push('Row Height')\r\n }\r\n if(this.headerHeightSet()){\r\n arr.push('Header Height')\r\n }\r\n if(this.pageSizeSet()){\r\n arr.push('Page Size')\r\n }\r\n if(this.showAllSet()){\r\n arr.push('Show All')\r\n }\r\n return arr;\r\n })\r\n\r\n resetable = resetable;\r\n reset(s: string){\r\n this.state.resetPart(s as any);\r\n }\r\n}\r\n","<mat-menu #menu2=\"matMenu\">\r\n @if($set().length > 1)\r\n {\r\n <button mat-menu-item (click)=\"state.resetState()\">All</button>\r\n }\r\n @for (item of $set(); track $index)\r\n {\r\n <button mat-menu-item (click)=\"state.resetPart(item)\">Reset {{item}}</button>\r\n }\r\n</mat-menu>","import { Component, computed, inject, viewChild } from '@angular/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { TableContainerComponent } from '../table-container/table-container.component';\r\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\r\nimport { ProfilesMenuComponent } from \"../profiles-menu/profiles-menu.component\";\r\nimport { ResetMenuComponent } from \"../reset-menu/reset-menu.component\";\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'lib-table-header-menu',\r\n imports: [MatMenuModule, MatIcon, ProfilesMenuComponent, ResetMenuComponent, MatTooltip, StopPropagationDirective],\r\n templateUrl: './table-header-menu.component.html',\r\n styleUrl: './table-header-menu.component.css'\r\n})\r\nexport class TableHeaderMenuComponent {\r\n menu = viewChild.required(MatMenu);\r\n private exportToCsvService = inject(ExportToCsvService);\r\n protected tableContainer = inject(TableContainerComponent);\r\n state = this.tableContainer.state;\r\n $rowHeightNum = computed(() => +(this.tableContainer.$genericTable()?.$rowHeight()?.replace('px', '') || 0) || undefined);\r\n $headerHeightNum = computed(() => +(this.tableContainer.$genericTable()?.$headerHeight()?.replace('px', '') || 0) || undefined);\r\n protected exportToCsv(): void {\r\n this.exportToCsvService.exportToCsv(this.tableContainer.$data());\r\n }\r\n\r\n updateHeight(v: 'row' | 'header', element: HTMLInputElement){\r\n if(+element.value < 10) element.value = '10';\r\n if(+element.value > 100) element.value = '100';\r\n if(v === 'row') this.state.setUserDefinedRowHeight(+element.value);\r\n if(v === 'header') this.state.setUserDefinedHeaderHeight(+element.value);\r\n }\r\n\r\n}\r\n","<mat-menu #mainMenu='matMenu' [xPosition]=\"'before'\">\r\n <span [matTooltip]=\"!r.$set().length ? 'Nothing To Reset' : ''\">\r\n <button #d=\"matMenuItem\" mat-menu-item [matMenuTriggerFor]=\"r.menu()\" [disabled]=\"!r.$set().length\">\r\n <mat-icon color=\"primary\">autorenew</mat-icon>\r\n <span>Reset</span>\r\n </button>\r\n </span>\r\n @if (!tableContainer.state.$tableSettings().hideExport)\r\n {\r\n <button mat-menu-item (click)=\"exportToCsv()\">\r\n <mat-icon color=\"primary\">file_download</mat-icon>\r\n <span>Export Table</span>\r\n </button>\r\n }\r\n @if (tableContainer.$tableId(); as tableId)\r\n {\r\n <button stop-propagation mat-menu-item [matMenuTriggerFor]=\"pm.menu()\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n <span>Profiles</span>\r\n </button>\r\n <tb-profiles-menu #pm class=\"profiles-menu\" [tableId]=\"tableId\" [isMatMenuChild]=\"true\" />\r\n }\r\n\r\n\r\n <div mat-menu-item>\r\n <div class=\"height-input-wrapper\">\r\n <span>Row Height</span>\r\n <input #i class=\"input\" stop-propagation type=\"number\" \r\n placeholder=\"Set Size\"\r\n [value]=\"$rowHeightNum()\"\r\n [min]=\"10\"\r\n [max]=\"100\" (change)=\"updateHeight('row', i)\" />\r\n </div>\r\n </div>\r\n @if(!state.$tableSettings().hideHeader)\r\n {\r\n <div mat-menu-item>\r\n <div class=\"height-input-wrapper\">\r\n <span>Header Height</span>\r\n <input #i2 class=\"input\" stop-propagation type=\"number\"\r\n placeholder=\"Set Size\"\r\n [value]=\"$headerHeightNum()\"\r\n [min]=\"10\"\r\n [max]=\"100\" (change)=\"updateHeight('header', i2)\"/>\r\n </div>\r\n </div>\r\n }\r\n</mat-menu>\r\n<lib-reset-menu #r/>\r\n\r\n","import {\r\n CdkVirtualScrollViewport,\r\n VirtualScrollStrategy,\r\n} from '@angular/cdk/scrolling';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { subscriber } from '../../rxjs';\r\nimport { VirtualScrollContainer } from './table-container/virtual-scroll-container';\r\nimport { effect, linkedSignal, signal, Signal, untracked } from '@angular/core';\r\nimport { DataStore } from '../classes/data-store';\r\n\r\nexport class TableVirtualScrollStrategy implements VirtualScrollStrategy {\r\n constructor(scrollContainer: VirtualScrollContainer, dataStore: DataStore) {\r\n this.$rowHeight = scrollContainer.computedRowHeight;\r\n this.$headerHeight = scrollContainer.computedHeaderHeight;\r\n this.viewport = scrollContainer.viewport;\r\n this.dataStore = dataStore;\r\n this.$dataLength = scrollContainer.$dataLength;\r\n }\r\n private dataStore: DataStore;\r\n private readonly indexChange = new Subject<number>();\r\n scrolledIndexChange = this.indexChange.pipe(distinctUntilChanged());\r\n private viewport: Signal<CdkVirtualScrollViewport>;\r\n\r\n private $dataLength: Signal<number>;\r\n $dataLengthChange = linkedSignal<number, {curr: number, previous: number }>({\r\n source: () => this.$dataLength(),\r\n computation: (curr, previous) => ({ curr, previous: previous == undefined ? curr : previous.source })\r\n });\r\n $rowHeight: Signal<number>;\r\n $rowHeightChange = linkedSignal<number, {curr: number, previous: number }>({\r\n source: () => this.$rowHeight(),\r\n computation: (curr, previous) => {\r\n return ({ curr, previous: previous == undefined ? curr : previous.source })}\r\n });\r\n\r\n $headerHeight: Signal<number>;\r\n $headerHeightChange = linkedSignal<number, {curr: number, previous: number }>({\r\n source: () => this.$headerHeight(),\r\n computation: (curr, previous) => ({ curr, previous: previous == undefined ? curr : previous.source })\r\n });\r\n\r\n contentScrolled$ = new Subject<number>();\r\n sub = subscriber(this.contentScrolled$.pipe(\r\n debounceTime(20),\r\n distinctUntilChanged()\r\n ), offset => {\r\n this.updateContent('scroll')\r\n })\r\n onContentScrolled(): void {\r\n this.contentScrolled$.next(this.viewport().measureScrollOffset());\r\n }\r\n\r\n #onDataLengthChange = effect(() => {\r\n const dataLengthChange = this.$dataLengthChange();\r\n untracked(() => {\r\n if(dataLengthChange.curr === dataLengthChange.previous) return;\r\n this.updateContent('data length')\r\n });\r\n })\r\n\r\n #onHeaderChange = effect(() => {\r\n const headerHeightChange = this.$headerHeightChange();\r\n untracked(() => {\r\n if(headerHeightChange.curr === headerHeightChange.previous) return;\r\n this.updateContent('header height')\r\n });\r\n })\r\n\r\n #onRowChange = effect(() => {\r\n const rowHeightChange = this.$rowHeightChange();\r\n untracked(() => {\r\n if(rowHeightChange.curr === rowHeightChange.previous) return;\r\n this.updateContent('row height')\r\n })\r\n });\r\n\r\n $currentRange = signal({ start: 0, end: 0 })\r\n\r\n private updateContent(trigger: ScrollStrategyTrigger): void {\r\n const viewport = this.viewport && this.viewport()\r\n if(!viewport || !this.$rowHeight) {\r\n return;\r\n }\r\n const currentContentHeight = +viewport._totalContentHeight.replace('px', '');\r\n const newContentHeight = this.$dataLength() * this.$rowHeight();\r\n if(currentContentHeight !== newContentHeight){\r\n viewport.setTotalContentSize(newContentHeight);\r\n this.update(trigger, viewport, true)\r\n return;\r\n }\r\n this.update(trigger, viewport)\r\n }\r\n update(trigger: ScrollStrategyTrigger, viewport: CdkVirtualScrollViewport, needsScroll = false){\r\n if(!viewport.getViewportSize()) return;\r\n\r\n const rowHeightChangeEvent = this.$rowHeightChange();\r\n const rowHeight = rowHeightChangeEvent.curr;\r\n const rowHeightAdjustment = trigger === 'row height' ? rowHeightChangeEvent.curr / rowHeightChangeEvent.previous : 1;\r\n\r\n const amountOfRows = Math.ceil((viewport.getViewportSize() - this.$headerHeight()) / rowHeight);\r\n const f = viewport.measureScrollOffset();\r\n const offset = viewport.measureScrollOffset() * rowHeightAdjustment;\r\n\r\n const buffer = 35 + Math.round((40 - rowHeight) / 10);\r\n const skip = Math.round(offset / rowHeight);\r\n const index = skip % 2 === 0 ? skip : skip - 1;\r\n const start = Math.max(0, index - buffer);\r\n const end = Math.min(this.$dataLength(), index + amountOfRows + buffer);\r\n\r\n if(start > this.$dataLength()){\r\n this.viewport().scrollToOffset(0)\r\n }\r\n else if(f !== offset){\r\n if(offset < f) viewport.scrollToOffset(offset);\r\n else setTimeout(() => {\r\n viewport.scrollToOffset(offset)\r\n }, 0);\r\n }\r\n if(this.$currentRange().start === start && this.$currentRange().end === end){\r\n return;\r\n }\r\n this.$currentRange.set({ start, end });\r\n viewport.setRenderedContentOffset(rowHeight * start);\r\n this.dataStore.patchState({ virtualScrollOffset: offset });\r\n viewport.setRenderedRange({ start, end });\r\n\r\n this.indexChange.next(index);\r\n }\r\n\r\n attach(viewport: CdkVirtualScrollViewport): void {}\r\n onDataLengthChanged(): void {}\r\n detach(): void {}\r\n onContentRendered(): void {}\r\n onRenderedOffsetChanged(): void {}\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {}\r\n}\r\n\r\ntype ScrollStrategyTrigger = 'scroll' | 'data length' | 'header height' | 'row height';\r\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, effect, forwardRef, untracked, viewChild, inject, computed, contentChild } from '@angular/core';\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n VIRTUAL_SCROLL_STRATEGY,\r\n} from '@angular/cdk/scrolling';\r\nimport { switchMap } from 'rxjs';\r\nimport { notNull } from '../../../rxjs';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { TableVirtualScrollStrategy } from '../scroll-strategy';\r\nimport { parseTbSizeToPixels, VirtualScrollOptions } from '../../classes/table-builder-general-settings';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\r\nimport { TableContainerComponent } from './table-container.component';\r\nimport { InitializationState } from '../../classes/TableState';\r\n\r\n@Component({\r\n selector: 'tb-virtual-scroll-container',\r\n template: `\r\n <cdk-virtual-scroll-viewport>\r\n <ng-content/>\r\n </cdk-virtual-scroll-viewport>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ScrollingModule],\r\n viewProviders: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: (c: VirtualScrollContainer) => c.scrollStrategy,\r\n deps: [forwardRef(() => VirtualScrollContainer)],\r\n },\r\n ],\r\n})\r\nexport class VirtualScrollContainer implements OnDestroy {\r\n private state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n\r\n viewport = viewChild.required(CdkVirtualScrollViewport);\r\n private genericTable = contentChild(GenericTableComponent);\r\n private tableContainer = inject(TableContainerComponent);\r\n\r\n defaultOptions = new VirtualScrollOptions();\r\n\r\n\r\n $usePaginator = this.state.selectSignal(s => s.notPersistedTableSettings.usePaginator);\r\n $pageSize = this.state.$pageSize;\r\n $currentPage = this.state.$currentPage;\r\n $showAll = this.state.$showAll;\r\n $stateDataLength = this.dataStore.selectSignal(s => s.sortedFilteredGroupedDataLength);\r\n viewPort$ = toObservable(this.viewport).pipe(notNull());\r\n $scrolledIndexChange = toSignal(this.viewPort$.pipe(switchMap(v => v.scrolledIndexChange)));\r\n $renderedRange = toSignal(this.viewPort$.pipe(switchMap(v => v.renderedRangeStream)));\r\n $virtualScrollOptions = computed(() =>\r\n {\r\n if(this.state.$initializationState() >= InitializationState.Ready)\r\n return this.state.$tableSettings().virtualSettings!;\r\n else return undefined;\r\n }\r\n );\r\n $optionsSet = computed(() => !!this.$virtualScrollOptions());\r\n $dataLength = computed(() => {\r\n const paginated = this.$usePaginator() && !this.$showAll();\r\n const pageSize = this.$pageSize();\r\n const pageNumber = this.$currentPage();\r\n const dataLen = this.$stateDataLength();\r\n if(paginated) return Math.min(dataLen - (pageNumber * pageSize), pageSize);\r\n return dataLen;\r\n });\r\n constructor() {\r\n addEventListener('resize', this.resizeHandler);\r\n }\r\n #setViewportEffect = effect(() => {\r\n const viewport = this.viewport();\r\n const options = this.$optionsSet();\r\n untracked(() => {\r\n if(!!viewport && !!options){\r\n this.setSize(this.viewport()!.elementRef, 'initial');\r\n }\r\n })\r\n })\r\n\r\n\r\n #onRenderedRangeEffect = effect(() => {\r\n const renderedRange = this.$renderedRange();\r\n const viewport = this.viewport();\r\n if(!renderedRange) return;\r\n untracked(() => {\r\n this.dataStore.patchState({\r\n virtualEnds: {\r\n start: renderedRange.start,\r\n end: renderedRange.end,\r\n } });\r\n if(!viewport) return;\r\n this.setSize(viewport.elementRef, 'rendered range');\r\n })\r\n });\r\n\r\n ngOnDestroy(): void {\r\n removeEventListener('resize', this.resizeHandler);\r\n }\r\n\r\n setSize(el: ElementRef<HTMLElement>, trigger: SetSizeTrigger) {\r\n const virtualScrollOptions = this.$virtualScrollOptions();\r\n if(!virtualScrollOptions) return;\r\n if(virtualScrollOptions.dynamicHeight){\r\n this.calcDynamic(el);\r\n return;\r\n }\r\n const rowHeight = this.computedRowHeight();\r\n let amountOfVisibleItems = virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;\r\n amountOfVisibleItems = Math.min(amountOfVisibleItems, this.$dataLength());\r\n let height = (rowHeight * amountOfVisibleItems);\r\n\r\n const footerHeight = this.computedFooterHeight();\r\n const headerHeight = this.computedHeaderHeight();\r\n height += (footerHeight + headerHeight);\r\n\r\n const maxViewPortHeightPx = parseTbSizeToPixels(virtualScrollOptions.maxViewPortHeight) || 0;\r\n\r\n if(virtualScrollOptions?.maxViewPortHeight && maxViewPortHeightPx) height = maxViewPortHeightPx;\r\n\r\n this.setHeight(height, el);\r\n }\r\n\r\n calcDynamic(el: ElementRef<HTMLElement>){\r\n const virtualScrollOptions = this.$virtualScrollOptions();\r\n if(!virtualScrollOptions) return;\r\n\r\n const t = this.tableContainer.elementRef.nativeElement.querySelector(`#${TableContainerComponent.headerId}`);\r\n const rect = t?.getBoundingClientRect();\r\n const windowHeight = window.innerHeight;\r\n const distanceFromBottom = windowHeight - rect!.bottom;\r\n\r\n const rowHeight = this.computedRowHeight();\r\n\r\n const footerHeight = this.computedFooterHeight();\r\n\r\n const headerHeight = this.computedHeaderHeight();\r\n\r\n const buffer = this.computedBuffer();\r\n\r\n const horizontalScrollPadding = el.nativeElement.scrollWidth > el.nativeElement.clientWidth ? 17 : 0;\r\n\r\n const maxViewPortHeightPx = parseTbSizeToPixels(virtualScrollOptions.maxViewPortHeight) || 0;\r\n\r\n let tableSize = distanceFromBottom;\r\n if(virtualScrollOptions?.maxViewPortHeight && maxViewPortHeightPx < tableSize){\r\n tableSize = maxViewPortHeightPx;\r\n }\r\n\r\n const available = (distanceFromBottom - footerHeight)\r\n - headerHeight\r\n - (this.$usePaginator() ? 20 : 0)\r\n - buffer\r\n - horizontalScrollPadding;\r\n\r\n const amountOfRowsThatWillFit = Math.floor(available / rowHeight);\r\n\r\n const minAmountOfRows = virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;\r\n\r\n const amountOfVisibleItems = Math.min(Math.max(amountOfRowsThatWillFit, minAmountOfRows), this.$dataLength());\r\n\r\n let height = (rowHeight * amountOfVisibleItems);\r\n\r\n height += (footerHeight + headerHeight + horizontalScrollPadding);\r\n this.setHeight(height, el);\r\n }\r\n\r\n setHeight(height: number, el: ElementRef<HTMLElement>){\r\n const vsViewport = el.nativeElement;\r\n vsViewport.setAttribute(\r\n 'style',\r\n `height: ${height}px !important;`,\r\n );\r\n this.viewport()?.checkViewportSize();\r\n const virtualScrollOffset = this.viewport()?.getOffsetToRenderedContentStart() ?? 0\r\n this.dataStore.patchState({ virtualScrollOffset });\r\n }\r\n\r\n resizeHandler = () => {\r\n if(this.viewport() && this.$virtualScrollOptions()?.dynamicHeight) {\r\n this.setSize(this.viewport()!.elementRef, 'resize');\r\n }\r\n };\r\n\r\n computedRowHeight = computed(() => {\r\n const virtualScrollOptions = this.state.$tableSettings().virtualSettings! as VirtualScrollOptions;\r\n const rowHeight = this.state.$userDefinedRowHeight() || virtualScrollOptions?.rowHeight || this.state.$tableSettings().rowHeight || this.defaultOptions.rowHeight;\r\n return parseTbSizeToPixels(rowHeight) || 0;\r\n })\r\n\r\n computedHeaderHeight = computed(() => {\r\n if(this.state.$tableSettings().hideHeader) return 0;\r\n const virtualScrollOptions = this.state.$tableSettings().virtualSettings! as VirtualScrollOptions;\r\n const headerHeight = this.state.$userDefinedHeaderHeight() || virtualScrollOptions?.headerHeight || this.state.$tableSettings().headerHeight || this.defaultOptions.headerHeight;\r\n return parseTbSizeToPixels(headerHeight) || 0;\r\n });\r\n\r\n computedFooterHeight = computed(() => {\r\n return parseFloat(this.genericTable()?.$footerHeight()?.replace('px', '') || '0');\r\n });\r\n\r\n computedBuffer = computed(() => {\r\n const virtualScrollOptions = this.state.$tableSettings().virtualSettings! as VirtualScrollOptions;\r\n if(!virtualScrollOptions.dynamicalHeightBuffer) return 0\r\n return parseTbSizeToPixels(virtualScrollOptions.dynamicalHeightBuffer) || 0;\r\n })\r\n\r\n scrollStrategy = new TableVirtualScrollStrategy(\r\n this,\r\n this.dataStore\r\n );\r\n}\r\n\r\ntype SetSizeTrigger = 'initial' | 'rendered range' | 'resize';\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n Predicate,\r\n inject,\r\n TemplateRef,\r\n Injector,\r\n contentChildren,\r\n computed,\r\n effect,\r\n untracked,\r\n input,\r\n viewChild,\r\n output,\r\n ElementRef,\r\n linkedSignal,\r\n DestroyRef,\r\n} from '@angular/core';\r\nimport { Timestamp } from 'rxjs';\r\nimport { CustomCellMeta } from '../../interfaces/report-def';\r\nimport { TableBuilder } from '../../classes/table-builder';\r\nimport { MatRowDef } from '@angular/material/table';\r\nimport { CustomCellDirective, MultiSortDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\r\nimport { GroupedData, InitializationState, NoneGroupHeader } from '../../classes/TableState';\r\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\r\nimport { createFilterFunc, CustomFilter, FilterInfo, isCustomFilter, needsFilterCreation } from '../../classes/filter-info';\r\nimport { TableWrapperDirective } from '../../directives/table-wrapper.directive';\r\nimport { createLinkCreatorDict } from '../../services/link-creator.service';\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\nimport { FilterInfoDict, FilterInfoState, FilterPredicateState, patchDirectiveFromState, updateFilterInfoState, updateFilterPredicateState, updateFilterState } from './table-container.helpers/filter-state.helpers';\r\nimport { initialSortState, SortState, updateSortState } from './table-container.helpers/sort-state.helpers';\r\nimport { getAllGroupHeaderNames, GroupByState, updateGroupByState } from './table-container.helpers/groupBy.helpers';\r\nimport { sortAndFilterData } from './table-container.helpers/data-state.helpers';\r\nimport { TableProps } from './tableProps';\r\nimport { PaginatorComponent } from '../generic-table/paginator.component';\r\nimport { TableBuilderDataSource } from '../../classes/TableBuilderDataSource';\r\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\r\nimport { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { PersistedTableSettings } from '../../classes/table-builder-general-settings';\r\nimport { mergeCustomCellMetaData } from './table-container.helpers/meta-data.helpers';\r\nimport { SelectionChange } from '@angular/cdk/collections';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { GenColDisplayerComponent } from '../gen-col-displayer/gen-col-displayer.component';\r\nimport { GroupByListComponent } from '../group-by-list/group-by-list.component';\r\nimport { ProfilesMenuComponent } from '../profiles-menu/profiles-menu.component';\r\nimport { SortMenuComponent } from '../sort-menu/sort-menu.component';\r\nimport { FilterChipsComponent } from '../table-container-filter/filter-list/filter-list.component';\r\nimport { GenFilterDisplayerComponent } from '../table-container-filter/gen-filter-displayer/gen-filter-displayer.component';\r\nimport { TableHeaderMenuComponent } from '../table-header-menu/table-header-menu.component';\r\nimport { VirtualScrollContainer } from './virtual-scroll-container';\r\nimport { Sort } from '@angular/material/sort';\r\n\r\n@Component({\r\n selector: 'tb-table-container',\r\n templateUrl: './table-container.component.html',\r\n styleUrls: ['./table-container.scss', '../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [TableStore, ExportToCsvService, WrapperFilterStore, DataStore],\r\n imports: [\r\n NgTemplateOutlet,\r\n PaginatorComponent,\r\n\r\n MultiSortDirective, GroupByListComponent, FilterChipsComponent, GenFilterDisplayerComponent, GenColDisplayerComponent,\r\n SortMenuComponent, GenericTableComponent, ProfilesMenuComponent, TableHeaderMenuComponent,\r\n\r\n MatButtonModule, MatMenuModule, MatIconModule, MatTooltipModule, VirtualScrollContainer\r\n ]\r\n}) export class TableContainerComponent<T = any> {\r\n public state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n public wrapper = inject(TableWrapperDirective, { optional: true });\r\n public stateService = inject(TableBuilderStateStore);\r\n public injector = inject(Injector);\r\n public elementRef = inject(ElementRef);\r\n protected dataSource = new TableBuilderDataSource<T>(\r\n this.state,\r\n this.dataStore\r\n );\r\n\r\n $filterDirectives = contentChildren(TableFilterDirective, { descendants: true });\r\n $customFilterDirectives = contentChildren(TableCustomFilterDirective, { descendants: true });\r\n $paginatorComponent = viewChild(PaginatorComponent);\r\n $genericTable = viewChild(GenericTableComponent);\r\n _$customRows = contentChildren(MatRowDef<any>);\r\n $customRows = computed(() => [...this._$customRows()]);\r\n $customCells = contentChildren(CustomCellDirective);\r\n $menu = viewChild.required(MatMenu);\r\n menuInjector = Injector.create({\r\n providers: [{ provide: MatMenu, useFactory: () => this.$menu() }],\r\n parent: this.injector\r\n })\r\n\r\n $tableBuilder = input.required<TableBuilder<T>>({ alias: 'tableBuilder' });\r\n $tableIdInput = input<string | undefined>(undefined, { alias: 'tableId' });\r\n $trackByInput = input<string | undefined>(undefined, { alias: 'trackBy' });\r\n $inputFilters = input<(Predicate<T> | CustomFilter<T> | FilterInfo<any, T>)[]>([], { alias: 'inputFilters' });\r\n $filterInfoInputs = computed(() =>\r\n this.$inputFilters().filter(i => !isFunction(i)) as (FilterInfo | CustomFilter)[]);\r\n\r\n $indexColumnInput = input<boolean>(false, { alias: 'indexColumn' });\r\n $selectionColumnInput = input<boolean>(false, { alias: 'selectionColumn' });\r\n $stickyHeaderInput = input<boolean>(true, { alias: 'stickyHeader' });\r\n $stickyFooterInput = input<boolean>(false, { alias: 'stickyFooter' });\r\n $groupHeaderTemplate = input<TemplateRef<any> | undefined>(undefined, { alias: 'groupHeaderTemplate' });\r\n $groupHeaderHeight = input<number | undefined>(undefined, { alias: 'groupHeaderHeight' });\r\n $pageSize = input<number | undefined>(undefined, { alias: 'pageSize' });\r\n\r\n\r\n selection$ = output<SelectionChange<T>>({ alias: 'selection' });\r\n onStateReset$ = output<null>({ alias: 'onStateReset' });\r\n onSaveState$ = output<null>({ alias: 'onSaveState' });\r\n state$ = outputFromObservable(toObservable(this.state.$savableState), { alias: 'state' });\r\n $data = computed(() => this.$sortedAndFilteredData()?.value || []);\r\n data$ = outputFromObservable(toObservable(this.$data), { alias: 'data' });\r\n\r\n private $displayData = computed(() => this.$tableBuilder() && this.$filteredSortedAndGrouped()?.displayData);\r\n public clearSelections(){\r\n this.$genericTable()?.$selection().clear(true);\r\n }\r\n public firstPage(): void {\r\n this.$paginatorComponent()?.$paginator()?.firstPage();\r\n }\r\n public lastPage(): void {\r\n this.$paginatorComponent()?.$paginator()?.lastPage();\r\n }\r\n public expandAllGroups = () => {\r\n const groupHeaders = getAllGroupHeaderNames(this.$displayData()!);\r\n this.state.expandAllOfGroup({ groupHeadersByKey: groupHeaders });\r\n }\r\n public collapseAllGroups = () => this.state.collapseAll();\r\n\r\n\r\n protected $myColumns = computed(() => {\r\n return this.state.$metaDataArray().map( metaData => ({\r\n metaData,\r\n customCell: this.$customCells().filter(cc => cc.$inited()).find(cc => cc.$customCell() === metaData.key)\r\n }))\r\n });\r\n protected $useVirtual = this.state.$isVirtual;\r\n protected $collapsedFooter = this.state.$footerCollapsed;\r\n protected $collapsedHeader = this.state.$headerCollapsed;\r\n protected $displayDataLength = computed(() => this.$displayData()?.length || 0);\r\n\r\n\r\n $tableBuilderSettings = computed(() => this.$tableBuilder().$settings());\r\n $trackBy = computed(() => this.$trackByInput() || this.$tableBuilderSettings()?.tableSettings?.trackBy);\r\n $tableId = computed(() => this.$tableIdInput() || this.$tableBuilderSettings()?.tableSettings?.tableId);\r\n $includeSelectionColumn = computed(() => this.$selectionColumnInput() || !!this.$tableBuilderSettings()?.tableSettings?.includeSelectionColumn);\r\n $includeIndexColumn = computed(() => this.$indexColumnInput() || !!this.$tableBuilderSettings()?.tableSettings?.includeIndexColumn);\r\n $stickyHeader = computed(() => {\r\n const settings = this.$tableBuilderSettings()?.columnHeaderSettings?.stickyHeaderRow;\r\n if(settings != null){\r\n return settings;\r\n }\r\n return this.$stickyHeaderInput();\r\n });\r\n $stickyFooter = computed(() => this.$stickyFooterInput() || !!this.$tableBuilderSettings()?.columnFooterSettings?.stickyFooterRow)\r\n\r\n $props = computed((): TableProps => {\r\n const indexColumn = this.$includeIndexColumn();\r\n const selectionColumn = this.$includeSelectionColumn();\r\n const stickHeader = this.$stickyHeader();\r\n const stickyFooter = this.$stickyFooter();\r\n const groupHeaderTemplate = this.$groupHeaderTemplate();\r\n const groupHeaderHeight = this.$groupHeaderHeight();\r\n return ({ indexColumn, selectionColumn, isSticky: stickHeader, stickyFooter, groupHeaderTemplate, groupHeaderHeight })\r\n });\r\n\r\n #initTableBuilder = effect(() => {\r\n const tb = this.$tableBuilder();\r\n untracked(() => {\r\n if(tb){\r\n tb?.prep(this.injector);\r\n tb.container.set(this);\r\n }\r\n })\r\n });\r\n #initializeTableSettingsFromTableBuilderAndPersistedStateEffect = effect(() => {\r\n const metaLoaded = this.$isInitializationState(InitializationState.MetaDataLoaded)();\r\n if(!metaLoaded) return;\r\n const persistedState = this.$persistedState();\r\n const tbSettings = this.$tableBuilderSettings()!;\r\n untracked(() => {\r\n this.state.setTableSettings(tbSettings);\r\n if(persistedState){\r\n persistedState.persistedTableSettings = new PersistedTableSettings(persistedState.persistedTableSettings);\r\n this.state.updateStateFromPersistedState(persistedState);\r\n }\r\n this.state.setInitializationState(InitializationState.Ready);\r\n });\r\n });\r\n #setPageSizeFromInputEffect = effect(() => {\r\n const pageSize = this.$pageSize();\r\n const userDefinedPageSize = this.state.$userDefinedPageSize();\r\n if(pageSize && !userDefinedPageSize) {\r\n untracked(() => this.state.setPageSize(pageSize));\r\n }\r\n });\r\n #patchedFilters: string[] = [];\r\n #patchSavableFilterDirectivesFromPersistedStateEffect = effect(() => {\r\n const loaded = this.$isInitializationState(InitializationState.TableSettingsLoaded)();\r\n const filterDirectives = this.$allFilterDirectives();\r\n if(!loaded || !filterDirectives.length) return;\r\n const stateFilters = this.state.$filters();\r\n\r\n untracked(() => {\r\n filterDirectives.filter(f => f.savable && !this.#patchedFilters.includes(f.filterId)).forEach( f => {\r\n this.#patchedFilters.push(f.filterId);\r\n const filter = stateFilters[f.filterId];\r\n\r\n patchDirectiveFromState(f, filter);\r\n this.state.addFilter(f.filter$ as any);\r\n });\r\n })\r\n });\r\n #patchSavableFilterInputsFromPersistedStateEffect = effect(() => {\r\n const loaded = this.$isInitializationState(InitializationState.TableSettingsLoaded)();\r\n const inputFilters = this.$filterInfoInputs();\r\n if(!loaded || !inputFilters.length) return;\r\n\r\n untracked(() => {\r\n const stateFilters = this.state.$filters();\r\n inputFilters.filter(f => f.filterId).forEach( f => {\r\n const patched = this.#patchedFilters.includes(f.filterId);\r\n const stateFilter = stateFilters[f.filterId];\r\n\r\n if(patched || !stateFilter) {\r\n this.state.addFilter(f);\r\n } else if(isCustomFilter(f)){\r\n (stateFilter as CustomFilter).predicate = f.predicate;\r\n this.state.addFilter(stateFilter);\r\n }\r\n this.#patchedFilters.push(f.filterId);\r\n });\r\n })\r\n });\r\n #addPropsToStoreFromInputsEffect = effect(() => {\r\n const props = this.$props();\r\n untracked(() => this.state.setProps(props));\r\n });\r\n #addMetaDataToStoreEffect = effect(() => {\r\n const allMetaDatas = this.$allMetaDatas();\r\n if(!allMetaDatas) return;\r\n untracked(() => {\r\n this.state.setMetaData(allMetaDatas);\r\n this.state.setLinkMaps(createLinkCreatorDict(allMetaDatas));\r\n });\r\n });\r\n #setFilteredDataLengthEffect = effect(() => {\r\n const tableBuilder = this.$tableBuilder();\r\n const data = this.$sortedAndFilteredData();\r\n if(!tableBuilder || !data) return;\r\n untracked(() => {\r\n this.dataStore.patchState({ sortedFilteredDataLength: data.value.length });\r\n })\r\n });\r\n\r\n #setDataSourceDataEffect = effect(() => {\r\n const tableBuilder = this.$tableBuilder();\r\n const flat = this.$filteredSortedAndGrouped();\r\n if(!tableBuilder || !flat) return;\r\n untracked(() => {\r\n const data = flat.displayData;\r\n this.dataSource.setData(data);\r\n this.dataStore.patchState({ sortedFilteredGroupedDataLength: data.length });\r\n })\r\n });\r\n\r\n #destroyRef = inject(DestroyRef).onDestroy(() => {\r\n const tableId = this.$tableId();\r\n if(tableId) {\r\n this.stateService.saveTableStateToLocal({ tableId, tableState: this.state.$savableState() });\r\n }\r\n });\r\n\r\n private $persistedState = computed(() => {\r\n const tableId = this.$tableId();\r\n if(tableId) {\r\n return this.stateService.$selectLocalTableStateForView(tableId)();\r\n }\r\n return undefined\r\n });\r\n private $allFilterDirectives = computed( () => {\r\n if(this.wrapper) {\r\n return [...this.$filterDirectives(), ...this.$customFilterDirectives(), ...this.wrapper.$registrations()];\r\n }\r\n return [...this.$filterDirectives(), ...this.$customFilterDirectives()];\r\n });\r\n private $tableBuilderMetaData = computed(() => this.$tableBuilder()?.$metaData());\r\n private $allMetaDatas = computed(() => {\r\n const tableBuilderMetaData = this.$tableBuilderMetaData();\r\n if(!tableBuilderMetaData) return;\r\n const customCellMetaDatas = this.$customCells().filter(cc => cc.$inited()).map(cc => cc.$metaData()).filter(d => !!d) as CustomCellMeta[];\r\n const mappedCustomCellMetaDatas = customCellMetaDatas.map( md => mergeCustomCellMetaData(md!, tableBuilderMetaData.find( item => item.key === md.key ) ));\r\n\r\n return [...tableBuilderMetaData, ...mappedCustomCellMetaDatas];\r\n });\r\n\r\n private $preds = computed(() => {\r\n const predicateInputFilters = this.$inputFilters().filter(isFunction);\r\n const notSavableFilterDirectives = this.$allFilterDirectives()\r\n .filter(d => !d.savable)\r\n .map(d => d.$filter())\r\n .filter(d => !!d && needsFilterCreation(d))\r\n .map(d => createFilterFunc(d!));\r\n return [...predicateInputFilters, ...notSavableFilterDirectives]\r\n })\r\n private $predicateFiltersState = linkedSignal<Predicate<any>[], { value: FilterPredicateState<T>, timestamp: number } >({\r\n source: this.$preds,\r\n computation: (curr, previous) => {\r\n if(!previous?.value) return ({ value: updateFilterPredicateState({ allFilters: [] as Predicate<T>[] }, curr), timestamp: new Date().getTime() })\r\n return ({ value: updateFilterPredicateState(previous.value.value, curr), timestamp: new Date().getTime() })\r\n }\r\n });\r\n private $savableFiltersState = linkedSignal<FilterInfoDict, { value: FilterInfoState<T>, timestamp: number } >({\r\n source: this.state.$filters,\r\n computation: (curr, previous) => {\r\n if(!previous?.value) return ({ value: updateFilterInfoState({ allFilters: {} }, curr), timestamp: new Date().getTime() })\r\n return ({ value: updateFilterInfoState(previous.value.value, curr), timestamp: new Date().getTime() })\r\n }\r\n });\r\n private $allFilterStatesTimeStamped = computed(() => {\r\n if(!this.$isInitializationState(InitializationState.Ready)()) return undefined;\r\n return ({ value: updateFilterState(this.$savableFiltersState(), this.$predicateFiltersState()), timestamp: new Date().getTime() })\r\n });\r\n private $sortStateTimeStamped = linkedSignal<Sort[] | false, { value: SortState, timestamp: number } | undefined>({\r\n source: computed(() => this.$isInitializationState(InitializationState.Ready)() && this.state.$getSorts()),\r\n computation: (curr, prev) => {\r\n if(!curr) return undefined;\r\n if(!prev?.value) return ({ value: updateSortState(initialSortState, curr), timestamp: new Date().getTime() });\r\n return ({ value: updateSortState(prev.value.value, curr), timestamp: new Date().getTime() });\r\n }\r\n });\r\n private $allData = computed(() => (this.$tableBuilder()?.$initialized() && this.$tableBuilder()?.$data()) || [])\r\n private $allDataTimeStamped = computed(() => {\r\n const data = this.$allData();\r\n if(!data) return undefined;\r\n return ({\r\n value: data,\r\n timestamp: new Date().getTime()\r\n })\r\n });\r\n private $allTimeStamped = computed(() => {\r\n const data = this.$allDataTimeStamped();\r\n const sort = this.$sortStateTimeStamped();\r\n const filter = this.$allFilterStatesTimeStamped();\r\n if(!data?.value || !sort?.value || !filter?.value) return undefined;\r\n return ({\r\n data,\r\n sort,\r\n filter\r\n });\r\n });\r\n private $sortedAndFilteredData = linkedSignal<{data: Timestamp<T[]>, filter: Timestamp<FilterPredicateState<T>>, sort: Timestamp<SortState>} | undefined, Timestamp<T[]> | undefined>({\r\n source: this.$allTimeStamped,\r\n computation: (values, prev) => {\r\n const init = this.$isInitializationState(InitializationState.Ready);\r\n if(!values || !init) return undefined;\r\n const { data, filter, sort } = values;\r\n const val = prev?.value?.value || data.value;\r\n const filteredData = sortAndFilterData(data, filter, sort, !prev?.value, val);\r\n return ({ value: filteredData, timestamp: new Date().getTime() });\r\n }\r\n });\r\n $timestampedGroups = computed(() => ({ value: this.state.$groupByKeys(), timestamp: new Date().getTime() }));\r\n $timestampedExpanded = computed(() => ({ value: this.state.$expandGroups(), timestamp: new Date().getTime() }));\r\n private $dataAndGroupsTimestamped = computed(() => {\r\n const data = this.$sortedAndFilteredData() as Timestamp<(T & NoneGroupHeader)[]>;\r\n const groups = this.$timestampedGroups();\r\n const expanded = this.$timestampedExpanded();\r\n if(!data) return undefined;\r\n return ({\r\n data,\r\n groups,\r\n expanded\r\n })});\r\n\r\n protected $filteredSortedAndGrouped = linkedSignal<{ data: Timestamp<(T & NoneGroupHeader)[]>, groups: Timestamp<string[]>, expanded: Timestamp<GroupedData[]>} | undefined, GroupByState | undefined>({\r\n source: this.$dataAndGroupsTimestamped,\r\n computation: (curr, prev) => {\r\n if(!curr) return undefined;\r\n const val = prev?.value?.groupedData || [];\r\n return updateGroupByState(val, curr, !prev?.value);\r\n }\r\n });\r\n\r\n private $isInitializationState = (state: InitializationState) => computed(() =>\r\n this.state.selectSignal(s => s.initializationState >= state)()) ;\r\n\r\n static headerId = 'tb-header-wrapper';\r\n headerId = TableContainerComponent.headerId;\r\n}\r\n\r\nfunction isFunction<T>(a: any):a is Predicate<T> {\r\n return typeof a === 'function';\r\n}\r\n","@let tableId = $tableId();\r\n@let tableSettings = state.$tableSettings();\r\n\r\n<ng-content select=\"[before]\" />\r\n<ng-container multiSort>\r\n <div class=\"tb-header-wrapper\" [id]=\"headerId\">\r\n <div class=\"title\">\r\n @if ((!$collapsedHeader()) || tableSettings.showTitleWhenHeaderCollapsed)\r\n {\r\n <ng-content select=\".tb-header-title\"/>\r\n }\r\n </div>\r\n @if(state.$groupByKeys().length)\r\n {\r\n <group-by-list />\r\n }\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader)\r\n {\r\n @if (!$collapsedHeader())\r\n {\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"l.menu()\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n\r\n <lib-table-header-menu #l/>\r\n\r\n }\r\n @else\r\n {\r\n <mat-icon color=\"primary\" class=\"flat-menu-button pointer\" [matMenuTriggerFor]=\"mainMenu\">more_horiz</mat-icon>\r\n <mat-menu #mainMenu='matMenu'>\r\n <div class=\"flex-column\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu; injector menuInjector\"/>\r\n </div>\r\n <lib-table-header-menu />\r\n </mat-menu>\r\n }\r\n <mat-icon class=\"collapse-icon header\" [matTooltip]=\"$collapsedHeader() ? 'expand' : 'collapse'\"\r\n (click)=\"state.toggleCollapseHeader()\">\r\n {{$collapsedHeader() ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n @if($useVirtual())\r\n {\r\n <tb-virtual-scroll-container class=\"scrollable\">\r\n <tb-generic-table [rows]=\"$customRows()\" [data]=\"$data()!\" [displayDataLength]=\"$displayDataLength()\"\r\n [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" (selection)='selection$.emit($event)' />\r\n </tb-virtual-scroll-container>\r\n }\r\n @else\r\n {\r\n <tb-generic-table [rows]=\"$customRows()\" [data]=\"$data()!\" [displayDataLength]=\"$displayDataLength()\"\r\n [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" (selection)='selection$.emit($event)' />\r\n }\r\n @if(tableSettings.usePaginator)\r\n {\r\n <div class=\"paginator\">\r\n <tb-paginator #tbPaginator />\r\n\r\n <mat-icon class=\"collapse-icon footer\" [matTooltip]=\"$collapsedFooter() ? 'expand' : 'collapse'\"\r\n (click)=\"state.toggleCollapseFooter()\">\r\n {{$collapsedFooter() ? 'expand_more' : 'expand_less'}}\r\n </mat-icon>\r\n </div>\r\n }\r\n\r\n <ng-template #headerMenu>\r\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\r\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\r\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\r\n @if (!!tableId) {<tb-profiles-menu [tableId]=\"tableId\"/>}\r\n </ng-template>\r\n\r\n</ng-container>\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { MultiSortDirective } from './directives/multi-sort.directive';\r\nimport { ModuleWithProviders } from '@angular/core';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\r\nimport { TableContainerComponent } from './components';\r\nimport { CustomCellDirective, TableFilterDirective, TableFilterStringContainsDirective, TableWrapperDirective } from './directives';\r\nimport { UtilitiesModule } from '../utilities';\r\n\r\n@NgModule({\r\n imports: [\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ],\r\n exports: [\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n UtilitiesModule,\r\n ],\r\n providers: [\r\n MultiSortDirective,\r\n ]\r\n})\r\nexport class TableBuilderModule {\r\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\r\n return {\r\n ngModule: TableBuilderModule,\r\n providers: [\r\n { provide: TableBuilderConfigToken, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n constructor(private dataSrc: Observable<T[]>) {\r\n super([]);\r\n }\r\n\r\n connect() {\r\n if(!this.subscription) {\r\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\r\n }\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if(this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import { isObservable, Observable } from 'rxjs';\r\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\r\nimport { map } from 'rxjs/operators';\r\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\r\nimport { defaultShareReplay } from '../../rxjs';\r\nimport { initIndexSymbol } from '../components/table-container/table-container.helpers/sort-state.helpers';\r\nimport { createDataCleaners } from '../components/table-container/table-container.helpers/data-state.helpers';\r\nimport { assertInInjectionContext, computed, inject, Injector, isSignal, signal, Signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { TableContainerComponent } from '../components/table-container/table-container.component';\r\n\r\nexport class TableBuilder<T = any> {\r\n #$metaData!: Signal<MetaData<T>[]>;\r\n #$data!: Signal<T[]>;\r\n #$settings! : Signal<TableBuilderSettings>;\r\n\r\n container = signal<TableContainerComponent | undefined>(undefined);\r\n\r\n $metaData = computed(() => this.$initialized() ? this.#$metaData() : undefined);\r\n $settings = computed(() => this.$initialized() ? this.#$settings() : undefined);\r\n #$metaNeedsPrep = signal(false);\r\n #$dataIsObservable = signal(false);\r\n #$settingsIsObservable = signal(false);\r\n #$needsPrep = computed(() => this.#$dataIsObservable() || this.#$metaNeedsPrep() || this.#$settingsIsObservable());\r\n $initialized = signal(false);\r\n\r\n constructor(\r\n private data: TableBuilderArgs<T[]>,\r\n private metaData?: TableBuilderArgs<MetaData<T, any>[]>,\r\n private settings: TableBuilderArgs<TableBuilderSettings<T>> = new GeneralTableSettings()\r\n ) {\r\n if(isObservable(data)){\r\n this.#$dataIsObservable.set(true);\r\n } else {\r\n this.#$data = isSignal( data ) ? data : signal(data);\r\n }\r\n if(isObservable(metaData) || !metaData){\r\n this.#$metaNeedsPrep.set(true);\r\n } else {\r\n this.#$metaData = isSignal( metaData ) ? metaData : signal(metaData);\r\n }\r\n if(isObservable(settings)){\r\n this.#$settingsIsObservable.set(true);\r\n } else {\r\n this.#$settings = isSignal( settings ) ? settings : signal(settings);\r\n }\r\n if(!this.#$needsPrep()){\r\n this.$initialized.set(true);\r\n } else {\r\n try {\r\n assertInInjectionContext(TableBuilder);\r\n const injector = inject(Injector);\r\n this.prep(injector);\r\n } catch { }\r\n }\r\n }\r\n prep(injector: Injector){\r\n if(this.#$settingsIsObservable()){\r\n this.#$settings = toSignal(this.settings as any, { injector, requireSync: true });\r\n }\r\n if(this.#$dataIsObservable()){\r\n this.#$data = toSignal(this.data as any, { injector, initialValue: [] });\r\n }\r\n if(this.#$metaNeedsPrep()){\r\n if(this.metaData){\r\n this.#$metaData = toSignal(this.metaData as any, { injector, initialValue: [] });\r\n } else {\r\n this.#$metaData = computed(() => this.createMetaData(this.#$data()[0]))\r\n }\r\n }\r\n this.$initialized.set(true);\r\n }\r\n #dataCleaners = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return undefined;\r\n return createDataCleaners(metaData);\r\n });\r\n $data = computed(() => {\r\n const data = this.#$data();\r\n const cleaners = this.#dataCleaners();\r\n if(!data || !cleaners) return [];\r\n const cleanedData = data.map((data, i) => {\r\n const cleaned = cleaners(data);\r\n cleaned[initIndexSymbol] = i;\r\n return cleaned;\r\n })\r\n return cleanedData;\r\n });\r\n\r\n createMetaData(obj: any): MetaData [] {\r\n return Object.keys(obj ?? {})\r\n .map( key => ({\r\n key,\r\n fieldType: FieldType.Unknown,\r\n order: -1\r\n }));\r\n }\r\n}\r\n\r\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\r\n reportDef$ = reportDef$.pipe(defaultShareReplay());\r\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map( r => r.metaData) ));\r\n};\r\n\r\ntype TableBuilderArgs<T> = T | Observable<T> | Signal<T>;\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { createEntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { get } from 'lodash';\r\n\r\n// State\r\nexport class AppStatusState {\r\n readonly ActionStatusBar!: ActionStatus[];\r\n}\r\n\r\nexport interface StatusState {\r\n ids: string[];\r\n entities: {[id: string]: ActionStatus};\r\n}\r\n\r\nexport class ActionStatus {\r\n id!: string;\r\n displayName?: string;\r\n status!: serverStatusTypes;\r\n responsePayload?: any;\r\n}\r\n\r\nconst InitialState: StatusState = {\r\n ids: [],\r\n entities: {}\r\n};\r\n\r\nexport enum serverStatusTypes {\r\n notStarted = 0,\r\n inProgress = 1,\r\n success = 2,\r\n error = 3\r\n}\r\n\r\n// Entity and Selectors\r\nexport const statusAdapter = createEntityAdapter<ActionStatus>();\r\nexport interface State extends EntityState<ActionStatus> {}\r\nexport const initialState: StatusState = statusAdapter.getInitialState(InitialState);\r\n\r\nexport const getStatusState = createFeatureSelector<State>('ActionStatus');\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = statusAdapter.getSelectors(getStatusState);\r\n\r\nexport const selectEntity = (id: string) => createSelector(\r\n selectEntities,\r\n (entities: any) => entities[id]\r\n);\r\n\r\n// Reducers\r\nexport function actionStatusReducer(state: StatusState = initialState, action: Action) {\r\n\r\n const actionStatus: ActionStatus = get(action, 'payload.actionStatus' ) as any;\r\n\r\n if( actionStatus ) {\r\n if( state.ids.find(id => id === actionStatus.id) ) {\r\n const modifiedObj = { ...state.entities[actionStatus.id] };\r\n modifiedObj.status = actionStatus.status;\r\n modifiedObj.responsePayload = actionStatus.responsePayload;\r\n return statusAdapter.upsertOne( modifiedObj, state);\r\n } else {\r\n return statusAdapter.addOne(actionStatus, state);\r\n }\r\n\r\n }\r\n return state;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { actionStatusReducer } from '../ngrx';\r\nimport { StoreModule } from '@ngrx/store';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('ActionStatus', actionStatusReducer),\r\n ]\r\n})\r\nexport class NgrxExtModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ActionStatus, serverStatusTypes } from '../ngrx';\r\nimport { delayOn } from '../../rxjs';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'lib-action-state-spinner',\r\n templateUrl: './action-state-spinner.component.html',\r\n styleUrls: ['./action-state-spinner.component.css'],\r\n imports: [AsyncPipe, MatProgressSpinnerModule]\r\n})\r\nexport class ActionStateSpinnerComponent implements OnInit {\r\n\r\n @Input() status$!: Observable<ActionStatus>;\r\n serverActionStatus$!: Observable<ActionStatus>;\r\n serverStatusTypes = serverStatusTypes;\r\n\r\n ngOnInit() {\r\n this.serverActionStatus$ = this.status$.pipe(\r\n delayOn( a => a.status === serverStatusTypes.inProgress, 500)\r\n );\r\n }\r\n}\r\n","@if((serverActionStatus$ | async)?.status === serverStatusTypes.inProgress)\r\n{\r\n <div id=\"blocker\">\r\n <mat-spinner class=\"spinner\" [diameter]=\"200\" />\r\n </div>\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ActionStateSpinnerComponent,\r\n ],\r\n exports: [\r\n ActionStateSpinnerComponent,\r\n ]\r\n})\r\nexport class ActionStateUiModule { }\r\n","/*\r\n * Public API Surface of action-state\r\n */\r\n\r\nexport * from './ngrx';\r\nexport * from './ngrx-ext/ngrx-ext.module';\r\nexport * from './action-state-ui/action-state-ui.module';\r\nexport * from './action-state-spinner/action-state-spinner.component';\r\n","import { EnvironmentInjector, inject, Injector, makeEnvironmentProviders, provideAppInitializer, runInInjectionContext } from \"@angular/core\";\r\nimport { Action, createSelector, MemoizedSelector, Store } from \"@ngrx/store\";\r\n\r\nlet _store: Store<any>;\r\nlet _cache: AppStoreCache;\r\nlet _ei : EnvironmentInjector;\r\n\r\n/**\r\n * Creates a selector that can dispatch an action if conditions are met.\r\n * Note: The props of the selector factory must include the props of the action.\r\n * @param selectorFactory A method that returns selector.\r\n * @param action The action that will be dispatched when conditions are met.\r\n * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched\r\n * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.\r\n */\r\nexport const createActionableSelector = <State, Result, Props extends any[]>(\r\n selectorFactory: ((...props: Props) => MemoizedSelector<State, Result>),\r\n action: ActionReturner<Props>,\r\n dispatchIf: (data: Result) => boolean = defaultFilter,\r\n) => {\r\n const options = {\r\n selectorFactory,\r\n action: (...props: Props) => () => _store.dispatch(action(...props)),\r\n dispatchIf\r\n }\r\n const actionable = createActionResultSelector(options);\r\n return (...props: Props) => createSelector(actionable(...props), b => b.result);\r\n}\r\n\r\nexport const createActionSelector = <State, Result, Props extends any[] = any[]>(options: CreateActionResultsOptions<State, Result, Props>) => {\r\n const actionable = createActionResultSelector(options);\r\n return ((...props: Props) => createSelector(actionable(...props), b => b.result));\r\n}\r\n\r\nexport const createActionableResultSelector = <State, Result, Props extends any[]>(\r\n selectorFactory: ((...props: Props) => MemoizedSelector<State, Result>),\r\n action: ActionReturner<Props>,\r\n dispatchIf: (data: Result) => boolean = defaultFilter,\r\n) => {\r\n const options: CreateActionResultsOptions<State, Result, Props> = {\r\n selectorFactory,\r\n action: (...props: Props) => () => _store.dispatch(action(...props)),\r\n dispatchIf\r\n };\r\n\r\n return createActionResultSelector(options);\r\n}\r\n\r\nexport const createActionResultSelector = <State, Result, Props extends any[] = any[]>(options: CreateActionResultsOptions<State, Result, Props>) => {\r\n const id = crypto.randomUUID();\r\n const slctr = (...props: Props) => createSelector(\r\n options.selectorFactory(...props),\r\n (selected: Result) => {\r\n const needsDispatch = (options.dispatchIf || defaultFilter)(selected);\r\n if(needsDispatch && !_cache.isInCache(id, ...props)){\r\n queueMicrotask(() =>\r\n runInInjectionContext(options.injector || _ei, () => {\r\n options.action(...props)()\r\n }));\r\n }\r\n return ({\r\n loading: needsDispatch,\r\n result: selected\r\n });\r\n }\r\n ) as ActionableMemoizedSelector<State, LoadingState<Result>>;\r\n return slctr;\r\n}\r\n\r\nclass AppStoreCache {\r\n cache: Cache = {};\r\n isInCache = (actionableSelectorId: string, ...p: any[]): boolean => {\r\n const props = p.reduce((a, b) => {\r\n if(typeof b != 'object') b = { b };\r\n return ({ ...a, ...b })\r\n }, {});\r\n\r\n let itemsInCache = this.cache[actionableSelectorId] = (this.cache[actionableSelectorId] || []);\r\n\r\n if(itemsInCache.some(itemInCache => shallowEquals(itemInCache, props))){\r\n return true;\r\n }\r\n\r\n itemsInCache.push(props);\r\n return false;\r\n }\r\n}\r\n\r\nexport const clearActionableSelectorRequestCache = () => _cache.cache = {};\r\n\r\nconst shallowEquals = (cachedItem: object, newItem: object): boolean => {\r\n const cachedItemKeys = Object.keys(cachedItem);\r\n const secondKeys = Object.keys(newItem);\r\n if(cachedItemKeys.length !== secondKeys.length) {\r\n return false;\r\n }\r\n for(let index = 0; index < cachedItemKeys.length; index++) {\r\n const currentKey = cachedItemKeys[index];\r\n if(cachedItem[currentKey] !== newItem[currentKey]){\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function defaultFilter(data: any) {\r\n return data == null || data == undefined;\r\n}\r\n\r\nconst setStore = (store: Store) => {\r\n if(store instanceof Store) _store ??= store;\r\n};\r\n\r\nconst setEnvironmentInjector = (ei: EnvironmentInjector) => {\r\n if(ei instanceof EnvironmentInjector) _ei ??= ei;\r\n};\r\n\r\nexport function provideActionableSelector(){\r\n return makeEnvironmentProviders([\r\n provideAppInitializer(setUpStoreFactory)\r\n ])\r\n}\r\n\r\nexport const setUpStoreFactory = () => {\r\n const store = inject(Store);\r\n const env = inject(EnvironmentInjector);\r\n _cache ??= new AppStoreCache();\r\n setStore(store);\r\n setEnvironmentInjector(env)\r\n}\r\n\r\nexport function setUpStoreFactoryOld(store: Store, env: EnvironmentInjector){\r\n _cache ??= new AppStoreCache();\r\n return () => new Promise((resolve, reject) => {\r\n setStore(store);\r\n setEnvironmentInjector(env)\r\n resolve(null);\r\n })\r\n}\r\n\r\n\r\nexport interface CreateActionResultsOptions<State, Result, Props extends any[]>{\r\n selectorFactory: (...props: Props) => MemoizedSelector<State, Result>,\r\n action: (...props: Props) => () => void,\r\n dispatchIf?: (data: Result) => boolean,\r\n injector?: Injector\r\n}\r\n\r\ninterface LoadingState<T> {\r\n loading: boolean;\r\n result?: T;\r\n}\r\n\r\ntype ActionableMemoizedSelector<State, Result> = MemoizedSelector<State, Result>;\r\n\r\nexport type ActionReturner<Props extends any[]> = (...props: Props) => Action;\r\n\r\ntype Cache = {\r\n [key: string]: { [key: string]: any }[];\r\n}","/*\r\n * Public API Surface of http-request-state\r\n */\r\n\r\nexport * from './http-request-state/directives';\r\nexport * from './http-request-state/rxjs';\r\nexport * from './http-request-state';\r\n\r\n\r\nexport * from './table-builder/table-builder.module';\r\n\r\nexport * from './table-builder/classes/TableBuilderConfig';\r\n\r\nexport * from './table-builder/interfaces/report-def';\r\n\r\nexport * from './table-builder/classes/MatTableObservableDataSource';\r\n\r\nexport * from './table-builder/classes/table-builder';\r\n\r\nexport * from './table-builder/classes/table-builder-general-settings';\r\n\r\nexport * from './table-builder/components';\r\n\r\nexport * from './table-builder/directives';\r\n\r\nexport * from './table-builder/enums/filterTypes';\r\n\r\n\r\nexport * from './rxjs'\r\n\r\nexport * from './utilities'\r\n\r\nexport * from './action-state';\r\n\r\nexport * from './ngrx';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","map","startWith","concatMap","merge","takeUntil","tap","i1","i2","switchMap","i3","i5","i6","i7","i4","i8","i9"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"one-paragon-angular-utilities.mjs","sources":["../../../projects/angular-utilities/src/http-request-state/types.ts","../../../projects/angular-utilities/src/http-request-state/helpers.ts","../../../projects/angular-utilities/src/rxjs/defaultShareReplay.ts","../../../projects/angular-utilities/src/http-request-state/directives/request-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/HttpStateDirectiveBase.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-error-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-inProgress-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-notStarted-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-success-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorBody.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorState.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapError.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapSuccess.ts","../../../projects/angular-utilities/src/rxjs/mapError.ts","../../../projects/angular-utilities/src/http-request-state/request-state.ts","../../../projects/angular-utilities/src/http-request-state/http-state-module.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/rxjs/subjectifier.ts","../../../projects/angular-utilities/src/rxjs/subscriber.directive.ts","../../../projects/angular-utilities/src/http-request-state/RequestStateStore.ts","../../../projects/angular-utilities/src/http-request-state/RequestStateFactory.ts","../../../projects/angular-utilities/src/http-request-state/deprecated.ts","../../../projects/angular-utilities/src/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder-general-settings.ts","../../../projects/angular-utilities/src/table-builder/classes/TableState.ts","../../../projects/angular-utilities/src/table-builder/classes/DefaultSettings.ts","../../../projects/angular-utilities/src/table-builder/directives/custom-cell-directive.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/table-wrapper.directive.ts","../../../projects/angular-utilities/src/table-builder/enums/filterTypes.ts","../../../projects/angular-utilities/src/table-builder/directives/tb-filter.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/table-builder/functions/null-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/string-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/number-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/date-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/boolean-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.ts","../../../projects/angular-utilities/src/table-builder/classes/filter-info.ts","../../../projects/angular-utilities/src/utilities/array-helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.html","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/utilities/directives/auto-focus.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/clickEmitterDirective.ts","../../../projects/angular-utilities/src/utilities/directives/dialog-service.ts","../../../projects/angular-utilities/src/utilities/directives/dialog.ts","../../../projects/angular-utilities/src/utilities/directives/styler.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/directives/trim-whitespace.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/directives/conditional-classes.directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html","../../../projects/angular-utilities/src/table-builder/pipes/key-display.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-type.pipe.ts","../../../projects/angular-utilities/src/table-builder/services/transform-creator.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-value.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html","../../../projects/angular-utilities/src/table-builder/components/link-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization.component.html","../../../projects/angular-utilities/src/table-builder/services/table-template-service.ts","../../../projects/angular-utilities/src/table-builder/components/column-header-menu/column-header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-header-menu/column-header-menu.component.html","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-helpers.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/data-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.html","../../../projects/angular-utilities/src/table-builder/functions/download-data.ts","../../../projects/angular-utilities/src/table-builder/services/export-to-csv.service.ts","../../../projects/angular-utilities/src/table-builder/services/link-creator.service.ts","../../../projects/angular-utilities/src/table-builder/ngrx/tableBuilderStateStore.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/paginator.component.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderDataSource.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/meta-data.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.html","../../../projects/angular-utilities/src/table-builder/components/profiles-menu/profiles-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/profiles-menu/profiles-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component-store.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/reset-menu/reset-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/reset-menu/reset-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/table-header-menu/table-header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-header-menu/table-header-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/scroll-strategy.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/virtual-scroll-container.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.component.html","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/MatTableObservableDataSource.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.ts","../../../projects/angular-utilities/src/action-state/ngrx.ts","../../../projects/angular-utilities/src/action-state/ngrx-ext/ngrx-ext.module.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.html","../../../projects/angular-utilities/src/action-state/action-state-ui/action-state-ui.module.ts","../../../projects/angular-utilities/src/action-state/index.ts","../../../projects/angular-utilities/src/ngrx/actionable-selector.ts","../../../projects/angular-utilities/src/public-api.ts","../../../projects/angular-utilities/src/one-paragon-angular-utilities.ts"],"sourcesContent":["import { Injector } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nexport enum RequestStatus {\r\n notStarted,\r\n inProgress,\r\n success,\r\n fail,\r\n cancelled,\r\n }\r\n\r\nexport type RequestStateCancelled = {\r\n status: RequestStatus.cancelled\r\n }\r\n\r\nexport type RequestStateNotStarted = {\r\n status: RequestStatus.notStarted\r\n }\r\n\r\nexport type RequestStateInProgress = {\r\n status: RequestStatus.inProgress\r\n }\r\n\r\nexport type RequestStateSuccess<T> = {\r\n status: RequestStatus.success;\r\n body: T;\r\n }\r\n\r\nexport type RequestStateError = {\r\n status: RequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\nexport type RequestState<T = any> =\r\n RequestStateCancelled |\r\n RequestStateNotStarted |\r\n RequestStateInProgress |\r\n RequestStateSuccess<T> |\r\n RequestStateError ;\r\n\r\nexport enum RequestStrategy {\r\n concurrent = 1,\r\n singleUse = 2,\r\n cancelPrevious = 3,\r\n sequential = 4,\r\n}\r\nexport interface RequestStateOptions<TParam extends any[] = any> {\r\n strategy?: RequestStrategy;\r\n autoRequest?: TParam extends never[] ? true : never;\r\n}\r\n\r\nexport interface RequestCreatorOptions<TParam extends any[] = any> extends RequestStateOptions<TParam> { injector?: Injector }\r\n\r\nexport type RequestFactory<TParam extends any[], T> = (...params: [...TParam]) => Observable<T>\r\n","import { RequestState, RequestStateError, RequestStateInProgress, RequestStateNotStarted, RequestStateSuccess, RequestStatus } from \"./types\";\r\n\r\nexport function isErrorState<T>(state: RequestState<T>): state is RequestStateError {\r\n return state.status === RequestStatus.fail;\r\n}\r\n\r\nexport function isSuccessState<T>(state: RequestState<T>): state is RequestStateSuccess<T> {\r\n return state.status === RequestStatus.success;\r\n}\r\n\r\nexport function isSuccessOrErrorState<T>(state: RequestState<T>): state is (RequestStateSuccess<T> | RequestStateError) {\r\n return state.status === RequestStatus.success || state.status === RequestStatus.fail;\r\n}\r\n\r\nexport function createSuccess<T>(body: T): RequestStateSuccess<T> {\r\n return { status: RequestStatus.success, body };\r\n}\r\n\r\nexport function createFailure(error: any): RequestStateError {\r\n return { status: RequestStatus.fail, error };\r\n}\r\n\r\nexport const notStarted: RequestStateNotStarted = { status: RequestStatus.notStarted };\r\n\r\n\r\nexport const inProgress: RequestStateInProgress = { status: RequestStatus.inProgress };\r\n\r\nexport function statusIsSuccessOrInProgress( status: RequestStatus) {\r\n return [RequestStatus.success, RequestStatus.inProgress].includes(status);\r\n}","import { Observable } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\n\r\nexport function defaultShareReplay<T>() {\r\n return function (src: Observable<T>): Observable<T> {\r\n return src.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\r\n };\r\n}","import { Directive, Input, TemplateRef, ViewContainerRef, OnDestroy } from '@angular/core';\r\nimport { defaultShareReplay } from '../../rxjs/defaultShareReplay';\r\nimport { isObservable, Observable, Subject, Unsubscribable } from 'rxjs';\r\nimport { map, switchAll } from 'rxjs/operators';\r\nimport { RequestStateStore } from '../RequestStateStore';\r\nimport { RequestState, RequestStatus } from '../types';\r\n\r\nexport interface HttpRequestStateViewContext<T> {\r\n $implicit?: HttpRequestStateAny<T>;\r\n state?: HttpRequestStateAny<T>;\r\n status: {\r\n inProgress: boolean;\r\n notStarted: boolean;\r\n success: boolean;\r\n error: boolean;\r\n };\r\n}\r\n\r\n@Directive({ selector: '[httpRequestState]', })\r\nexport class HttpRequestStateDirective<TParam extends any[], V, R, T = R extends null ? V : R> implements OnDestroy {\r\n private viewContainer: ViewContainerRef;\r\n\r\n readonly ViewContext: HttpRequestStateViewContext<T> = {\r\n $implicit: undefined,\r\n state: undefined,\r\n status: {\r\n inProgress: false,\r\n notStarted: true,\r\n success: false,\r\n error: false,\r\n }\r\n };\r\n\r\n\r\n subject = new Subject<Observable<RequestState<T>>>();\r\n state = this.subject.pipe(switchAll(), defaultShareReplay());\r\n subscription: Unsubscribable;\r\n hooks: ((state: RequestState<T>) => void)[] = [];\r\n\r\n @Input('httpRequestState') set stateStore(store: RequestStateStore<TParam, V, R, T> | Observable<RequestState<T>>) {\r\n if(isObservable(store)) {\r\n this.subject.next(store);\r\n } else {\r\n this.subject.next(store.state$.pipe(map(state => state.response)));\r\n }\r\n\r\n }\r\n constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef) {\r\n this.viewContainer = viewContainer;\r\n this.viewContainer.createEmbeddedView(templateRef, this.ViewContext);\r\n this.subscription = this.state.subscribe(state => {\r\n this.ViewContext.$implicit = state;\r\n this.ViewContext.state = state;\r\n this.ViewContext.status.inProgress = state.status === RequestStatus.inProgress;\r\n this.ViewContext.status.notStarted = state.status === RequestStatus.notStarted;\r\n this.ViewContext.status.success = state.status === RequestStatus.success;\r\n this.ViewContext.status.error = state.status === RequestStatus.fail;\r\n this.hooks.forEach(hook => hook(state));\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.viewContainer.clear();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpRequestStateDirective<any, V, R>, ctx: any): ctx is HttpRequestStateViewContext<R extends null ? V : R> {\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport type HttpRequestStateAny<T> = {\r\n status: RequestStatus;\r\n body?: T;\r\n error?: any;\r\n}\r\n","import { Directive, inject, Injector, TemplateRef, ViewContainerRef, OnInit } from '@angular/core';\r\nimport { RequestState } from '../types';\r\nimport { HttpRequestStateDirective } from './request-state-directive';\r\n\r\n@Directive()\r\nexport abstract class HttpStateDirectiveBase<V, R = null> implements OnInit {\r\n hasView = false;\r\n private injector = inject(Injector);\r\n protected templateRef = inject(TemplateRef<{ $implicit: R extends null ? V : R }>);\r\n protected viewContainer = inject(ViewContainerRef);\r\n ngOnInit() {\r\n const parent = this.injector.get(HttpRequestStateDirective);\r\n if(parent == null) {\r\n throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');\r\n }\r\n parent.hooks.push(this.baseRender);\r\n this.baseRender(parent.ViewContext.state);\r\n }\r\n\r\n private baseRender = (state: RequestState): void => {\r\n if(this.hasView) {\r\n this.viewContainer.clear();\r\n this.hasView = false;\r\n }\r\n this.hasView = this.render(state);\r\n }\r\n\r\n abstract render: (state: RequestState) => boolean;\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { isErrorState } from '../helpers';\r\nimport { RequestState } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n@Directive({ selector: '[httpErrorState]', })\r\nexport class HttpErrorStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n\r\n\r\n render = (state: RequestState<any>) => {\r\n if(isErrorState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}","import { Directive, OnInit } from '@angular/core';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { RequestState, RequestStatus } from '../types'\r\n\r\n\r\n@Directive({ selector: '[httpInProgressState]', })\r\nexport class HttpInProgressStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n render = (state: RequestState<any>) => {\r\n if(state.status === RequestStatus.inProgress){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { RequestState, RequestStatus } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n\r\n@Directive({ selector: '[httpNotStartedState]', })\r\nexport class HttpNotStartedStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n render = (state: RequestState<any>) => {\r\n if(state.status === RequestStatus.notStarted){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { RequestState } from '../types';\r\nimport { RequestStateStore } from '../RequestStateStore';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpSuccessStateViewContext<T> {\r\n $implicit: T;\r\n}\r\n@Directive({ selector: '[httpSuccessState]', })\r\nexport class HttpSuccessStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> implements OnInit {\r\n @Input() httpSuccessStateTypeSafety?: RequestStateStore<any, V, R> | Observable<RequestState<V>>;\r\n render = (state: RequestState<R extends null ? V : R>) => {\r\n if(isSuccessState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpSuccessStateDirective<V, R>, ctx: any): ctx is HttpSuccessStateViewContext<R extends null ? V : R> {\r\n return true;\r\n }\r\n}\r\n","import { isSuccessState } from '../helpers';\r\nimport { RequestState } from '../types';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nexport const getRequestorBody = <T>(source: Observable<RequestState<T>>) =>\r\n source.pipe(\r\n filter(isSuccessState),\r\n map( res => res.body)\r\n );","import { RequestState } from '../types';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const getRequestorStatus = <T>(source: Observable<RequestState<T>>) =>\r\n source.pipe(\r\n map( res => res.status)\r\n );","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { RequestState } from '../types';\r\nimport { isErrorState } from '../helpers';\r\n\r\nexport function tapError(onError: (error: any) => void) {\r\n return function (src: Observable<RequestState>): Observable<RequestState> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isErrorState(result)) {\r\n onError(result.error);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { RequestState } from '../types';\r\nimport { isSuccessState } from '../helpers';\r\n\r\nexport function tapSuccess<T>(onSuccess: (body: T) => void) {\r\n return function (src: Observable<RequestState<T>>): Observable<RequestState<T>> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isSuccessState(result)) {\r\n onSuccess(result.body);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nexport function mapError<T, TResult>(projection: (error: any) => TResult) {\r\n return function (src: Observable<T>): Observable<T | TResult> {\r\n return src.pipe(catchError(e => of(projection(e))),);\r\n };\r\n}","import { map, startWith, switchMap } from 'rxjs/operators';\r\nimport { getRequestorBody } from './rxjs/getRequestorBody';\r\nimport { getRequestorStatus } from './rxjs/getRequestorState';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { RequestFactory, RequestState, RequestStatus } from './types';\r\nimport { createFailure, createSuccess, inProgress, notStarted } from './helpers';\r\n\r\nexport type HttpRequestState$ <T> = Observable<RequestState<T>>;\r\n\r\nexport interface HttpRequestor <Res, Req> {\r\n httpState$: Observable<RequestState<Res>>;\r\n status$: Observable<RequestStatus>;\r\n body$: Observable<Res>;\r\n request: Req;\r\n}\r\n\r\nexport function httpRequest<T = any>(req: Observable<T>): HttpRequestState$<T> {\r\n return req.pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n defaultShareReplay()\r\n );\r\n}\r\n\r\nexport function httpRequestor<TParam extends any[], T>(req: RequestFactory<TParam, T> ): HttpRequestor<T, (...params: [...TParam]) => Observable<RequestState<T>>> {\r\n const request$ = new ReplaySubject<[...TParam]>(1);\r\n const httpState$ : HttpRequestState$<T> = request$.pipe(\r\n switchMap( (params) => httpRequest<T>(req(...params)) ),\r\n startWith(notStarted),\r\n defaultShareReplay(),\r\n );\r\n const request = (...params: [...TParam]) => {\r\n request$.next(params);\r\n return httpState$;\r\n };\r\n return ({\r\n request,\r\n httpState$,\r\n body$: httpState$.pipe(getRequestorBody),\r\n status$: httpState$.pipe(getRequestorStatus)\r\n });\r\n}\r\n\r\nexport function chainRequest<TParam extends any[], T, TT>(\r\n httpState$: Observable<RequestState<T>>,\r\n request:RequestFactory<TParam, TT>,\r\n requestParams: ((responseFromPrevious: T) => [...TParam]) | (() => [...TParam])\r\n): Observable<RequestState<TT>> {\r\n return httpState$.pipe(\r\n switchMap( res => {\r\n if(res.status === RequestStatus.success) {\r\n const secondReq = httpRequestor<[...TParam], TT>(request);\r\n const param = requestParams(res.body);\r\n secondReq.request(...param );\r\n return secondReq.httpState$;\r\n } else {\r\n return of(res);\r\n }\r\n }),\r\n );\r\n}\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpSuccessStateDirective } from './directives/http-success-state-directive';\r\nimport { HttpRequestStateDirective } from './directives/request-state-directive';\r\nimport { HttpErrorStateDirective } from './directives/http-error-state-directive';\r\nimport { HttpInProgressStateDirective } from './directives/http-inProgress-state-directive';\r\nimport { HttpNotStartedStateDirective } from './directives/http-notStarted-state-directive';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ],\r\n exports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ]\r\n}) export class HttpRequestModule { }","import { Predicate } from '@angular/core';\r\nimport {\r\n filter,\r\n first,\r\n map,\r\n pairwise,\r\n startWith,\r\n Observable,\r\n combineLatest,\r\n Subscription,\r\n MonoTypeOperatorFunction,\r\n OperatorFunction,\r\n concatMap,\r\n merge,\r\n of,\r\n delay,\r\n pipe\r\n} from 'rxjs';\r\n\r\n\r\nexport const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {\r\n return src.pipe(filter(predicate), first());\r\n}\r\n\r\nexport const mapArray = <T, U>(mapFunc: (src: T, index?: number) => U ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.map(mapFunc) ) );\r\n\r\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.filter(filterFunc) ) );\r\n\r\nexport const onWait = startWithIfEmpty;\r\nexport function startWithIfEmpty<T, V extends T>(val: V, wait = 0) : MonoTypeOperatorFunction<T> {\r\n return (source: Observable<T>) => {\r\n return new Observable<T>(subscriber => {\r\n let emitted = false;\r\n setTimeout(() => {\r\n if(!emitted) {\r\n subscriber.next(val);\r\n }\r\n }, wait);\r\n const sub = source.subscribe({\r\n next(x) { emitted = true; subscriber.next(x) },\r\n error(err) { emitted = true; subscriber.error(err) },\r\n complete() { emitted = true; subscriber.complete(); }\r\n });\r\n return () => sub.unsubscribe();\r\n });\r\n }\r\n\r\n}\r\n\r\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\r\n return combineLatest(\r\n sources.map( src => src.pipe(startWithIfEmpty([] as T [])))\r\n ).pipe(\r\n map( res => res.flat() )\r\n );\r\n};\r\n\r\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsciber => {\r\n let isOn = defaultState;\r\n const subscription = new Subscription();\r\n subscription.add( switchSource.subscribe( on => isOn = on ));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(isOn) {\r\n subsciber.next(value);\r\n }\r\n },\r\n error: error => subsciber.error(error),\r\n complete: () => subsciber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function skipOneWhen( skipper: Observable<any> ) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsriber => {\r\n const subscription = new Subscription();\r\n let skipNext = false;\r\n subscription.add(skipper.subscribe( _ => skipNext = true));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(skipNext) {\r\n skipNext = false;\r\n } else {\r\n subsriber.next(value);\r\n }\r\n },\r\n error: error => subsriber.error(error),\r\n complete: () => subsriber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\r\n return (source: Observable<T>) => {\r\n return source.pipe(startWith(startingValue), pairwise());\r\n }\r\n}\r\n\r\nexport function notNull<T>() {\r\n return pipe(filter<T, NonNullable<T>>((o): o is NonNullable<T> => o != null))\r\n}\r\n\r\nexport function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {\r\n return (src: Observable<T>) => {\r\n return src.pipe(\r\n concatMap(r => {\r\n if(predicate(r)) {\r\n return merge(\r\n of({ r }),\r\n of(null).pipe(delay(delayTime))\r\n ).pipe(\r\n notNull(),\r\n map(d => d.r)\r\n );\r\n } else {\r\n return of(r);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { merge, Observable, Observer, Subject } from 'rxjs';\r\ntype PipeLike<T> = Observable<T>['pipe'];\r\nexport class Subjectifier<T> extends Observable<T>{\r\n private _subj = new Subject<T>();\r\n private merged: Observable<T>;\r\n constructor(_source: Observable<T>){\r\n super((obs: Observer<T>) => {\r\n const s = merge( _source, this._subj ).subscribe(obs);\r\n return s;\r\n });\r\n\r\n this.merged = merge(_source, this._subj);\r\n }\r\n next: Subject<T>['next'] = this._subj.next.bind(this._subj);\r\n newSubj = (...operations: Parameters<PipeLike<T>>) =>\r\n new Subjectifier(this.merged.pipe(...operations));\r\n}","import { DestroyRef, Directive, Injector, OnDestroy, assertInInjectionContext, inject } from \"@angular/core\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\n\r\n@Directive()\r\nexport class Subscriber implements OnDestroy{\r\n subscriptions: Subscription[] = [];\r\n handle = (subscription: Subscription) => {\r\n this.subscriptions.push(subscription);\r\n }\r\n on = <T = any>(obs: Observable<T>, action: (t: T) => any) => {\r\n this.handle(obs.subscribe(action));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n}\r\n\r\nexport function subscriber(injector: Injector): Subscriber\r\nexport function subscriber(subscription?: Subscription, injector?: Injector): Subscriber\r\nexport function subscriber<T = any>(obs: Observable<T>, action: (t: T) => any, injector?: Injector): Subscriber\r\nexport function subscriber<T = any>(obsOrSubOrInjector?: Observable<T> | Subscription | Injector, actionOrInjector?: ((t: T) => any) | Injector, injector?: Injector): Subscriber {\r\n\r\n const destroyRef = getDestroyRef(obsOrSubOrInjector, actionOrInjector, injector);\r\n\r\n const subscriber = new Subscriber();\r\n\r\n if(obsOrSubOrInjector instanceof Subscription){\r\n subscriber.handle(obsOrSubOrInjector);\r\n } else if(obsOrSubOrInjector instanceof Observable){\r\n subscriber.handle(obsOrSubOrInjector.subscribe(actionOrInjector as (t: T) => any));\r\n }\r\n\r\n destroyRef.onDestroy(() => subscriber?.ngOnDestroy());\r\n\r\n return subscriber;\r\n}\r\n\r\nfunction getDestroyRef(obsOrSubOrInjector: any, actionOrInjector?: any, injector?: Injector){\r\n const providedInjector = obsOrSubOrInjector instanceof Injector ? obsOrSubOrInjector\r\n : actionOrInjector instanceof Injector ? actionOrInjector\r\n : injector;\r\n\r\n if(!providedInjector){\r\n try {\r\n assertInInjectionContext(subscriber);\r\n } catch (error) {\r\n throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');\r\n }\r\n }\r\n\r\n const destroyRef = providedInjector?.get(DestroyRef) || inject(DestroyRef);\r\n\r\n return destroyRef;\r\n}","import { combineLatest, Observable, of, pipe, Subject, Subscription } from 'rxjs';\r\nimport { RequestFactory as RequestFactory, RequestStrategy as RequestStrategy, RequestStatus, RequestState, RequestStateOptions, RequestStateCancelled } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { concatMap, filter, map, mergeMap, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { assertInInjectionContext, computed, DestroyRef, inject, InjectionToken, Injector, isSignal, signal, Signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { notNull } from '../rxjs';\r\n\r\nexport interface RequestResponse<TParam extends any[], T> {\r\n requestParams: [...TParam];\r\n response: RequestState<T>;\r\n}\r\n\r\nexport class RequestStateStore<TParam extends any[], V, R = null, T = R extends null ? V : R> {\r\n private _state = signal<RequestResponse<TParam, T>>({ requestParams: null as any, response: notStarted });\r\n private setState = (state: RequestResponse<TParam, T>) => this._state.set(state);\r\n state = this._state.asReadonly();\r\n state$ = toObservable(this.state);\r\n private options?: RequestStateOptions;\r\n private project?: (v: V) => R;\r\n private req: RequestFactory<TParam, V>;\r\n private injector = inject(Injector)\r\n private destroy$ = new Subject<void>();\r\n private defaultErrorHandling?: (e?: any) => void;\r\n private _useDefaultErrorHandler?: boolean;\r\n private defaultSuccessHandling?: (e?: T) => void;\r\n\r\n constructor(req: RequestFactory<TParam, V>, options?: RequestStateOptions<TParam>, project?: (v: V) => R) {\r\n this.assertInjectionContext();\r\n this.injector.get(DestroyRef).onDestroy(() => this.destroy$.next());\r\n\r\n this.project = project;\r\n this.options = options;\r\n this.req = req;\r\n\r\n const config = inject(RequestStateStoreConfigToken, { optional: true });\r\n if(config){\r\n this.defaultErrorHandling = config.defaultErrorHandling;\r\n this._useDefaultErrorHandler = config.useDefaultErrorHandler;\r\n this.defaultSuccessHandling = config.defaultSuccessHandling;\r\n\r\n if(this._useDefaultErrorHandler){\r\n this.subscriber(this.selectError$, e => {\r\n if(!this.errorHandled){\r\n this.#onDefaultErrorHandling(e);\r\n }\r\n })\r\n }\r\n }\r\n\r\n this.request = (this.options?.strategy === RequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;\r\n if(options?.autoRequest){\r\n (this.request as any)();\r\n }\r\n }\r\n\r\n reset() {\r\n this._state.set({ requestParams: null as any, response: notStarted });\r\n }\r\n\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy === RequestStrategy.concurrent)\r\n return mergeMap( (params: [...TParam]) => this.createRequest(...params));\r\n\r\n if(this.options?.strategy === RequestStrategy.sequential)\r\n return concatMap( (params: [...TParam]) => this.createRequest(...params));\r\n\r\n return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?\r\n of({ requestParams: params[0], response: { status: RequestStatus.cancelled } as RequestStateCancelled } ) : this.createRequest(...params) );\r\n }\r\n\r\n private createRequestPipeline = () => {\r\n const origin$ = new Subject<[...TParam]>();\r\n const sub = origin$.pipe(\r\n this.flatteningStrategy(),\r\n tap<RequestResponse<TParam, T>>(state => this.setState(state)),\r\n pipe(takeUntil(this.destroy$))\r\n ).subscribe();\r\n return (params: [...TParam]) => {\r\n origin$.next(params);\r\n return sub;\r\n }\r\n }\r\n\r\n private requestPipeLine = this.createRequestPipeline();\r\n\r\n private flattenedRequest = (...value: [...TParam]) => {\r\n return this.requestPipeLine(value);\r\n }\r\n private singleUseRequest = (...value: [...TParam]) => {\r\n if(this.state().response.status !== RequestStatus.notStarted) {\r\n throw new Error(\"state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.\");\r\n }\r\n return this.requestPipeLine(value);\r\n }\r\n\r\n $selectRequestState = computed(() => this.state().response);\r\n selectRequestState$ = this.state$.pipe(map(s => s.response));\r\n /**\r\n * @deprecated use selectRequestState$ instead\r\n */\r\n selectHttpState$ = this.selectRequestState$;\r\n $selectStatus = computed(() => this.$selectRequestState()?.status);\r\n selectStatus$ = this.selectRequestState$.pipe(map(s => s.status));\r\n $isSuccess = computed(() => isSuccessState(this.$selectRequestState()));\r\n $isError = computed(() => isErrorState(this.$selectRequestState()));\r\n $isInProgress = computed(() => this.$selectStatus() === RequestStatus.inProgress);\r\n $isNotStarted = computed(() => this.$selectStatus() === RequestStatus.notStarted);\r\n\r\n selectError$ = this.selectRequestState$.pipe(\r\n filter(isErrorState),\r\n map(state => state.error)\r\n );\r\n\r\n $selectError = computed(() => {\r\n const state = this.$selectRequestState();\r\n if(isErrorState(state)) return state.error\r\n })\r\n\r\n selectResponse$: Observable<T> = this.selectRequestState$.pipe(\r\n filter(isSuccessState),\r\n map( state => state.body)\r\n );\r\n\r\n $selectResponse = computed(() => {\r\n const state = this.$selectRequestState();\r\n if(isSuccessState(state)){\r\n return state.body\r\n }\r\n return undefined;\r\n })\r\n\r\n private selectSuccessOrError$: Observable<void> = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessOrErrorState),\r\n map(() => undefined)\r\n );\r\n\r\n errorHandled = false;\r\n onError( cb: (error: HttpErrorResponse) => void) {\r\n this.errorHandled = true;\r\n this.subscriber(this.selectError$, cb);\r\n return this;\r\n }\r\n\r\n #onDefaultErrorHandling = (e: any) => {\r\n if(this.defaultErrorHandling) this.defaultErrorHandling(e)\r\n else console.error(e)\r\n }\r\n /**\r\n * if no handler was provided will call `console.error`\r\n */\r\n useDefaultErrorHandler(){\r\n this.subscriber(this.selectError$, this.#onDefaultErrorHandling);\r\n return this;\r\n }\r\n\r\n /**\r\n * if no handler was provided will call `console.log` with 'Success'\r\n */\r\n useDefaultSuccessHandler(){\r\n this.subscriber(this.selectResponse$, this.defaultSuccessHandling || (() => console.log('Success')));\r\n return this;\r\n }\r\n\r\n onSuccess( cb: (body?: T) => void) {\r\n this.subscriber(this.selectResponse$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessOrError(cb: () => void){\r\n this.subscriber(this.selectSuccessOrError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessWithRequest(\r\n func: (state: { requestParams: [...TParam]; body: T; }) => void\r\n ) {\r\n this.subscriber(this.state$,\r\n ({ requestParams, response }) => {\r\n\r\n if(isSuccessState(response)) func({ requestParams, body: response.body });\r\n }\r\n );\r\n return this;\r\n }\r\n\r\n onErrorWithRequest(\r\n func: (state: { error: HttpErrorResponse; requestParams: [...TParam]; }) => void\r\n ) {\r\n this.errorHandled = true;\r\n this.subscriber(this.state$,\r\n ({ requestParams, response }) => {\r\n\r\n if(isErrorState(response)) func({ requestParams, error: response.error });\r\n }\r\n );\r\n\r\n return this;\r\n }\r\n\r\n private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam, T>> {\r\n return this.req(...params).pipe(\r\n map(re => createSuccess((this.project ? this.project(re) : re) as T)),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n map( state => ({ requestParams: params, response: state })),\r\n defaultShareReplay()\r\n );\r\n }\r\n\r\n private subscriber = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {\r\n return srcObservable.pipe(tap(func), takeUntil(this.destroy$)).subscribe();\r\n }\r\n\r\n /**\r\n * @deprecated use the standalone subscriber helper function\r\n */\r\n on = this.subscriber;\r\n request: (...value: [...TParam] ) => Subscription;\r\n\r\n requestWith = (params: Observable<[...TParam]> | Signal<[...TParam]>) => {\r\n if(isSignal(params)){\r\n params = toObservable(params, { injector: this.injector }).pipe(notNull());\r\n }\r\n params.pipe(takeUntil(this.destroy$)).subscribe((p) => this.request(...p));\r\n return this;\r\n }\r\n\r\n private assertInjectionContext(){\r\n try {\r\n assertInInjectionContext(RequestStateStore);\r\n } catch (error) {\r\n throw new Error('RequestStateStore must be created in an Injection Context');\r\n }\r\n }\r\n\r\n destroy() {\r\n this.destroy$.next();\r\n }\r\n}\r\nexport class CancellationToken {}\r\n\r\nexport function wrapInArr<T extends [Signal<any>, ...Signal<any>[]]>(...sigs: T) : Signal<{ [K in keyof T]: T[K] extends Signal<infer U> ? U : never }>;\r\nexport function wrapInArr<T extends [Observable<any>, ...Observable<any>[]]>(...obs: T): Observable<{ [K in keyof T]: T[K] extends Observable<infer U> ? U : never }>;\r\n/**\r\n * If any values from the array of signals or observables are null or undefined, all values will be filtered\r\n */\r\nexport function wrapInArr<T extends Signal<any>[] | Observable<any>[]>(...sigOrObs: T){\r\n if(isSignal(sigOrObs[0])){\r\n return computed(() => {\r\n const arr = (sigOrObs as Signal<T>[]).map(s => s()) as { [K in keyof T]: T[K] extends Signal<infer U> ? U : never };\r\n if(arr.some(s => s == undefined)) return undefined;\r\n return arr;\r\n });\r\n }\r\n else {\r\n return combineLatest(sigOrObs as Observable<any>[]).pipe(filter(vals => vals.every(val => val != undefined))) as Observable<{ [K in keyof T]: T[K] extends Observable<infer U> ? U : never }>;\r\n\r\n }\r\n}\r\n\r\nexport interface RequestStateStoreConfig {\r\n /**\r\n * if `useDefaultErrorHandler` is `true` this will run on each error if no other handler provided.\r\n * else can be used by call `.useDefaultHandler`\r\n */\r\n defaultErrorHandling?: (e?: any) => void;\r\n /**\r\n * if `useDefaultErrorHandler` is `true` `defaultErrorHandling` will run on each error if no other handler provided.\r\n */\r\n useDefaultErrorHandler?: boolean;\r\n\r\n /**\r\n * will be called if `useDefaultSuccess` is used\r\n */\r\n defaultSuccessHandling?: <T>(e?: T) => void;\r\n}\r\n\r\nexport const RequestStateStoreConfigToken = new InjectionToken<RequestStateStoreConfig>('RequestStateConfig');\r\n\r\n","import { Injectable, Injector, OnDestroy, assertInInjectionContext, inject, runInInjectionContext } from \"@angular/core\";\r\nimport { RequestFactory, RequestStateOptions, RequestCreatorOptions } from \"./types\";\r\nimport { RequestStateStore } from './RequestStateStore';\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class RequestStateFactory implements OnDestroy {\r\n\r\n constructor() {}\r\n ngOnDestroy(): void {\r\n this.requestors.forEach( request => request.destroy());\r\n }\r\n private requestors: RequestStateStore<any, any, any>[] = [];\r\n\r\n create<TParam extends any[], V>( req: RequestFactory<TParam, V>, options?: RequestStateOptions<TParam>) : RequestStateStore<TParam, V>\r\n create<TParam extends any[], V, R, T = R>( req: RequestFactory<TParam, V>, project: (v: V) => R, options?: RequestStateOptions<TParam>) : RequestStateStore<TParam, V, T>\r\n create<TParam extends any[], V, R = null, T = R extends null ? V : R>(req: RequestFactory<TParam, V>, optionsOrProject?: RequestStateOptions<TParam> | ((v: V) => R), options?: RequestStateOptions<TParam> ) : RequestStateStore<TParam, V, R, T> {\r\n const requestor = (typeof (optionsOrProject) === 'function' ? new RequestStateStore<TParam, V, R, T>(req, options, optionsOrProject) : new RequestStateStore<TParam, V, R, T>(req, optionsOrProject));\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n createHttpClient<T>( r: (o: Observable<T> ) => Observable<T>, options?: RequestStateOptions<any> ) {\r\n const requestor = new RequestStateStore(r, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n}\r\n\r\nexport function createRequestor<TParam extends any[], V>( req: RequestFactory<TParam, V>, options?: RequestCreatorOptions<TParam>) : RequestStateStore<TParam, V>\r\nexport function createRequestor<TParam extends any[], V, R, T = R>( req: RequestFactory<TParam, V>, project: (v: V) => R, options?: RequestCreatorOptions<TParam>) : RequestStateStore<TParam, V, T>\r\nexport function createRequestor<TParam extends any[], V, R = null, T = R extends null ? V : R>( req: RequestFactory<TParam, V>, optionsOrProject?: RequestCreatorOptions<TParam> | ((v: V) => R), options?: RequestCreatorOptions<TParam> ) : RequestStateStore<TParam, V, R, T>{\r\n const ops = typeof (optionsOrProject) === 'function' ? options : optionsOrProject;\r\n const injector = getInjector(ops);\r\n return runInInjectionContext(injector, () => {\r\n const requestStore = typeof (optionsOrProject) === 'function' ?\r\n new RequestStateStore<TParam, V, R, T>(req, options, optionsOrProject)\r\n : new RequestStateStore<TParam, V, R, T>(req, optionsOrProject);\r\n\r\n return requestStore;\r\n })\r\n}\r\n\r\nfunction getInjector(options?: RequestCreatorOptions<any>){\r\n const providedInjector = options?.injector;\r\n\r\n if(!providedInjector){\r\n try {\r\n assertInInjectionContext(createRequestor);\r\n } catch (error) {\r\n throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');\r\n }\r\n }\r\n\r\n return providedInjector ?? inject(Injector);\r\n}","/**\r\n * @deprecated use RequestStateFactory\r\n */\r\nexport { RequestStateFactory as HttpRequestStateFactory } from './RequestStateFactory';\r\n/**\r\n * @deprecated use RequestStatus\r\n */\r\nexport { RequestStatus as HttpRequestStatus } from './types';\r\n/**\r\n * @deprecated use RequestState\r\n */\r\nexport type { RequestState as HttpRequestState } from './types'\r\n/**\r\n * @deprecated use RequestStateStore\r\n */\r\nexport { RequestStateStore as HttpRequestStateStore } from './RequestStateStore';\r\n/**\r\n * @deprecated use RequestStrategy\r\n */\r\nexport { RequestStrategy as HttpRequestStrategy } from './types';","import { Dictionary } from './dictionary';\r\nimport { PipeTransform, Predicate, TemplateRef } from '@angular/core';\r\nimport { TableBuilderExport } from '../classes/TableBuilderConfig';\r\nimport { QueryParamsHandling } from '@angular/router';\r\nimport { StylerStyle } from '../../utilities/directives/styler';\r\n\r\n\r\nexport enum FieldType {\r\n Unknown = 0,\r\n Date = 1,\r\n /**\r\n * @deprecated If `additional.link` is set the column will be treated as a link.\r\n */\r\n Link = 2,\r\n ImageUrl = 3,\r\n Currency = 4,\r\n Array = 5,\r\n Hidden = 6,\r\n Number = 7,\r\n String = 8,\r\n Boolean = 9,\r\n PhoneNumber = 10,\r\n /**\r\n * @deprecated For mapped properties use proper type (for sorting and filtering) with `map`.\r\n * For unmapped properties use `FieldType.NotMapped` with map.\r\n */\r\n Expression = 11,\r\n Enum = 12,\r\n DateTime = 13,\r\n NotMapped = 14,\r\n}\r\n\r\nexport enum SortDirection {\r\n asc= 'asc',\r\n desc= 'desc'\r\n}\r\n\r\nexport enum Target {\r\n Blank = '_blank',\r\n Self = '_self',\r\n Parent = '_parent',\r\n Top = '_top'\r\n}\r\n\r\ninterface BaseMeta <T = any> {\r\n displayName?: string;\r\n order?: number;\r\n preSort?: SortDef;\r\n sortLogic?: {\r\n /**\r\n * defaults to last\r\n */\r\n nulls?: 'first' | 'last';\r\n sortBy?: ((t: T) => any) | 'use map';\r\n }\r\n noSort?: boolean;\r\n width?: string;\r\n noExport?: boolean;\r\n filterLogic?: {\r\n filterBy?: ((t: T) => any) | 'use map';\r\n /**\r\n * defaults to the MetaData's Field type\r\n */\r\n filterType?: FieldType;\r\n },\r\n noFilter?: boolean;\r\n customCell?: boolean;\r\n /**\r\n * @deprecated Use `map`\r\n */\r\n transform?: ((o: T, ...args: any[])=> any) | ((o: string, ...args: any[])=> any) | PipeTransform;\r\n click?: (element: T, key?: string, event?: MouseEvent ) => void;\r\n template?: TemplateRef<any>;\r\n classes?: Dictionary<Predicate<T> | true>;\r\n toolTip?: string | ((t:T) => string);\r\n useIcon?: boolean;\r\n map? : (t: T) => any;\r\n}\r\ntype Path<T, U = never, P = never> =\r\n (T extends P ? never : T extends object ?\r\n { [K in keyof T]: K extends string | number ? `${K}` | (T[K] extends (Array<any> | undefined) ? `${K}.${keyof Array<any> & (string | number)}` : `${K}.${Path<T[K], T[K], P | U >}`) : never; }[keyof T]\r\n : never)\r\n\r\nexport interface BaseMappedMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMeta<T> {\r\n key: (Path<T> | AdditionalFields[number]) & string;\r\n /**\r\n * if used with map, `mapItem` will only be used where the row is not available, ex. group header\r\n */\r\n mapItem?: (i: any) => any;\r\n}\r\n\r\nexport interface MappedMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMappedMetaData<T, AdditionalFields> {\r\n fieldType: FieldType.String | FieldType.PhoneNumber | FieldType.ImageUrl | FieldType.Link | FieldType.Hidden | FieldType.Unknown;\r\n additional?: Additional<T>;\r\n mapItem?: (i: string) => any;\r\n}\r\n\r\nexport interface MappedNumberMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMappedMetaData<T, AdditionalFields> {\r\n fieldType: FieldType.Number | FieldType.Currency;\r\n mapItem?: (i: number) => any;\r\n additional?: NumberAdditional<T>;\r\n}\r\n\r\nexport interface MappedEnumMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMappedMetaData<T, AdditionalFields> {\r\n fieldType: FieldType.Enum;\r\n mapItem?: (i: number) => any;\r\n additional?: EnumAdditional<T>;\r\n}\r\n\r\nexport interface MappedDateMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMappedMetaData<T, AdditionalFields> {\r\n fieldType: FieldType.Date | FieldType.DateTime;\r\n mapItem?: (i: Date) => any;\r\n additional?: Additional<T, Date>;\r\n}\r\n\r\nexport interface MappedBooleanMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMappedMetaData<T, AdditionalFields> {\r\n fieldType: FieldType.Boolean;\r\n mapItem?: (i: boolean) => any;\r\n additional?: BooleanAdditional<T>;\r\n}\r\n\r\nexport interface MappedArrayMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMappedMetaData<T, AdditionalFields> {\r\n fieldType: FieldType.Array;\r\n mapItem?: (i: string) => any;\r\n additional?: ArrayAdditional<T>;\r\n}\r\n\r\nexport type MetaData<T = any, AdditionalFields extends string[] = []> =\r\n MappedMetaData<T, AdditionalFields>\r\n | NotMappedMetaData<T>\r\n | MappedNumberMetaData<T, AdditionalFields>\r\n | MappedEnumMetaData<T, AdditionalFields>\r\n | MappedBooleanMetaData<T, AdditionalFields>\r\n | MappedDateMetaData<T, AdditionalFields>\r\n | MappedArrayMetaData<T, AdditionalFields>\r\n ;\r\n\r\nexport interface NotMappedMetaData<T = any> extends BaseMeta<T> {\r\n key: string;\r\n fieldType: FieldType.NotMapped | FieldType.Expression;\r\n additional?: Additional<T>;\r\n}\r\nexport interface ReportDef<DataType = any> {\r\n data: DataType[];\r\n metaData: MetaData [];\r\n totalRecords?: number;\r\n count: number;\r\n}\r\n\r\nexport interface SortDef {\r\n direction: SortDirection;\r\n precedence?: number;\r\n}\r\n\r\nexport interface FilterOptions<T = string> {\r\n filterableValues : T[]\r\n}\r\nexport interface DateTimeOptions {\r\n format?: string;\r\n includeSeconds?: boolean;\r\n includeMilliseconds: boolean;\r\n}\r\ntype interpolatedRoute = string;\r\ninterface BaseAdditional<T = any> {\r\n link? : {\r\n base?: string;\r\n urlKey?: string;\r\n target?: Target;\r\n useRouterLink?: boolean;\r\n /**\r\n * If you want to use a route with interpolated params, you can use this. Wrap the property name in curly braces.\r\n * For example, if interpolatedRoute = /users/{id}/edit, {id} will be replaced with the value of the element's id property.\r\n */\r\n interpolatedRoute?: interpolatedRoute | ((t: T) => string);\r\n routerLinkOptions?:{\r\n queryParams?: [string, interpolatedRoute | ((t: T) => string)][];\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n }\r\n export?: TableBuilderExport;\r\n dateFormat?: string;\r\n dateTimeOptions?: DateTimeOptions;\r\n styles?: StylerStyle<T>;\r\n columnPartStyles?: {\r\n header?: Dictionary<string>,\r\n body?: StylerStyle<T>,\r\n innerBody?: StylerStyle<T>,\r\n footer?: Dictionary<string>,\r\n }\r\n columnPartClasses?: {\r\n header?: Dictionary<Predicate<T> | true>,\r\n footer?: Dictionary<Predicate<T> | true>,\r\n }\r\n footer?: { type: any };\r\n}\r\nexport interface Additional<T = any, V = string> extends BaseAdditional<T> {\r\n filterOptions?: FilterOptions<V>;\r\n footer?: { type: never };\r\n}\r\n\r\ninterface NumberAdditional<T = any> extends BaseAdditional<T> {\r\n filterOptions?: FilterOptions<number>;\r\n footer?: { type: 'sum' };\r\n}\r\n\r\ninterface EnumAdditional<T = any> extends BaseAdditional<T> {\r\n filterOptions?: FilterOptions<number>;\r\n enumMap?: {[key:number]:string};\r\n footer?: { type: never };\r\n}\r\n\r\ninterface BooleanAdditional<T = any> extends BaseAdditional<T> {\r\n filterOptions?: FilterOptions<never>;\r\n footer?: { type: never };\r\n boolean? : {\r\n showForFalse? : true | { icon : string },\r\n forTrue? : { icon : string }\r\n }\r\n}\r\n\r\nexport enum ArrayStyle {\r\n CommaDelimited,\r\n NewLine\r\n}\r\n\r\nexport interface ArrayAdditional<T = any> extends Additional<T> {\r\n limit?: number;\r\n arrayStyle?: ArrayStyle;\r\n}\r\n\r\n\r\nexport function metaDataArrToDict<T = MetaData>(arr: MetaData[], transform?: (m : MetaData) => T): Dictionary<T>{\r\n const dict = {};\r\n if(transform){\r\n arr.forEach(e => dict[e.key] = transform(e));\r\n } else {\r\n arr.forEach(e => dict[e.key] = e);\r\n }\r\n return dict;\r\n}\r\n\r\nexport interface CustomCellMeta extends Pick<MetaData, 'key' | 'displayName' | 'preSort' | 'fieldType' | 'order' | 'width'>{\r\n customCell: true;\r\n noExport?: boolean;\r\n}\r\n","import { Predicate } from \"@angular/core\";\r\nimport { merge } from \"lodash\";\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\nimport { StylerStyle } from \"../../utilities/directives/styler\";\r\n\r\nexport interface TableBuilderSettings<T = any> {\r\n headerSettings? : Partial<TableWrapperHeaderSettings>;\r\n footerSettings? : Partial<TableWrapperFooterSettings>;\r\n columnHeaderSettings? : Partial<TableColumnHeaderSettings>;\r\n columnFooterSettings? : Partial<TableColumnFooterSettings>;\r\n tableSettings? : Partial<TableSettings<T>>;\r\n}\r\n\r\nexport class GeneralTableSettings implements TableBuilderSettings {\r\n headerSettings = new TableWrapperHeaderSettings();\r\n footerSettings = new TableWrapperFooterSettings();\r\n columnHeaderSettings = new TableColumnHeaderSettings();\r\n columnFooterSettings = new TableColumnFooterSettings();\r\n tableSettings = new TableSettings();\r\n}\r\n\r\nexport class TableWrapperHeaderSettings {\r\n hideExport = false\r\n hideFilter = false\r\n hideColumnSettings = false\r\n hideHeader = false\r\n hideSort = false\r\n collapse = false\r\n showTitleWhenCollapsed = true;\r\n headerHeight: TbSize | undefined = undefined;\r\n}\r\n\r\nexport class TableWrapperFooterSettings {\r\n collapse = false\r\n}\r\n\r\nexport class TableColumnHeaderSettings {\r\n stickyHeaderRow = true;\r\n noFilters = false;\r\n noHeader = false;\r\n}\r\n\r\nexport class TableColumnFooterSettings {\r\n stickyFooterRow = false;\r\n}\r\n\r\nexport class TableSettings<T = any> {\r\n tableId?: string | undefined = undefined;\r\n trackBy?: string | undefined = undefined;\r\n includeIndexColumn = false;\r\n includeSelectionColumn = false;\r\n usePaginator: boolean | undefined = undefined;\r\n useVirtualScroll: boolean | undefined = undefined;\r\n paginatorSettings: Partial<PaginatorOptions> | undefined = undefined;\r\n virtualScrollSettings: Partial<VirtualScrollOptions> | undefined = undefined;\r\n rowHeight: TbSize | undefined = undefined;\r\n groupHeaderHeight?: TbSize = undefined;\r\n minColumnWidth: TbSize | undefined;\r\n rowClasses: Dictionary<Predicate<T> | true> | undefined;\r\n rowStyles: StylerStyle<T> | undefined;\r\n rowClick: ((row: T, event?: MouseEvent) => void) | undefined = undefined;\r\n}\r\n\r\nexport class PersistedTableSettings {\r\n constructor(tableSettings?: NonFunctionProperties<PersistedTableSettings>){\r\n if(tableSettings){\r\n this.collapseHeader = tableSettings.collapseHeader;\r\n this.collapseFooter = tableSettings.collapseFooter;\r\n }\r\n }\r\n\r\n merge(tableSettings?: TableBuilderSettings){\r\n const newPts = new PersistedTableSettings(this);\r\n if(tableSettings){\r\n newPts.collapseHeader = tableSettings.headerSettings?.collapse ?? newPts.collapseHeader;\r\n newPts.collapseFooter = tableSettings.footerSettings?.collapse ?? newPts.collapseFooter;\r\n }\r\n return newPts;\r\n }\r\n\r\n collapseHeader = false;\r\n collapseFooter = false;\r\n}\r\n\r\nexport class NotPersistedTableSettings {\r\n merge(tableSettings?: TableBuilderSettings){\r\n const newNpts = merge(this, new NotPersistedTableSettings());\r\n if(tableSettings){\r\n newNpts.hideExport = tableSettings.headerSettings?.hideExport ?? newNpts.hideExport;\r\n newNpts.hideColumnSettings = tableSettings.headerSettings?.hideColumnSettings ?? newNpts.hideColumnSettings;\r\n newNpts.hideFilter = tableSettings.headerSettings?.hideFilter ?? newNpts.hideFilter;\r\n newNpts.hideSort = tableSettings.headerSettings?.hideSort ?? newNpts.hideSort;\r\n newNpts.showTitleWhenHeaderCollapsed = tableSettings.headerSettings?.showTitleWhenCollapsed ?? newNpts.showTitleWhenHeaderCollapsed;\r\n newNpts.hideHeader = tableSettings.headerSettings?.hideHeader ?? newNpts.hideHeader;\r\n newNpts.hideColumnHeaderFilters = tableSettings.columnHeaderSettings?.noFilters ?? newNpts.hideColumnHeaderFilters;\r\n newNpts.hideColumnHeader = tableSettings.columnHeaderSettings?.noHeader ?? newNpts.hideColumnHeader;\r\n newNpts.usePaginator = tableSettings.tableSettings?.usePaginator ?? newNpts.usePaginator;\r\n newNpts.useVirtualScroll = tableSettings.tableSettings?.useVirtualScroll != undefined ? tableSettings.tableSettings?.useVirtualScroll :\r\n tableSettings.tableSettings?.virtualScrollSettings ? true\r\n : newNpts.useVirtualScroll;\r\n newNpts.rowHeight = tableSettings.tableSettings?.rowHeight ?? newNpts.rowHeight;\r\n newNpts.headerHeight = tableSettings.headerSettings?.headerHeight ?? newNpts.headerHeight;\r\n newNpts.groupHeaderHeight = tableSettings.tableSettings?.groupHeaderHeight ?? newNpts.groupHeaderHeight;\r\n newNpts.minColumnWidth = tableSettings.tableSettings?.minColumnWidth ?? newNpts.minColumnWidth;\r\n newNpts.rowClasses = tableSettings.tableSettings?.rowClasses ?? newNpts.rowClasses;\r\n newNpts.rowStyles = tableSettings.tableSettings?.rowStyles ?? newNpts.rowStyles;\r\n newNpts.rowClick = tableSettings.tableSettings?.rowClick ?? newNpts.rowClick;\r\n\r\n if(tableSettings.tableSettings?.virtualScrollSettings){\r\n const currVirt = tableSettings.tableSettings?.virtualScrollSettings || newNpts.virtualSettings;\r\n if(!currVirt.headerHeight){\r\n currVirt.headerHeight = tableSettings.headerSettings?.headerHeight || DefaultVirtualScrollOptions.headerHeight;\r\n }\r\n if(!currVirt.rowHeight){\r\n currVirt.rowHeight = tableSettings.tableSettings?.rowHeight || DefaultVirtualScrollOptions.rowHeight;\r\n }\r\n newNpts.virtualSettings = { ...new VirtualScrollOptions(), ...currVirt }\r\n } else newNpts.virtualSettings ??= new VirtualScrollOptions();\r\n if(tableSettings.tableSettings?.paginatorSettings){\r\n const currPag = tableSettings.tableSettings?.paginatorSettings ? merge(newNpts.paginatorSettings, tableSettings.tableSettings?.paginatorSettings) : (newNpts.paginatorSettings ?? new PaginatorOptions());\r\n currPag.includeAllInOptions = (currPag.defaultAll && currPag.includeAllInOptions !== false) || currPag.includeAllInOptions;\r\n newNpts.paginatorSettings = { ...new PaginatorOptions(), ...currPag };\r\n } else newNpts.paginatorSettings ??= new PaginatorOptions();\r\n }\r\n return newNpts;\r\n }\r\n hideExport = false\r\n hideFilter = false\r\n hideColumnSettings = false\r\n hideSort = false\r\n showTitleWhenHeaderCollapsed = true;\r\n hideHeader = false\r\n hideColumnHeaderFilters = false;\r\n hideColumnHeader = false;\r\n usePaginator: boolean = true;\r\n useVirtualScroll: boolean = false;\r\n paginatorSettings: PaginatorOptions | undefined = undefined;\r\n virtualSettings: VirtualScrollOptions | undefined = undefined;\r\n groupHeaderHeight?: TbSize = undefined;\r\n rowHeight?: TbSize | undefined;\r\n headerHeight?: TbSize = undefined;\r\n minColumnWidth?: TbSize | undefined;\r\n rowClasses?: Dictionary<Predicate<any> | true> | undefined;\r\n rowStyles?: StylerStyle | undefined;\r\n rowClick?: ((row: any, event?: MouseEvent) => void) | undefined = undefined;\r\n}\r\n\r\nexport class VirtualScrollOptions {\r\n rowHeight: TbSize = 48;\r\n enforceRowHeight = true;\r\n headerHeight: TbSize = 56;\r\n enforceHeaderHeight = true;\r\n amountOfVisibleItems = 10;\r\n /**\r\n * This will win over `amountOfVisibleItems`\r\n */\r\n maxViewPortHeight: TbSize | undefined = undefined;\r\n /**\r\n * Will try to bring the table to the bottom of the screen\r\n * If `amountOfVisibleItems` is set that will be the minimum number of rows\r\n * If `maxViewPortHeight` is set that will be the max table size\r\n */\r\n dynamicHeight = false;\r\n\r\n /**\r\n * If `dynamicHeight` is set to true, we will try to add this amount of space from the bottom of view port\r\n */\r\n dynamicalHeightBuffer: TbSize = 0;\r\n}\r\n\r\nexport class PaginatorOptions {\r\n pageSize: number | undefined = undefined;\r\n defaultAll = false;\r\n includeAllInOptions = false;\r\n}\r\n\r\nexport const DefaultVirtualScrollOptions = {\r\n rowHeight: 48,\r\n headerHeight: 56,\r\n};\r\n\r\ntype NonFunctionPropertyNames<T> = {\r\n [K in keyof T]: T[K] extends Function ? never : K\r\n}[keyof T];\r\n\r\nexport type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;\r\nexport type TbSize = number | `${number}${'px' | 'rem' }`\r\n\r\nexport function parseTbSizeToPixels(size?: TbSize) {\r\n if(!size) return undefined;\r\n if(typeof size === 'number') return size;\r\n if(size.endsWith('px')) return Number(size.replace('px', ''));\r\n if(size.endsWith('rem')) {\r\n const htmlElement = document.documentElement;\r\n const remSize = window.getComputedStyle(htmlElement).getPropertyValue('font-size');\r\n const remSizeNum = Number(remSize.replace('px', ''));\r\n const num = Number(size.replace('rem', ''));\r\n return num * remSizeNum;\r\n }\r\n return undefined;\r\n}\r\n","import { CustomFilter, FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';\r\nimport { LinkInfo } from '../services/link-creator.service';\r\nimport { TableProps } from '../components/table-container/tableProps';\r\n\r\nexport type NoneGroupHeader = { isGroupHeader: never } ;\r\nexport interface BaseGroup {\r\n key: string;\r\n groupName: string;\r\n groupHeaderDisplay: string;\r\n uniqueName: string;\r\n isGroupHeader: true;\r\n padding: number;\r\n length: number;\r\n hasTheData: boolean;\r\n level: number;\r\n}\r\n\r\nexport interface DataGroup<T extends NoneGroupHeader = any> extends BaseGroup {\r\n children: T[];\r\n hasTheData: true;\r\n}\r\n\r\nexport interface GroupGroup<T extends NoneGroupHeader = any> extends BaseGroup {\r\n groups: (DataGroup<T> | GroupGroup<T>)[];\r\n hasTheData: false;\r\n}\r\n\r\nexport type Group<T extends NoneGroupHeader = any> = GroupGroup<T> | DataGroup<T>\r\n\r\nexport interface GroupedData {\r\n key: string,\r\n expandedHeaders: string[]\r\n}\r\n\r\nexport function isGroupHeader(data: any): data is Group {\r\n return !!data?.isGroupHeader;\r\n}\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n filters: Dictionary<FilterInfo | CustomFilter>;\r\n sorted : Sort [];\r\n userDefined : {\r\n order:Dictionary<number>,\r\n widths:Dictionary<number>,\r\n table:{ width?:number },\r\n pageSize?: number,\r\n showAll?: boolean,\r\n rowHeight?: number,\r\n headerHeight?: number,\r\n };\r\n persistedTableSettings : PersistedTableSettings;\r\n groupBy: GroupedData[];\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n initializationState: InitializationState;\r\n metaData: Dictionary<MetaData>;\r\n notPersistedTableSettings : NotPersistedTableSettings;\r\n pageSize: number;\r\n currentPage: number;\r\n linkMaps: Dictionary<LinkInfo>;\r\n props: TableProps;\r\n showAll: boolean;\r\n}\r\nexport interface DataState {\r\n virtualScrollOffset: number;\r\n virtualEnds: {start: number, end: number};\r\n sortedFilteredDataLength: number;\r\n sortedFilteredGroupedDataLength: number;\r\n}\r\ntype RequireNull<T> = { [K in keyof T]: null };\r\nclass KeysToDelete implements RequireNull<Omit<TableState, keyof PersistedTableState>> {\r\n initializationState = null;\r\n metaData = null;\r\n notPersistedTableSettings = null;\r\n linkMaps = null;\r\n pageSize = null;\r\n currentPage = null;\r\n virtualScrollOffset = null;\r\n dataLen = null;\r\n virtualEnds = null;\r\n virtualEnd = null;\r\n props = null;\r\n showAll = null;\r\n minColumnWidth = null;\r\n}\r\nexport const keysToDelete = Object.keys(new KeysToDelete());\r\n\r\nexport enum InitializationState {\r\n Created,\r\n MetaDataLoaded,\r\n TableSettingsLoaded,\r\n Ready,\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n initializationState: InitializationState.Created,\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined: { order: {}, widths: {}, table: {} },\r\n persistedTableSettings: new PersistedTableSettings(),\r\n notPersistedTableSettings: new NotPersistedTableSettings(),\r\n pageSize: 10,\r\n linkMaps: {},\r\n groupBy: [],\r\n currentPage: 0,\r\n\r\n props: {} as TableProps,\r\n showAll: false,\r\n};\r\nexport const defaultDataState: DataState = {\r\n virtualScrollOffset: 0,\r\n sortedFilteredDataLength: 0,\r\n sortedFilteredGroupedDataLength: 0,\r\n virtualEnds: {\r\n start: 0, end: 20\r\n },\r\n}\r\n","import { ArrayStyle } from '../interfaces/report-def';\r\n\r\nexport interface DefaultSettings {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n}\r\n\r\nexport const ArrayDefaults = {\r\n limit: 3,\r\n arrayStyle: ArrayStyle.CommaDelimited\r\n}","import { Directive, TemplateRef, inject, input, computed, signal, OnInit } from '@angular/core';\r\nimport { CdkColumnDef } from '@angular/cdk/table';\r\nimport { CustomCellMeta, FieldType, SortDef } from '../interfaces/report-def';\r\nimport { TableBuilder } from '../classes/table-builder';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\n\r\ninterface CustomCellContext<T> {\r\n $implicit: T,\r\n element: T,\r\n}\r\n// here is how to use it\r\n// <generic-table [report]=\"report\">\r\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\r\n// <p *customCell=\"'column2'\">I am custom cell two </p>\r\n// </generic-table>\r\n@Directive({ selector: '[customCell]' })\r\nexport class CustomCellDirective<T = any> implements OnInit {\r\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true });\r\n public columnDef = inject(CdkColumnDef, { optional: true });\r\n $customCell = input.required<string>({ alias: 'customCell' });\r\n $displayName = input<string | undefined>(undefined, { alias: 'customCellDisplayName' });\r\n $preSort = input<SortDef | undefined>(undefined, { alias: 'preSort' });\r\n $templateRef = input<TemplateRef<any> | undefined>(this.templateRef || undefined, { alias: 'templateRef' });\r\n $customCellOrder = input<number | undefined>(undefined, { alias: 'customCellOrder' });\r\n $customCellWidth = input<string | undefined>(undefined, { alias: 'customCellWidth' });\r\n /**\r\n * for type safety, this is a reference to the table builder instance.\r\n */\r\n $customCellTableRef = input<TableBuilder<T> | undefined>(undefined, { alias: 'customCellTableRef' });\r\n /**\r\n * true if column not mapped to a property in the data source. Default is false.\r\n */\r\n $customCellNotMapped = input(false, { alias: 'customCellNotMapped', transform: coerceBooleanProperty });\r\n $metaData = computed((): CustomCellMeta | undefined => {\r\n const c = this.$customCell();\r\n if(!c) return;\r\n return ({\r\n key: this.$customCell(),\r\n displayName: this.$displayName(),\r\n preSort: this.$preSort(),\r\n fieldType: this.$customCellNotMapped() ? FieldType.NotMapped : FieldType.Unknown,\r\n order: this.$customCellOrder(),\r\n width: this.$customCellWidth(),\r\n customCell: true,\r\n noExport: true,\r\n })\r\n });\r\n $inited = signal(false);\r\n\r\n ngOnInit(){\r\n this.$inited.set(true);\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: CustomCellDirective<T>, ctx: any): ctx is CustomCellContext<T> {\r\n return true;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2, Input, ElementRef, booleanAttribute, inject } from \"@angular/core\";\r\nimport { fromEvent } from \"rxjs\";\r\nimport { filter, map, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { defaultShareReplay } from \"../../rxjs\";\r\nimport { TableStore } from \"../classes/table-store\";\r\n\r\n@Directive({\r\n selector: \"[resizeColumn]\",\r\n})\r\nexport class ResizeColumnDirective implements OnInit{\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n store = inject(TableStore);\r\n\r\n @Input({ alias: 'resizeColumn', transform: booleanAttribute }) resizable: boolean | string = false;\r\n\r\n @Input() key!: string;\r\n\r\n ngOnInit(){\r\n if(this.resizable){\r\n const { table, columnHead } = this.getTableAndColumnHeadHtmlElements();\r\n const resizer = this.createResizerSpanInColumnHead(columnHead);\r\n\r\n const aggregateMouseEventsMapped$ = this.mouseDownThroughMouseUpEventMapper(resizer, columnHead, table)\r\n\r\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\r\n filter(({ mouseMove }) => !!mouseMove.buttons),\r\n map( ({ mouseDownData, mouseMove }) => {\r\n const { newTableWidth, newColumnWidth } = this.calculateNewWidths(mouseDownData, mouseMove)\r\n return ({\r\n key: this.key,\r\n widthInPixel: newColumnWidth,\r\n tableSize: newTableWidth,\r\n })\r\n }),\r\n defaultShareReplay()\r\n );\r\n\r\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\r\n map(resizeData => ([{ key: this.key, widthInPixel: resizeData.widthInPixel }]))\r\n ));\r\n\r\n this.store.setTableWidth(resizeColsData$.pipe(\r\n map(resizeData => resizeData.tableSize )));\r\n }\r\n\r\n }\r\n\r\n createResizerSpanInColumnHead(columnHead:HTMLElement){\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n resizer.style['cursor'] = 'col-resize';\r\n resizer.style['user-select'] = 'none';\r\n resizer.style['width'] = '10px';\r\n resizer.style['height'] = '100%';\r\n resizer.style['position'] = 'absolute';\r\n resizer.style['right'] = '0';\r\n resizer.style['top'] = '0';\r\n resizer.style['z-index'] = '1';\r\n this.renderer.appendChild(columnHead, resizer);\r\n return resizer;\r\n }\r\n\r\n getTableAndColumnHeadHtmlElements():{table:HTMLElement, columnHead:HTMLElement}{\r\n const columnHead: HTMLElement = this.el.nativeElement;\r\n const row = this.renderer.parentNode(columnHead);\r\n const table = this.renderer.parentNode(row);\r\n return ({ table, columnHead })\r\n }\r\n\r\n mouseDownThroughMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return this.resizerMouseDownEventMapper(resizer, columnHead, table)\r\n .pipe(\r\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\r\n map( mouseMove => ({ mouseDownData, mouseMove })),\r\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\r\n ) ),\r\n )\r\n }\r\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\r\n map(event => ({\r\n startPageX: event.pageX,\r\n startColumnWidth: this.getElementWidth(columnHead),\r\n startTableWidth: this.getElementWidth(table),\r\n }))\r\n );\r\n }\r\n\r\n calculateNewWidths(mouseDownData: MouseDownData, mouseMove: MouseEvent):{newTableWidth:number, newColumnWidth:number}{\r\n const change = (mouseMove.pageX - mouseDownData.startPageX );\r\n let newColumnWidth = mouseDownData.startColumnWidth + change;\r\n if(newColumnWidth < 1){\r\n newColumnWidth = 1;\r\n }\r\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\r\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\r\n return ({ newTableWidth, newColumnWidth })\r\n }\r\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px', '')))\r\n\r\n}\r\ninterface MouseDownData{\r\n startPageX:number,\r\n startColumnWidth:number,\r\n startTableWidth:number,\r\n}\r\n","import { Directive, signal } from \"@angular/core\";\r\nimport { TableCustomFilterDirective, TableFilterDirective } from \"./tb-filter.directive\";\r\n\r\n@Directive({\r\n selector: '[tbWrapper]',\r\n})\r\nexport class TableWrapperDirective {\r\n $registrations = signal([] as (TableCustomFilterDirective | TableFilterDirective)[]);\r\n\r\n register(filter: TableCustomFilterDirective | TableFilterDirective) {\r\n this.$registrations.update( registrations => [...registrations, filter] );\r\n }\r\n}\r\n","\r\nexport const FilterType = {\r\n NumberEquals: 'Equals',\r\n NumberNotEqual: 'Does Not Equal',\r\n NumberGreaterThan: 'Greater Than',\r\n NumberLessThan: 'Less Than',\r\n NumberBetween: 'Between',\r\n StringEquals: 'Equals',\r\n StringContains: 'Contains',\r\n StringDoesNotContain: 'Does Not Contain',\r\n StringStartWith: 'Start With',\r\n StringEndsWith: 'Ends With',\r\n DateIsOn: 'Is on',\r\n DateIsNotOn: 'Is Not On',\r\n DateOnOrAfter: 'On or After',\r\n DateOnOrBefore: 'On or Before',\r\n DateBetween: 'Between',\r\n DateTimeIsAt: 'Is At',\r\n DateTimeIsNotAt: 'Is Not At',\r\n DateTimeAtOrAfter: 'At or After',\r\n DateTimeAtOrBefore: 'At or Before',\r\n DateTimeBetween: 'Between',\r\n BooleanEquals: 'Is',\r\n IsNull: 'Is Blank',\r\n Or: 'Or',\r\n And: 'And',\r\n In: 'In',\r\n Custom: 'Custom',\r\n} as const;\r\n\r\nexport type FilterType = typeof FilterType[keyof typeof FilterType];\r\n\r\nexport type SubFilterTypes<T extends typeof FilterType[keyof typeof FilterType]> = T;\r\n\r\nexport type StringFilterTypes = SubFilterTypes<'Equals' | 'Contains' | 'Does Not Contain' | 'Start With' | 'Ends With' | 'Is Blank' | 'In'>;\r\nexport type NumberFilterTypes = SubFilterTypes<'Equals' | 'Does Not Equal' | 'Greater Than' | 'Less Than' | 'Between' | 'Is Blank' | 'In'>;\r\nexport type DateFilterTypes = SubFilterTypes<'Is on' | 'Is Not On' | 'On or After' | 'On or Before' | 'Between' | 'Is Blank' | 'In'>;\r\nexport type DateTimeFilterTypes = SubFilterTypes<'Is At' | 'Is Not At' | 'At or After' | 'At or Before' | 'Between' | DateFilterTypes>;\r\nexport type BooleanFilterTypes = SubFilterTypes<'Is' | 'Is Blank'>;\r\nexport type EnumFilterTypes = SubFilterTypes<'In' | 'Is Blank'>;","import { Directive, Input, Predicate, Signal, SimpleChanges, inject, OnChanges, OnInit, OnDestroy } from \"@angular/core\";\r\nimport { Observable, ReplaySubject, takeUntil, tap } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo } from \"../classes/filter-info\";\r\nimport { FilterType } from \"../enums/filterTypes\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { MatRadioButton } from \"@angular/material/radio\";\r\nimport { MatButtonToggle } from '@angular/material/button-toggle';\r\nimport { MatCheckbox } from \"@angular/material/checkbox\";\r\nimport { FieldType } from \"../interfaces/report-def\";\r\nimport { NgControl } from \"@angular/forms\";\r\nimport { TableWrapperDirective } from \"./table-wrapper.directive\";\r\nimport { MatOption } from \"@angular/material/core\";\r\nimport { subscriber } from \"../../rxjs\";\r\nimport { toSignal } from \"@angular/core/rxjs-interop\";\r\n\r\n\r\nconst inputs = [\r\n 'predicate: tbCustomFilter',\r\n 'filterId: filterId',\r\n];\r\n\r\n\r\n@Directive({\r\n selector: 'tb-abstract'\r\n})\r\nexport abstract class TableCustomFilterDirective {\r\n abstract filter$ : Observable<CustomFilter>;\r\n abstract $filter: Signal<CustomFilter | undefined>;\r\n filterId!: string;\r\n savable = false;\r\n abstract active: boolean;\r\n abstract reset(): void;\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[tbFilter]\",\r\n}) export class TableFilterDirective implements OnChanges, OnInit {\r\n protected model = inject(NgControl, { optional: true });\r\n private wrapper = inject(TableWrapperDirective, { optional: true });\r\n constructor() {\r\n if(this.wrapper) {\r\n this.wrapper.register(this);\r\n }\r\n if(this.model) {\r\n subscriber(this.model!.valueChanges!, val => {\r\n if(this.filterType === FilterType.StringContains && val === ''){\r\n val = undefined\r\n }\r\n this.filterValue = val;\r\n this.update();\r\n })\r\n }\r\n }\r\n reset() {\r\n this.filterValue = undefined;\r\n }\r\n filter$ = new ReplaySubject<FilterInfo>(1);\r\n $filter = toSignal(this.filter$);\r\n\r\n @Input() filterType!: FilterType;\r\n @Input() key!: string;\r\n @Input() fieldType!: FieldType;\r\n @Input() filterId!: string;\r\n @Input() active = true;\r\n @Input() filterValue: any = null;\r\n\r\n setFilterValue(value: any) {\r\n if(this.model) {\r\n setTimeout(() => {\r\n this.model!.reset(value);\r\n }, 0);\r\n } else {\r\n this.filterValue = value;\r\n }\r\n }\r\n\r\n savable = false;\r\n ready = false;\r\n\r\n _userActive = true;\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.update();\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = crypto.randomUUID();\r\n } else {\r\n this.savable = true;\r\n }\r\n this.ready = true;\r\n this.update();\r\n }\r\n\r\n protected setFilter(filter: FilterInfo ) {\r\n this.filter$.next(filter);\r\n }\r\n\r\n update() {\r\n if(this.ready) {\r\n this.setFilter(\r\n {\r\n filterId: this.filterId,\r\n key: this.key,\r\n filterType: this.filterType,\r\n fieldType: this.fieldType,\r\n filterValue: this.filterValue,\r\n active: this.active && this.filterValue !== undefined,\r\n _isExternallyManaged: true,\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[tbFilterStringContains]',\r\n providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }],\r\n inputs: [\r\n 'key:tbFilterStringContains',\r\n 'filterValue:filterValue',\r\n 'filterId: filterId',\r\n 'active: active',\r\n ],\r\n}) export class TableFilterStringContainsDirective extends TableFilterDirective implements OnChanges {\r\n constructor() {\r\n super();\r\n this.filterType = FilterType.StringContains;\r\n this.fieldType = FieldType.String;\r\n }\r\n\r\n override reset() {\r\n if(this.model) {\r\n this.model.reset();\r\n }\r\n super.reset();\r\n }\r\n\r\n override setFilter(filter: FilterInfo) {\r\n filter.active = filter.filterValue && this._userActive;\r\n super.setFilter(filter);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes['active']) {\r\n this._userActive = changes['active'].currentValue;\r\n }\r\n super.ngOnChanges(changes);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[tbCustomFilter]\",\r\n})\r\nexport abstract class TableCustomFilterDirectiveBase<T = any> extends TableCustomFilterDirective implements OnInit {\r\n\r\n filter$ = new ReplaySubject<CustomFilter>(1);\r\n $filter = toSignal(this.filter$);\r\n filter!: CustomFilter;\r\n\r\n _predicate!: Predicate<T>;\r\n @Input('tbCustomFilter') set predicate( val: Predicate<T> ) {\r\n this._predicate = val;\r\n this.update({ predicate: val });\r\n }\r\n\r\n _active: boolean = false;\r\n ready = false;\r\n\r\n update(val: Partial<CustomFilter> ) {\r\n if(this.ready) {\r\n this.filter = { ...this.filter, ...val };\r\n this.filter$.next(this.filter);\r\n }\r\n }\r\n\r\n @Input() set active(val: boolean) {\r\n if(this._active !== val) {\r\n this._active = val;\r\n this.update({ active: val });\r\n }\r\n }\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = crypto.randomUUID();\r\n } else {\r\n this.savable = true;\r\n }\r\n\r\n this.filter = {\r\n filterType: FilterType.Custom,\r\n filterId: this.filterId,\r\n active: this._active,\r\n predicate: this._predicate,\r\n };\r\n this.ready = true;\r\n this.filter$.next(this.filter);\r\n }\r\n}\r\n\r\n@Directive()\r\nexport abstract class TbSelectedFilterDirective extends TableCustomFilterDirectiveBase implements OnDestroy, OnInit {\r\n\r\n protected wrapper = inject(TableWrapperDirective, { optional: true });\r\n protected constructor(private change: Observable<any>, private isActive: () => boolean) {\r\n super();\r\n if(this.wrapper) {\r\n this.wrapper.register(this);\r\n }\r\n }\r\n\r\n reset() {\r\n this.active = false;\r\n }\r\n\r\n destroySubject$ = new ReplaySubject<void>(1);\r\n ngOnDestroy() {\r\n this.destroySubject$.next();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._active = this.isActive();\r\n super.ngOnInit();\r\n this.change.pipe(takeUntil(this.destroySubject$)).subscribe( () => {\r\n this.active = this.isActive();\r\n });\r\n }\r\n}\r\n\r\n// Checkbox\r\n@Directive({\r\n selector: 'mat-checkbox[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }],\r\n})\r\nexport class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {\r\n private matCheckbox = inject(MatCheckbox);\r\n\r\n\r\n override set active(val: boolean) {\r\n this.matCheckbox.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matCheckbox = inject(MatCheckbox);\r\n super(matCheckbox.change, () => matCheckbox.checked);\r\n this.matCheckbox = matCheckbox;\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'mat-slide-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }],\r\n})\r\nexport class MatSlideToggleTbFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matSlideToggle: MatSlideToggle;\r\n\r\n override set active(val: boolean) {\r\n this.matSlideToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matSlideToggle = inject(MatSlideToggle);\r\n\r\n super(matSlideToggle.change, () => matSlideToggle.checked);\r\n this.matSlideToggle = matSlideToggle;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Radio button\r\n@Directive({\r\n selector: 'mat-radio-button[tbCustomFilter]',\r\n inputs: ['predicate: tbCustomFilter'],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }],\r\n})\r\nexport class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matRadioButton: MatRadioButton;\r\n\r\n\r\n override set active(val: boolean) {\r\n this.matRadioButton.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matRadioButton = inject(MatRadioButton);\r\n\r\n super(matRadioButton.change, () => matRadioButton.checked);\r\n this.matRadioButton = matRadioButton;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Option (select)\r\n@Directive({\r\n selector: 'mat-option[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }],\r\n})\r\nexport class MatOptionTbFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matOption: MatOption;\r\n\r\n override set active(val: boolean) {\r\n if(val) {\r\n this.matOption.select();\r\n } else {\r\n this.matOption.deselect();\r\n }\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matOption = inject(MatOption);\r\n\r\n super( matOption.onSelectionChange.pipe(tap( d => {\r\n if(!matOption.value) {\r\n matOption.value = crypto.randomUUID();\r\n }\r\n }\r\n\r\n )), () => matOption.selected);\r\n this.matOption = matOption;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Button toggle\r\n@Directive({\r\n selector: 'mat-button-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }],\r\n})\r\nexport class MatButtonToggleFilterDirective extends TbSelectedFilterDirective implements OnInit {\r\n private matButtonToggle: MatButtonToggle;\r\n\r\n override set active(val: boolean) {\r\n this.matButtonToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matButtonToggle = inject(MatButtonToggle);\r\n\r\n super(matButtonToggle.change, () => matButtonToggle.checked);\r\n this.matButtonToggle = matButtonToggle;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'phone' })\r\nexport class PhoneNumberPipe implements PipeTransform {\r\n\r\n transform(phoneNum: string): any {\r\n return phoneFormatter(phoneNum);\r\n }\r\n}\r\n\r\nexport function phoneFormatter(phoneNum: string): string {\r\n if(phoneNum) {\r\n phoneNum = phoneNum.replace(/\\D/g, '');\r\n if(phoneNum[0] === '1') {\r\n phoneNum = phoneNum.substring(1);\r\n }\r\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\r\n }\r\n return '';\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'spaceCase' })\r\nexport class SpaceCasePipe implements PipeTransform {\r\n transform(value: string): string {\r\n return spaceCase(value);\r\n }\r\n}\r\n\r\n/**\r\n * Adds a space before uppercase letters that either\r\n * 1. follows a lowercase letter or digit\r\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\r\n *\r\n * Uppercases the first digit\r\n *\r\n * Turns underscores into spaces\r\n */\r\nexport function spaceCase(value: string){\r\n const phrase = value?.replace(regex1, '$1$3 $2$4')\r\n // uppercase the first character of every word\r\n return phrase?.replace(regex2, x => x.toUpperCase());\r\n}\r\n\r\nconst regex1 = /([a-z0-9])([A-Z])|([a-zA-Z0-9])([A-Z])(?=[a-z])|_/g;\r\nconst regex2 = /(^| )(\\w)/g;\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\nimport { ArrayDefaults, DefaultSettings } from './DefaultSettings';\r\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\r\nimport { MultiSortDirective } from '../directives';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../../utilities/pipes/space-case.pipes';\r\nimport { TableBuilderSettings } from './table-builder-general-settings';\r\nexport interface TableBuilderConfig {\r\n defaultTableSettings: Partial<Omit<TableBuilderSettings, 'injector' >> & { pageSize?: number };\r\n export?: TableBuilderExport;\r\n dateFormats?: DefaultSettings;\r\n arrayDefaults?: ArrayAdditional;\r\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\r\n}\r\n\r\nconst defaultConfig: TableBuilderConfig = {\r\n defaultTableSettings: {\r\n pageSize: 10\r\n },\r\n arrayDefaults: ArrayDefaults\r\n}\r\n\r\nexport interface TableBuilderExport {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n onSave?: (event?: any) => void;\r\n prepend? : string;\r\n}\r\n\r\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\r\n\r\nexport function provideTableBuilder(config?: TableBuilderConfig) : EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n MultiSortDirective,\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n { provide: TableBuilderConfigToken, useValue: config || defaultConfig }\r\n ])\r\n}\r\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\r\n\r\nexport const isNull:FilterFunc<boolean, any> = (filterInfo:FilterInfo) => {\r\n const func = filterInfo.filterValue ?\r\n (val: any) => val == null || val === ''\r\n :\r\n (val: any) => val != null && val !== '';\r\n return func;\r\n}\r\n","import { FilterFunc, FilterFuncs, FilterInfo } from '../classes/filter-info';\r\nimport { EnumFilterTypes, FilterType, StringFilterTypes } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst stringEqualFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const equalsVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val) === equalsVal );\r\n}\r\n\r\nconst stringContainsFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const containsVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val).includes(containsVal));\r\n}\r\n\r\nconst stringDoesNotContainFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const doesNotContainVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => !prepareForStringCompare(val)?.includes(doesNotContainVal));\r\n}\r\n\r\nconst stringStartsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val).startsWith(startsWith));\r\n}\r\n\r\nconst stringEndsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val) => prepareForStringCompare(val).endsWith(startsWith));\r\n}\r\n\r\nconst multipleStringValuesEqualsFunc:FilterFunc<string[], string> = (filterInfo:FilterInfo) => {\r\n const filterVals = (filterInfo.filterValue as string[]).map((v) => prepareForStringCompare(v));\r\n return ((val) => {\r\n const v = prepareForStringCompare(val);\r\n return filterVals.some((s) => v === s)});\r\n}\r\n\r\nexport const StringFilterFuncs: FilterFuncs<StringFilterTypes> = {\r\n [FilterType.StringEquals]: stringEqualFunc,\r\n [FilterType.StringContains]: stringContainsFunc,\r\n [FilterType.StringDoesNotContain]: stringDoesNotContainFunc,\r\n [FilterType.StringStartWith]: stringStartsWithFunc,\r\n [FilterType.StringEndsWith]: stringEndsWithFunc,\r\n [FilterType.IsNull]: isNull,\r\n [FilterType.In]: multipleStringValuesEqualsFunc,\r\n};\r\n\r\nexport const EnumFilterFuncs: FilterFuncs<EnumFilterTypes> = {\r\n [FilterType.IsNull]: isNull,\r\n [FilterType.In]: multipleStringValuesEqualsFunc,\r\n};\r\n\r\nexport const prepareForStringCompare = (val: any): string => (val?.toString().trim().toLowerCase());\r\n","import { Range, FilterFunc, FilterInfo, FilterFuncs } from '../classes/filter-info';\r\nimport { FilterType, NumberFilterTypes } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\ntype NumberFilterFunc = FilterFunc<number>\r\n\r\nconst numberEqalsFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val === filterInfo.filterValue;\r\n}\r\n\r\nconst numberNotEqualFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val !== filterInfo.filterValue;\r\n}\r\n\r\nconst numberGreaterThanFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val > filterInfo.filterValue;\r\n}\r\n\r\nconst numberLessThanFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val < filterInfo.filterValue;\r\n}\r\n\r\nconst numberBetweenFunc:FilterFunc<Range<number>, number> = (filterInfo : FilterInfo) => {\r\n const startVal = Number(filterInfo.filterValue.Start);\r\n const endVal = Number(filterInfo.filterValue.End);\r\n return ((val) => (val > startVal) && (val < endVal));\r\n}\r\n\r\nexport const multipleNumberValuesEqualsFunc:FilterFunc<number[], number> = (filterInfo:FilterInfo) => {\r\n return ((val) => filterInfo.filterValue.some((value: any) => val === value));\r\n}\r\n\r\nexport const NumberFilterFuncs: FilterFuncs<NumberFilterTypes> = {\r\n [FilterType.NumberEquals]: numberEqalsFunc,\r\n [FilterType.NumberNotEqual]: numberNotEqualFunc,\r\n [FilterType.NumberGreaterThan]: numberGreaterThanFunc,\r\n [FilterType.NumberLessThan]: numberLessThanFunc,\r\n [FilterType.NumberBetween]: numberBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n [FilterType.In]: multipleNumberValuesEqualsFunc,\r\n};\r\n","import { FilterFunc, FilterFuncs, FilterInfo, Range } from '../classes/filter-info';\r\nimport { DateFilterTypes, DateTimeFilterTypes, FilterType } from '../enums/filterTypes';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst dateIsOnFunc: FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() === isOnVal);\r\n}\r\n\r\nconst dateIsNotOnFunc: FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() !== isNotOnVal);\r\n}\r\n\r\nconst dateIsOnOrAfterFunc: FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const afterVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() >= afterVal);\r\n}\r\n\r\nconst dateIsOnOrBeforeFunc: FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const beforeVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => clean(filterInfo, val).getTime() <= beforeVal);\r\n}\r\n\r\nconst dateIsInFunc: FilterFunc<Date[], Date> = (filterInfo:FilterInfo) => {\r\n const filterVals = (filterInfo.filterValue as Date[]).map(v => new Date(v).getTime());\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return ((val) => {\r\n const d = clean(filterInfo, val).getTime();\r\n return filterVals.some((f) => f === d)});\r\n}\r\n\r\nconst dateBetweenFunc: FilterFunc<Range<Date>, Date> = (filterInfo:FilterInfo) => {\r\n const startVal = new Date(filterInfo.filterValue.Start);\r\n const endVal = new Date(filterInfo.filterValue.End);\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a, b) => b : cleanDateTime\r\n return (\r\n (val) => {\r\n const cleanedVal = clean(filterInfo, val);\r\n return cleanedVal >= startVal && cleanedVal <= endVal;\r\n });\r\n}\r\n\r\nconst cleanDateTime = (filterInfo:FilterInfo, val: Date) => {\r\n if(!!DateFilterFuncs[filterInfo.filterType]){\r\n const d = new Date(val);\r\n d.setHours(0, 0, 0, 0);\r\n return d;\r\n }\r\n return val;\r\n}\r\n\r\nexport const DateFilterFuncs: FilterFuncs<DateFilterTypes> = {\r\n [FilterType.DateIsOn]: dateIsOnFunc,\r\n [FilterType.DateIsNotOn]: dateIsNotOnFunc,\r\n [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateBetween]: dateBetweenFunc,\r\n [FilterType.In]: dateIsInFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n\r\nexport const DateTimeFilterFuncs: FilterFuncs<DateTimeFilterTypes> = {\r\n ...DateFilterFuncs,\r\n [FilterType.DateTimeIsAt]: dateIsOnFunc,\r\n [FilterType.DateTimeIsNotAt]: dateIsNotOnFunc,\r\n [FilterType.DateTimeAtOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateTimeAtOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateTimeBetween]: dateBetweenFunc,\r\n [FilterType.In]: dateIsInFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n","import { FilterFunc, FilterFuncs, FilterInfo } from '../classes/filter-info';\r\nimport { BooleanFilterTypes, FilterType } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\nconst booleanEqualsFunc : FilterFunc<boolean> = (filterInfo:FilterInfo) => (val): boolean => {\r\n return filterInfo.filterValue === val;\r\n}\r\n\r\nexport const BooleanFilterFuncs: FilterFuncs<BooleanFilterTypes> = {\r\n [FilterType.BooleanEquals]: booleanEqualsFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n","import { Predicate } from \"@angular/core\";\r\nimport { TableBuilderSort } from \"../components/table-container/table-container.helpers/sort-state.helpers\";\r\n\r\nexport function sortData<T>(data: T[], sorted: TableBuilderSort[]): T[] {\r\n return data.sort(compareT(sorted));\r\n}\r\n\r\nexport function filterData<T>(data: T[], filters: Predicate<T>[], resetAll = false){\r\n if(filters.length === 0){\r\n if(resetAll){\r\n for(let index = 0; index < data.length; index++) {\r\n const element = data[index];\r\n element[tbNoShowSymbol] = false;\r\n }\r\n }\r\n return data;\r\n }\r\n for(let index = 0; index < data.length; index++) {\r\n const element = data[index];\r\n const hide = !filters.every(filter => filter(element));\r\n if(hide || resetAll){\r\n element[tbNoShowSymbol] = hide;\r\n }\r\n }\r\n return data;\r\n}\r\n\r\nexport const tbNoShowSymbol = Symbol('tb_no_show');\r\n\r\nfunction compareT<T>(criteria: TableBuilderSort[]) {\r\n const transforms = criteria.reduce((acc, c) => {\r\n acc[c.active] = {\r\n transform: c.sortBy ? c.sortBy : getFactory(c.active), nulls: c.nulls === 'first' ? -1 : 1 };\r\n return acc;\r\n }, {} as Record<string, { transform: (t: T) => any, nulls: 1 | -1}>);\r\n\r\n return function (a: T, b: T): number {\r\n for(let index = 0; index < criteria.length; index++) {\r\n const c = criteria[index];\r\n const d = transforms[c.active];\r\n const nullValue = d.nulls;\r\n if(a == null) {\r\n if(b == null) return 0;\r\n return nullValue;\r\n }\r\n if(b == null) return -nullValue;\r\n const transform = d.transform;\r\n const aVal = transform(a);\r\n const bVal = transform(b);\r\n if(aVal == null) {\r\n if(bVal == null) return 0;\r\n return nullValue;\r\n }\r\n\r\n if(bVal == null) return -nullValue;\r\n if(aVal < bVal) return c.direction === 'asc' ? -1 : 1;\r\n if(aVal > bVal) return c.direction === 'asc' ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n}\r\n\r\nexport function getFactory(b: string){\r\n if(typeof b !== 'string') return (a) => a[b];\r\n if(!b.includes('.')) return (a) => {\r\n if(!a) return a;\r\n return a[b];\r\n };\r\n const arr = b.split('.');\r\n return (a) => {\r\n let val = a;\r\n if(!a) return a;\r\n for(let index = 0; index < arr.length; index++) {\r\n val = val[arr[index]];\r\n if(val == undefined) return undefined;\r\n if(typeof val !== 'object' && index + 1 < arr.length) return undefined;\r\n }\r\n return val;\r\n }\r\n}","import { FilterType } from '../enums/filterTypes';\r\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\r\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\r\nimport { DateFilterFuncs, DateTimeFilterFuncs } from '../functions/date-filter-function';\r\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Predicate } from '@angular/core';\r\nimport { getFactory } from '../functions/sort-data-function';\r\n\r\nconst filterFactoryMap: Dictionary<FilterFunc<any, any>> = {\r\n [FilterType.And]: (filter: FilterInfo ): ((obj: any) => boolean) => {\r\n const filters = createFilterFuncs(filter.filterValue as FilterInfo[]);\r\n return (obj: any) : boolean => filters.every( f => f(obj));\r\n },\r\n [FilterType.In]: (filter: FilterInfo ): (obj: any) => boolean => {\r\n const filters = createFilterFuncs(filter.filterValue as FilterInfo[]);\r\n return (obj: any) : boolean => filters.some( f => f(obj));\r\n },\r\n};\r\n\r\nconst filterTypeFuncMap : Record<FieldType, FilterFuncs<any>> = {\r\n [FieldType.Array]: StringFilterFuncs,\r\n [FieldType.Boolean]: BooleanFilterFuncs,\r\n [FieldType.Currency]: NumberFilterFuncs,\r\n [FieldType.Date]: DateFilterFuncs,\r\n [FieldType.DateTime]: DateTimeFilterFuncs,\r\n [FieldType.Enum]: EnumFilterFuncs,\r\n [FieldType.Link]: StringFilterFuncs,\r\n [FieldType.Number]: NumberFilterFuncs,\r\n [FieldType.PhoneNumber]: StringFilterFuncs,\r\n [FieldType.String]: StringFilterFuncs,\r\n [FieldType.Unknown]: StringFilterFuncs,\r\n} as Record<FieldType, FilterFuncs<any>>;\r\n\r\nexport const filterTypeMap = Object.entries(filterTypeFuncMap).reduce(\r\n (acc, [key, value]) => ({ ...acc, [key]: Object.keys(value) }), {} as Record<FieldType, FilterType[]>\r\n)\r\n\r\nexport interface FilterState {\r\n filterId: string;\r\n filterType: FilterType;\r\n filterValue?: any;\r\n active?: boolean;\r\n filterBy?: (t: any) => any\r\n}\r\n\r\nexport interface FilterInfo<T extends FieldType = any, U = any> extends FilterState {\r\n key: string & keyof U;\r\n fieldType: T;\r\n _isExternallyManaged?: boolean;\r\n}\r\n\r\nexport interface PartialFilter {\r\n filterId?: string;\r\n key: string;\r\n fieldType: FieldType;\r\n filterType?: FilterType;\r\n filterValue?: any;\r\n filterBy?: (t: any) => any\r\n}\r\n\r\n\r\nexport interface CustomFilter<T = any> extends FilterState {\r\n predicate: Predicate<T>;\r\n filterType: typeof FilterType.Custom;\r\n}\r\n\r\nexport function isCustomFilter(filter : FilterInfo | CustomFilter) : filter is CustomFilter {\r\n return filter && filter.filterType === FilterType.Custom;\r\n}\r\n\r\nexport function isFilterInfo(filter : FilterInfo | CustomFilter) : filter is FilterInfo {\r\n return filter && typeof (filter as FilterInfo).key === 'string' && filter.filterType !== FilterType.Custom;\r\n}\r\n\r\nconst defaultPredicate: Predicate<any> = () => true;\r\n\r\nexport function createFilterFuncs(filters: (FilterInfo | CustomFilter)[]){\r\n return filters.filter(needsFilterCreation).map(createFilterFunc);\r\n}\r\n\r\nexport function needsFilterCreation(filter: FilterInfo | CustomFilter): boolean {\r\n if(isCustomFilter(filter)) {\r\n return filter.active !== false;\r\n }\r\n return filter.filterValue != undefined && filter.active !== false;\r\n}\r\n\r\nexport function createFilterFunc(filter: FilterInfo | CustomFilter): Predicate<any> {\r\n if(isCustomFilter(filter)) {\r\n return filter.active ? filter.predicate : defaultPredicate;\r\n }\r\n if(filter.filterValue == undefined) {\r\n return defaultPredicate;\r\n }\r\n\r\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\r\n if(!func) {\r\n if(filterFactoryMap[filter.filterType]){\r\n return filterFactoryMap[filter.filterType!](filter);\r\n }\r\n }\r\n\r\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\r\n const getter = filter.filterBy || getFactory(filter.key);\r\n return (rowObj) => {\r\n const value = getter(rowObj);\r\n return ((value == undefined) && cannotBeTrueForNull)\r\n ? false\r\n : func( value);\r\n };\r\n}\r\n\r\nexport type FilterFunc<T, V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\r\nexport type Range<T> = { Start:T, End:T };\r\n\r\nconst FalseyValueCanBeIncludedFilterTypes = [\r\n FilterType.IsNull,\r\n FilterType.NumberNotEqual,\r\n FilterType.DateIsNotOn,\r\n FilterType.StringDoesNotContain,\r\n] as FilterType[];\r\n\r\nexport type FilterFuncs<T extends FilterType > = Partial<Record<T, FilterFunc<any, any>>>;\r\n","export const replaceInArrayWithClone = <T = any>(arr: T[], findMeth: (t: T) => boolean, actionOnClone: (t: T) => any = ((t: T) => {})): T[] => {\r\n const index = arr.findIndex(findMeth);\r\n const clonedArray = [...arr];\r\n const t = clonedArray[index];\r\n clonedArray[index] =\r\n t != null && typeof t === 'object' ?\r\n Array.isArray(t) ?\r\n [...t] as any\r\n : { ...t }\r\n : t;\r\n actionOnClone(clonedArray[index]);\r\n return clonedArray;\r\n}","import { Dictionary } from \"../interfaces/dictionary\";\r\nimport { FieldType, MetaData, SortDef } from \"../interfaces/report-def\";\r\nimport { isCustomFilter } from \"./filter-info\";\r\nimport { keysToDelete, PersistedTableState, TableState } from \"./TableState\";\r\nimport { TableBuilderSort } from \"../components/table-container/table-container.helpers/sort-state.helpers\";\r\n\r\nexport const orderedStateVisibleMetaData = (state: TableState) => {\r\n const ordered = orderStateMetaData(state);\r\n const orderedVisible = ordered\r\n .filter(metaData => !state.hiddenKeys.includes(metaData.key) && state.metaData[metaData.key].fieldType !== FieldType.Hidden);\r\n return orderedVisible;\r\n}\r\n\r\nexport const orderedCodeVisibleMetaData = (state: TableState) =>\r\n orderStateMetaData(state).filter(md => md.fieldType !== FieldType.Hidden);\r\n\r\nexport const orderStateMetaData = (state:TableState) => {\r\n return orderMetaData(state.metaData, state.userDefined.order);\r\n}\r\n\r\nexport const orderMetaData = (metaData: Dictionary<MetaData>, userDefined: Dictionary<number>) => {\r\n const userOrderArr = Object.entries(userDefined);\r\n return userOrderArr.length ?\r\n Object.values(metaData).sort((a, b) => {\r\n const orderA = userDefined[a.key];\r\n const orderB = userDefined[b.key];\r\n return order(orderA, orderB);\r\n })\r\n :\r\n Object.values(metaData).sort((a, b) => {\r\n const orderA = a.order;\r\n const orderB = b.order;\r\n return order(orderA, orderB);\r\n })\r\n}\r\n\r\nexport function order(orderA: number | undefined, orderB: number | undefined){\r\n if(orderA == null && orderB == null) {\r\n return 0;\r\n }\r\n if(orderA == null) {\r\n return 1;\r\n }\r\n if(orderB == null) {\r\n return -1;\r\n }\r\n return orderA - orderB;\r\n}\r\n\r\nexport function cleanPersistedState(state: TableState, pState: PersistedTableState) {\r\n const metas = Object.values(state.metaData);\r\n const filters = Object.values(pState.filters).filter(fltr => isCustomFilter(fltr) || metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\r\n obj[filter.filterId!] = pState.filters[filter.filterId!];\r\n return obj;\r\n }, {});\r\n const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));\r\n return ({ ...pState, filters, sorted })\r\n}\r\n\r\nexport const mapSaveableState = (s: PersistedTableState) => {\r\n const savableState = { ...s } as Partial<TableState>;\r\n keysToDelete.forEach(key => delete savableState[key]);\r\n return savableState as PersistedTableState;\r\n}\r\n\r\nexport const createPreSort = (metaDatas: Dictionary<MetaData>): TableBuilderSort[] => {\r\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\r\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\r\n .map(( { key, preSort: { direction } } ) => ({ active: key, direction }))\r\n}\r\n\r\nexport const mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\r\n return {\r\n key: orig.key,\r\n displayName: merge.displayName ?? orig.displayName,\r\n fieldType: merge.fieldType || orig.fieldType,\r\n additional: { ...orig.additional, ...merge.additional },\r\n order: merge.order ?? orig.order,\r\n preSort: merge.preSort ?? orig.preSort,\r\n width: merge.width ?? orig.width,\r\n noExport: merge.noExport || orig.noExport,\r\n noFilter: merge.noFilter || orig.noFilter,\r\n customCell: merge.customCell ?? orig.customCell,\r\n transform: merge.transform ?? orig.transform,\r\n map: merge.map ?? orig.map,\r\n click: merge.click ?? orig.click,\r\n classes: merge.classes ?? orig.classes,\r\n noSort: merge.noSort ?? orig.noSort,\r\n template: merge.template ?? orig.template,\r\n toolTip: merge.toolTip ?? orig.toolTip,\r\n useIcon: merge.useIcon ?? orig.useIcon,\r\n filterLogic: merge.filterLogic ?? orig.filterLogic,\r\n sortLogic: merge.sortLogic ?? orig.sortLogic\r\n } as MetaData;\r\n}\r\n\r\nexport const initializeOrder = (state:TableState, mds: Dictionary<MetaData>) : Dictionary<number> => {\r\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\r\n let userDefinedOrder = state.userDefined.order;\r\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\r\n return {}\r\n }\r\n return userDefinedOrder;\r\n}","import { FieldType, MetaData } from '../interfaces/report-def';\r\nimport { Observable } from 'rxjs';\r\nimport { defaultTableState, GroupedData, InitializationState, PersistedTableState, TableState } from './TableState';\r\nimport { Injectable, Signal, computed, inject } from '@angular/core';\r\nimport { TableBuilderConfigToken } from './TableBuilderConfig';\r\nimport { CustomFilter, FilterInfo, isCustomFilter, isFilterInfo } from './filter-info';\r\nimport { Sort, SortDirection } from '@angular/material/sort' ;\r\nimport { ComponentStore } from '@ngrx/component-store' ;\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { distinctUntilChanged, filter, switchMap, tap } from 'rxjs/operators'\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { NonFunctionProperties, NotPersistedTableSettings, parseTbSizeToPixels, PersistedTableSettings, TableBuilderSettings } from './table-builder-general-settings';\r\nimport { replaceInArrayWithClone } from '../../utilities/array-helpers';\r\nimport { sortsAreSame } from '../directives';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { TableProps } from '../components/table-container/tableProps';\r\nimport { cleanPersistedState, createPreSort, initializeOrder, mapSaveableState, mergeMeta, orderedStateVisibleMetaData, orderMetaData } from './table-store.helpers';\r\nimport { TableBuilderSort } from '../components/table-container/table-container.helpers/sort-state.helpers';\r\n\r\n@Injectable()\r\nexport class TableStore extends ComponentStore<TableState> {\r\n constructor() {\r\n const config = inject(TableBuilderConfigToken);\r\n const settingsFromConfig: Pick<TableState, 'notPersistedTableSettings' | 'persistedTableSettings'> =\r\n {\r\n persistedTableSettings: new PersistedTableSettings().merge(config.defaultTableSettings),\r\n notPersistedTableSettings: new NotPersistedTableSettings().merge(config.defaultTableSettings),\r\n };\r\n if(config.defaultTableSettings?.pageSize){\r\n settingsFromConfig.notPersistedTableSettings.paginatorSettings!.pageSize = config.defaultTableSettings?.pageSize;\r\n }\r\n const pageSize = settingsFromConfig.notPersistedTableSettings.paginatorSettings!.pageSize || defaultTableState.pageSize;\r\n const showAll = settingsFromConfig.notPersistedTableSettings.paginatorSettings!.defaultAll || defaultTableState.showAll;\r\n super( { ...defaultTableState, ...settingsFromConfig, pageSize, showAll });\r\n }\r\n\r\n $initializationState = this.selectSignal(state => state.initializationState);\r\n $savableState = computed(() => {\r\n const state = this.state();\r\n return mapSaveableState(state);\r\n });\r\n $userDefinedOrder = this.selectSignal( state => state.userDefined.order);\r\n metaData$ = this.select( state => state.metaData);\r\n $metaData = this.selectSignal( state => state.metaData);\r\n $metaDataArray = this.selectSignal(\r\n this.$metaData,\r\n this.$userDefinedOrder,\r\n orderMetaData\r\n );\r\n $orderedCodeVisibleMetaDatas = this.selectSignal(\r\n this.$metaDataArray, (mds) => mds.filter(m => m.fieldType !== FieldType.Hidden),\r\n { equal: (a: MetaData[], b) => b.length === a.length && b.every((s, i) => a[i].key === s.key) }\r\n )\r\n $getMetaData = (key: string) => computed(() => {\r\n const metaData = this.state().metaData[key];\r\n if(!metaData)console.warn(`Meta data with key ${key} not found`);\r\n return metaData;\r\n });\r\n\r\n $hiddenKeys = this.selectSignal( state => state.hiddenKeys);\r\n\r\n $orderedVisibleColumns = this.selectSignal(this.$orderedCodeVisibleMetaDatas, this.$hiddenKeys,\r\n (cs, hiddenKeys) => cs.filter(m => !hiddenKeys.includes(m.key)).map(m => m.key));\r\n\r\n $getUserDefinedWidths = this.selectSignal(state => state.userDefined.widths);\r\n $tableSettingsMinWidth = this.selectSignal(state => parseTbSizeToPixels(state.notPersistedTableSettings.minColumnWidth));\r\n $getUserDefinedWidth = (key:string) => this.selectSignal(this.$getUserDefinedWidths, widths => widths[key]);\r\n\r\n $filters = this.selectSignal(state => state.filters);\r\n filters$ = this.select(state => state.filters );\r\n $getFilter = (filterId: string) : Signal<FilterInfo | CustomFilter | undefined> => {\r\n return this.selectSignal(this.$filters, filters => filters[filterId] );\r\n }\r\n $preSort = computed(() => createPreSort(this.$metaData()));\r\n\r\n _$selectSorted = this.selectSignal(state => state.sorted, {\r\n equal: sortsAreSame\r\n });\r\n $selectSorted = computed<TableBuilderSort[]>(() => {\r\n const metaDict = this.$metaData();\r\n return this._$selectSorted().map(s => {\r\n const meta = metaDict[s.active];\r\n const sortLogic = meta.sortLogic;\r\n const sortBy = sortLogic?.sortBy === 'use map' ? meta.map : sortLogic?.sortBy;\r\n return ({ ...s, ...sortLogic, sortBy })\r\n })\r\n })\r\n selectSorted$ = this.select(state => state.sorted).pipe(distinctUntilChanged(sortsAreSame));\r\n $getSorts = this.selectSignal(() => this.$initializationState() !== InitializationState.Ready ? [] : this.$selectSorted());\r\n\r\n sort$ = toObservable(this.$getSorts);\r\n $getUserDefinedTableWidth = this.selectSignal(state => state.userDefined.table.width);\r\n getUserDefinedTableWidth$ = this.select(state => state.userDefined.table.width);\r\n $userDefinedRowHeight = this.selectSignal(state => (state.userDefined.rowHeight));\r\n $userDefinedHeaderHeight = this.selectSignal(state => (state.userDefined.headerHeight));\r\n $userDefinedPageSize = this.selectSignal(state => (state.userDefined.pageSize));\r\n $footerCollapsed = this.selectSignal(state => state.persistedTableSettings.collapseFooter);\r\n $headerCollapsed = this.selectSignal(state => state.persistedTableSettings.collapseHeader);\r\n\r\n $groupBy = this.selectSignal(state => state.groupBy);\r\n $groupByKeys = this.selectSignal(this.$groupBy, gb => gb.map(gbk => gbk.key), {\r\n equal: (prev: string[], curr: string[]) => prev.length === curr.length && curr.every((k, i) => prev[i] === k)\r\n })\r\n groupByKeys$ = this.select(state => state.groupBy.map(gbk => gbk.key))\r\n .pipe(distinctUntilChanged<string[]>((prev, curr) => prev.length === curr.length && curr.every((k, i) => prev[i] === k)));\r\n\r\n expandedGroups$ = this.select(state => state.groupBy).pipe(distinctUntilChanged((a, b) => {\r\n const aa = a.flatMap(g => g.expandedHeaders);\r\n const bb = b.flatMap(g => g.expandedHeaders);\r\n return aa.length === bb.length && aa.every((k) => bb.includes(k));\r\n }));\r\n $expandGroups = this.selectSignal(state => state.groupBy, { equal: (a, b) => {\r\n const aa = a.flatMap(g => g.expandedHeaders);\r\n const bb = b.flatMap(g => g.expandedHeaders);\r\n return aa.length === bb.length && aa.every((k) => bb.includes(k));\r\n } })\r\n\r\n $getIsExpanded = (columnKey: string, groupHeaderKey: string) => {\r\n return this.selectSignal(state => !!state.groupBy.filter(g => g.key === columnKey && g.expandedHeaders.includes(groupHeaderKey)).length);\r\n };\r\n\r\n $currentPage = this.selectSignal(state => state.currentPage);\r\n $pageSize = this.selectSignal(s => s.userDefined?.pageSize || s.pageSize!);\r\n $showAll = this.selectSignal(s => s.userDefined?.showAll ?? s.showAll);\r\n\r\n\r\n $tableSettings = this.selectSignal(state => {\r\n const ts : NonFunctionProperties<PersistedTableSettings & NotPersistedTableSettings> =\r\n { ...state.persistedTableSettings, ...state.notPersistedTableSettings };\r\n return ts;\r\n });\r\n $notPersistedTableSettings = this.selectSignal(state => state.notPersistedTableSettings)\r\n tableSettings$ = toObservable(this.$tableSettings);\r\n\r\n $props = this.selectSignal(s => s.props);\r\n\r\n $getLinkInfo = (md:MetaData) => this.selectSignal(state => state.linkMaps[md.key]);\r\n\r\n $isVirtual = this.selectSignal(state =>\r\n state.notPersistedTableSettings.useVirtualScroll\r\n || state.showAll\r\n || state.userDefined?.showAll\r\n );\r\n $viewType = this.selectSignal<ViewType>(state => {\r\n const usePaginator = state.notPersistedTableSettings.usePaginator;\r\n const showAll = state.showAll || state.userDefined?.showAll;\r\n const useVirtualScroll = state.notPersistedTableSettings.useVirtualScroll;\r\n if(showAll || (useVirtualScroll && !usePaginator)){\r\n return 'virtual all';\r\n } else if(useVirtualScroll && usePaginator) {\r\n return 'virtual paginator';\r\n } else if(usePaginator) {\r\n return 'paginator';\r\n } else {\r\n return 'all';\r\n }\r\n });\r\n\r\n readonly resetState = this.updater((state) => {\r\n const sorted = this.$preSort();\r\n return ({ ...state, hiddenKeys: [], sorted, filters: {}, groupBy: [], userDefined: { widths: {}, order: {}, table: {} } });\r\n });\r\n\r\n readonly resetPart = this.updater((state, part: typeof resetable[number]) => {\r\n const newState = { ...state };\r\n switch (part){\r\n case 'Sorting':\r\n newState.sorted = this.$preSort();\r\n return newState;\r\n case 'Filters':\r\n newState.filters = {};\r\n return newState;\r\n case 'Group By':\r\n newState.groupBy = [];\r\n return newState;\r\n case 'Hidden Columns':\r\n newState.hiddenKeys = [];\r\n return newState;\r\n case 'Column Widths':\r\n newState.userDefined.widths = {};\r\n newState.userDefined.table = {};\r\n return newState;\r\n case 'Column Order':\r\n newState.userDefined.order = {};\r\n return newState;\r\n case 'Page Size':\r\n delete newState.userDefined.pageSize;\r\n return newState;\r\n case 'Show All':\r\n delete newState.userDefined.showAll;\r\n return newState;\r\n case 'Row Height':\r\n delete newState.userDefined.rowHeight;\r\n return newState;\r\n case 'Header Height':\r\n delete newState.userDefined.headerHeight;\r\n return newState;\r\n }\r\n return newState;\r\n })\r\n\r\n readonly updateStateFromPersistedState = this.updater( ( state: TableState, persistedState: PersistedTableState) : TableState => {\r\n const incomingTableState: Partial<TableState> = cleanPersistedState(state, persistedState);\r\n const newState = this.updateStateFunc(state, incomingTableState);\r\n newState.initializationState = state.initializationState <= InitializationState.MetaDataLoaded ? InitializationState.TableSettingsLoaded : state.initializationState;\r\n return newState;\r\n });\r\n private updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\r\n const metaData = state.metaData;\r\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted\r\n : state.initializationState <= InitializationState.Created ? createPreSort(metaData) : state.sorted;\r\n return { ...state, ...incomingTableState, metaData, sorted };\r\n };\r\n\r\n readonly setTableSettings = this.updater((state, settings: TableBuilderSettings) => {\r\n const s: TableState = {\r\n ...state,\r\n persistedTableSettings: state.persistedTableSettings.merge(settings),\r\n notPersistedTableSettings: state.notPersistedTableSettings.merge(settings),\r\n initializationState: InitializationState.TableSettingsLoaded\r\n };\r\n s.pageSize = settings.tableSettings?.paginatorSettings?.pageSize ?? s.pageSize;\r\n s.showAll = settings.tableSettings?.paginatorSettings?.defaultAll ?? s.showAll;\r\n\r\n return s;\r\n });\r\n\r\n readonly setMetaData = this.updater((state, md: MetaData[]) => {\r\n const metaData = md\r\n .reduce((prev: Dictionary<MetaData>, curr) => {\r\n if(prev[curr.key]) {\r\n prev[curr.key] = mergeMeta(prev[curr.key], curr);\r\n } else {\r\n prev[curr.key] = curr;\r\n }\r\n return prev;\r\n }, {});\r\n\r\n const sortedInitialized = state.sorted.length > 0;\r\n const sorted = sortedInitialized ? state.sorted : createPreSort(metaData);\r\n const order = initializeOrder(state, metaData);\r\n const initializationState = state.initializationState == InitializationState.Created ? InitializationState.MetaDataLoaded : state.initializationState;\r\n return { ...state, initializationState, metaData, sorted, userDefined: { ...state.userDefined, order: order } };\r\n });\r\n\r\n readonly showColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\r\n }));\r\n readonly hideColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\r\n }));\r\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\r\n return ({ ...state, hiddenKeys: displayCols.filter(d => !d.visible).map(d => d.key) })\r\n });\r\n\r\n readonly setUserDefinedWidth = this.updater((state, colWidths:{key: string, widthInPixel:number}[]) => {\r\n const userDefinedWidths = { ...state.userDefined.widths };\r\n colWidths.forEach(cw => {\r\n userDefinedWidths[cw.key] = cw.widthInPixel;\r\n });\r\n return { ...state, userDefined: { ...state.userDefined, widths: userDefinedWidths } };\r\n });\r\n\r\n readonly setUserDefinedOrder = this.updater((state, moved: { newOrder: number, oldOrder: number }) => {\r\n const { newOrder, oldOrder } = moved;\r\n const mdsArr = orderedStateVisibleMetaData(state);\r\n moveItemInArray(mdsArr, oldOrder, newOrder);\r\n\r\n const userDefinedOrder = mdsArr.reduce((aggregate: any, current, index) => {\r\n aggregate[current.key] = index;\r\n return aggregate\r\n }, {});\r\n return ({ ...state, userDefined: { ...state.userDefined, order: userDefinedOrder } })\r\n })\r\n\r\n readonly setUserDefinedRowHeight = this.updater((state, rowHeight: number) => {\r\n return ({ ...state, userDefined: { ...state.userDefined, rowHeight } });\r\n });\r\n readonly setUserDefinedHeaderHeight = this.updater((state, headerHeight: number) => {\r\n return ({ ...state, userDefined: { ...state.userDefined, headerHeight } });\r\n });\r\n readonly addFilter = this.updater( (state, filter: FilterInfo | CustomFilter ) => {\r\n return this.addFiltersToState(state, [filter]);\r\n });\r\n\r\n readonly addFilters = this.updater((state, filters:(FilterInfo | CustomFilter )[]) => {\r\n return this.addFiltersToState(state, filters);\r\n });\r\n readonly removeFilter = this.updater( (state, filterId: string) => {\r\n const filtersCopy = { ...state.filters };\r\n delete filtersCopy[filterId];\r\n return ({ ...state, filters: filtersCopy });\r\n });\r\n\r\n readonly removeFilters = this.updater( (state, filterIds: string[]) => {\r\n const filtersCopy = { ...state.filters };\r\n filterIds.forEach(id => { delete filtersCopy[id] })\r\n return ({ ...state, filters: filtersCopy });\r\n });\r\n readonly clearFilters = this.updater((state) =>\r\n ({ ...state, filters: {} }));\r\n private addFiltersToState = (state:TableState, filters:(FilterInfo | CustomFilter)[]) : TableState => {\r\n\r\n var customFilters = filters.filter(isCustomFilter);\r\n\r\n var filterInfos = filters.filter(isFilterInfo);\r\n\r\n const filtersObj = filterInfos\r\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\r\n .reduce((filtersObj: {[k: string]: any}, filter) => {\r\n if(!filter.filterId) {\r\n filter.filterId = crypto.randomUUID();\r\n }\r\n filtersObj[filter.filterId] = filter;\r\n return filtersObj;\r\n }, {});\r\n\r\n customFilters.forEach( fltr => {\r\n if(!fltr.filterId) {\r\n fltr.filterId = crypto.randomUUID();\r\n }\r\n filtersObj[fltr.filterId] = fltr;\r\n })\r\n return {\r\n ...state,\r\n filters: { ...state.filters, ...filtersObj }\r\n };\r\n }\r\n\r\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, { key, direction } ) => {\r\n const sortArray = state.sorted.filter( s => s.active !== key );\r\n if(direction) {\r\n sortArray.unshift({ active: key, direction });\r\n }\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n readonly setAllSort = this.updater((state, sortArray:Sort[]) => {\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n readonly setCurrentPage = this.updater((state, currentPage: number) => ({ ...state, currentPage }))\r\n readonly setPageSize = this.updater((state, pageSize: number) =>\r\n ({ ...state, pageSize }));\r\n readonly setUserDefinedPageSize = this.updater((state, pageSize: number) =>\r\n ({ ...state, userDefined: { ...state.userDefined, pageSize } }));\r\n readonly setUserDefinedShowAll = this.updater((state, showAll: boolean) =>\r\n ({ ...state, showAll, userDefined: { ...state.userDefined, showAll } }))\r\n\r\n readonly setProps = this.updater((state, props: TableProps) => {\r\n return ({ ...state, props });\r\n });\r\n\r\n readonly setTableWidth = this.updater((state, widthInPixels:number) =>\r\n ({ ...state, userDefined: { ...state.userDefined, table: { width: widthInPixels } } }));\r\n\r\n readonly setInitializationState = this.updater( (state, initializationState: InitializationState) => {\r\n return { ...state, initializationState };\r\n });\r\n\r\n readonly toggleCollapseHeader = this.updater((state) => {\r\n const tableSettings = { ...state.persistedTableSettings };\r\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\r\n return ({ ...state, persistedTableSettings: new PersistedTableSettings(tableSettings) });\r\n })\r\n readonly toggleCollapseFooter = this.updater((state) => {\r\n const tableSettings = { ...state.persistedTableSettings };\r\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\r\n return ({ ...state, persistedTableSettings: new PersistedTableSettings(tableSettings) });\r\n });\r\n\r\n readonly addGroupByKey = this.updater((state, metaDataKey: string) => ({\r\n ...state,\r\n groupBy: [...state.groupBy, { key: metaDataKey, expandedHeaders: [] }]\r\n }));\r\n readonly removeGroupByKey = this.updater((state, groupByKey: string) => ({\r\n ...state,\r\n groupBy: state.groupBy.filter(key => groupByKey !== key.key)\r\n }));\r\n readonly updateExpandedGroups = this.updater((state, data: {key: string, groupKey: string, isExpanded: boolean}) => {\r\n const gbk = replaceInArrayWithClone(state.groupBy, k => k.key === data.key, gk => {\r\n gk.expandedHeaders = data.isExpanded ? [...gk.expandedHeaders, data.groupKey] : gk.expandedHeaders.filter(g => g !== data.groupKey);\r\n });\r\n return ({\r\n ...state,\r\n groupBy: gbk\r\n })}\r\n );\r\n readonly expandAllOfGroup = this.updater((state, data: { groupHeadersByKey: Dictionary<{ groupName: string }[]> }) => {\r\n const newGroupedData = state.groupBy.map(gb => ({\r\n key: gb.key,\r\n expandedHeaders: data.groupHeadersByKey[gb.key]?.map(g => g.groupName) ?? gb.expandedHeaders\r\n } as GroupedData));\r\n return ({ ...state, groupBy: newGroupedData });\r\n });\r\n readonly collapseAll = this.updater((state) => ({\r\n ...state,\r\n groupBy: state.groupBy.map(gb => ({ key: gb.key, expandedHeaders: [] }))\r\n }));\r\n readonly collapseAllOfKey = this.updater((state, data: { keys: string[] }) => ({\r\n ...state,\r\n groupBy: state.groupBy.map(gb => ({\r\n key: gb.key,\r\n expandedHeaders: data.keys.includes(gb.key) ? [] : gb.expandedHeaders\r\n }))\r\n }));\r\n\r\n readonly setLinkMaps = this.updater((state, maps: any) => {\r\n return ({ ...state, linkMaps: maps });\r\n });\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\r\n this.effect(() => srcObservable.pipe(\r\n tap(func)\r\n ));\r\n return this;\r\n };\r\n}\r\n\r\n\r\nexport type ViewType = 'virtual paginator' | 'paginator' | 'virtual all' | 'all';\r\nexport const resetable = [\r\n 'Sorting',\r\n 'Filters',\r\n 'Group By',\r\n 'Hidden Columns',\r\n 'Column Widths',\r\n 'Column Order',\r\n 'Row Height',\r\n 'Header Height',\r\n 'Page Size',\r\n 'Show All',\r\n] as const\r\n","import { Directive, OnInit, OnDestroy, inject } from '@angular/core';\r\nimport { MatSort, Sort, SortDirection } from '@angular/material/sort';\r\nimport { distinctUntilChanged, distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../classes/table-store';\r\n\r\n@Directive({\r\n selector: '[multiSort]',\r\n exportAs: 'multiSort',\r\n inputs: ['disabled: matSortDisabled'],\r\n providers: [\r\n { provide: MatSort, useExisting: MultiSortDirective }\r\n ],\r\n})\r\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\r\n private state = inject(TableStore);\r\n\r\n\r\n constructor() {\r\n super();\r\n this.state.setSort(this.sortChange.pipe(\r\n distinctUntilChanged((f, s) => f.active === s.active && f.direction === s.direction),\r\n map(sc => ({ key: sc.active, direction: sc.direction }))));\r\n this.state.on(\r\n this.state.sort$,\r\n (rules) => {\r\n const topRule = { active: rules[0]?.active || '', direction: rules[0]?.direction || '' as SortDirection };\r\n const topActiveChanged = topRule.active !== this.active || '';\r\n const topDirectionChanged = topRule.direction !== this.direction || '';\r\n if(topActiveChanged || topDirectionChanged){\r\n this.active = topRule.active;\r\n this.direction = topRule.direction;\r\n this.sortChange.emit(topRule);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n\r\nexport function sortsAreSame(a: Sort[], b: Sort[]) {\r\n if(a.length !== b.length) {\r\n return false;\r\n }\r\n for(let i = 0; i < a.length; i++) {\r\n if(a[i].active !== b[i].active || a[i].direction !== b[i].direction) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n selector: 'tb-date-filter',\r\n templateUrl: './date-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\r\n imports: [\r\n MatInputModule, FormsModule, MatDatepickerModule\r\n ]\r\n})\r\nexport class DateFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if (CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull)\r\n{\r\n <mat-form-field>\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\r\n <mat-datepicker-toggle class=\"small-button date-toggle\" matSuffix preventEnter [for]=\"cal\" />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.DateBetween)\r\n{\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" placeholder=\"From\" [ngModel]=\"info.filterValue?.Start\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" preventEnter [for]=\"fromVal\" />\r\n <mat-datepicker #fromVal />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" placeholder=\"To\" [ngModel]=\"info.filterValue?.End\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" preventEnter [for]=\"toVal\" />\r\n <mat-datepicker #toVal />\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'preventEnter',\r\n})\r\nexport class PreventEnterDirective {\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown() {\r\n return false\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[stop-propagation]\",\r\n})\r\nexport class StopPropagationDirective\r\n{\r\n @HostListener(\"click\", [\"$event\"])\r\n public onClick(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener(\"mousedown\", [\"$event\"])\r\n public onMousedown(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { Directive, ElementRef, AfterViewInit, Input, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[autoFocus]',\r\n})\r\nexport class AutoFocusDirective implements AfterViewInit {\r\n private elementRef = inject(ElementRef);\r\n\r\n\r\n @Input() autoFocus = true;\r\n\r\n ngAfterViewInit() {\r\n if(this.autoFocus){\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[clickSubject]',\r\n exportAs: 'clickSubject',\r\n host: {\r\n '(click)': 'next(this._val)'\r\n },\r\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\r\n constructor( ) {\r\n super();\r\n }\r\n _val!: T;\r\n\r\n @Input('clickSubject') set clickSubject( val: T) {\r\n this._val = val;\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Directive({\r\n selector: '[clickEmitter]',\r\n exportAs: 'clickEmitter',\r\n host: {\r\n '(click)': 'next(true)'\r\n },\r\n}) export class ClickEmitterDirective extends Subject<boolean> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n allOpenOpDialogs: MatDialogRef<any>[] = [];\r\n\r\n addDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs.push(ref);\r\n }\r\n\r\n removeDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs = this.allOpenOpDialogs.filter(rf => ref.id !== rf.id);\r\n }\r\n\r\n closeAllOpDialogs() {\r\n this.allOpenOpDialogs.forEach(ref => ref.close());\r\n }\r\n}\r\n","import { Directive, TemplateRef, Input, Component, Output, EventEmitter, ViewContainerRef, Injector, ChangeDetectionStrategy, inject, untracked, Signal, isSignal } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DialogService } from './dialog-service';\r\nimport { subscriber } from '../../rxjs';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { DialogConfig } from '@angular/cdk/dialog';\r\n\r\ninterface DialogViewContext<T> {\r\n $implicit: T,\r\n opDialog: T,\r\n close: () => void,\r\n}\r\n\r\n@Component({\r\n selector: 'dialog-wrapper',\r\n template: ``,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DialogWrapper<T = any> {\r\n private vcr = inject(ViewContainerRef);\r\n\r\n viewEmbedded = false;\r\n viewContext = {\r\n close: () => {},\r\n } as DialogViewContext<T>;\r\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\r\n if(this.viewEmbedded) {\r\n this.vcr.clear();\r\n }\r\n this.viewEmbedded = true;\r\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\r\n }\r\n\r\n set close(closeMethod: () => void ) {\r\n this.viewContext.close = closeMethod;\r\n }\r\n\r\n set data(value: T) {\r\n this.viewContext.$implicit = value;\r\n this.viewContext.opDialog = value;\r\n }\r\n\r\n}\r\n\r\n\r\nconst defaultDialogConfig: MatDialogConfig = {\r\n maxHeight: '95vh',\r\n}\r\n\r\n\r\n@Directive(\r\n { selector: '[opDialog]', }\r\n) export class DialogDirective<T> {\r\n private templateRef = inject<TemplateRef<DialogViewContext<T>>>(TemplateRef);\r\n private dialog = inject(MatDialog);\r\n private dialogConfig = inject(MAT_DIALOG_DEFAULT_OPTIONS, { optional: true }) || {};\r\n private service = inject(DialogService);\r\n\r\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\r\n _dialogConfig: MatDialogConfig<T> = { ...this.dialogConfig, ...defaultDialogConfig };\r\n @Input() opDialogAddDialogClass = true;\r\n @Input() set opDialogConfig(config: MatDialogConfig<T>) {\r\n\r\n this._dialogConfig = { ...this.dialogConfig, ...defaultDialogConfig, ...config };\r\n }\r\n\r\n get opDialogConfig() : MatDialogConfig<T> {\r\n return this._dialogConfig;\r\n }\r\n injector = inject(Injector);\r\n subscriber = subscriber(this.injector);\r\n @Input('opDialog') set setControl(i: Observable<T> | Signal<T>){\r\n let o: Observable<T>;\r\n if(isSignal(i)){\r\n o = toObservable<T>(i, { injector: this.injector })\r\n } else {\r\n o = i;\r\n }\r\n untracked(() => {\r\n this.subscriber.on(o, this.setDataAndState);\r\n });\r\n }\r\n\r\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\r\n dialogRef?: MatDialogRef<any, boolean>;\r\n componentWrapper?: DialogWrapper<T>;\r\n\r\n _data = new Subject<Observable<T>>();\r\n\r\n close() {\r\n this.dialogRef?.close();\r\n }\r\n\r\n initDialog() {\r\n if(this.nativeElement){\r\n const rect = this.nativeElement.getBoundingClientRect();\r\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\r\n this.opDialogConfig = { ...this.opDialogConfig, position };\r\n }\r\n if(this.opDialogAddDialogClass) {\r\n this.opDialogConfig.panelClass = [...(Array.isArray(this.opDialogConfig.panelClass) ? this.opDialogConfig.panelClass : this.opDialogConfig.panelClass ? [this.opDialogConfig.panelClass] : []), 'opDialog'];\r\n }\r\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\r\n this.componentWrapper = this.dialogRef.componentInstance;\r\n this.componentWrapper!.close = () => this.dialogRef?.close();\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n this.componentWrapper!.template = this.templateRef;\r\n if(!this.opDialogConfig.disableClose) {\r\n this.service.addDialogRef(this.dialogRef);\r\n }\r\n const sub = this.dialogRef.afterClosed().subscribe(() => {\r\n this.opDialogClosed.emit(true);\r\n this.service.removeDialogRef(this.dialogRef!);\r\n this.dialogRef = undefined;\r\n sub.unsubscribe();\r\n });\r\n }\r\n setDataAndState = (data: T) => {\r\n if(data){\r\n this.opDialogConfig.data = data;\r\n this.setDialogState(true);\r\n } else {\r\n this.setDialogState(false);\r\n }\r\n }\r\n\r\n setDialogState(open: boolean) {\r\n if(open) {\r\n if(!this.dialogRef) {\r\n this.initDialog();\r\n } else {\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n }\r\n } else if(!open && this.dialogRef) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false | 0 | '' | null | undefined>> {\r\n return true;\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Renderer2, inject, input, effect, signal, untracked } from '@angular/core';\r\nimport { Dictionary } from '@ngrx/entity';\r\n\r\n@Directive({ selector: '[styler]' })\r\nexport class StylerDirective {\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n $stylesApplied = signal<Dictionary<string>>({});\r\n $element = input.required<any>({ alias: 'element' });\r\n $styler = input.required<StylerStyle>({ alias: 'styler' });\r\n #stylerEffect = effect(() => {\r\n const styles = this.$styler();\r\n untracked(() => {\r\n const element = this.$element();\r\n\r\n const toApply = Object.entries(styles ?? {}).reduce((acc, [key, val]) => {\r\n if(!val) return acc;\r\n if(typeof (val) === 'string'){\r\n acc[key] = val;\r\n this.el.nativeElement.style[key] = val;\r\n } else if(!val?.condition || val?.condition === true || val?.condition(element)){\r\n const value = typeof (val.value) === 'string' ? val.value : val?.value(element);\r\n acc[key] = value;\r\n this.el.nativeElement.style[key] = value;\r\n }\r\n return acc;\r\n }, {} as Dictionary<string>);\r\n\r\n Object.keys(this.$stylesApplied()).filter(key => !Object.keys(toApply).includes(key)).forEach(key => {\r\n this.renderer.removeStyle(this.el.nativeElement, key);\r\n });\r\n\r\n this.$stylesApplied.set(toApply);\r\n })\r\n\r\n });\r\n}\r\n\r\nexport type StylerStyle<T = any> = Dictionary<\r\n string | {\r\n condition?: ((t: T) => boolean) | true,\r\n value: ((t: T) => string) | string\r\n }>\r\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\r\n\r\n\r\n@Directive(\r\n { selector: '[opMatSlideToggleGroup]',\r\n }\r\n) export class MatSlideToggleGroupDirective {\r\n @Input() allowMultiple = false;\r\n\r\n _toggles!: QueryList<MatSlideToggle>;\r\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\r\n this._toggles = val;\r\n this._ready.next(true);\r\n }\r\n\r\n private _ready = new ReplaySubject<boolean>(1);\r\n\r\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\r\n return this._ready.pipe( switchMap( _ => this.getObs()));\r\n }\r\n\r\n\r\n getInitValue() {\r\n const startValue = this._toggles.reduce( (prev, cur) => {\r\n if(!cur.name) {\r\n throw new Error('toggle must have the name attribute set');\r\n }\r\n prev[cur.name] = cur.checked\r\n return prev;\r\n }, {} as {[k:string]: boolean});\r\n return startValue;\r\n }\r\n\r\n getObs() {\r\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\r\n\r\n const startValue = this.getInitValue();\r\n\r\n return toggleChanges.pipe(\r\n scan( (prev, cur) => {\r\n const toggleName = cur.source.name!;\r\n const newVal = { ...prev, [toggleName]: cur.checked };\r\n if(cur.checked && !this.allowMultiple) {\r\n Object.keys(prev)\r\n .filter( key => key !== toggleName && prev[key])\r\n .forEach( key => {\r\n newVal[key] = false;\r\n this._toggles.find( toggle => toggle.name === key)!.toggle();\r\n });\r\n }\r\n return newVal;\r\n }, startValue),\r\n startWith(startValue),\r\n );\r\n\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'input[trimWhitespace]',\r\n})\r\nexport class TrimWhitespaceDirective {\r\n private elem = inject(ElementRef);\r\n\r\n\r\n @HostListener('blur') onBlur() {\r\n const inputString = this.elem.nativeElement.value;\r\n if(inputString) {\r\n const newValue = inputString.trim().replace(/\\t/g, '');\r\n if(inputString !== newValue) {\r\n this.elem.nativeElement.value = newValue;\r\n this.elem.nativeElement.dispatchEvent(new Event('input', { bubbles: true }));\r\n }\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\ntype Args<S extends object, O extends keyof S> = S[O] extends (...args: infer Params) => any ? Params : never;\r\ntype Return<S extends object, O extends keyof S> = S[O] extends (...args: any[]) => infer R ? R : never;\r\n\r\n\r\n@Pipe({\r\n name: 'func',\r\n})\r\nexport class FunctionPipe implements PipeTransform {\r\n transform<T, TParam extends any []>(func: (...args: TParam) => T, ...args: TParam): T;\r\n transform<O extends object, S extends keyof O>(s: S, obj: O, ...args: Args<O, S>): Return<O, S>;\r\n transform(func: any, ...args: any[]) {\r\n if(typeof func === 'string') {\r\n const [instance, ...tail] = args;\r\n const method = (instance[func] as Function).bind(instance);\r\n return method(...tail);\r\n }\r\n return func(...args);\r\n }\r\n}","import { Directive, ElementRef, Renderer2, effect, inject, input, untracked } from '@angular/core';\r\nimport { Dictionary, Predicate } from '@ngrx/entity';\r\n\r\n@Directive({\r\n selector: '[conditionalClasses]',\r\n})\r\nexport class ConditionalClassesDirective {\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n $element = input.required<any>({ alias: 'element' });\r\n $classes = input<Dictionary<Predicate<any> | true>>(undefined, { alias: 'conditionalClasses' });\r\n\r\n classesApplied: string[] = [];\r\n\r\n #onClasses = effect(() => {\r\n const classes = this.$classes();\r\n untracked(() => {\r\n const element = this.$element();\r\n let toApply: string [] = [];\r\n if(classes) {\r\n toApply = Object.keys(classes)\r\n .filter( key => (classes![key] === true) || classes![key]!(element) );\r\n }\r\n\r\n var classesNotYetApplied = toApply.filter( c => !this.classesApplied.includes(c) );\r\n var classesToRemove = this.classesApplied.filter( c => !toApply.includes(c));\r\n\r\n classesToRemove.forEach( c => this.renderer.removeClass( this.el.nativeElement, c ) );\r\n\r\n classesNotYetApplied.forEach( c => this.renderer.addClass( this.el.nativeElement, c ) );\r\n\r\n this.classesApplied = toApply;\r\n })\r\n });\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\r\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\r\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\r\nimport { ConditionalClassesDirective } from \"./directives/conditional-classes.directive\";\r\nimport { DialogDirective } from \"./directives/dialog\";\r\nimport { DialogService } from \"./directives/dialog-service\";\r\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\r\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\r\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\r\nimport { TrimWhitespaceDirective } from \"./directives/trim-whitespace.directive\";\r\nimport { StylerDirective } from \"./directives/styler\";\r\nimport { FunctionPipe } from \"./pipes/function.pipe\";\r\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\r\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\r\n\r\n@NgModule({\r\n exports: [\r\n StopPropagationDirective,\r\n PreventEnterDirective,\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n TrimWhitespaceDirective,\r\n StylerDirective,\r\n AutoFocusDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n imports: [\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n TrimWhitespaceDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n providers: [\r\n DialogService\r\n ]\r\n})\r\nexport class UtilitiesModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ChangeDetectorRef, inject, input } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { AutoFocusDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'lib-in-filter',\r\n templateUrl: './in-filter.component.html',\r\n styleUrls: ['./in-filter.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InFilterComponent,\r\n multi: true\r\n }],\r\n imports: [\r\n FormsModule, AutoFocusDirective\r\n ]\r\n})\r\nexport class InFilterComponent implements ControlValueAccessor {\r\n private ref = inject(ChangeDetectorRef);\r\n\r\n FieldType = FieldType;\r\n $type = input.required<FieldType>({ alias: 'type' })\r\n value: (string | number | undefined)[] = [undefined];\r\n\r\n constructor() {\r\n this.value = [undefined];\r\n }\r\n writeValue(obj: any[]): void {\r\n if(!obj?.length) obj = [undefined];\r\n this.value = obj;\r\n this.ref.markForCheck();\r\n }\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n addInput(){\r\n this.value = [...this.value, undefined];\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n removeInput(index: number){\r\n this.value = [...this.value];\r\n this.value.splice(index, 1);\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n onValueChange(i:number, value: number | string){\r\n this.value = [...this.value];\r\n this.value[i] = value;\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","<div class=inline>\r\n @for (val of value; track $index)\r\n {\r\n <div>\r\n @if($type() === FieldType.Number || $type() === FieldType.Currency)\r\n {\r\n <input type=\"number\" [ngModel]=\"val\"\r\n [readonly]=\"$index + 1 < value.length\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\" (ngModelChange)=\"onValueChange($index, $event)\"/>\r\n }\r\n @else\r\n {\r\n <input #input type=\"string\"\r\n [ngModel]=\"val\" [readonly]=\"$index + 1 < value.length\" [ngModelOptions]=\"{standalone:true}\"\r\n [autoFocus]=\"$index === value.length - 1\" (ngModelChange)=\"onValueChange($index ,$event)\" />\r\n }\r\n </div>\r\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput($index)\">-</button>\r\n @if ($index === value.length - 1)\r\n {\r\n <button [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\r\n }\r\n }\r\n</div>\r\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\n\r\n\r\n@Component({\r\n selector: 'tb-number-filter',\r\n templateUrl: './number-filter.component.html',\r\n styleUrls: ['./number-filter.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\r\n imports: [\r\n MatInputModule, FormsModule, InFilterComponent\r\n ]\r\n})\r\nexport class NumberFilterComponent {\r\n FilterType = FilterType;\r\n FieldType = FieldType;\r\n $currentFilterType = input.required<FilterType>({ alias: 'CurrentFilterType' });\r\n $info = input.required<PartialFilter>({ alias: 'info' })\r\n}\r\n","@let CurrentFilterType = $currentFilterType();\r\n@let info = $info();\r\n\r\n@if(CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In)\r\n{\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" type=\"number\" [ngModel]=\"info.filterValue\"/>\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.NumberBetween)\r\n{\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" placeholder=\"Start\" type=\"number\" [ngModel]=\"info.filterValue?.Start\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" placeholder=\"End\" type=\"number\" [ngModel]=\"info.filterValue?.End\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n@if (CurrentFilterType === FilterType.In)\r\n{\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' />\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tb-date-time-filter',\r\n templateUrl: './date-time-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\r\n imports: [\r\n FormsModule\r\n ]\r\n})\r\nexport class DateTimeFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if(CurrentFilterType !== FilterType.DateTimeBetween && CurrentFilterType !== FilterType.IsNull)\r\n{\r\n <input type=\"datetime-local\" preventEnter name=\"filterValue\" class=\"op-date-time-input\" [ngModel]=\"info.filterValue\"/>\r\n}\r\n@if(CurrentFilterType === FilterType.DateTimeBetween)\r\n{\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <input type=\"datetime-local\" preventEnter name=\"Start\" class=\"op-date-time-input\" [ngModel]=\"info.filterValue?.Start\"/>\r\n <input type=\"datetime-local\" preventEnter name=\"End\" class=\"op-date-time-input\" [ngModel]=\"info.filterValue?.End\"/>\r\n </ng-container>\r\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { FieldType } from '../../../interfaces/report-def';\r\nimport { CurrencyPipe, DatePipe, KeyValue } from '@angular/common';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FunctionPipe, SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-in-list-filter , [tb-in-list-filter]',\r\n template: `\r\n @for (item of $keyValues(); track item.key) {\r\n <div>\r\n <mat-checkbox [checked]=\"'includes' | func : $selectedKeys() : item.key\" stop-propagation (change)='selectFilterChanged($event, item.value)' >\r\n @switch ($metaData().fieldType)\r\n {\r\n @case (FieldType.Enum)\r\n {\r\n {{(item.key | spaceCase)}}\r\n }\r\n @case (FieldType.Date)\r\n {\r\n {{item.value | date: 'shortDate'}}\r\n }\r\n @case (FieldType.DateTime)\r\n {\r\n {{item.value | date: 'short'}}\r\n }\r\n @case (FieldType.Currency)\r\n {\r\n {{item.value | currency }}\r\n }\r\n @default\r\n {\r\n {{item.key}}\r\n }\r\n }\r\n </mat-checkbox>\r\n </div>\r\n }\r\n\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InListFilterComponent,\r\n multi: true\r\n }],\r\n imports: [\r\n MatCheckboxModule, StopPropagationDirective, SpaceCasePipe, FunctionPipe, DatePipe, CurrencyPipe\r\n ]\r\n})\r\nexport class InListFilterComponent implements ControlValueAccessor {\r\n private ref = inject(ChangeDetectorRef);\r\n private tableState = inject(TableStore);\r\n\r\n value: (string | number)[] = [];\r\n FieldType = FieldType;\r\n writeValue(obj: string[]): void {\r\n this.value = obj;\r\n\r\n if(this.value) {\r\n this.$selectedKeys.set(this.value.map( f => f ));\r\n }\r\n this.ref.markForCheck();\r\n }\r\n\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n $key = input.required<string>({ alias: 'key' });\r\n $selectedKeys = signal<(string | number)[]>([]);\r\n $metaData = computed(() => this.tableState.$getMetaData(this.$key())());\r\n $keyValues = computed(():\r\n KeyValue<string, any>[] => {\r\n const metaData = this.$metaData();\r\n if(metaData?.additional?.filterOptions?.filterableValues ) {\r\n return metaData.additional.filterOptions.filterableValues.map(value => ({ key: value, value }));\r\n } else if(metaData?.fieldType === FieldType.Enum ) {\r\n return Object.entries(metaData.additional!.enumMap!).map(([key, value]) => ({ key: value, value: +key }));\r\n }\r\n return [];\r\n });\r\n\r\n selectFilterChanged($event, val: any) {\r\n if($event.checked) {\r\n this.$selectedKeys.update(keys => [...keys, val]);\r\n } else {\r\n this.$selectedKeys.update(keys => keys.filter( item => item !== val));\r\n }\r\n this.value = this.$selectedKeys();\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, input, computed, output, signal } from '@angular/core';\r\nimport { filterTypeMap, FilterInfo, PartialFilter } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SpaceCasePipe } from '../../../utilities';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NumberFilterComponent } from '../number-filter/number-filter.component';\r\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\r\nimport { DateTimeFilterComponent } from '../date-time-filter/date-time-filter.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\nimport { InListFilterComponent } from './in-list/in-list-filter.component';\r\n\r\n@Component({\r\n selector: 'tb-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatCardModule, FormsModule, SpaceCasePipe, MatButtonModule, MatTooltipModule, MatIconModule,\r\n MatInputModule, MatSelectModule, NumberFilterComponent,\r\n DateFilterComponent, DateTimeFilterComponent, MatRadioModule, InFilterComponent, InListFilterComponent,\r\n NgTemplateOutlet\r\n ]\r\n})\r\nexport class FilterComponent {\r\n protected state = inject(TableStore);\r\n\r\n filterTypes = filterTypeMap;\r\n FilterType = FilterType;\r\n FieldType = FieldType;\r\n\r\n $filter = input.required<PartialFilter, PartialFilter>({\r\n alias: 'filter',\r\n transform: (f) => ({ ...f })\r\n });\r\n\r\n close = output();\r\n\r\n $enteredFilterType = signal<FilterType | undefined>(undefined);\r\n $currentFilterType = computed(() => this.$enteredFilterType() || this.$filter()?.filterType);\r\n $availableFilterTypes = computed(() => this.filterTypes[this.$filter()?.fieldType]);\r\n $filterBy = computed(() => this.$filter().filterBy)\r\n\r\n onEnter(filter: FilterInfo, event: any) {\r\n event.preventDefault();\r\n if(filter.filterValue != null && filter.filterType) {\r\n this.addFilter(filter);\r\n this.close.emit();\r\n }\r\n }\r\n\r\n addFilter(filter: FilterInfo){\r\n this.state.addFilter({ ...filter, filterBy: this.$filterBy() });\r\n }\r\n}\r\n","@let filter = $filter();\r\n@let currentFilterType = $currentFilterType();\r\n\r\n@if (filter)\r\n{\r\n <mat-card appearance=\"outlined\" class=\"filter-card\">\r\n <mat-card-content>\r\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\r\n <div class=\"head-row\" >\r\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\r\n <button class=\"cancel-button small-button\" color=\"primary\" mat-icon-button type=\"button\" [matTooltip]=\"'Close'\"\r\n (click)=\"close.emit();\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"filter-row\">\r\n <div class=\"inline\">\r\n <mat-form-field class=\"my-filter\" >\r\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [ngModel]=\"$currentFilterType()\" [panelWidth]=\"null\" (ngModelChange)=\"$enteredFilterType.set($event)\">\r\n @for (kvp of filterTypes[filter.fieldType]; track kvp)\r\n {\r\n <mat-option [value]=\"kvp\">\r\n {{ kvp }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n @if(\r\n filter.fieldType === FieldType.String\r\n || filter.fieldType === FieldType.Array\r\n || filter.fieldType === FieldType.Link\r\n || filter.fieldType === FieldType.Unknown\r\n || filter.fieldType === FieldType.PhoneNumber)\r\n {\r\n <ng-container *ngTemplateOutlet=\"String\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency)\r\n {\r\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Boolean)\r\n {\r\n <ng-container *ngTemplateOutlet=\"Boolean\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Date)\r\n {\r\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.DateTime)\r\n {\r\n <tb-date-time-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Enum)\r\n {\r\n <ng-container *ngTemplateOutlet=\"Enum\" />\r\n }\r\n\r\n @if(currentFilterType === FilterType.IsNull)\r\n {\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\">\r\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\r\n </mat-radio-group>\r\n }\r\n </div>\r\n <button mat-button disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\" (click)=\"addFilter(form.value)\">\r\n Apply\r\n </button>\r\n \r\n \r\n <ng-template #String>\r\n @if(currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In)\r\n {\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n </mat-form-field>\r\n }\r\n @else if(currentFilterType === FilterType.In)\r\n {\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.String\" [(ngModel)]=\"filter.filterValue\" />\r\n }\r\n </ng-template>\r\n \r\n <ng-template #Boolean >\r\n @if(currentFilterType === FilterType.BooleanEquals)\r\n {\r\n <div class=\"switch\">\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\r\n <mat-radio-button preventEnter [value]=\"true\">True</mat-radio-button>\r\n <mat-radio-button preventEnter [value]=\"false\">False</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n </ng-template>\r\n <ng-template #Enum>\r\n @if(currentFilterType === FilterType.In)\r\n {\r\n <tb-in-list-filter name='filterValue' [key]='filter.key' [(ngModel)]='filter.filterValue' />\r\n\r\n }\r\n </ng-template>\r\n </form>\r\n </mat-card-content>\r\n </mat-card>\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\r\nimport { DisplayCol } from '../../classes/display-col';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-col-displayer',\r\n templateUrl: './gen-col-displayer.component.html',\r\n styleUrls: ['./gen-col-displayer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatTooltipModule, MatIconModule, MatButtonModule, MatMenuModule, StopPropagationDirective,\r\n DragDropModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenColDisplayerComponent {\r\n private tableState = inject(TableStore);\r\n $columns = computed(() => this.tableState.$orderedCodeVisibleMetaDatas().map( md => ({\r\n key: md.key,\r\n displayName: md.displayName,\r\n isVisible: !this.tableState.$hiddenKeys().includes(md.key)\r\n })));\r\n\r\n reset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = true);\r\n this.emit(displayCols);\r\n }\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.tableState.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder: event.previousIndex })\r\n }\r\n unset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = false);\r\n this.emit(displayCols);\r\n }\r\n\r\n emit(displayCols: DisplayCol[]) {\r\n this.tableState.setHiddenColumns(displayCols.map( c => ({ key: c.key, visible: c.isVisible })));\r\n }\r\n}\r\n","@if($columns(); as displayCols)\r\n{\r\n <span matTooltip=\"Show/hide columns\">\r\n <button color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button color=\"primary\" mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button color=\"primary\" mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList stop-propagation [cdkDropListLockAxis]=\"'y'\" (cdkDropListDropped)=\"drop($event)\">\r\n @for (col of displayCols; track col.key)\r\n {\r\n <button stop-propagation mat-menu-item cdkDrag [class.isHidden]=\"!col.isVisible\" [cdkDragData]=\"col\">\r\n <div style=\"display: flex; align-items: center;\" (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\">\r\n @if(col.isVisible)\r\n {\r\n <button color=\"primary\" mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n }\r\n \r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n </div>\r\n </button>\r\n }\r\n\r\n </div>\r\n </mat-menu>\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { PartialFilter } from \"../../classes/filter-info\";\r\n@Injectable()\r\nexport class WrapperFilterStore extends ComponentStore<{filterInfo:PartialFilter[]}>{\r\n constructor(){\r\n super({ filterInfo: [] });\r\n }\r\n\r\n clearAll = this.updater(() => ({ filterInfo: [] }));\r\n deleteByIndex = this.updater((state, index:number) => {\r\n const arr = [...state.filterInfo];\r\n arr.splice(index, 1);\r\n return { filterInfo: arr };\r\n });\r\n\r\n $currentFilters = this.selectSignal(state => state.filterInfo);\r\n\r\n addFilter = this.updater((state, filter:PartialFilter) => {\r\n return ({ ...state, filterInfo: [...state.filterInfo, filter] });\r\n })\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\r\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'tb-filter-displayer',\r\n templateUrl: './gen-filter-displayer.component.html',\r\n styleUrls: ['./gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatButtonModule, MatMenuModule, MatTooltipModule, StopPropagationDirective, MatIconModule,\r\n SpaceCasePipe\r\n ]\r\n})\r\nexport class GenFilterDisplayerComponent {\r\n protected tableState = inject(TableStore);\r\n protected filterStore = inject(WrapperFilterStore);\r\n $filterCols = computed(() => {\r\n const mds = this.tableState.$metaDataArray();\r\n return mds.filter(m => m.fieldType !== FieldType.Hidden && (m.fieldType !== FieldType.NotMapped || m.filterLogic?.filterBy) && !m.noFilter);\r\n });\r\n\r\n addFilter(metaData: MetaData) {\r\n this.filterStore.addFilter({\r\n key: metaData.key,\r\n fieldType: metaData.filterLogic?.filterType || metaData.fieldType,\r\n filterBy: metaData.filterLogic?.filterBy === 'use map' ? metaData.map : metaData.filterLogic?.filterBy\r\n });\r\n }\r\n}","<button color=\"primary\" stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" [matTooltip]=\"'Add Filter'\">\r\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n @for (md of $filterCols(); track md.key)\r\n {\r\n <button mat-menu-item (click)=\"addFilter(md)\">\r\n <span class=\"filter-labels\">{{md.displayName || (md.key | spaceCase)}}</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n","import { Pipe, PipeTransform, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({ name: 'keyDisplay' })\r\nexport class KeyDisplayPipe implements PipeTransform {\r\n tableState = inject(TableStore);\r\n\r\n transform = (key: string) =>\r\n computed(() => this.tableState.$getMetaData(key)()?.displayName || spaceCase(key))\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FilterType } from '../enums/filterTypes';\r\n\r\n@Pipe({ name: 'formatFilterType' })\r\nexport class FormatFilterTypePipe implements PipeTransform {\r\n transform(filterType: FilterType, value: any){\r\n if(filterType === FilterType.IsNull){\r\n return value ? filterType : 'Is Not Blank'\r\n }\r\n return filterType;\r\n }\r\n}","import { PipeTransform } from '@angular/core';\r\nimport { FieldType, MappedMetaData, MetaData } from '../interfaces/report-def';\r\nimport { formatDate, formatCurrency } from '@angular/common';\r\nimport { phoneFormatter } from '../../utilities/pipes/phone.pipe';\r\nimport { TableBuilderConfig } from '../classes/TableBuilderConfig';\r\nimport { spaceCase } from '../../utilities';\r\nimport { getFactory } from '../functions/sort-data-function';\r\n\r\nexport function isPipe(o : any ): o is PipeTransform {\r\n return typeof ((o as PipeTransform).transform ) === 'function';\r\n}\r\n\r\nexport function createTransformer(metaData: MetaData<any, any>, config: TableBuilderConfig, noIcons = false, forItem = false): ((value: any, ...args: any[]) => any) {\r\n const defaultFunc = getFactory(metaData.key);\r\n if(metaData.map && !forItem){\r\n return (value: any) => {\r\n return metaData.map!(value)};\r\n }\r\n if((metaData as MappedMetaData).mapItem){\r\n return (value: any) => {\r\n return (metaData as MappedMetaData).mapItem!(defaultFunc(value))};\r\n }\r\n if( metaData.transform) {\r\n if(isPipe(metaData.transform)){\r\n return (value: any) => (metaData!.transform as PipeTransform).transform(defaultFunc(value));\r\n }\r\n return metaData.fieldType === FieldType.Expression ? metaData.transform : (value: any) => (metaData.transform as (a:any, b:any)=>any)(defaultFunc(value), value);\r\n }\r\n if(config.transformers && config.transformers[metaData.fieldType]) {\r\n var transformer = config.transformers![metaData.fieldType]!;\r\n return (value: any) => transformer(defaultFunc(value));\r\n }\r\n const defaultDateFormat = config.dateFormats?.dateFormat ?? 'shortDate';\r\n const defaultDateTimeFormat = config.dateFormats?.dateTimeFormat ?? 'short';\r\n switch (metaData.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = metaData.additional?.dateFormat ?? defaultDateFormat;\r\n return (value: any) => dateFormatter(defaultFunc(value), dateFormat);\r\n case FieldType.DateTime:\r\n const dateTimeFormat = metaData.additional?.dateTimeOptions?.format ?? defaultDateTimeFormat;\r\n return (value: any) => dateFormatter(defaultFunc(value), dateTimeFormat);\r\n case FieldType.Currency:\r\n return (value: any) => currencyFormatter(defaultFunc(value));\r\n case FieldType.PhoneNumber:\r\n return (value: any) => phoneFormatter(defaultFunc(value));\r\n case FieldType.Enum:\r\n return (value: any) => spaceCase(metaData.additional?.enumMap![defaultFunc(value)] as string) ;\r\n case FieldType.Boolean:\r\n if(noIcons) {\r\n return defaultFunc\r\n }\r\n let forTrue = 'check'\r\n let forFalse = '';\r\n if(metaData.additional?.boolean?.forTrue) {\r\n forTrue = metaData?.additional.boolean.forTrue.icon;\r\n }\r\n if(metaData.additional?.boolean?.showForFalse === true) {\r\n forFalse = 'clear';\r\n } else if(metaData.additional?.boolean?.showForFalse?.icon) {\r\n forFalse = metaData.additional?.boolean?.showForFalse?.icon;\r\n }\r\n return (value: any) => defaultFunc(value) ? forTrue : forFalse ;\r\n }\r\n return defaultFunc;\r\n}\r\n\r\nexport function createItemTransformer<T = any, AdditionalFields extends string[] = []>(metaData: MetaData<T, AdditionalFields>, config: TableBuilderConfig, noIcons = false, mutate = false){\r\n const transform = createTransformer(metaData, config, noIcons);\r\n return (t: T) => {\r\n if(!mutate){\r\n t = { ...t }\r\n }\r\n t[metaData.key as string] = transform(t)\r\n }\r\n}\r\n\r\nexport function createItemTransformers<T = any, AdditionalFields extends string[] = []>(metaDatas: MetaData<T, AdditionalFields>[], config: TableBuilderConfig, noIcons = false, mutate = false){\r\n const transformers = metaDatas.map(meta => createItemTransformer(meta, config, noIcons, true));\r\n return (t: T) => {\r\n if(!t) return t;\r\n if(!mutate){\r\n t = { ... t }\r\n }\r\n transformers.forEach(m => m(t));\r\n return t;\r\n }\r\n}\r\n\r\nexport function dateFormatter(date: string | Date | number, format: string){\r\n if(!date) return;\r\n return formatDate(date, format, 'en-US');\r\n}\r\n\r\nexport function currencyFormatter(amt: number) {\r\n return formatCurrency(amt, 'en-US', '$');\r\n}","import { Pipe, PipeTransform, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { FieldType, MetaData } from '../interfaces/report-def';\r\nimport { DatePipe } from '@angular/common';\r\nimport { FilterType } from '../enums/filterTypes';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { DateTimeFilterFuncs } from '../functions/date-filter-function';\r\nimport { currencyFormatter, dateFormatter } from '../services/transform-creator';\r\n\r\n\r\n@Pipe({ name: 'formatFilterValue' })\r\nexport class FormatFilterValuePipe implements PipeTransform {\r\n tableState = inject(TableStore);\r\n private datePipe = inject(DatePipe);\r\n\r\n transform(value: any, key: string, filterType: FilterType) {\r\n return computed(() => transform(value, this.tableState.$getMetaData(key)(), filterType));\r\n }\r\n}\r\n\r\nconst transform = (value: any, meta: MetaData, filterType: FilterType): string => {\r\n if(filterType === FilterType.IsNull) {\r\n return '';\r\n }\r\n if(value && (filterType === FilterType.In )){\r\n if(meta.fieldType === FieldType.Enum) {\r\n return value.map( (v: any) => spaceCase(meta.additional!.enumMap![v])).join(', ') ?? value;\r\n }\r\n if(meta.fieldType === FieldType.Date || meta.fieldType === FieldType.DateTime) {\r\n return value.map( (v: any) => mapDate(v, meta, filterType)).join(', ') ?? value;\r\n }\r\n if(meta.fieldType === FieldType.Number || meta.fieldType === FieldType.Currency) {\r\n return value.map( (v: any) => mapNumber(v, meta)).join(', ') ?? value;\r\n }\r\n return value.join(', ') ?? value;\r\n }\r\n if(filterType === FilterType.NumberBetween && (meta.fieldType === FieldType.Number || meta.fieldType === FieldType.Currency)){\r\n return mapNumber(value.Start, meta) + ' - ' + mapNumber(value.End, meta);\r\n }\r\n if(filterType === FilterType.DateBetween){\r\n return mapDate(value.Start, meta, filterType) + ' - ' + mapDate(value.End, meta, filterType);\r\n }\r\n if(meta.fieldType === FieldType.Date || meta.fieldType === FieldType.DateTime){\r\n return mapDate(value, meta, filterType);\r\n }\r\n if(meta.fieldType === FieldType.Currency){\r\n return mapNumber(value, meta);\r\n }\r\n return value\r\n}\r\n\r\nfunction mapDate(value: any, meta: MetaData, filterType: FilterType){\r\n if(meta.fieldType === FieldType.Date){\r\n return dateFormatter(value, 'shortDate');\r\n }\r\n if(meta.fieldType === FieldType.DateTime){\r\n return (!!DateTimeFilterFuncs[filterType] ? dateFormatter(value, 'shortDate') : dateFormatter(value, 'short')) || '';\r\n }\r\n return value\r\n}\r\n\r\nfunction mapNumber(value: any, meta: MetaData){\r\n if(meta.fieldType === FieldType.Currency){\r\n return currencyFormatter(value);\r\n }\r\n return value;\r\n}","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { FilterInfo, isFilterInfo } from '../../../classes/filter-info';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FilterComponent } from '../../filter/filter.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { KeyDisplayPipe } from '../../../pipes/key-display';\r\nimport { FormatFilterTypePipe } from '../../../pipes/format-filter-type.pipe';\r\nimport { FormatFilterValuePipe } from '../../../pipes/format-filter-value.pipe';\r\n\r\n@Component({\r\n selector: 'lib-filter-list',\r\n templateUrl: './filter-list.component.html',\r\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatButtonModule, MatTooltipModule, MatIconModule, FilterComponent,\r\n MatChipsModule, KeyDisplayPipe, FormatFilterTypePipe, FormatFilterValuePipe\r\n ]\r\n})\r\nexport class FilterChipsComponent {\r\n\r\n tableState = inject(TableStore);\r\n filterStore = inject(WrapperFilterStore);\r\n\r\n $filters = computed(() =>\r\n Object.values(this.tableState.$filters()).filter(f => isFilterInfo(f) && !f._isExternallyManaged) as FilterInfo[])\r\n deleteByIndex(index: number) {\r\n this.filterStore.deleteByIndex(index);\r\n }\r\n\r\n addFilter(filter:FilterInfo<any>){\r\n this.filterStore.addFilter(filter);\r\n }\r\n\r\n clearAll() {\r\n this.filterStore.clearAll();\r\n }\r\n\r\n $currentFilters = this.filterStore.$currentFilters;\r\n}\r\n","<div class=\"d-w\">\r\n\r\n @if ($currentFilters().length)\r\n {\r\n <button class=\"cancel-button\" mat-icon-button matTooltip=\"Close all Filters Cards\" (click)=\"clearAll()\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n <div class=\"float\">\r\n @for (filter of $currentFilters(); track filter.key)\r\n {\r\n <div class=\"filter\">\r\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex($index)\" />\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-chip-set>\r\n @for (filter of $filters(); track filter.key)\r\n {\r\n <mat-chip (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\r\n {{ (filter.key | keyDisplay)() }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ (filter.filterValue | formatFilterValue: filter.key : filter.filterType)() }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n @if ($filters().length > 1)\r\n {\r\n <mat-chip (removed)=\"tableState.clearFilters()\">\r\n Clear All\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, computed, input } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { LinkInfo } from \"../services/link-creator.service\";\r\n\r\n@Component({\r\n selector: \"tb-router-link-column\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterModule\r\n ],\r\n template: `\r\n <a target=\"{{additional().target}}\"\r\n [routerLink]=\" [link()]\"\r\n [queryParams]=\"queryParams()\"\r\n [fragment]=\"routerLinkOptions().fragment\"\r\n [preserveFragment]=\"routerLinkOptions().preserveFragment\"\r\n [queryParamsHandling]=\"routerLinkOptions().queryParamsHandling\"\r\n >\r\n <ng-content></ng-content>\r\n </a>\r\n `\r\n}) export class RouterLinkColumnComponent {\r\n additional = input.required<LinkInfo>();\r\n element = input.required<any>();\r\n queryParams = computed(() => this.additional().routerLinkOptions!.queryParams(this.element()));\r\n routerLinkOptions = computed(() => this.additional().routerLinkOptions!);\r\n link = input.required<string>();\r\n}\r\n\r\n@Component({\r\n selector: \"tb-link-column\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <a target=\"{{additional().target}}\" href=\"{{link()}}\">\r\n <ng-content></ng-content>\r\n </a>\r\n `\r\n}) export class LinkColumnComponent {\r\n element = input.required<any>();\r\n additional = input.required<LinkInfo>();\r\n link = input.required<string>();\r\n}","import { ChangeDetectionStrategy, Component, input, computed } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tb-comma-array-column',\r\n template: `\r\n @for(val of displayArray(); track $index){\r\n {{val + (!$last ? ',' : '')}}\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayCommaColumnComponent {\r\n\r\n value = input.required<(string | number)[]>();\r\n additional = input(3);\r\n displayArray = computed(() => (this.value() || []).slice(0, this.additional()))\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'tb-new-line-array-column',\r\n template: `\r\n @for(val of displayArray(); track $index){\r\n {{val}}\r\n @if(!$last){ <br/> }\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayNewLineColumnComponent {\r\n value = input.required<(string | number)[]>();\r\n additional = input(3);\r\n displayArray = computed(() => (this.value() || []).slice(0, this.additional()));\r\n}\r\n","import { Component, TemplateRef, viewChild } from \"@angular/core\";\r\nimport { LinkColumnComponent, RouterLinkColumnComponent } from \"../link-column.component\";\r\nimport { ArrayCommaColumnComponent, ArrayNewLineColumnComponent } from \"../array-column.component\";\r\nimport { MatIcon } from \"@angular/material/icon\";\r\nimport { StylerDirective } from \"../../../utilities/directives/styler\";\r\nimport { FunctionPipe } from \"../../../utilities\";\r\n\r\n@Component({\r\n selector: 'initialization',\r\n templateUrl: './initialization.component.html',\r\n imports: [\r\n LinkColumnComponent, ArrayCommaColumnComponent, MatIcon,\r\n RouterLinkColumnComponent, ArrayNewLineColumnComponent,\r\n StylerDirective, FunctionPipe\r\n ]\r\n})\r\nexport class InitializationComponent {\r\n $linkTemplate = viewChild.required<TemplateRef<any>>('link');\r\n $routerLinkTemplate = viewChild.required<TemplateRef<any>>('routerLink');\r\n $linkWithIconTemplate = viewChild.required<TemplateRef<any>>('linkWithIcon');\r\n $routerLinkWithIconTemplate = viewChild.required<TemplateRef<any>>('routerLinkWithIcon');\r\n $imageUrlTemplate = viewChild.required<TemplateRef<any>>('imageUrl');\r\n $arrayNewLineTemplate = viewChild.required<TemplateRef<any>>('arrayNewLine');\r\n $arrayCommaTemplate = viewChild.required<TemplateRef<any>>('arrayComma');\r\n $defaultTemplate = viewChild.required<TemplateRef<any>>('default');\r\n $defaultWithIcon = viewChild.required<TemplateRef<any>>('defaultWithIcon');\r\n}\r\n","<ng-template #link let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n </tb-link-column>\r\n }\r\n @else\r\n {\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #routerLink let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-router-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n </tb-router-link-column>\r\n }\r\n @else\r\n {\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n }\r\n\r\n</ng-template>\r\n\r\n<ng-template #linkWithIcon let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{ value}}</mat-icon>\r\n </tb-link-column>\r\n }\r\n @else\r\n {\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #routerLinkWithIcon let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n @let link = additional.link | func : element;\r\n @if(link)\r\n {\r\n <tb-link-column [element]=\"element\" [additional]=\"additional\" [link]=\"$any(link)\">\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{ value}}</mat-icon>\r\n </tb-link-column>\r\n }\r\n @else\r\n {\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{ value}}</mat-icon>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-value='value'>\r\n <span>\r\n <img height=\"75px\" width=\"75px\" [src]=\"value\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #arrayNewLine let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n <tb-new-line-array-column [value]='value' [additional]='additional' [styler]=\"styles\" [element]=\"element\"/>\r\n</ng-template>\r\n\r\n<ng-template #arrayComma let-value='value' let-element='element' let-additional=\"additional\" let-styles=\"innerStyles\">\r\n <tb-comma-array-column [value]='value' [additional]='additional' [styler]=\"styles\" [element]=\"element\"/>\r\n</ng-template>\r\n\r\n<ng-template #default let-value='value' let-element='element' let-styles=\"innerStyles\">\r\n <span [styler]=\"styles\" [element]=\"element\">{{value}}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-value='value' let-element='element' let-styles=\"innerStyles\">\r\n <mat-icon [styler]=\"styles\" [element]=\"element\">{{value}}</mat-icon>\r\n</ng-template>\r\n","import { EnvironmentInjector, createComponent, inject } from \"@angular/core\";\r\nimport { Injectable, TemplateRef } from \"@angular/core\";\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { InitializationComponent } from \"../components/initialization-component/initialization.component\";\r\nimport { TableBuilderConfigToken } from \"../classes/TableBuilderConfig\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TableTemplateService {\r\n environmentInjector = inject(EnvironmentInjector);\r\n tableConfig = inject(TableBuilderConfigToken);\r\n initConfig = createComponent(InitializationComponent, {\r\n environmentInjector: this.environmentInjector,\r\n });\r\n initializationComponentInstance = this.initConfig.instance;\r\n getTemplate(metaData: MetaData) : TemplateRef<any> {\r\n\r\n if(metaData.fieldType === FieldType.Array){\r\n const arrayStyle = (metaData.additional as ArrayAdditional)?.arrayStyle ?? this.tableConfig?.arrayDefaults?.arrayStyle;\r\n return arrayStyle === ArrayStyle.NewLine\r\n ? this.initializationComponentInstance.$arrayNewLineTemplate()\r\n : this.initializationComponentInstance.$arrayCommaTemplate();\r\n }\r\n\r\n if(metaData.fieldType === FieldType.ImageUrl) {\r\n return this.initializationComponentInstance.$imageUrlTemplate();\r\n }\r\n\r\n const useIcon = metaData.useIcon || metaData.fieldType === FieldType.Boolean;\r\n if(metaData.fieldType === FieldType.Link || metaData.additional?.link){\r\n const router = metaData.additional?.link?.useRouterLink;\r\n if(router) {\r\n return useIcon\r\n ? this.initializationComponentInstance.$routerLinkWithIconTemplate()\r\n : this.initializationComponentInstance.$routerLinkTemplate();\r\n }\r\n return useIcon\r\n ? this.initializationComponentInstance.$linkWithIconTemplate()!\r\n : this.initializationComponentInstance.$linkTemplate();\r\n }\r\n\r\n if(useIcon){\r\n return this.initializationComponentInstance.$defaultWithIcon();\r\n }\r\n\r\n return this.initializationComponentInstance.$defaultTemplate();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, linkedSignal, viewChild } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InListFilterComponent } from '../filter/in-list/in-list-filter.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n selector: 'tb-header-menu',\r\n templateUrl: './column-header-menu.component.html',\r\n styleUrl: './column-header-menu.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatMenuModule, MatIconModule, MatButtonModule, FormsModule, InListFilterComponent,\r\n MatInputModule, MatTooltipModule, StopPropagationDirective, MatRadioModule, MatDatepickerModule\r\n ]\r\n})\r\nexport class ColumnHeaderMenuComponent {\r\n protected tableState = inject(TableStore);\r\n\r\n FieldType = FieldType;\r\n FilterType = FilterType;\r\n\r\n $metaData = input.required<MetaData>({ alias: 'metaData' });\r\n $fieldType = computed(() => this.$metaData().filterLogic?.filterType || this.$metaData().fieldType)\r\n $trigger = viewChild(MatMenuTrigger);\r\n\r\n hideField(key: string) {\r\n this.tableState.hideColumn(key);\r\n }\r\n\r\n $metaFilterType = computed<FilterType>(() => {\r\n if(this.$metaData().additional?.filterOptions?.filterableValues) {\r\n return FilterType.In;\r\n }\r\n switch (this.$fieldType()) {\r\n case FieldType.String:\r\n case FieldType.Link:\r\n case FieldType.PhoneNumber:\r\n case FieldType.Array:\r\n case FieldType.Unknown:\r\n return FilterType.StringContains;\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n return FilterType.NumberEquals;\r\n case FieldType.Boolean:\r\n return FilterType.BooleanEquals;\r\n case FieldType.Date:\r\n case FieldType.DateTime:\r\n return FilterType.DateIsOn;\r\n case FieldType.Enum:\r\n return FilterType.In;\r\n default: return FilterType.StringContains\r\n }\r\n });\r\n\r\n $currentFilterType = linkedSignal(() => this.$metaFilterType());\r\n $key = computed(() => this.$metaData().key || crypto.randomUUID());\r\n\r\n setStringFilterType() {\r\n if(this.$currentFilterType() === FilterType.StringContains){\r\n this.$currentFilterType.set(FilterType.StringDoesNotContain);\r\n } else {\r\n this.$currentFilterType.set(FilterType.StringContains);\r\n }\r\n }\r\n\r\n setFilterType(filterType: FilterType) {\r\n this.$currentFilterType.set(filterType)\r\n }\r\n\r\n onEnter(filter: FilterInfo, metaData: MetaData) {\r\n if(filter.filterValue != undefined && this.$currentFilterType()) {\r\n this.tableState.addFilter({\r\n fieldType: this.$fieldType(),\r\n filterId: `header-column-${metaData.key}`,\r\n filterType: this.$currentFilterType(),\r\n filterValue: filter.filterValue,\r\n key: metaData.key,\r\n filterBy: metaData.filterLogic?.filterBy === 'use map' ? metaData.map : metaData.filterLogic?.filterBy\r\n });\r\n this.$trigger()!.closeMenu();\r\n }\r\n }\r\n}\r\n","@let metaData = $metaData();\r\n@let fieldType = $fieldType();\r\n@let currentFilterType = $currentFilterType();\r\n\r\n<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n @if (!(fieldType === FieldType.NotMapped))\r\n {\r\n <button color=\"primary\" mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n }\r\n <button color=\"primary\" mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <div (keydown)=\"$event.stopImmediatePropagation()\">\r\n @if (!(fieldType === FieldType.NotMapped))\r\n {\r\n <ng-form #myForm=\"ngForm\" class=\"tb-header-filter\" (keydown.enter)=\"onEnter(myForm.value, metaData)\">\r\n @if(currentFilterType === FilterType.Or || currentFilterType === FilterType.In)\r\n {\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [ngModel]=\"undefined\"/>\r\n }\r\n @else if(fieldType === FieldType.Link || fieldType === FieldType.String || fieldType === FieldType.Array || fieldType === FieldType.Unknown || fieldType === FieldType.PhoneNumber)\r\n {\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{currentFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"undefined\"/>\r\n <span matSuffix [matTooltip]=\"currentFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" class=\"header-filter-icon-button\" (click)=\"setStringFilterType()\">\r\n <mat-icon [class]=\"{'chosen-icon': currentFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (fieldType === FieldType.Number || fieldType === FieldType.Currency)\r\n {\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n <mat-label>{{currentFilterType === FilterType.NumberEquals ? 'Equals...' : currentFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"undefined\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.NumberLessThan }\"\r\n (click)=\"setFilterType(FilterType.NumberLessThan)\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.NumberGreaterThan }\"\r\n (click)=\"setFilterType(FilterType.NumberGreaterThan)\" >\r\n <mat-icon class=\"suffix-icons\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.NumberEquals }\"\r\n (click)=\"setFilterType(FilterType.NumberEquals)\">\r\n <span class=\"suffix-icons\">=</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (fieldType === FieldType.Boolean)\r\n {\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group #ctrl=\"matRadioGroup\" #boolField='ngModel' stop-propagation class=\"font\" name=\"filterValue\" [ngModel]=\"undefined\" >\r\n <mat-radio-button class=\"filter-radio-button\" [value]=\"true\" (click)=\"boolField.control.setValue(true);\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" [value]=\"false\" (click)=\"boolField.control.setValue(false)\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (fieldType === FieldType.Date || fieldType === FieldType.DateTime)\r\n {\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.DateOnOrAfter }\"\r\n (click)=\"setFilterType(FilterType.DateOnOrAfter)\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.DateOnOrBefore }\"\r\n (click)=\"setFilterType(FilterType.DateOnOrBefore)\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" [class]=\"{'chosen-icon': currentFilterType === FilterType.DateIsOn }\"\r\n (click)=\"setFilterType(FilterType.DateIsOn)\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{currentFilterType === FilterType.DateIsOn ? 'On...' :\r\n currentFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"undefined\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix preventEnter [for]=\"calendar\" />\r\n <mat-datepicker #calendar />\r\n </mat-form-field>\r\n }\r\n <button mat-button disableRipple [disabled]=\"myForm.value.filterValue == undefined\" (click)=\"onEnter(myForm.value, metaData)\">\r\n Apply\r\n </button>\r\n </ng-form>\r\n }\r\n </div>\r\n\r\n</mat-menu>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport { sumBy } from 'lodash';\r\n\r\n@Pipe({\r\n name: 'columnTotal',\r\n})\r\nexport class ColumnTotalPipe implements PipeTransform {\r\n transform(data: any[], metaData: MetaData) {\r\n const dataToCalculate = data.filter(d => !d.isGroupHeader)\r\n switch (metaData.additional!.footer!.type) {\r\n case 'sum':\r\n return sumBy(dataToCalculate, metaData.key);\r\n }\r\n }\r\n}\r\n","import { Dictionary } from \"@ngrx/entity\";\r\nimport { MetaData, metaDataArrToDict } from \"../../interfaces/report-def\";\r\nimport { StylerStyle } from \"../../../utilities/directives/styler\";\r\n\r\nexport const calculateWidths = (metaData: MetaData, userDefinedWidth: number | undefined) => {\r\n const definedWidth = (userDefinedWidth && `${userDefinedWidth}px`) || metaData.width;\r\n return definedWidth;\r\n}\r\n\r\nexport function calculateUserDefinedWidth(userDefinedWidth: number | undefined){\r\n if(userDefinedWidth) return { flex: `0 0 ${userDefinedWidth}px`, maxWidth: 'none' };\r\n return undefined;\r\n}\r\n\r\nexport function calculateTableDefinedWidth(metaData: MetaData, tableSettingsMinWidth: number | undefined){\r\n if(metaData.width) return ({ flex: `0 0 ${metaData.width}`, maxWidth: 'none' });\r\n const style = { flex: `${1}` };\r\n if(tableSettingsMinWidth) style['minWidth'] = `${tableSettingsMinWidth}px`;\r\n return style;\r\n}\r\n\r\nexport const calculateFlexWidth = (metaData: MetaData, userDefinedWidth: number | undefined, tableSettingsMinWidth: number | undefined) => {\r\n const definedWidth = calculateWidths(metaData, userDefinedWidth);\r\n if(definedWidth) return ({ flex: `0 0 ${definedWidth}`, maxWidth: 'none' });\r\n const style = { flex: `${1}` };\r\n if(tableSettingsMinWidth) style['minWidth'] = `${tableSettingsMinWidth}px`;\r\n return style;\r\n}\r\n\r\nexport const columnStyles = (metaData: MetaData, userDefinedWidth: number | undefined, tableSettingsMinWidth?: number | undefined) => {\r\n const fullMetaStyles = metaData.additional?.styles ?? {};\r\n const userWidth = calculateUserDefinedWidth(userDefinedWidth) ?? {};\r\n const tableWidth = userDefinedWidth ? {} : calculateTableDefinedWidth(metaData, tableSettingsMinWidth);\r\n const styles: {\r\n header: Dictionary<string>;\r\n body: StylerStyle;\r\n innerBody: StylerStyle;\r\n footer: Dictionary<string>;\r\n } = {\r\n header: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.header, ...userWidth },\r\n footer: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.footer, ...userWidth },\r\n innerBody: { ...metaData.additional?.columnPartStyles?.innerBody },\r\n body: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.body, ...userWidth },\r\n };\r\n return styles;\r\n}\r\n\r\nexport const calculateFlexWidths = (metaDatas: MetaData[], userDefinedWidths: Dictionary<number>, tableSettingsMinWidth: number | undefined) => {\r\n return metaDataArrToDict(metaDatas, md => calculateFlexWidth(md, userDefinedWidths[md.key], tableSettingsMinWidth));\r\n}\r\n\r\nexport const columnsStyles = (metaDatas: MetaData[], userDefinedWidths: Dictionary<number>) => {\r\n return metaDataArrToDict(metaDatas, md => columnStyles(md, userDefinedWidths[md.key]));\r\n}\r\n","import { Component, ChangeDetectionStrategy, TemplateRef, Predicate, Injector, computed, inject, viewChild, signal, Signal, AfterViewInit } from '@angular/core';\r\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { MatColumnDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { CustomCellDirective, ResizeColumnDirective } from '../../directives';\r\nimport { createTransformer } from '../../services/transform-creator';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { TableTemplateService } from '../../services/table-template-service';\r\nimport { CdkDropList, CDK_DROP_LIST, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { CurrencyPipe, DecimalPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { ConditionalClassesDirective, FunctionPipe, SpaceCasePipe } from '../../../utilities';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { ColumnHeaderMenuComponent } from '../column-header-menu/column-header-menu.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ColumnTotalPipe } from '../../pipes/column-total.pipe';\r\nimport { StylerDirective } from '../../../utilities/directives/styler';\r\nimport { columnStyles } from './column-helpers';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\n\r\n@Component({\r\n templateUrl: './column-builder.component.html',\r\n styleUrls: ['./column-builder.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\r\n ],\r\n imports: [\r\n MatTableModule, NgTemplateOutlet, ResizeColumnDirective, FunctionPipe, StylerDirective,\r\n ConditionalClassesDirective, DragDropModule, MatSortModule, SpaceCasePipe, ColumnHeaderMenuComponent,\r\n MatTooltipModule, ColumnTotalPipe, CurrencyPipe, DecimalPipe\r\n ]\r\n})\r\nexport class ColumnBuilderComponent implements AfterViewInit {\r\n FieldType = FieldType;\r\n private config = inject(TableBuilderConfigToken);\r\n private table = inject<MatTable<any>>(MatTable);\r\n private state = inject(TableStore);\r\n private templateService = inject(TableTemplateService);\r\n private tableConfig = inject(TableBuilderConfigToken);\r\n protected injector = inject(Injector);\r\n\r\n $columnDef = viewChild(MatColumnDef);\r\n $bodyTemplate = viewChild<TemplateRef<any>>('body');\r\n protected $metaData = signal<MetaData | undefined>(undefined);\r\n $additional = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n const linkInfo = this.state.$getLinkInfo(metaData)();\r\n if(linkInfo){\r\n return linkInfo;\r\n }\r\n if(metaData.fieldType === FieldType.Array){\r\n return (metaData.additional as ArrayAdditional)?.limit || this.tableConfig?.arrayDefaults?.limit;\r\n }\r\n return undefined;\r\n });\r\n setMetaData(md: MetaData){\r\n this.$metaData.set(md);\r\n }\r\n $customCell = signal<CustomCellDirective | undefined>(undefined);\r\n $data!: Signal<any[]>;\r\n\r\n $transform = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n return createTransformer(metaData, this.config)\r\n });\r\n $innerTemplate = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n return metaData.template || this.$customCell()?.$templateRef() || this.templateService.getTemplate(metaData);\r\n });\r\n $showFilters = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n const settings = this.state.$tableSettings();\r\n return !(settings.hideColumnHeaderFilters || metaData.noFilter)\r\n });\r\n $outerTemplate = computed(() => {\r\n return this.$customCell()?.columnDef?.cell?.template ?? this.$bodyTemplate();\r\n });\r\n $classes: Signal<Dictionary<Predicate<any> | true> | undefined> = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return;\r\n if(metaData.fieldType === FieldType.Currency) {\r\n return ({\r\n ['negative-currency']: (element) => element[metaData.key] < 0,\r\n ...metaData.classes\r\n })\r\n }\r\n return metaData.classes;\r\n });\r\n $styles = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return\r\n return columnStyles(metaData, this.state.$getUserDefinedWidth(metaData.key)(), this.state.$tableSettingsMinWidth());\r\n });\r\n\r\n private viewInited = false;\r\n ngAfterViewInit() {\r\n this.table.addColumnDef(this.$columnDef()!);\r\n this.onViewInit();\r\n this.viewInited = true;\r\n }\r\n private onViewInit: () => void = () => {};\r\n whenViewInited = (callback: () => void) => {\r\n if(this.viewInited) {\r\n callback();\r\n return;\r\n }\r\n this.onViewInit = callback;\r\n }\r\n\r\n cellClicked(element: any, key: string, event: MouseEvent) {\r\n const metaData = this.$metaData();\r\n if(metaData?.click) {\r\n metaData.click(element, key, event);\r\n }\r\n }\r\n\r\n getTooltip = (element: any) => {\r\n const metaData = this.$metaData();\r\n if(!metaData?.toolTip) return;\r\n if(typeof metaData.toolTip === 'string') {\r\n return metaData.toolTip;\r\n }\r\n return metaData.toolTip!(element);\r\n }\r\n}\r\n","@let metaData = $metaData();\r\n@let customCell = $customCell();\r\n@let styles = $styles()!;\r\n\r\n@if(metaData)\r\n{\r\n <ng-container [matColumnDef]=\"metaData.key\">\r\n\r\n <!-- header -->\r\n <ng-template #myHeader matHeaderCellDef>\r\n <mat-header-cell class=\"column-head\" cdkDrag resizeColumn [style]='styles?.header' [key]=\"metaData.key\"\r\n [class]='metaData.additional?.columnPartClasses?.header'>\r\n <div class=\"header-container\" cdkDragHandle>\r\n @if(!customCell?.columnDef?.headerCell)\r\n {\r\n @if(metaData.fieldType !== FieldType.NotMapped || !!metaData.sortLogic?.sortBy)\r\n {\r\n <div mat-sort-header style=\"width: 100%\" [disabled]=\"metaData.noSort\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n }\r\n @else if(metaData.fieldType === FieldType.NotMapped)\r\n {\r\n <div style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n }\r\n @if($showFilters())\r\n {\r\n <tb-header-menu #menu [metaData]='metaData' />\r\n }\r\n }\r\n @else\r\n {\r\n <ng-container *ngTemplateOutlet=\"customCell!.columnDef!.headerCell.template; context: {metaData: metaData, styles: styles?.header} \" />\r\n }\r\n </div>\r\n </mat-header-cell>\r\n </ng-template>\r\n \r\n <!-- body -->\r\n <ng-container *matCellDef=\"let element;\">\r\n <ng-container *ngTemplateOutlet=\"$outerTemplate()!; context: { metaData: metaData, element: element , styles: styles?.body, $implicit: element }\"/>\r\n </ng-container>\r\n <ng-template #body let-element='element' >\r\n <mat-cell [matTooltip]=\"metaData.toolTip ? (getTooltip | func : element) : ''\" \r\n [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body'\r\n (click)='cellClicked(element, metaData.key, $event)' >\r\n <ng-container *ngTemplateOutlet=\"$innerTemplate()!;\r\n context: {\r\n value: ($transform()! | func : element),\r\n element: element,\r\n additional: $additional(),\r\n innerStyles: styles.innerBody,\r\n $implicit: element\r\n }; Injector: injector\" />\r\n </mat-cell>\r\n </ng-template>\r\n \r\n <!-- footer -->\r\n <ng-template matFooterCellDef>\r\n @if(customCell?.columnDef?.footerCell)\r\n {\r\n <ng-container\r\n *ngTemplateOutlet=\"customCell!.columnDef!.footerCell.template;\r\n context: {metaData: metaData, data: $data, styles : styles.footer }\"/>\r\n }\r\n @else\r\n {\r\n @let data = $data();\r\n <mat-footer-cell [style]='styles.footer' [class]='metaData.additional?.columnPartClasses?.footer'>\r\n @if(!!data?.length && metaData.additional?.footer)\r\n {\r\n <span class=\"bold\">\r\n @switch (metaData.fieldType)\r\n {\r\n @case (FieldType.Currency) { {{ data | columnTotal: metaData | currency }} }\r\n @case (FieldType.Number) { {{ data | columnTotal: metaData | number }} }\r\n }\r\n </span>\r\n }\r\n \r\n </mat-footer-cell>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n}","import { Sort } from \"@angular/material/sort\";\r\nimport { SortDirection } from \"../../../interfaces/report-def\";\r\nimport { difference } from \"lodash\";\r\n\r\n// If we are only sorting due to a change in the Sorts[] we can 'optimize'. If the sort array was first by column a asc then by column b desc then by column c asc,\r\n// and now it is first by column d asc then by column a desc then by column b desc then by column c asc, we dont need to rerun the tail, i.e. for culumn b and c.\r\n// So we need to calculate the matching tail of the sort array. Then sortsToRun will be the non-matching head.\r\n// But if any sorts were removed the only way to 'unsort' is to start by the original data and run all the existing sorts again, so 'sorts to run' will be all\r\n// the sorts.\r\n// We always pass allSorts to the container because if the table data changes all the sorts will need to be run.\r\nexport function updateSortState(previousSorts: SortState, currentSorts: TableBuilderSort[]): SortState{\r\n currentSorts = addInitSort(currentSorts);\r\n if(sortsRemoved(previousSorts.allSorts, currentSorts)){\r\n return ({ sortsToRun: currentSorts, allSorts: currentSorts });\r\n }\r\n const sameTailLength = getSameTailLength(previousSorts.allSorts, currentSorts);\r\n const sortsToRun = currentSorts.slice(0, currentSorts.length - sameTailLength);\r\n return ({ sortsToRun, allSorts: currentSorts });\r\n}\r\n\r\nexport interface SortState { sortsToRun: TableBuilderSort[], allSorts: TableBuilderSort[]}\r\n\r\nfunction addInitSort(sorts: TableBuilderSort[]){\r\n return [...sorts, { active: initIndexSymbol as unknown as string, direction: 'asc' as SortDirection }];\r\n}\r\n\r\nfunction sortsRemoved(previousSorts: TableBuilderSort[], currentSorts: TableBuilderSort[]): boolean{\r\n const previousSortedColumns = previousSorts.map(s => s.active);\r\n const currentSortedColumns = currentSorts.map(s => s.active);\r\n const sortsRemoved = !!difference(previousSortedColumns, currentSortedColumns).length;\r\n return sortsRemoved;\r\n}\r\n\r\n\r\nfunction getSameTailLength(previousSorts: TableBuilderSort[], currentSorts: TableBuilderSort[]){\r\n previousSorts = [...previousSorts].reverse();\r\n currentSorts = [...currentSorts].reverse();\r\n let indexOfChange = currentSorts.findIndex((s, i) => s.active !== previousSorts[i]?.active || s.direction !== previousSorts[i]?.direction);\r\n if(indexOfChange === -1) return indexOfChange = currentSorts.length;\r\n return indexOfChange;\r\n}\r\n\r\nexport const initIndexSymbol = Symbol('tb_init_index');\r\n\r\nexport const initialSortState: SortState = { sortsToRun: [], allSorts: [] };\r\n\r\nexport type TableBuilderSort = Sort & { nulls?: 'first' | 'last', sortBy?: (t) => any }","import { Injectable } from \"@angular/core\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { DataState, defaultDataState } from \"./TableState\";\r\n\r\n@Injectable()\r\nexport class DataStore extends ComponentStore<DataState> {\r\n constructor() {\r\n super({ ...defaultDataState });\r\n }\r\n}\r\n","import { groupBy } from \"lodash\";\r\nimport { Timestamp } from \"rxjs\";\r\nimport { DataGroup, Group, GroupedData, GroupGroup, NoneGroupHeader } from \"../../../classes/TableState\";\r\nimport { initIndexSymbol } from \"./sort-state.helpers\";\r\nimport { Dictionary } from \"@ngrx/entity\";\r\nimport { getFactory } from \"../../../functions/sort-data-function\";\r\n\r\nconst supportsGroupBy = typeof Object.groupBy === 'function'\r\n\r\nfunction getGroupedData<T extends NoneGroupHeader>(data: T[], groupByKeys: string[]) {\r\n return tbGroupBy(data, groupByKeys);\r\n}\r\n\r\nconst tbGroupBy = <T extends NoneGroupHeader = any>(data: T[], groupByKeys: string[], level = 1, parentGroupName?: string) => {\r\n const currentKey = groupByKeys[0];\r\n const groupedDataArr = groupData(currentKey, data, level, parentGroupName);\r\n\r\n const remainingGroupByKeys = groupByKeys.slice(1);\r\n const hasChildrenGroups = !!remainingGroupByKeys.length;\r\n\r\n if(hasChildrenGroups) {\r\n //group the children by iterating over each group and grouping it by the next keys\r\n const groupOfGroups = groupedDataArr.map((group: DataGroup<T>) => {\r\n const children = group.children;\r\n const groupGroup = {\r\n groupName: group.groupName,\r\n groupHeaderDisplay: group.groupHeaderDisplay,\r\n uniqueName: group.uniqueName,\r\n key: currentKey,\r\n hasTheData: false,\r\n isGroupHeader: true,\r\n padding: group.padding,\r\n level: group.level,\r\n length: group.length,\r\n groups: tbGroupBy(children as T[], remainingGroupByKeys, level + 1, group.groupName),\r\n [initIndexSymbol]: group[initIndexSymbol],\r\n } as GroupGroup<T>;\r\n return groupGroup;\r\n });\r\n return groupOfGroups;\r\n }\r\n\r\n return groupedDataArr;\r\n}\r\n\r\nfunction groupData<T extends NoneGroupHeader = any>(groupByKey: string, groupData: T[], level = 1, parentGroupName?: string){\r\n const getter = getFactory(groupByKey);\r\n const groupedDataDict: Record<string, (T)[]> = supportsGroupBy ? Object.groupBy(groupData, d => getter(d) ?? 'BLANK') as Record<string, T[]> : groupBy(groupData, groupByKey);\r\n const groupedDataArr = Object.entries(groupedDataDict).map(([name, groupData]) => {\r\n const uniqueName = parentGroupName ? `${parentGroupName}-${name}` : `${name}`;\r\n\r\n return ({\r\n isGroupHeader: true,\r\n groupHeaderDisplay: name,\r\n hasTheData: true,\r\n children: groupData,\r\n groupName: `tb_group_${uniqueName}`,\r\n padding: 1 + (20 * (level - 1)),\r\n key: groupByKey,\r\n length: groupData.length,\r\n uniqueName,\r\n level,\r\n [initIndexSymbol]: uniqueName,\r\n } as DataGroup<T>)\r\n });\r\n return groupedDataArr;\r\n}\r\n\r\nexport function updateGroupByState<T extends NoneGroupHeader = any>(groupedData: any[], { data, groups, expanded }: { data: Timestamp<T[]>, groups: Timestamp<string[]>, expanded: Timestamp<GroupedData[]>}, firstRun: boolean){\r\n if(\r\n firstRun\r\n || dataUpdated(data, groups, expanded)\r\n || groupsUpdated(groups, expanded)\r\n ){\r\n groupedData = groups.value.length ? getGroupedData(data.value, groups.value) : data.value;\r\n }\r\n const newDisplayData = expanded.value.length === 0\r\n ? groupedData\r\n : groupedData.map(group => mapGroupHeader(group, expanded.value.flatMap(g => g.expandedHeaders))).flat();\r\n return ({ displayData: newDisplayData, groupedData }) as GroupByState;\r\n}\r\n\r\nexport function mapGroupHeader(obj: DataGroup | GroupGroup, expandedHeaders: string[] | true): any[]{\r\n const showChildren = expandedHeaders === true || expandedHeaders.includes(obj.groupName);\r\n const children = !showChildren ? [] :\r\n obj.hasTheData ? obj.children\r\n : obj.groups.map(a => mapGroupHeader(a, expandedHeaders))\r\n return [obj, ...children].flat() as any[]\r\n}\r\n\r\nfunction dataUpdated(data: Timestamp<any[]>, groups: Timestamp<string[]>, expandedGroups: Timestamp<GroupedData[]>){\r\n return data.timestamp > groups.timestamp && data.timestamp > expandedGroups.timestamp;\r\n}\r\n\r\nfunction groupsUpdated(groups: Timestamp<string[]>, expandedGroups: Timestamp<GroupedData[]>){\r\n return groups.timestamp >= expandedGroups.timestamp;\r\n}\r\n\r\nexport interface GroupByState { displayData: any[], groupedData: DataGroup[]}\r\n\r\nexport const initialGroupByState = { displayData: [], groupedData: [] }\r\n\r\nexport const getAllGroupHeaderNames = (data: any[]) => {\r\n const groups = getGroupHeaders(data, (d:any) => d.isGroupHeader);\r\n const a = supportsGroupBy ? Object.groupBy(groups, group => group.key) as Dictionary<Group[]> : groupBy(groups, 'key');\r\n return Object.entries(a).reduce((names, [key, groups]) => {\r\n names[key] = groups!.map(g => ({ groupName: g.groupName, key: g.key }));\r\n return names;\r\n }, {})\r\n}\r\n\r\nexport const getAllGroupHeaderNamesByKeys = (data: any[], keys: string[]) => {\r\n const groups = getGroupHeaders(data, (d:any) => d.isGroupHeader && keys.includes(d.key));\r\n return supportsGroupBy ? Object.groupBy(groups, group => group.key) as Dictionary<Group[]> : groupBy(groups, 'key');\r\n}\r\n\r\nconst getGroupHeaders = (data: any[], filterFunc: (d:any) => boolean, arr:Group[] = []) => {\r\n const headers: Group[] = data.filter(filterFunc);\r\n arr.push(...headers);\r\n headers.forEach(h => {if(h.hasTheData === false && !!h.groups.length) getGroupHeaders(h.groups, filterFunc, arr)});\r\n return arr;\r\n}","import { Component, ChangeDetectionStrategy, ViewContainerRef, Injector, computed, inject, input, viewChild, effect, untracked, signal, output, linkedSignal } from '@angular/core';\r\nimport { MatFooterRowDef, MatHeaderRowDef, MatRowDef, MatTable, MatTableDataSource, MatTableModule } from '@angular/material/table';\r\nimport { SelectionChange, SelectionModel } from '@angular/cdk/collections';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\r\nimport { CdkDragDrop, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { ConditionalClassesDirective, FunctionPipe, StylerDirective } from '../../../utilities';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { formatNumber, NgTemplateOutlet } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { createTransformer } from '../../services/transform-creator';\r\nimport { initIndexSymbol } from '../table-container/table-container.helpers/sort-state.helpers';\r\nimport { parseTbSizeToPixels } from '../../classes/table-builder-general-settings';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\nimport { Group, isGroupHeader } from '../../classes/TableState';\r\nimport { mapGroupHeader } from '../table-container/table-container.helpers/groupBy.helpers';\r\n\r\n@Component({\r\n selector: 'tb-generic-table',\r\n templateUrl: './generic-table.component.html',\r\n styleUrls: ['./generic-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatTableModule, DragDropModule, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,\r\n MatTooltipModule, FunctionPipe, StylerDirective, ConditionalClassesDirective\r\n ],\r\n})\r\nexport class GenericTableComponent {\r\n protected state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n private viewContainer = inject(ViewContainerRef);\r\n private config = inject(TableBuilderConfigToken);\r\n private _injector = inject(Injector);\r\n\r\n smallFooter = 10\r\n\r\n $headerRow = viewChild(MatHeaderRowDef);\r\n $footerRow = viewChild(MatFooterRowDef);\r\n $table = viewChild(MatTable);\r\n $dropList = viewChild(CdkDropList);\r\n\r\n selection$ = output<SelectionChange<any>>({ alias: 'selection' });\r\n\r\n $displayDataLength = input.required<number>({ alias: 'displayDataLength' });\r\n $data = input.required<any[]>({ alias: 'data' });\r\n $rows = input<MatRowDef<any>[]>([], { alias: 'rows' });\r\n $columnInfos = input.required<ColumnInfo[]>({ alias: 'columnInfos' });\r\n $dataSource = input.required<MatTableDataSource<any>>({ alias: 'dataSource' });\r\n\r\n\r\n $keys = computed(() => {\r\n const displayed = this.state.$orderedVisibleColumns();\r\n const built = this.$columns();\r\n const keys = displayed.filter(d => !!built[d]);\r\n if(this.$hasSelectColumn()){\r\n keys.unshift('select');\r\n }\r\n if(this.$hasIndexColumn()) {\r\n keys.unshift('index');\r\n }\r\n return keys;\r\n });\r\n keys$ = toObservable(this.$keys);\r\n\r\n $trackBy = input<string | undefined>(undefined, { alias: 'trackBy' });\r\n $trackByFunction = computed(() => {\r\n const trackBy = this.$trackBy();\r\n if(!trackBy) return (index:number, item: any) => item[initIndexSymbol];\r\n return ((index:number, item: any) => item[trackBy]);\r\n });\r\n\r\n $hasFooterMeta = computed(() => this.state.$metaDataArray().some(md => !!md.additional?.footer))\r\n $hasCustomFooter = computed(() => this.$columnInfos()?.some(ci => !!ci.customCell?.columnDef?.footerCell));\r\n $footerRowStyle = computed(() => {\r\n const hasData = !!this.$displayDataLength();\r\n const metaFooter = this.$hasFooterMeta();\r\n const customFooter = this.$hasCustomFooter();\r\n const hasSelectionColumn = this.state.$props().selectionColumn;\r\n return customFooter || hasSelectionColumn || (hasData && metaFooter) ? 'regular-footer' : hasData ? 'no-footer' : 'small-footer';\r\n });\r\n $showFooterRow = computed(() => this.$footerRowStyle() !== 'no-footer');\r\n\r\n injector = Injector.create({\r\n providers: [\r\n { provide: MatTable, useFactory: () => this.$table() },\r\n { provide: CdkDropList, useFactory: () => this.$dropList() },\r\n ],\r\n parent: this._injector\r\n });\r\n\r\n $hasIndexColumn = computed(() => this.state.selectSignal(state => state.props.indexColumn)());\r\n $columns = signal<Dictionary<ColumnBuilderComponent>>({});\r\n $showHeader = computed(() => !this.state.$tableSettings().hideColumnHeader)\r\n $offset = this.dataStore.selectSignal( s => s.virtualScrollOffset );\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.state.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder: event.previousIndex })\r\n }\r\n\r\n #buildColumnsEffect = effect(() => {\r\n const columnInfos = this.$columnInfos() || [];\r\n const table = this.$table();\r\n if(!table) return;\r\n\r\n untracked(() => {\r\n\r\n Object.entries(this.$columns()).forEach(([key, value]) => {\r\n const columnInfo = columnInfos.find(ci => ci.metaData.key === key);\r\n if(!columnInfo || columnInfo.customCell !== value.$customCell()) {\r\n delete this.$columns()[key];\r\n table?.removeColumnDef(value.$columnDef()!);\r\n }\r\n });\r\n\r\n columnInfos.forEach(ci => this.buildColumn(ci))\r\n })\r\n });\r\n\r\n #buildRowsEffect = effect(() => {\r\n const table = this.$table();\r\n const rows = this.$rows();\r\n const keys = this.$keys();\r\n if(!table) return;\r\n\r\n untracked(() => {\r\n rows.forEach(row => {\r\n table.removeRowDef(row);\r\n row.columns = keys;\r\n table.addRowDef(row);\r\n });\r\n })\r\n });\r\n\r\n #buildHeaderRowEffect = effect(() => {\r\n const headerRow = this.$headerRow();\r\n const showHeader = this.$showHeader();\r\n const table = this.$table();\r\n untracked(() => {\r\n if(headerRow && showHeader && table) table.addHeaderRowDef(headerRow);\r\n else if(headerRow && table) table.removeHeaderRowDef(headerRow);\r\n })\r\n });\r\n\r\n #buildFooterEffect = effect(() => {\r\n const footerRow = this.$footerRow();\r\n const showFooter = this.$showFooterRow();\r\n const table = this.$table();\r\n\r\n untracked(() => {\r\n if(footerRow && showFooter && table) table.addFooterRowDef(footerRow);\r\n else if(footerRow && table) table.removeFooterRowDef(footerRow);\r\n })\r\n });\r\n\r\n $usePaginator = computed(() => this.state.$tableSettings().usePaginator);\r\n $useVirtualScroll = computed(() => this.state.$viewType().includes('virtual'));\r\n $virtualStart = this.dataStore.selectSignal(d => d.virtualEnds.start);\r\n $offsetIndex = computed(() => {\r\n const virtualStart = this.$virtualStart();\r\n const pageSize = this.state.$pageSize();\r\n const currentPage = this.state.$currentPage();\r\n if(this.$useVirtualScroll()){\r\n return virtualStart;\r\n }\r\n if(this.$usePaginator()){\r\n return pageSize * currentPage;\r\n }\r\n return 0;\r\n });\r\n\r\n rowClicked(t: any, event?: MouseEvent){\r\n const tbs = this.state.$tableSettings();\r\n if(tbs.rowClick) tbs.rowClick(t, event);\r\n }\r\n\r\n isGroupHeader(_: number, row: { isGroupHeader: boolean }) {\r\n return row.isGroupHeader;\r\n }\r\n\r\n setExpanded(key: string, groupKey: string, isExpanded: boolean): void {\r\n this.state.updateExpandedGroups({ key, isExpanded, groupKey });\r\n }\r\n\r\n buildColumn(column: ColumnInfo) {\r\n const alreadyBuiltColumn = this.$columns()[column.metaData.key];\r\n if(alreadyBuiltColumn) {\r\n alreadyBuiltColumn.setMetaData(column.metaData);\r\n } else {\r\n const component = this.viewContainer.createComponent(ColumnBuilderComponent, {\r\n index: 0,\r\n injector: this.injector\r\n });\r\n component.instance.$customCell.set(column.customCell);\r\n component.instance.setMetaData(column.metaData);\r\n component.instance.$data = this.$data;\r\n component.instance.whenViewInited(() => {\r\n this.$columns.update(columnsDict => ({\r\n ...columnsDict,\r\n [column.metaData.key]: component.instance\r\n }));\r\n });\r\n }\r\n }\r\n\r\n $hasSelectColumn = computed(() => this.state.selectSignal(state => state.props.selectionColumn)());\r\n $selection = computed(() => {\r\n const trackBy = this.$trackBy();\r\n if(trackBy){\r\n return new SelectionModel<any>(true, [], true, (a, b) => a[trackBy] === b[trackBy]);\r\n }\r\n return new SelectionModel<any>(true, []);\r\n });\r\n selectionChange$ = toObservable(this.$selection).pipe(switchMap(s => s.changed));\r\n $selectionChange = toSignal(this.selectionChange$);\r\n onSelectionChangeEffect = effect(() => {\r\n const selectionChange = this.$selectionChange();\r\n if(!selectionChange) return ;\r\n untracked(() => this.selection$.emit(selectionChange))\r\n });\r\n $isAllSelected = computed(() => {\r\n this.$selectionChange();\r\n const selected = this.$selection()?.selected;\r\n if(!selected?.length) return false;\r\n return this.$selectableData()?.length === selected.length;\r\n });\r\n $masterToggleChecked = this.$isAllSelected;\r\n $masterToggleIndeterminate = computed(() => {\r\n this.$selectionChange();\r\n return !!this.$selection()?.selected.length && !this.$masterToggleChecked()});\r\n\r\n $paginated = computed(() => this.state.$viewType() === 'virtual paginator' || this.state.$viewType() === 'paginator');\r\n $selectableData = computed(() => {\r\n const isGrouped = !!this.state.$groupByKeys().length;\r\n this.state.$expandGroups();\r\n if(this.$paginated()){\r\n const previousPageRecords = this.state.$currentPage() * this.state.$pageSize();\r\n if(isGrouped){\r\n const onScreen = this.$dataSource().data.slice(previousPageRecords, previousPageRecords + this.state.$pageSize());\r\n const nested = onScreen.flatMap(\r\n (group: Group) => (group.isGroupHeader && !this.state.$getIsExpanded(group.key, group.groupName)()) ? mapGroupHeader(group, true) : []\r\n );\r\n return onScreen.concat(nested).filter(row => !row.isGroupHeader);\r\n }\r\n return this.$data().slice(previousPageRecords, previousPageRecords + this.state.$pageSize());\r\n }\r\n else if(this.state.$viewType() === 'all' || this.state.$viewType() === 'virtual all'){\r\n return this.$data();\r\n }\r\n return [];\r\n });\r\n\r\n $selectAllMessage = computed(() => {\r\n if(this.$isAllSelected()) return `Deselect all ${this.$selection().selected.length} selected`;\r\n const selectable = formatNumber(this.$selectableData().length, 'en-US');\r\n let message = `Select all ${selectable}`;\r\n if(this.$paginated()){\r\n message += ' on this page';\r\n }\r\n return message;\r\n })\r\n\r\n #onSelectableDataChangeEffect = effect(() => {\r\n const selectableData = this.$selectableData();\r\n untracked(() => {\r\n const selected = this.$selection()?.selected;\r\n if(!selected.length) return;\r\n const trackBy = this.$trackBy();\r\n const trackByFunc = trackBy ? (s) => selectableData.every(d => d[trackBy!] !== s[trackBy!]) : s => !selectableData.includes(s);\r\n const removed = selected.filter(trackByFunc);\r\n this.$selection().deselect(removed)\r\n })\r\n });\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n if(this.$isAllSelected()){\r\n this.$selection().clear()\r\n } else {\r\n this.$selection().select(...this.$selectableData());\r\n }\r\n }\r\n\r\n $tableWidth = linkedSignal<number | undefined, { width: string }>({\r\n source: this.state.$getUserDefinedTableWidth,\r\n computation: (currentUserDefinedWidth, { source: previousUserDefinedWidth } = { value: null as any, source: 0 as any }) => {\r\n if( currentUserDefinedWidth){\r\n return ({ width: `${currentUserDefinedWidth}px`, minWidth: 'initial' });\r\n } if( wasReset() ){\r\n return ({ width: 'initial' });\r\n }\r\n return ({} as { width: string });\r\n\r\n function wasReset(){\r\n return (previousUserDefinedWidth ?? 0) >= 0 && currentUserDefinedWidth == null;\r\n }\r\n }\r\n });\r\n\r\n getTransform = (key: string, val: string) => computed(() => {\r\n if(val == undefined || val === 'null') return '';\r\n try {\r\n return createTransformer(this.state.$getMetaData(key)(), this.config, true, true)({ [`${key}`]: val }) || val;\r\n } catch (error) {\r\n return signal(val);\r\n }\r\n })\r\n\r\n $rowHeight = computed(() => {\r\n if(this.state.$userDefinedRowHeight()){\r\n return this.state.$userDefinedRowHeight() + 'px';\r\n }\r\n const notPersistedTableSettings = this.state.$notPersistedTableSettings();\r\n if(this.state.$isVirtual() && notPersistedTableSettings.virtualSettings?.enforceRowHeight){\r\n const height = notPersistedTableSettings.virtualSettings!.rowHeight;\r\n return parseTbSizeToPixels(height) + 'px';\r\n }\r\n if(notPersistedTableSettings.rowHeight){\r\n return parseTbSizeToPixels(notPersistedTableSettings.rowHeight) + 'px';\r\n }\r\n return undefined;\r\n });\r\n\r\n $headerHeight = computed(() => {\r\n if(this.state.$userDefinedHeaderHeight()){\r\n return this.state.$userDefinedHeaderHeight() + 'px';\r\n }\r\n const notPersistedTableSettings = this.state.$notPersistedTableSettings();\r\n if(this.state.$isVirtual() && notPersistedTableSettings.virtualSettings?.enforceHeaderHeight){\r\n const height = notPersistedTableSettings.virtualSettings!.headerHeight;\r\n return parseTbSizeToPixels(height) + 'px';\r\n }\r\n if(notPersistedTableSettings.headerHeight){\r\n return parseTbSizeToPixels(notPersistedTableSettings.headerHeight) + 'px';\r\n }\r\n return undefined;\r\n });\r\n\r\n $groupHeaderHeight = computed(() => {\r\n const groupHeaderHeight = this.state.$notPersistedTableSettings().groupHeaderHeight;\r\n if(groupHeaderHeight){\r\n return parseTbSizeToPixels(groupHeaderHeight) + 'px';\r\n }\r\n return this.$rowHeight();\r\n });\r\n\r\n $footerHeight = computed(() => {\r\n const footerStyle = this.$footerRowStyle();\r\n switch (footerStyle) {\r\n case 'regular-footer':\r\n return this.$rowHeight();\r\n case 'small-footer':\r\n return `${this.smallFooter}px`;\r\n default:\r\n return '0px';\r\n }\r\n });\r\n\r\n $stickyFooter = computed(() => this.state.$props().stickyFooter || this.state.$isVirtual());\r\n\r\n $rowStyles = computed(() => this.state.$tableSettings().rowStyles || {});\r\n $rowClasses = computed(() => this.state.$tableSettings().rowClasses || {});\r\n\r\n allOfGroupSelected = (uniqueName: string) => computed(() => {\r\n //make sure signal is marked dirty when selection or over all data changes\r\n this.$selectionChange();\r\n this.$data();\r\n const header = this.$dataSource().data.find(d => isGroupHeader(d) && d.uniqueName === uniqueName);\r\n const children = mapGroupHeader(header, true).filter(i => !isGroupHeader(i));\r\n if(!children.length) return { containsAll: false, containsSome: false, length: 0 };\r\n let containsAll = true;\r\n let containsSome = false;\r\n for(var a of children){\r\n const contains = this.$selection().isSelected(a);\r\n if(contains) containsSome = true;\r\n else containsAll = false;\r\n if(!containsAll && containsSome) break;\r\n }\r\n return { containsAll, containsSome, length: children.length };\r\n });\r\n\r\n toggleGroup = (uniqueName: string, allSelected: boolean) => {\r\n const header = this.$dataSource().data.find(d => isGroupHeader(d) && d.uniqueName === uniqueName);\r\n const children = mapGroupHeader(header, true).filter(i => !isGroupHeader(i));\r\n if(allSelected){\r\n this.$selection().deselect(...children)\r\n } else {\r\n this.$selection().select(...children);\r\n }\r\n }\r\n\r\n toggleGroupMessage = (amountOfItems: number, allSelected: boolean) => {\r\n if(allSelected) return `Deselect all in this group`;\r\n const selectable = formatNumber(amountOfItems, 'en-US');\r\n return `Select all ${selectable} in this group`;\r\n }\r\n}\r\n","<mat-table\r\n #table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n class=\"table-drag-list\"\r\n [dataSource]=\"$dataSource()\"\r\n [trackBy]=\"$trackByFunction()\"\r\n [style]=\"$tableWidth()\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n>\r\n\r\n <!-- select column -->\r\n <ng-container matColumnDef=\"select\">\r\n @let selection = $selection();\r\n <mat-header-cell *matHeaderCellDef class=\"select-column\">\r\n <mat-checkbox [checked]=\"!!($masterToggleChecked())\"\r\n [indeterminate]=\"$masterToggleIndeterminate()\"\r\n [matTooltip]=\"$selectAllMessage()\"\r\n (change)=\"$event ? masterToggle() : null\" />\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\r\n <mat-checkbox\r\n [checked]=\"selection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"/>\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef class=\"select-column\">\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n\r\n <!-- index column -->\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" class=\"index-column\">#\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index; let t\" class=\"index-column\">\r\n {{ 1 + i + $offsetIndex() }}\r\n </mat-cell>\r\n <mat-footer-cell *matFooterCellDef class=\"index-column\" />\r\n </ng-container>\r\n\r\n <!-- Grouping -->\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n @let expanded = (state.$getIsExpanded | func : row.key : row.groupName );\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\">\r\n @if($hasSelectColumn())\r\n {\r\n @let contains = (allOfGroupSelected | func : row.uniqueName)();\r\n <mat-checkbox [checked]=\"!!contains.containsAll\"\r\n [indeterminate]=\"!!contains.containsSome && !contains.containsAll\"\r\n [matTooltip]=\"toggleGroupMessage | func : contains.length : contains.containsAll\"\r\n (change)=\"$event ? toggleGroup(row.uniqueName, contains.containsAll) : null\" />\r\n }\r\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\r\n @if (!expanded())\r\n {\r\n <mat-icon>chevron_right</mat-icon>\r\n }\r\n @else\r\n {\r\n <mat-icon>expand_more</mat-icon>\r\n }\r\n </button>\r\n {{ (getTransform | func : row.key : row.groupHeaderDisplay)() }} ({{ row.length }})\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"state.$props().groupHeaderTemplate!; context: { element: row }\" />\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-row\r\n *matRowDef=\"let row; columns: $keys(); let i = index\"\r\n [style.height]=\"$rowHeight()\"\r\n [style.min-height]=\"$rowHeight()\"\r\n [styler]=\"$rowStyles()\"\r\n [element]=\"row\"\r\n [conditionalClasses]=\"$rowClasses()\"\r\n (click)=\"rowClicked(row, $event)\"\r\n />\r\n\r\n <!-- group row -->\r\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\"\r\n style=\"background-color: unset;\"\r\n [style.height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\" [style.min-height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"/>\r\n</mat-table>\r\n\r\n<mat-header-row *matHeaderRowDef=\"$keys(); sticky: state.$props().isSticky\" [style.height]=\"$headerHeight()\"\r\n [style.min-height]=\"$headerHeight()\" [style.top.px]=\"($offset()! * -1)\"/>\r\n<mat-footer-row *matFooterRowDef=\"$keys(); sticky: $stickyFooter() \" [style.height]=\"$footerHeight()\"\r\n [style.min-height]=\"$footerHeight()\"\r\n [style.bottom.px]=\"$stickyFooter() ? ($offset()) : undefined\"/>\r\n","export function downloadData(data: string, filename: string, mimeType: string) {\r\n const url = URL.createObjectURL(new Blob([data], { type: mimeType }));\r\n const downloadLink = document.createElement('a');\r\n downloadLink.download = filename;\r\n downloadLink.href = url;\r\n downloadLink.style.display = 'none';\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n document.body.removeChild(downloadLink);\r\n URL.revokeObjectURL(url);\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { TableBuilderConfigToken } from '../classes/TableBuilderConfig';\r\nimport { downloadData } from '../functions/download-data';\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\r\nimport { isPipe } from './transform-creator';\r\nimport { getFactory } from '../functions/sort-data-function';\r\n\r\n@Injectable()\r\nexport class ExportToCsvService<T> {\r\n state = inject(TableStore);\r\n private config = inject(TableBuilderConfigToken);\r\n private datePipe = inject(DatePipe);\r\n\r\n\r\n exportToCsv = (data: T[]) => {\r\n const hiddenKeys = this.state.selectSignal(s => s.hiddenKeys)();\r\n const meta = this.state.$metaDataArray().filter(md => !md.noExport && !hiddenKeys.includes(md.key));\r\n const csv = this.csvData(data, meta);\r\n downloadData(csv, 'export.csv', 'text/csv') ;\r\n }\r\n\r\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\r\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\r\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\r\n return res.join('\\n');\r\n }\r\n\r\n metaToField = (meta: MetaData<T>, row: T) => {\r\n let val: any = getFactory(meta.key)(row);\r\n if(val == null && !meta.transform) return val\r\n if(meta.transform && meta.fieldType !== FieldType.Expression){\r\n const transform = meta.transform as any;\r\n return isPipe(transform) ? transform.transform(val) : transform(val);\r\n }\r\n if(meta.map){\r\n return meta.map(row);\r\n }\r\n switch (meta.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\r\n val = this.transform(val, dateFormat);\r\n break;\r\n case FieldType.DateTime:\r\n const dateTimeFormat = meta.additional?.export?.dateTimeFormat || this.config?.export?.dateTimeFormat || meta.additional?.dateTimeOptions?.format;\r\n val = this.transform(val, dateTimeFormat);\r\n break;\r\n case FieldType.String:\r\n const prepend: string = meta.additional?.export?.prepend || this.config?.export?.prepend || '';\r\n val = prepend + val;\r\n break;\r\n case FieldType.Array:\r\n const style = (meta.additional as ArrayAdditional).arrayStyle ?? this.config.arrayDefaults?.arrayStyle;\r\n const limit = (meta.additional as ArrayAdditional).limit ?? this.config.arrayDefaults?.limit;\r\n val = (val as Array<string>).slice(0, limit).join(style === ArrayStyle.NewLine ? '\\n' : ', ');\r\n break;\r\n case FieldType.Expression:\r\n val = (meta.transform as any)(row);\r\n break;\r\n }\r\n if(typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\r\n val = val.replaceAll('\"', '\"\"');\r\n val = '\"' + val + '\"';\r\n }\r\n return val;\r\n }\r\n\r\n private transform(val: any, dateFormat: any) {\r\n if(this.config.transformers && this.config.transformers[FieldType.Date]) {\r\n return this.config.transformers[FieldType.Date]!(val);\r\n }\r\n return this.datePipe.transform(val, dateFormat);\r\n }\r\n}\r\n","import { FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { Dictionary } from \"@ngrx/entity\";\r\nimport { QueryParamsHandling } from \"@angular/router\";\r\nimport { getFactory } from \"../functions/sort-data-function\";\r\n\r\nexport function createLinkCreatorDict<T>(metaDatas: MetaData<T>[]){\r\n return metaDatas.reduce((acc, md) => {\r\n if(md.additional?.link || md.fieldType === FieldType.Link){ acc[md.key] = createLinkCreator(md)}\r\n return acc;\r\n }, {} as Dictionary<LinkInfo>)\r\n}\r\n\r\nexport function createLinkCreator<T>(metaData: MetaData<T>): LinkInfo{\r\n const target = metaData.additional?.link?.target || '_blank';\r\n const useRouterLink = metaData.additional?.link?.useRouterLink || false;\r\n const hasRoute = !!metaData.additional?.link?.interpolatedRoute;\r\n\r\n const qp = useRouterLink ?\r\n metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = typeof value === 'function' ? value : parseInterpolated(value);\r\n return map;\r\n }, {})\r\n : undefined;\r\n\r\n const routerLinkOptions = useRouterLink ? {\r\n queryParams: (element: T) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = qp;\r\n return map;\r\n }, {}) ?? null,\r\n fragment: metaData.additional!.link?.routerLinkOptions?.fragment,\r\n preserveFragment: metaData.additional!.link!.routerLinkOptions?.preserveFragment ?? false,\r\n queryParamsHandling: metaData.additional!.link!.routerLinkOptions?.queryParamsHandling ?? '',\r\n }\r\n : undefined;\r\n\r\n if(hasRoute) {\r\n const value = metaData.additional!.link!.interpolatedRoute!;\r\n return ({\r\n link: typeof value === 'function' ? (element: T) => value(element) : parseInterpolated(value),\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n } else {\r\n const slashIfNeeded = !metaData.additional?.link?.base?.endsWith('/') ? '/' : '';\r\n const base = metaData.additional!.link?.base;\r\n const getKey = key(metaData);\r\n return ({\r\n link: (element: T) => `${base}${slashIfNeeded}${getKey(element)}`,\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n }\r\n}\r\n\r\nconst key = (metaData : MetaData) => metaData.additional!.link?.urlKey ?\r\n getFactory(metaData.additional!.link!.urlKey as string)\r\n :\r\n getFactory(metaData.key);\r\n\r\nexport interface LinkInfo {\r\n link: (element: any) => string;\r\n target: string;\r\n useRouterLink: boolean;\r\n routerLinkOptions?: {\r\n queryParams: (element: any) => any;\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n}\r\n\r\nfunction parseInterpolated(input: string) {\r\n // Match either content inside curly braces or content between curly braces\r\n const parts = input.split(/({[\\w.]+})/);\r\n\r\n const result = parts\r\n .filter(part => part !== '') // Remove empty strings\r\n .map(part => {\r\n if(part.startsWith('{') && part.endsWith('}')) {\r\n // For interpolated values, remove the curly braces\r\n return {\r\n type: 'interpolated',\r\n val: getFactory(part.slice(1, -1))\r\n };\r\n } else {\r\n return {\r\n type: 'string',\r\n val: part\r\n };\r\n }\r\n }) as ({type: 'string', val:string} | {type:'interpolated', val: (t:any) => string})[];\r\n\r\n return function(val: any){\r\n return result.map(part => part.type === 'string' ? part.val : part.val(val)).join('');\r\n }\r\n}\r\n","import { ComponentStore } from \"@ngrx/component-store\";\r\nimport { Injectable, Signal } from \"@angular/core\";\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\nimport { PersistedTableState } from \"../classes/TableState\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TableBuilderStateStore extends ComponentStore<GlobalStorageState> {\r\n constructor(){\r\n super(loadGlobalStorageState() || defaultStorageState)\r\n }\r\n\r\n //selectors\r\n $selectLocalTableProfile = (profileKey:string): Signal<Profile | undefined> => this.selectSignal(state =>\r\n state.localProfiles[profileKey]);\r\n\r\n $selectLocalTableStateForView = (tableId: string) => this.selectSignal(\r\n this.$selectLocalTableProfile(tableId),\r\n (profile) => {\r\n if(profile?.current) {\r\n return profile.states[profile.current];\r\n }\r\n if(profile?.localSavedState) return profile.localSavedState;\r\n return null;\r\n }\r\n )\r\n\r\n $selectLocalProfileCurrentKey = (key:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(key),\r\n (profile) => profile?.current);\r\n\r\n $selectLocalProfileDefaultKey = (key:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(key),\r\n (profile) => profile?.default);\r\n\r\n $selectLocalProfileKeys = (tableId:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(tableId),\r\n (profile) => Object.keys(profile?.states || {})\r\n );\r\n\r\n\r\n // reducers\r\n\r\n\r\n saveTableSettingsToLocalAndStorage = (tableId: string, stateName: string, tableState: PersistedTableState, asDefault?: boolean) => {\r\n this.saveTableStateToStorage(tableId, stateName, tableState, asDefault);\r\n this.saveTableStateToLocal({ tableId, tableState, stateName, asDefault });\r\n }\r\n\r\n saveTableStateToLocal = this.updater((state, props: { tableId: string, tableState: PersistedTableState, stateName?: string, asDefault?: boolean }) => {\r\n let profile = state.localProfiles[props.tableId];\r\n if(!profile?.states) {\r\n profile = { states: {} };\r\n }\r\n if(!props.stateName){\r\n profile = { ...profile, localSavedState: props.tableState };\r\n } else {\r\n profile = { ...profile, states: { ...profile.states, [props.stateName]: props.tableState } };\r\n }\r\n if(props.asDefault){\r\n profile.default = props.stateName;\r\n }\r\n return { ...state, localProfiles: { ...state.localProfiles, [props.tableId]: profile } }\r\n });\r\n\r\n saveTableStateToStorage = (tableId: string, stateName: string, tableState: PersistedTableState, asDefault = false) => {\r\n const globalSavedState: PersistedGlobalStorageSate = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n globalSavedState.localProfiles[tableId] ??= { states: {} }\r\n globalSavedState.localProfiles[tableId].states[stateName] = tableState;\r\n if(asDefault){\r\n globalSavedState.localProfiles[tableId].default = stateName;\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n\r\n addNewStateToLocalAndStorage = (tableId: string, newStateName: string, tableState: PersistedTableState, asDefault?: boolean) => {\r\n this.saveTableSettingsToLocalAndStorage(tableId, newStateName, tableState, asDefault);\r\n this.setLocalCurrentState({ tableId: tableId, currentStateKey: newStateName });\r\n }\r\n\r\n setLocalCurrentState = this.updater((state, props: { tableId: string, currentStateKey: string }) => {\r\n const profile = state.localProfiles[props.tableId] || { states: {} };\r\n profile.current = props.currentStateKey;\r\n return { ...state, localProfiles: { ...state.localProfiles, [props.tableId]: { ...profile } } };\r\n });\r\n\r\n setDefaultInLocalAndStorage = (tableId: string, newDefault: string) => {\r\n this.setDefaultInLocal({ default: newDefault, key: tableId });\r\n this.setDefaultInStorage(tableId, newDefault);\r\n }\r\n\r\n setDefaultInLocal = this.updater((state, props: { key: string, default: string }) => {\r\n if(state.localProfiles[props.key]?.states[props.default]) {\r\n return ({ ...state, localProfiles: { ...state.localProfiles, [props.key]: { ...state.localProfiles[props.key], default: props.default } } });\r\n }\r\n return state;\r\n });\r\n\r\n unsetDefaultFromLocalAndStorage = (tableId: string) => {\r\n this.unsetDefaultFromLocal(tableId);\r\n this.unsetDefaultFromStorage(tableId);\r\n }\r\n\r\n unsetDefaultFromLocal = (tableId: string) => {\r\n this.patchState(tables => {\r\n const profile = { ...tables.localProfiles[tableId] };\r\n if(profile) {\r\n delete profile.default;\r\n }\r\n return { ...tables, localProfiles: { ...tables.localProfiles, [tableId]: profile } };\r\n });\r\n }\r\n\r\n unsetDefaultFromStorage = (tableId: string) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(globalSavedState.localProfiles[tableId]) {\r\n delete globalSavedState.localProfiles[tableId].default;\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n }\r\n\r\n setDefaultInStorage = (tableId: string, stateName: string) => {\r\n const tableProfile = this.$selectLocalTableProfile(tableId)();\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n let savedProfile = globalSavedState.localProfiles[stateName];\r\n if(!savedProfile?.states) {\r\n savedProfile = { default: stateName, states: tableProfile!.states };\r\n } else {\r\n savedProfile.default = stateName;\r\n }\r\n globalSavedState.localProfiles[tableId] = savedProfile;\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n\r\n deleteLocalProfilesState = this.updater((state, props: { key: string, stateKey: string }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(profile) {\r\n const current = profile.current === props.stateKey ? profile.default : profile.current;\r\n profile = { ...profile, current, states: { ...profile.states } };\r\n delete profile.states[props.stateKey];\r\n if(current === props.stateKey) {\r\n profile.current = undefined;\r\n }\r\n return { ...state, localProfiles: { ...state.localProfiles, [props.key]: profile } };\r\n } else {\r\n return state;\r\n }\r\n });\r\n\r\n deleteProfileFromLocalAndStorage = (key: string, stateKey: string) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[key]) {\r\n return;\r\n } else {\r\n delete (globalSavedState.localProfiles[key].states ?? {})[stateKey];\r\n }\r\n if(globalSavedState.localProfiles[key].default === stateKey) {\r\n globalSavedState.localProfiles[key].default = undefined;\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n this.deleteLocalProfilesState({ key, stateKey })\r\n }\r\n}\r\n\r\nfunction loadGlobalStorageState() : GlobalStorageState | void {\r\n const storage = localStorage.getItem('global-state-storage');\r\n\r\n if(storage) {\r\n const s: GlobalStorageState = (JSON.parse(storage) as PersistedGlobalStorageSate);\r\n s.localProfiles ??= {};\r\n for(const key in s.localProfiles){\r\n const profile = s.localProfiles[key];\r\n s.localProfiles[key] = { ...profile, current: profile.default } as Profile\r\n }\r\n return { ...defaultStorageState, ...s };\r\n }\r\n}\r\n\r\ninterface PersistedProfile {\r\n states: Dictionary<PersistedTableState>;\r\n default?: string;\r\n}\r\nexport interface Profile extends PersistedProfile {\r\n current?: string;\r\n localSavedState?: PersistedTableState;\r\n}\r\n\r\nexport interface GlobalStorageState {\r\n localProfiles: Dictionary<Profile>;\r\n}\r\n\r\ninterface PersistedGlobalStorageSate {\r\n localProfiles: Dictionary<PersistedProfile>;\r\n}\r\n\r\nexport const defaultStorageState: GlobalStorageState = {\r\n localProfiles: {}\r\n}","import { Timestamp } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo, createFilterFunc, isCustomFilter, isFilterInfo, needsFilterCreation } from \"../../../classes/filter-info\";\r\nimport { Dictionary } from \"../../../interfaces/dictionary\";\r\nimport { Predicate } from \"@angular/core\";\r\nimport { difference, intersection } from \"lodash\";\r\nimport { TableCustomFilterDirective, TableFilterDirective } from \"../../../directives\";\r\n\r\n//The idea of this is that if filters were only added, and none were removed or changed, then we only need to tag more rows to not be shown. We don't need to remove any 'dont show' tags.\r\n// So if filters were only added this method will return the added filters, if filters were removed or changed this method will return undefined.\r\nexport const updateFilterInfoState = <T>(previousState: FilterInfoState<T>, filterInfos: FilterInfoDict) => {\r\n filterInfos = filterNonActiveOrNotReadyFilters(filterInfos);\r\n const currentState: FilterInfoState<T> = {\r\n allFilters: filterInfos,\r\n onlyAddedFilters: filterInfoOnlyAdded(previousState.allFilters, filterInfos)\r\n }\r\n return currentState;\r\n}\r\n\r\nexport const mapFilterInfoStateToPredicateState = <T>(s: FilterInfoState<T>): FilterPredicateState<T> => {\r\n const mappedAddOnly: {[key in keyof T]: Predicate<T>} =\r\n s.onlyAddedFilters\r\n ?\r\n Object.entries(s.onlyAddedFilters).filter(([, v]) => needsFilterCreation(v)).reduce((obj, [key, value]) => {\r\n obj[key] = createFilterFunc(value);\r\n return obj;\r\n }, {} as {[key in keyof T]: Predicate<T>})\r\n : {} as {[key in keyof T]: Predicate<T>};\r\n const mappedAll = Object.entries(s.allFilters).filter(([, v]) => needsFilterCreation(v))\r\n .filter(([, v]) => !isCustomFilter(v) || !!v.predicate)\r\n .map(([key, value]) => {\r\n return mappedAddOnly[key] || createFilterFunc(value);\r\n });\r\n return ({\r\n allFilters: mappedAll,\r\n onlyAddedFilters: s.onlyAddedFilters ? Object.values(mappedAddOnly) : undefined\r\n })\r\n}\r\n\r\nexport const updateFilterPredicateState = <T>(previousState: FilterPredicateState<T>, filters: Predicate<any>[]) => {\r\n const currentState: FilterPredicateState<T> = {\r\n allFilters: filters,\r\n onlyAddedFilters: predicatesOnlyAdded(previousState.allFilters, filters)\r\n }\r\n return currentState;\r\n}\r\n\r\nexport const updateFilterState = <T>(filterInfos: Timestamp<FilterInfoState<T>>, predicates: Timestamp<FilterPredicateState<T>>): FilterPredicateState<T> => {\r\n const infos = mapFilterInfoStateToPredicateState(filterInfos.value);\r\n const filtersState: FilterPredicateState<T> = {\r\n allFilters: [...infos.allFilters, ...predicates.value.allFilters]\r\n }\r\n if(filterInfos.timestamp > predicates.timestamp && !!filterInfos.value.onlyAddedFilters){\r\n filtersState.onlyAddedFilters = infos.onlyAddedFilters;\r\n } else {\r\n filtersState.onlyAddedFilters = predicates.value.onlyAddedFilters\r\n }\r\n return filtersState\r\n}\r\n\r\n\r\nconst filterNonActiveOrNotReadyFilters = (filtersDict : FilterInfoDict) => Object.entries(filtersDict).reduce((obj, [key, value]) => {\r\n if(value.active !== false && (!isCustomFilter(value) || !!value.predicate)){\r\n obj[key] = value\r\n }\r\n return obj;\r\n}, {} as Dictionary<FilterInfo | CustomFilter>);\r\n\r\n\r\nfunction filterInfoOnlyAdded(previousFilterInfos: FilterInfoDict, currentFilterInfos: FilterInfoDict): FilterInfoDict | undefined{\r\n const previousKeys = Object.keys(previousFilterInfos);\r\n const currentKeys = Object.keys(currentFilterInfos);\r\n const keysInBoth = intersection(previousKeys, currentKeys);\r\n const someRemoved = previousKeys.length > keysInBoth.length;\r\n if(someRemoved || !previousKeys.length){\r\n return undefined;\r\n }\r\n if(filtersInfosUpdated(previousFilterInfos, currentFilterInfos)){\r\n return undefined;\r\n }\r\n const addedFilters = difference(currentKeys, keysInBoth).reduce((dict, key) => {\r\n dict[key] = currentFilterInfos[key];\r\n return dict;\r\n }, {} as FilterInfoDict);\r\n return addedFilters;\r\n}\r\n\r\nfunction predicatesOnlyAdded(previousPredicates: Predicate<any>[], currentPredicates: Predicate<any>[]){\r\n if(!previousPredicates.length){\r\n return undefined;\r\n }\r\n const predicateFiltersRemoved = difference(previousPredicates, currentPredicates).length;\r\n if(predicateFiltersRemoved){\r\n return undefined;\r\n }\r\n return difference(currentPredicates, previousPredicates);\r\n}\r\n\r\nfunction filtersInfosUpdated(previousFilterInfos: FilterInfoDict<any>, currentFilterInfos: FilterInfoDict<any>){\r\n return !Object.entries(previousFilterInfos).every(([key, val]) => {\r\n return currentFilterInfos[key].filterType === val.filterType && currentFilterInfos[key].filterValue === val.filterValue\r\n })\r\n}\r\n\r\nexport function patchDirectiveFromState(directive: (TableCustomFilterDirective | TableFilterDirective), stateFilter: FilterInfo | CustomFilter){\r\n if(isFilterInfo(stateFilter)) {\r\n const filterDirective: TableFilterDirective = directive as TableFilterDirective;\r\n filterDirective.setFilterValue(stateFilter.filterValue);\r\n filterDirective.update();\r\n }\r\n if(isCustomFilter(stateFilter)) {\r\n directive.active = stateFilter.active ?? false;\r\n }\r\n}\r\n\r\nexport interface FilterInfoState<T> {\r\n allFilters: FilterInfoDict<T>,\r\n onlyAddedFilters?: FilterInfoDict<T> | undefined,\r\n}\r\n\r\nexport interface FilterPredicateState<T> {\r\n allFilters: Predicate<T>[],\r\n onlyAddedFilters?: Predicate<T>[] | undefined,\r\n}\r\n\r\nexport type FilterInfoDict<T = any> = Dictionary<FilterInfo<any, T> | CustomFilter<any>>;","import { Observable, Timestamp, combineLatest, map, scan, tap, timestamp } from \"rxjs\";\r\nimport { SortState } from \"./sort-state.helpers\";\r\nimport { FilterPredicateState } from \"./filter-state.helpers\";\r\nimport { filterData, getFactory, sortData, tbNoShowSymbol } from \"../../../functions/sort-data-function\";\r\nimport { defaultShareReplay } from \"../../../../rxjs/defaultShareReplay\";\r\nimport { FieldType, MetaData } from \"../../../interfaces/report-def\";\r\nimport { set } from \"lodash\";\r\n\r\nexport const _sortAndFilterData = <T>(data: Observable<T[]>, sortState: Observable<SortState>, filterState: Observable<FilterPredicateState<T>>) => combineLatest([\r\n data.pipe(timestamp()),\r\n sortState.pipe(timestamp()),\r\n filterState.pipe(timestamp())\r\n]).pipe(\r\n scan((mappedData, [data, sort, f], index) => {\r\n return mapDataSortsAndFilters( data, f, sort, index === 0, mappedData);\r\n }, [] as T[])\r\n).pipe(\r\n map((resultData) => resultData.filter(item => !item[tbNoShowSymbol])),\r\n defaultShareReplay()\r\n);\r\n\r\nconst mapDataSortsAndFilters = <T>(allData: Timestamp<T[]>, filters: Timestamp<FilterPredicateState<T>>, sort: Timestamp<SortState>, firstRun: boolean, filteredAndSortedData: T[]) => {\r\n const fresh = firstRun || (allData.timestamp > sort.timestamp && allData.timestamp > filters.timestamp);\r\n const sortChanged = !fresh && sort.timestamp > filters.timestamp;\r\n const filterRemoved = !fresh && !sortChanged && !filters.value.onlyAddedFilters;\r\n const runAllOnAllData = fresh || filterRemoved;\r\n const resetFilters = !fresh && filterRemoved;\r\n\r\n if(runAllOnAllData){\r\n const filteredData = filterData(sortData(allData.value, sort.value.allSorts ), filters.value.allFilters, resetFilters);\r\n return filteredData;\r\n }\r\n if(sortChanged){\r\n return (sortData(filteredAndSortedData, sort.value.sortsToRun));\r\n }\r\n return (filterData(filteredAndSortedData, filters.value.onlyAddedFilters || filters.value.allFilters, resetFilters));\r\n}\r\n\r\nexport const sortAndFilterData = <T>(data: Timestamp<T[]>, filters: Timestamp<FilterPredicateState<T>>, sort: Timestamp<SortState>, firstRun: boolean, resultData: T[]) => {\r\n const markedAndSortedData = mapDataSortsAndFilters( data, filters, sort, firstRun, resultData);\r\n const filteredData = markedAndSortedData.filter(item => !item[tbNoShowSymbol]);\r\n return filteredData;\r\n}\r\nexport const createDataCleaners = <T>(metadatas: MetaData<T>[], mutate = false) => {\r\n const transforms = createCleaners(metadatas);\r\n return (data: T) => {\r\n if(!mutate){\r\n data = { ...data }\r\n }\r\n for(const transform of transforms){\r\n transform(data);\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nconst createCleaners = <T>(metadatas: MetaData<T> []) => {\r\n return metadatas.reduce((transforms, metaData) => {\r\n const getter = getFactory(metaData.key);\r\n const setter = metaData.key.includes('.') ? (t, val) => set(t, metaData.key, val) : (t, val) => t[metaData.key as unknown as keyof T] = val\r\n switch ( metaData.fieldType ) {\r\n case FieldType.Currency:\r\n case FieldType.Number: {\r\n const transform = (t:T) => {\r\n const val = getter(t);\r\n const num = Number( val );\r\n setter(t, isNaN(num) || val == null ? null : num)\r\n };\r\n transforms.push(transform);\r\n break;\r\n }\r\n case FieldType.Date: {\r\n const transform = (t:T) => {\r\n const val = getter(t);\r\n const date = Date.parse(val);\r\n let mappedDate: Date;\r\n if(isNaN(date)){\r\n mappedDate = null as any;\r\n } else {\r\n mappedDate = new Date(date);\r\n mappedDate.setHours(0, 0, 0, 0);\r\n }\r\n setter(t, mappedDate);\r\n };\r\n transforms.push(transform);\r\n break;\r\n }\r\n\r\n case FieldType.DateTime: {\r\n const transform = (t:T) => {\r\n const val = getter(t);\r\n const date = Date.parse(val);\r\n let mappedDate: Date;\r\n if(isNaN(date)){\r\n mappedDate = null as any;\r\n } else {\r\n mappedDate = new Date(date);\r\n if(!metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n mappedDate.setMilliseconds(0);\r\n } else {\r\n mappedDate.setSeconds(0, 0);\r\n }\r\n }\r\n }\r\n setter(t, mappedDate);\r\n };\r\n transforms.push(transform);\r\n }\r\n }\r\n return transforms;\r\n }, [] as ((t:T) => void)[])\r\n}","import { Component, ChangeDetectionStrategy, computed, inject, viewChild, effect, untracked } from '@angular/core';\r\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { notNull } from '../../../rxjs';\r\nimport { InitializationState } from '../../classes/TableState';\r\n\r\n@Component({\r\n selector: 'tb-paginator',\r\n imports: [MatPaginatorModule, MatButtonModule],\r\n template: `\r\n <div class=\"paginator-row\">\r\n @if($currentPageData(); as pageData)\r\n {\r\n <div [class]=\"{ 'hide' : ! $collapseFooter(), 'page-amounts':true}\">\r\n @if(!$showAll()){ {{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}\r\n </div>\r\n }\r\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons\r\n [class]=\"{ 'hide' : $collapseFooter() }\">\r\n </mat-paginator>\r\n @if ($showAllOption() && !$collapseFooter())\r\n {\r\n <button mat-button (click)=\"showAll()\">\r\n <span [style.text-decoration]=\"$showAll() ? 'line-through' : ''\" >All</span>\r\n </button>\r\n }\r\n </div>\r\n `,\r\n styleUrls: ['./generic-table.component.scss', '../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaginatorComponent {\r\n private state = inject(TableStore);\r\n private data = inject(DataStore);\r\n $paginator = viewChild(MatPaginator);\r\n\r\n $dataLength = this.data.selectSignal(d => d.sortedFilteredDataLength);\r\n $viewableDataLength = this.data.selectSignal(d => d.sortedFilteredGroupedDataLength);\r\n pageEvent$ = toObservable(this.$paginator).pipe(notNull(), switchMap(p => p.page));\r\n $pageEvent = toSignal(this.pageEvent$);\r\n $pageIndexChangeEvent = computed(() => this.$pageEvent()?.pageIndex);\r\n $pageSizeChangeEvent = computed(() => this.$pageEvent()?.pageSize);\r\n $currentPageData = computed(() => {\r\n const pageEvent = this.$pageEvent();\r\n if(!pageEvent) return;\r\n const paginator = this.$paginator()!;\r\n // Reset because initial page event does not have page length\r\n pageEvent.pageIndex = paginator.pageIndex;\r\n pageEvent.pageSize = paginator.pageSize;\r\n pageEvent.length = paginator.length;\r\n const pageDetails = mapPaginationEventToCurrentPageDetails(pageEvent);\r\n const dataLength = this.$dataLength();\r\n return ({ ...pageDetails, total: dataLength })\r\n })\r\n\r\n #onPageIndexEffect = effect(() => {\r\n const index = this.$pageIndexChangeEvent();\r\n if(index === undefined) return;\r\n untracked(() => this.state.setCurrentPage(index))\r\n });\r\n #onPageSizeEffect = effect(() => {\r\n const size = this.$pageSizeChangeEvent();\r\n const initialized = this.state.$initializationState() >= InitializationState.Ready;\r\n if(!size || !initialized) return;\r\n untracked(() => this.state.setUserDefinedPageSize(size));\r\n });\r\n #onMetaPageSizeEffect = effect(() => {\r\n const paginator = this.$paginator();\r\n if(!paginator) return;\r\n const metaPageSize = this.state.$pageSize();\r\n const initialized = this.state.$initializationState() >= InitializationState.Ready;\r\n untracked(() => initialized && paginator._changePageSize(metaPageSize));\r\n });\r\n onDataLengthEffect = effect(() => {\r\n const paginator = this.$paginator();\r\n const dataLength = this.$viewableDataLength();\r\n untracked(() => {\r\n if(paginator){\r\n paginator.length = dataLength;\r\n const maxIndex = Math.max(0, Math.ceil(dataLength / paginator.pageSize) - 1);\r\n if(paginator.pageIndex > maxIndex){\r\n paginator.pageIndex = maxIndex;\r\n this.state.setCurrentPage(maxIndex);\r\n }\r\n }\r\n })\r\n });\r\n $collapseFooter = computed(() => this.state.selectSignal(state => state.persistedTableSettings.collapseFooter)() || this.$showAll());\r\n $showAllOption = this.state.selectSignal(s => s.notPersistedTableSettings?.paginatorSettings?.includeAllInOptions);\r\n $showAll = this.state.$showAll;\r\n showAll(){\r\n this.state.setUserDefinedShowAll(!this.$showAll());\r\n }\r\n}\r\n\r\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => {\r\n return ({\r\n currentStart: (pageData.pageIndex * pageData.pageSize) + 1,\r\n currentEnd: Math.min(pageData.length, ((pageData.pageIndex + 1) * pageData.pageSize)),\r\n total: pageData.length\r\n })};\r\n\r\n\r\ninterface CurrentPageDetails {\r\n currentStart:number,\r\n currentEnd:number,\r\n total:number\r\n}","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Subscription } from 'rxjs';\r\nimport { TableStore } from './table-store';\r\nimport { DataStore } from './data-store';\r\nimport { computed, effect, signal, Signal, untracked } from '@angular/core';\r\n\r\nexport class TableBuilderDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n #$dataSrc = signal<T[]>([]);\r\n $dataSize: Signal<{ start: number, end: number }> = signal({ start: 0, end: 0 }, {\r\n equal: (a, b) => a.start === b.start && a.end === b.end\r\n });\r\n _ = effect(() => {\r\n const data = this.#$dataSrc();\r\n const dataSize = this.$dataSize();\r\n untracked(() => this.data = data.slice(dataSize.start, dataSize.end));\r\n });\r\n setData(data: T[]) {\r\n this.#$dataSrc.set(data);\r\n }\r\n constructor(\r\n state: TableStore,\r\n data: DataStore,\r\n ) {\r\n super([]);\r\n\r\n const $currentPage = state.$currentPage;\r\n const $pageSize = state.$pageSize;\r\n const $virtualEnds = data.selectSignal(d => d.virtualEnds);\r\n\r\n const $dataLength = computed(() => this.#$dataSrc().length);\r\n\r\n this.$dataSize = computed(() => {\r\n const viewType = state.$viewType();\r\n const dataLength = $dataLength();\r\n const currentPage = $currentPage();\r\n const pageSize = $pageSize();\r\n const virtualEnds = $virtualEnds();\r\n const previousPageRecords = currentPage * pageSize;\r\n if(viewType === 'virtual paginator'){\r\n return ({ start: virtualEnds.start + previousPageRecords, end: Math.min(virtualEnds.end, pageSize) + previousPageRecords });\r\n }\r\n if(viewType === 'paginator'){\r\n return ({ start: previousPageRecords, end: previousPageRecords + pageSize });\r\n }\r\n if(viewType === 'all'){\r\n return ({ start: 0, end: dataLength });\r\n }\r\n return ({ start: virtualEnds.start, end: virtualEnds.end });\r\n });\r\n }\r\n\r\n\r\n connect() {\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if(this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import { CustomCellMeta, MetaData } from \"../../../interfaces/report-def\";\r\n\r\nexport function mergeCustomCellMetaData(metaData1: CustomCellMeta, metaData2?: MetaData) {\r\n if(!metaData2){\r\n metaData1.noExport = true;\r\n return metaData1 as MetaData\r\n }\r\n if(!metaData1.displayName) metaData1.displayName = metaData2.displayName;\r\n if(!metaData1.preSort) metaData1.preSort = metaData2.preSort;\r\n if(!metaData1.order) metaData1.order = metaData2.order;\r\n if(!metaData1.width) metaData1.width = metaData2.width;\r\n if(metaData2.fieldType) metaData1.fieldType = metaData2.fieldType;\r\n metaData1.noExport = metaData2.noExport;\r\n\r\n return ({ ...metaData2, ...metaData1 }) as MetaData;\r\n}","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpaceCasePipe } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'group-by-list',\r\n templateUrl: './group-by-list.component.html',\r\n styleUrls: ['./group-by-list.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatChipsModule, MatIconModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GroupByListComponent {\r\n tableStore = inject(TableStore);\r\n $groups = computed(() => {\r\n const dict = this.tableStore.$metaData();\r\n return this.tableStore.$groupByKeys().map(gbk => ({\r\n key: gbk,\r\n name: dict[gbk].displayName || gbk\r\n }))\r\n })\r\n}\r\n","<span class=\"tb-group-label\">Group By:</span>\r\n<mat-chip-set>\r\n @for (groupBy of $groups(); track groupBy.key)\r\n {\r\n @if($index > 0)\r\n {\r\n <mat-icon class=\"nested-arrow\">arrow_right</mat-icon>\r\n }\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupBy.key)\">\r\n {{groupBy.name | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n</mat-chip-set>\r\n","import { Component, computed, inject, input, output, signal, viewChild } from '@angular/core';\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\nimport { MatMenu, MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { MatButton, MatIconButton } from '@angular/material/button';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\nimport { MatInput, MatInputModule } from '@angular/material/input';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { Subject } from 'rxjs';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tb-profiles-menu',\r\n imports: [MatIcon, MatTooltip, MatIconButton, MatMenuModule, MatButton, MatInput,\r\n MatCheckbox, StopPropagationDirective, MatInputModule, FormsModule\r\n ],\r\n templateUrl: './profiles-menu.component.html',\r\n styleUrl: './profiles-menu.component.scss'\r\n})\r\nexport class ProfilesMenuComponent {\r\n stateService = inject(TableBuilderStateStore);\r\n tableStore = inject(TableStore);\r\n $tableId = input.required<string>({ alias: 'tableId' });\r\n $isMatMenuChild = input<boolean>(false, { alias: 'isMatMenuChild' });\r\n trigger = viewChild<MatMenuTrigger>('trigger');\r\n menu = viewChild.required(MatMenu)\r\n allProfilesPanelOpened = signal(false);\r\n newProfilePanelOpened = signal(false);\r\n $currentProfile = computed(() => this.stateService.$selectLocalProfileCurrentKey(this.$tableId())());\r\n $defaultProfile = computed(() => this.stateService.$selectLocalProfileDefaultKey(this.$tableId())());\r\n $keys = computed(() => this.stateService.$selectLocalProfileKeys(this.$tableId())());\r\n saveState(key: string) {\r\n const tableState = this.tableStore.$savableState();\r\n this.stateService.saveTableSettingsToLocalAndStorage(this.$tableId(), key, tableState);\r\n }\r\n\r\n addState(key: string, asDefault: boolean){\r\n const tableState = this.tableStore.$savableState();\r\n this.stateService.addNewStateToLocalAndStorage(this.$tableId(), key, tableState, asDefault);\r\n }\r\n\r\n setDefault(key: string){\r\n this.stateService.setDefaultInLocalAndStorage(this.$tableId(), key);\r\n }\r\n\r\n unsetDefault(){\r\n this.stateService.unsetDefaultFromLocalAndStorage(this.$tableId());\r\n }\r\n\r\n defaultName = 'My Profile';\r\n position$ = new Subject<{ top: string, right: string} | undefined>();\r\n setPosition = (e: HTMLElement) => {\r\n const rect = e.getBoundingClientRect();\r\n if(rect.top === 0) return;\r\n const a = {\r\n right: `${(window.innerWidth - rect.right)}px`,\r\n top: `${rect.top}px`,\r\n }\r\n return a;\r\n }\r\n}\r\n","@if(!$isMatMenuChild())\r\n{\r\n <button #trigger=\"matMenuTrigger\" color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"menu\" [matTooltip]=\"'Profiles'\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n </button>\r\n}\r\n<mat-menu #menu=\"matMenu\" (closed)=\"addedKey.value = null; allProfilesPanelOpened.set(false); newProfilePanelOpened.set(false)\">\r\n @if(!!$currentProfile())\r\n {\r\n <div mat-menu-item mat-stroked-button [matTooltip]=\"'Save Profile'\" (click)=\"saveState($currentProfile()!)\">\r\n <mat-icon color=\"primary\">save</mat-icon>\r\n <span>{{$currentProfile()}}</span>\r\n </div>\r\n }\r\n @else\r\n {\r\n <div class=\"profile-line\">\r\n <button color=\"primary\" class=\"first-in-line first-button\" mat-stroked-button (click)=\"addState(defaultName, m.checked);\">\r\n <mat-icon class=\"save-for-default-icon button-save-icon\" color=\"primary\">save</mat-icon>\r\n <span>Save as <span class=\"current-name\">{{defaultName}}</span> </span>\r\n </button>\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Created As Default'\" (click)=\"m.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox #m class=\"display-none\" [checked]=\"true\" />\r\n </div>\r\n }\r\n @if (allProfilesPanelOpened()) {<hr class=\"divider\"/>}\r\n <div mat-menu-item stop-propagation [class]=\"{ hide: !$keys().length, 'all-profile-row': true }\" (click)=\"allProfilesPanelOpened.set(!allProfilesPanelOpened())\">\r\n <div class=\"all-profiles\">\r\n <span>All Profiles</span>\r\n <span class=\"arrow\" [class]=\"`${(allProfilesPanelOpened() ? 'all-profile-arrow-close' : 'all-profile-arrow-open')} all-profile-arrow`\"></span>\r\n </div>\r\n </div>\r\n <div [class]=\"{ hide: !allProfilesPanelOpened(), panel: true }\">\r\n @for (key of $keys() ; track key)\r\n {\r\n <div class=\"profile-line\" [class]=\"key === $currentProfile() ? 'current-in-list' : 'not-current-in-list'\">\r\n <button class=\"menu-item first-in-line\" mat-stroked-button [matTooltip]=\"'Select Profile'\" (click)='stateService.setLocalCurrentState({ tableId: $tableId(), currentStateKey: key})'>\r\n <span>{{key}}</span>\r\n </button>\r\n @if(key !== $defaultProfile())\r\n {\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Default'\" (click)=\"setDefault(key)\">\r\n <mat-icon style=\"color: green;\">star_border</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Default'\" (click)=\"unsetDefault()\">\r\n <mat-icon style=\"color: green;\">star</mat-icon>\r\n </button>\r\n }\r\n <button color=\"warn\" class=\"last-in-line\" stop-propagation mat-icon-button [matTooltip]=\"'Delete Profile'\" (click)='stateService.deleteProfileFromLocalAndStorage($tableId(), key)'>\r\n <mat-icon color='warn'>delete_forever</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <hr class=\"divider\"/>\r\n </div>\r\n <div class=\"add-new-profile-row\" mat-menu-item stop-propagation (click)=\"newProfilePanelOpened.set(!newProfilePanelOpened()); addedKey.focus()\">Add New Profile</div>\r\n <div [class]=\"{ hide: !newProfilePanelOpened(), panel: true }\" >\r\n <div class=\"profile-line\" stop-propagation>\r\n <div class=\"new-name-input\">\r\n <i class=\"input-hint\">Enter New Name</i>\r\n <input #addedKey=\"matInput\" matInput [name]=\"'key'\" />\r\n </div>\r\n <button stop-propagation mat-icon-button [matTooltip]=\"'Toggle Profile Being Created As Default'\" (click)=\"m2.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m2.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox #m2 class=\"display-none\" [ngModel]=\"!$defaultProfile()\" />\r\n </div>\r\n <button class=\"add-button\" color=\"primary\" mat-raised-button [matTooltip]=\"'Create New Profile'\" [disabled]=\"!addedKey.value\" (click)=\"addState(addedKey.value, m2.checked); addedKey.value = null\">\r\n Add\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { Injectable, effect, inject, untracked } from '@angular/core';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { FieldType } from '../../interfaces/report-def';\r\n\r\n@Injectable()\r\nexport class SortMenuComponentStore extends ComponentStore<ComponentStoreState> {\r\n private tableState = inject(TableStore);\r\n setStoreStateEffect = effect(() => {\r\n const metaData = this.tableState.$metaData();\r\n if(!metaData) return;\r\n this.tableState.$selectSorted();\r\n untracked(() => this.setStateFromTableStore());\r\n });\r\n\r\n setStateFromTableStore = () => {\r\n const metaData = this.tableState.$metaData();\r\n const sorted = [...this.tableState.$selectSorted()].map(s => ({\r\n ...s,\r\n displayName: metaData[s.active]?.displayName\r\n } as SortWithName));\r\n const notSorted = this.tableState.$metaDataArray()\r\n .filter(md => (md.fieldType !== FieldType.NotMapped || md.sortLogic?.sortBy) && !md.noSort && !sorted.some(s => s.active === md.key))\r\n .map(meta => ({ active: meta.key, displayName: meta.displayName } as SortWithName));\r\n this.setState({ sorted, notSorted })\r\n }\r\n constructor(){\r\n super({ notSorted: [], sorted: [] })\r\n }\r\n\r\n setSorted = this.updater((state, sorted: SortWithName[]) => ({ ...state, sorted }));\r\n setNotSorted = this.updater((state, notSorted: SortWithName[]) => ({ ...state, notSorted }));\r\n\r\n $sorted = this.selectSignal(state => state.sorted);\r\n $notSorted = this.selectSignal(state => state.notSorted);\r\n\r\n setDirection = this.updater((state, sort: SortWithName) => {\r\n const index = state.sorted.findIndex(s => s.active === sort.active);\r\n const sorted = [...state.sorted];\r\n sorted.splice(index, 1, sort);\r\n return ({ ...state, sorted });\r\n });\r\n\r\n reset = () => {\r\n this.setStateFromTableStore();\r\n }\r\n}\r\n\r\nexport interface ComponentStoreState {\r\n sorted : SortWithName[];\r\n notSorted: SortWithName[];\r\n}\r\n\r\nexport interface SortWithName extends Sort{\r\n displayName : string;\r\n}\r\n","import { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { SortDirection } from '../../interfaces/report-def';\r\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-sort-menu',\r\n templateUrl: './sort-menu.component.html',\r\n styleUrls: ['./sort-menu.component.scss'],\r\n providers: [SortMenuComponentStore],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, StopPropagationDirective, DragDropModule,\r\n SpaceCasePipe\r\n ]\r\n})\r\nexport class SortMenuComponent {\r\n SortDirection = SortDirection;\r\n private tableState = inject(TableStore);\r\n protected store = inject(SortMenuComponentStore);\r\n\r\n $sorted = computed(() => [...this.store.$sorted()]);\r\n $notSorted = computed(() => [...this.store.$notSorted()]);\r\n $dirty = signal(false);\r\n\r\n reset(){\r\n this.$dirty.set(false);\r\n this.store.reset();\r\n }\r\n\r\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\r\n this.$dirty.set(true);\r\n const sorted = [...event.container.data];\r\n if(event.previousContainer === event.container) {\r\n moveItemInArray(sorted, event.previousIndex, event.currentIndex);\r\n this.store.setSorted(sorted);\r\n } else {\r\n const notSorted = [...event.previousContainer.data];\r\n transferArrayItem(\r\n notSorted,\r\n sorted,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n sorted[event.currentIndex] = { ...sorted[event.currentIndex], direction: SortDirection.asc };\r\n this.store.setSorted(sorted);\r\n this.store.setNotSorted(notSorted);\r\n }\r\n }\r\n\r\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\r\n if(event.previousContainer === event.container) {\r\n return;\r\n } else {\r\n this.$dirty.set(true);\r\n const sorted = [...event.previousContainer.data];\r\n const notSorted = [...event.container.data];\r\n transferArrayItem(\r\n sorted,\r\n notSorted,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n notSorted[event.currentIndex] = { ...notSorted[event.currentIndex] };\r\n\r\n this.store.setNotSorted(notSorted);\r\n this.store.setSorted(sorted);\r\n }\r\n }\r\n\r\n apply = () => {\r\n this.$dirty.set(false);\r\n this.tableState.setAllSort(this.store.$sorted());\r\n }\r\n\r\n setDirection(sort:SortWithName){\r\n this.$dirty.set(true);\r\n this.store.setDirection(sort);\r\n }\r\n}\r\n\r\n\r\n","@let dirty = $dirty();\r\n@let sorted = $sorted();\r\n@let notSorted = $notSorted();\r\n\r\n<!-- Menu Trigger -->\r\n<span matTooltip=\"Sort\">\r\n <button color=\"primary\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">swap_vert</mat-icon>\r\n </button>\r\n</span>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\r\n <div mat-menu-item class=\"menu-button\">\r\n <div class=\"close-button-wrapper\">\r\n <span matTooltip=\"Close\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n @if(dirty)\r\n {\r\n <span matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\r\n <mat-icon>undo</mat-icon>\r\n </span>\r\n }\r\n \r\n </div>\r\n </div>\r\n\r\n <!-- Apply Button -->\r\n <div class=\"apply-button-wrapper\">\r\n <button mat-button color=\"primary\" stop-propagation\r\n [class.apply-border]=\"dirty\" [disabled]=\"!dirty\"\r\n (click)=\"apply()\">\r\n Apply @if (dirty) { Unsaved Changes }\r\n </button>\r\n </div>\r\n\r\n <!-- Default Sorting Text -->\r\n @if (!sorted.length)\r\n {\r\n <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div #sortedGroup=\"cdkDropList\"\r\n class=\"list\"\r\n cdkDropList\r\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\r\n [cdkDropListData]=\"sorted\"\r\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\r\n\r\n <!-- Menu Item Wrapper -->\r\n @for (sort of sorted; track sort.active)\r\n {\r\n <!-- Menu Item Headers -->\r\n @if (sorted.length > 1)\r\n {\r\n <span class=\"description sort-header\">{{$index === 0 ? 'First By' : 'Then By'}}</span>\r\n }\r\n\r\n <!-- Menu Item -->\r\n <div mat-menu-item cdkDrag class=\"menu-item\">\r\n <div class=\"sort-item\">\r\n <span class=\"sorted-name\">\r\n {{sort.displayName || (sort.active | spaceCase)}}\r\n <span class=\"direction-text\">{{sort.direction}}</span>\r\n </span>\r\n\r\n <!-- Sort Direction Buttons -->\r\n <div class=\"up-down-buttons-wrapper\">\r\n <button class=\"up-down-button up-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\r\n <mat-icon class=\"up-down-icon\" [class]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\">\r\n arrow_upward\r\n </mat-icon>\r\n </button>\r\n\r\n <button class=\"up-down-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\r\n <mat-icon class=\"up-down-icon\" [class]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\">\r\n arrow_downward\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Default Not Sorted Text -->\r\n @if(!notSorted.length)\r\n {\r\n <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div #notSortedGroup=\"cdkDropList\"\r\n class=\"list\"\r\n cdkDropList\r\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\r\n [cdkDropListData]=\"notSorted\"\r\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\r\n @for (sort of notSorted; track sort.active)\r\n {\r\n <div mat-menu-item class=\"menu-item\" cdkDrag>\r\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\r\n </div>\r\n }\r\n </div>\r\n</mat-menu>\r\n","import { ChangeDetectionStrategy, Component, computed, inject, output, viewChild } from '@angular/core';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { resetable } from '../../classes/table-store';\r\nimport { TableContainerComponent } from '../table-container/table-container.component';\r\nimport { sortsAreSame } from '../../directives';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { isCustomFilter } from '../../classes/filter-info';\r\n\r\n@Component({\r\n selector: 'lib-reset-menu',\r\n imports: [MatMenuModule, MatButtonModule],\r\n templateUrl: './reset-menu.component.html',\r\n styleUrl: './reset-menu.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ResetMenuComponent {\r\n menu = viewChild.required(MatMenu);\r\n protected tableContainer = inject(TableContainerComponent);\r\n state = this.tableContainer.state;\r\n onStateReset$ = output<null>({ alias: 'onStateReset' });\r\n protected resetState() {\r\n this.tableContainer.$customFilterDirectives().forEach( cf => cf.reset());\r\n this.tableContainer.$filterDirectives().forEach( cf => cf.reset() );\r\n this.state.resetState();\r\n this.onStateReset$.emit(null)\r\n }\r\n\r\n $filtersSet = computed(() => {\r\n return Object.values(this.state.$filters())\r\n .filter(f => (isCustomFilter(f) && f.active) || f.filterValue != undefined)\r\n .length;\r\n });\r\n $sortSet = computed(() => {\r\n const sorts = this.state.$selectSorted();\r\n if(!sorts.length) return false;\r\n const preSorts = this.state.$preSort();\r\n if(!preSorts.length) return true;\r\n return !sortsAreSame(preSorts, sorts);\r\n });\r\n $groupBySet = computed(() => this.state.$groupByKeys().length);\r\n $hiddenSet = computed(() => this.state.$hiddenKeys().length);\r\n $orderSet = computed(() => Object.keys(this.state.$userDefinedOrder()).length);\r\n $widthsSet = computed(() => Object.keys(this.state.$getUserDefinedWidths()).length);\r\n $rowHeightSet = this.state.$userDefinedRowHeight;\r\n headerHeightSet = this.state.$userDefinedHeaderHeight;\r\n pageSizeSet = computed(() => this.state.$userDefinedPageSize() && this.state.$userDefinedPageSize() !== this.state.selectSignal(s => s.pageSize)());\r\n showAllSet = this.state.selectSignal(s => s.userDefined.showAll);\r\n $set = computed(() => {\r\n const arr: (typeof resetable[number])[] = [] as (typeof resetable[number])[];\r\n if(this.$filtersSet()){\r\n arr.push('Filters')\r\n }\r\n if(this.$sortSet()){\r\n arr.push('Sorting')\r\n }\r\n if(this.$groupBySet()){\r\n arr.push('Group By')\r\n }\r\n if(this.$hiddenSet()){\r\n arr.push('Hidden Columns')\r\n }\r\n if(this.$orderSet()){\r\n arr.push('Column Order')\r\n }\r\n if(this.$widthsSet()){\r\n arr.push('Column Widths')\r\n }\r\n if(this.$rowHeightSet()){\r\n arr.push('Row Height')\r\n }\r\n if(this.headerHeightSet()){\r\n arr.push('Header Height')\r\n }\r\n if(this.pageSizeSet()){\r\n arr.push('Page Size')\r\n }\r\n if(this.showAllSet()){\r\n arr.push('Show All')\r\n }\r\n return arr;\r\n })\r\n\r\n resetable = resetable;\r\n reset(s: string){\r\n this.state.resetPart(s as any);\r\n }\r\n}\r\n","<mat-menu #menu2=\"matMenu\">\r\n @if($set().length > 1)\r\n {\r\n <button mat-menu-item (click)=\"state.resetState()\">All</button>\r\n }\r\n @for (item of $set(); track $index)\r\n {\r\n <button mat-menu-item (click)=\"state.resetPart(item)\">Reset {{item}}</button>\r\n }\r\n</mat-menu>","import { Component, computed, inject, viewChild } from '@angular/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { TableContainerComponent } from '../table-container/table-container.component';\r\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\r\nimport { ProfilesMenuComponent } from \"../profiles-menu/profiles-menu.component\";\r\nimport { ResetMenuComponent } from \"../reset-menu/reset-menu.component\";\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'lib-table-header-menu',\r\n imports: [MatMenuModule, MatIcon, ProfilesMenuComponent, ResetMenuComponent, MatTooltip, StopPropagationDirective],\r\n templateUrl: './table-header-menu.component.html',\r\n styleUrl: './table-header-menu.component.css'\r\n})\r\nexport class TableHeaderMenuComponent {\r\n menu = viewChild.required(MatMenu);\r\n private exportToCsvService = inject(ExportToCsvService);\r\n protected tableContainer = inject(TableContainerComponent);\r\n state = this.tableContainer.state;\r\n $rowHeightNum = computed(() => +(this.tableContainer.$genericTable()?.$rowHeight()?.replace('px', '') || 0) || undefined);\r\n $headerHeightNum = computed(() => +(this.tableContainer.$genericTable()?.$headerHeight()?.replace('px', '') || 0) || undefined);\r\n protected exportToCsv(): void {\r\n this.exportToCsvService.exportToCsv(this.tableContainer.$data());\r\n }\r\n\r\n updateHeight(v: 'row' | 'header', element: HTMLInputElement){\r\n if(+element.value < 10) element.value = '10';\r\n if(+element.value > 100) element.value = '100';\r\n if(v === 'row') this.state.setUserDefinedRowHeight(+element.value);\r\n if(v === 'header') this.state.setUserDefinedHeaderHeight(+element.value);\r\n }\r\n\r\n}\r\n","<mat-menu #mainMenu='matMenu' [xPosition]=\"'before'\">\r\n <span [matTooltip]=\"!r.$set().length ? 'Nothing To Reset' : ''\">\r\n <button #d=\"matMenuItem\" mat-menu-item [matMenuTriggerFor]=\"r.menu()\" [disabled]=\"!r.$set().length\">\r\n <mat-icon color=\"primary\">autorenew</mat-icon>\r\n <span>Reset</span>\r\n </button>\r\n </span>\r\n @if (!tableContainer.state.$tableSettings().hideExport)\r\n {\r\n <button mat-menu-item (click)=\"exportToCsv()\">\r\n <mat-icon color=\"primary\">file_download</mat-icon>\r\n <span>Export Table</span>\r\n </button>\r\n }\r\n @if (tableContainer.$tableId(); as tableId)\r\n {\r\n <button stop-propagation mat-menu-item [matMenuTriggerFor]=\"pm.menu()\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n <span>Profiles</span>\r\n </button>\r\n <tb-profiles-menu #pm class=\"profiles-menu\" [tableId]=\"tableId\" [isMatMenuChild]=\"true\" />\r\n }\r\n\r\n\r\n <div mat-menu-item>\r\n <div class=\"height-input-wrapper\">\r\n <span>Row Height</span>\r\n <input #i class=\"input\" stop-propagation type=\"number\" \r\n placeholder=\"Set Size\"\r\n [value]=\"$rowHeightNum()\"\r\n [min]=\"10\"\r\n [max]=\"100\" (change)=\"updateHeight('row', i)\" />\r\n </div>\r\n </div>\r\n @if(!state.$tableSettings().hideHeader)\r\n {\r\n <div mat-menu-item>\r\n <div class=\"height-input-wrapper\">\r\n <span>Header Height</span>\r\n <input #i2 class=\"input\" stop-propagation type=\"number\"\r\n placeholder=\"Set Size\"\r\n [value]=\"$headerHeightNum()\"\r\n [min]=\"10\"\r\n [max]=\"100\" (change)=\"updateHeight('header', i2)\"/>\r\n </div>\r\n </div>\r\n }\r\n</mat-menu>\r\n<lib-reset-menu #r/>\r\n\r\n","import {\r\n CdkVirtualScrollViewport,\r\n VirtualScrollStrategy,\r\n} from '@angular/cdk/scrolling';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { subscriber } from '../../rxjs';\r\nimport { VirtualScrollContainer } from './table-container/virtual-scroll-container';\r\nimport { effect, linkedSignal, signal, Signal, untracked } from '@angular/core';\r\nimport { DataStore } from '../classes/data-store';\r\n\r\nexport class TableVirtualScrollStrategy implements VirtualScrollStrategy {\r\n constructor(scrollContainer: VirtualScrollContainer, dataStore: DataStore) {\r\n this.$rowHeight = scrollContainer.computedRowHeight;\r\n this.$headerHeight = scrollContainer.computedHeaderHeight;\r\n this.viewport = scrollContainer.viewport;\r\n this.dataStore = dataStore;\r\n this.$dataLength = scrollContainer.$dataLength;\r\n }\r\n private dataStore: DataStore;\r\n private readonly indexChange = new Subject<number>();\r\n scrolledIndexChange = this.indexChange.pipe(distinctUntilChanged());\r\n private viewport: Signal<CdkVirtualScrollViewport>;\r\n\r\n private $dataLength: Signal<number>;\r\n $dataLengthChange = linkedSignal<number, {curr: number, previous: number }>({\r\n source: () => this.$dataLength(),\r\n computation: (curr, previous) => ({ curr, previous: previous == undefined ? curr : previous.source })\r\n });\r\n $rowHeight: Signal<number>;\r\n $rowHeightChange = linkedSignal<number, {curr: number, previous: number }>({\r\n source: () => this.$rowHeight(),\r\n computation: (curr, previous) => {\r\n return ({ curr, previous: previous == undefined ? curr : previous.source })}\r\n });\r\n\r\n $headerHeight: Signal<number>;\r\n $headerHeightChange = linkedSignal<number, {curr: number, previous: number }>({\r\n source: () => this.$headerHeight(),\r\n computation: (curr, previous) => ({ curr, previous: previous == undefined ? curr : previous.source })\r\n });\r\n\r\n contentScrolled$ = new Subject<number>();\r\n sub = subscriber(this.contentScrolled$.pipe(\r\n debounceTime(20),\r\n distinctUntilChanged()\r\n ), offset => {\r\n this.updateContent('scroll')\r\n })\r\n onContentScrolled(): void {\r\n this.contentScrolled$.next(this.viewport().measureScrollOffset());\r\n }\r\n\r\n #onDataLengthChange = effect(() => {\r\n const dataLengthChange = this.$dataLengthChange();\r\n untracked(() => {\r\n if(dataLengthChange.curr === dataLengthChange.previous) return;\r\n this.updateContent('data length')\r\n });\r\n })\r\n\r\n #onHeaderChange = effect(() => {\r\n const headerHeightChange = this.$headerHeightChange();\r\n untracked(() => {\r\n if(headerHeightChange.curr === headerHeightChange.previous) return;\r\n this.updateContent('header height')\r\n });\r\n })\r\n\r\n #onRowChange = effect(() => {\r\n const rowHeightChange = this.$rowHeightChange();\r\n untracked(() => {\r\n if(rowHeightChange.curr === rowHeightChange.previous) return;\r\n this.updateContent('row height')\r\n })\r\n });\r\n\r\n $currentRange = signal({ start: 0, end: 0 })\r\n\r\n private updateContent(trigger: ScrollStrategyTrigger): void {\r\n const viewport = this.viewport && this.viewport()\r\n if(!viewport || !this.$rowHeight) {\r\n return;\r\n }\r\n const currentContentHeight = +viewport._totalContentHeight.replace('px', '');\r\n const newContentHeight = this.$dataLength() * this.$rowHeight();\r\n if(currentContentHeight !== newContentHeight){\r\n viewport.setTotalContentSize(newContentHeight);\r\n this.update(trigger, viewport, true)\r\n return;\r\n }\r\n this.update(trigger, viewport)\r\n }\r\n update(trigger: ScrollStrategyTrigger, viewport: CdkVirtualScrollViewport, needsScroll = false){\r\n if(!viewport.getViewportSize()) return;\r\n\r\n const rowHeightChangeEvent = this.$rowHeightChange();\r\n const rowHeight = rowHeightChangeEvent.curr;\r\n const rowHeightAdjustment = trigger === 'row height' ? rowHeightChangeEvent.curr / rowHeightChangeEvent.previous : 1;\r\n\r\n const amountOfRows = Math.ceil((viewport.getViewportSize() - this.$headerHeight()) / rowHeight);\r\n const f = viewport.measureScrollOffset();\r\n const offset = viewport.measureScrollOffset() * rowHeightAdjustment;\r\n\r\n const buffer = 35 + Math.round((40 - rowHeight) / 10);\r\n const skip = Math.round(offset / rowHeight);\r\n const index = skip % 2 === 0 ? skip : skip - 1;\r\n const start = Math.max(0, index - buffer);\r\n const end = Math.min(this.$dataLength(), index + amountOfRows + buffer);\r\n\r\n if(start > this.$dataLength()){\r\n this.viewport().scrollToOffset(0)\r\n }\r\n else if(f !== offset){\r\n if(offset < f) viewport.scrollToOffset(offset);\r\n else setTimeout(() => {\r\n viewport.scrollToOffset(offset)\r\n }, 0);\r\n }\r\n if(this.$currentRange().start === start && this.$currentRange().end === end){\r\n return;\r\n }\r\n this.$currentRange.set({ start, end });\r\n viewport.setRenderedContentOffset(rowHeight * start);\r\n this.dataStore.patchState({ virtualScrollOffset: offset });\r\n viewport.setRenderedRange({ start, end });\r\n\r\n this.indexChange.next(index);\r\n }\r\n\r\n attach(viewport: CdkVirtualScrollViewport): void {}\r\n onDataLengthChanged(): void {}\r\n detach(): void {}\r\n onContentRendered(): void {}\r\n onRenderedOffsetChanged(): void {}\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {}\r\n}\r\n\r\ntype ScrollStrategyTrigger = 'scroll' | 'data length' | 'header height' | 'row height';\r\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, effect, forwardRef, untracked, viewChild, inject, computed, contentChild } from '@angular/core';\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n VIRTUAL_SCROLL_STRATEGY,\r\n} from '@angular/cdk/scrolling';\r\nimport { switchMap } from 'rxjs';\r\nimport { notNull } from '../../../rxjs';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { TableVirtualScrollStrategy } from '../scroll-strategy';\r\nimport { parseTbSizeToPixels, VirtualScrollOptions } from '../../classes/table-builder-general-settings';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\r\nimport { TableContainerComponent } from './table-container.component';\r\nimport { InitializationState } from '../../classes/TableState';\r\n\r\n@Component({\r\n selector: 'tb-virtual-scroll-container',\r\n template: `\r\n <cdk-virtual-scroll-viewport>\r\n <ng-content/>\r\n </cdk-virtual-scroll-viewport>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ScrollingModule],\r\n viewProviders: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: (c: VirtualScrollContainer) => c.scrollStrategy,\r\n deps: [forwardRef(() => VirtualScrollContainer)],\r\n },\r\n ],\r\n})\r\nexport class VirtualScrollContainer implements OnDestroy {\r\n private state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n\r\n viewport = viewChild.required(CdkVirtualScrollViewport);\r\n private genericTable = contentChild(GenericTableComponent);\r\n private tableContainer = inject(TableContainerComponent);\r\n\r\n defaultOptions = new VirtualScrollOptions();\r\n\r\n\r\n $usePaginator = this.state.selectSignal(s => s.notPersistedTableSettings.usePaginator);\r\n $pageSize = this.state.$pageSize;\r\n $currentPage = this.state.$currentPage;\r\n $showAll = this.state.$showAll;\r\n $stateDataLength = this.dataStore.selectSignal(s => s.sortedFilteredGroupedDataLength);\r\n viewPort$ = toObservable(this.viewport).pipe(notNull());\r\n $scrolledIndexChange = toSignal(this.viewPort$.pipe(switchMap(v => v.scrolledIndexChange)));\r\n $renderedRange = toSignal(this.viewPort$.pipe(switchMap(v => v.renderedRangeStream)));\r\n $virtualScrollOptions = computed(() =>\r\n {\r\n if(this.state.$initializationState() >= InitializationState.Ready)\r\n return this.state.$tableSettings().virtualSettings!;\r\n else return undefined;\r\n }\r\n );\r\n $optionsSet = computed(() => !!this.$virtualScrollOptions());\r\n $dataLength = computed(() => {\r\n const paginated = this.$usePaginator() && !this.$showAll();\r\n const pageSize = this.$pageSize();\r\n const pageNumber = this.$currentPage();\r\n const dataLen = this.$stateDataLength();\r\n if(paginated) return Math.min(dataLen - (pageNumber * pageSize), pageSize);\r\n return dataLen;\r\n });\r\n constructor() {\r\n addEventListener('resize', this.resizeHandler);\r\n }\r\n #setViewportEffect = effect(() => {\r\n const viewport = this.viewport();\r\n const options = this.$optionsSet();\r\n untracked(() => {\r\n if(!!viewport && !!options){\r\n this.setSize(this.viewport()!.elementRef, 'initial');\r\n }\r\n })\r\n })\r\n\r\n\r\n #onRenderedRangeEffect = effect(() => {\r\n const renderedRange = this.$renderedRange();\r\n const viewport = this.viewport();\r\n if(!renderedRange) return;\r\n untracked(() => {\r\n this.dataStore.patchState({\r\n virtualEnds: {\r\n start: renderedRange.start,\r\n end: renderedRange.end,\r\n } });\r\n if(!viewport) return;\r\n this.setSize(viewport.elementRef, 'rendered range');\r\n })\r\n });\r\n\r\n ngOnDestroy(): void {\r\n removeEventListener('resize', this.resizeHandler);\r\n }\r\n\r\n setSize(el: ElementRef<HTMLElement>, trigger: SetSizeTrigger) {\r\n const virtualScrollOptions = this.$virtualScrollOptions();\r\n if(!virtualScrollOptions) return;\r\n if(virtualScrollOptions.dynamicHeight){\r\n this.calcDynamic(el);\r\n return;\r\n }\r\n const rowHeight = this.computedRowHeight();\r\n let amountOfVisibleItems = virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;\r\n amountOfVisibleItems = Math.min(amountOfVisibleItems, this.$dataLength());\r\n let height = (rowHeight * amountOfVisibleItems);\r\n\r\n const footerHeight = this.computedFooterHeight();\r\n const headerHeight = this.computedHeaderHeight();\r\n height += (footerHeight + headerHeight);\r\n\r\n const maxViewPortHeightPx = parseTbSizeToPixels(virtualScrollOptions.maxViewPortHeight) || 0;\r\n\r\n if(virtualScrollOptions?.maxViewPortHeight && maxViewPortHeightPx) height = maxViewPortHeightPx;\r\n\r\n this.setHeight(height, el);\r\n }\r\n\r\n calcDynamic(el: ElementRef<HTMLElement>){\r\n const virtualScrollOptions = this.$virtualScrollOptions();\r\n if(!virtualScrollOptions) return;\r\n\r\n const t = this.tableContainer.elementRef.nativeElement.querySelector(`#${TableContainerComponent.headerId}`);\r\n const rect = t?.getBoundingClientRect();\r\n const windowHeight = window.innerHeight;\r\n const distanceFromBottom = windowHeight - rect!.bottom;\r\n\r\n const rowHeight = this.computedRowHeight();\r\n\r\n const footerHeight = this.computedFooterHeight();\r\n\r\n const headerHeight = this.computedHeaderHeight();\r\n\r\n const buffer = this.computedBuffer();\r\n\r\n const horizontalScrollPadding = el.nativeElement.scrollWidth > el.nativeElement.clientWidth ? 17 : 0;\r\n\r\n const maxViewPortHeightPx = parseTbSizeToPixels(virtualScrollOptions.maxViewPortHeight) || 0;\r\n\r\n let tableSize = distanceFromBottom;\r\n if(virtualScrollOptions?.maxViewPortHeight && maxViewPortHeightPx < tableSize){\r\n tableSize = maxViewPortHeightPx;\r\n }\r\n\r\n const available = (distanceFromBottom - footerHeight)\r\n - headerHeight\r\n - (this.$usePaginator() ? 20 : 0)\r\n - buffer\r\n - horizontalScrollPadding;\r\n\r\n const amountOfRowsThatWillFit = Math.floor(available / rowHeight);\r\n\r\n const minAmountOfRows = virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;\r\n\r\n const amountOfVisibleItems = Math.min(Math.max(amountOfRowsThatWillFit, minAmountOfRows), this.$dataLength());\r\n\r\n let height = (rowHeight * amountOfVisibleItems);\r\n\r\n height += (footerHeight + headerHeight + horizontalScrollPadding);\r\n this.setHeight(height, el);\r\n }\r\n\r\n setHeight(height: number, el: ElementRef<HTMLElement>){\r\n const vsViewport = el.nativeElement;\r\n vsViewport.setAttribute(\r\n 'style',\r\n `height: ${height}px !important;`,\r\n );\r\n this.viewport()?.checkViewportSize();\r\n const virtualScrollOffset = this.viewport()?.getOffsetToRenderedContentStart() ?? 0\r\n this.dataStore.patchState({ virtualScrollOffset });\r\n }\r\n\r\n resizeHandler = () => {\r\n if(this.viewport() && this.$virtualScrollOptions()?.dynamicHeight) {\r\n this.setSize(this.viewport()!.elementRef, 'resize');\r\n }\r\n };\r\n\r\n computedRowHeight = computed(() => {\r\n const virtualScrollOptions = this.state.$tableSettings().virtualSettings! as VirtualScrollOptions;\r\n const rowHeight = this.state.$userDefinedRowHeight() || virtualScrollOptions?.rowHeight || this.state.$tableSettings().rowHeight || this.defaultOptions.rowHeight;\r\n return parseTbSizeToPixels(rowHeight) || 0;\r\n })\r\n\r\n computedHeaderHeight = computed(() => {\r\n if(this.state.$tableSettings().hideHeader) return 0;\r\n const virtualScrollOptions = this.state.$tableSettings().virtualSettings! as VirtualScrollOptions;\r\n const headerHeight = this.state.$userDefinedHeaderHeight() || virtualScrollOptions?.headerHeight || this.state.$tableSettings().headerHeight || this.defaultOptions.headerHeight;\r\n return parseTbSizeToPixels(headerHeight) || 0;\r\n });\r\n\r\n computedFooterHeight = computed(() => {\r\n return parseFloat(this.genericTable()?.$footerHeight()?.replace('px', '') || '0');\r\n });\r\n\r\n computedBuffer = computed(() => {\r\n const virtualScrollOptions = this.state.$tableSettings().virtualSettings! as VirtualScrollOptions;\r\n if(!virtualScrollOptions.dynamicalHeightBuffer) return 0\r\n return parseTbSizeToPixels(virtualScrollOptions.dynamicalHeightBuffer) || 0;\r\n })\r\n\r\n scrollStrategy = new TableVirtualScrollStrategy(\r\n this,\r\n this.dataStore\r\n );\r\n}\r\n\r\ntype SetSizeTrigger = 'initial' | 'rendered range' | 'resize';\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n Predicate,\r\n inject,\r\n TemplateRef,\r\n Injector,\r\n contentChildren,\r\n computed,\r\n effect,\r\n untracked,\r\n input,\r\n viewChild,\r\n output,\r\n ElementRef,\r\n linkedSignal,\r\n DestroyRef,\r\n} from '@angular/core';\r\nimport { Timestamp } from 'rxjs';\r\nimport { CustomCellMeta } from '../../interfaces/report-def';\r\nimport { TableBuilder } from '../../classes/table-builder';\r\nimport { MatRowDef } from '@angular/material/table';\r\nimport { CustomCellDirective, MultiSortDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\r\nimport { GroupedData, InitializationState, NoneGroupHeader } from '../../classes/TableState';\r\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\r\nimport { createFilterFunc, CustomFilter, FilterInfo, isCustomFilter, needsFilterCreation } from '../../classes/filter-info';\r\nimport { TableWrapperDirective } from '../../directives/table-wrapper.directive';\r\nimport { createLinkCreatorDict } from '../../services/link-creator.service';\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\nimport { FilterInfoDict, FilterInfoState, FilterPredicateState, patchDirectiveFromState, updateFilterInfoState, updateFilterPredicateState, updateFilterState } from './table-container.helpers/filter-state.helpers';\r\nimport { initialSortState, SortState, updateSortState } from './table-container.helpers/sort-state.helpers';\r\nimport { getAllGroupHeaderNames, GroupByState, updateGroupByState } from './table-container.helpers/groupBy.helpers';\r\nimport { sortAndFilterData } from './table-container.helpers/data-state.helpers';\r\nimport { TableProps } from './tableProps';\r\nimport { PaginatorComponent } from '../generic-table/paginator.component';\r\nimport { TableBuilderDataSource } from '../../classes/TableBuilderDataSource';\r\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\r\nimport { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { PersistedTableSettings } from '../../classes/table-builder-general-settings';\r\nimport { mergeCustomCellMetaData } from './table-container.helpers/meta-data.helpers';\r\nimport { SelectionChange } from '@angular/cdk/collections';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { GenColDisplayerComponent } from '../gen-col-displayer/gen-col-displayer.component';\r\nimport { GroupByListComponent } from '../group-by-list/group-by-list.component';\r\nimport { ProfilesMenuComponent } from '../profiles-menu/profiles-menu.component';\r\nimport { SortMenuComponent } from '../sort-menu/sort-menu.component';\r\nimport { FilterChipsComponent } from '../table-container-filter/filter-list/filter-list.component';\r\nimport { GenFilterDisplayerComponent } from '../table-container-filter/gen-filter-displayer/gen-filter-displayer.component';\r\nimport { TableHeaderMenuComponent } from '../table-header-menu/table-header-menu.component';\r\nimport { VirtualScrollContainer } from './virtual-scroll-container';\r\nimport { Sort } from '@angular/material/sort';\r\n\r\n@Component({\r\n selector: 'tb-table-container',\r\n templateUrl: './table-container.component.html',\r\n styleUrls: ['./table-container.scss', '../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [TableStore, ExportToCsvService, WrapperFilterStore, DataStore],\r\n imports: [\r\n NgTemplateOutlet,\r\n PaginatorComponent,\r\n\r\n MultiSortDirective, GroupByListComponent, FilterChipsComponent, GenFilterDisplayerComponent, GenColDisplayerComponent,\r\n SortMenuComponent, GenericTableComponent, ProfilesMenuComponent, TableHeaderMenuComponent,\r\n\r\n MatButtonModule, MatMenuModule, MatIconModule, MatTooltipModule, VirtualScrollContainer\r\n ]\r\n}) export class TableContainerComponent<T = any> {\r\n public state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n public wrapper = inject(TableWrapperDirective, { optional: true });\r\n public stateService = inject(TableBuilderStateStore);\r\n public injector = inject(Injector);\r\n public elementRef = inject(ElementRef);\r\n protected dataSource = new TableBuilderDataSource<T>(\r\n this.state,\r\n this.dataStore\r\n );\r\n\r\n $filterDirectives = contentChildren(TableFilterDirective, { descendants: true });\r\n $customFilterDirectives = contentChildren(TableCustomFilterDirective, { descendants: true });\r\n $paginatorComponent = viewChild(PaginatorComponent);\r\n $genericTable = viewChild(GenericTableComponent);\r\n _$customRows = contentChildren(MatRowDef<any>);\r\n $customRows = computed(() => [...this._$customRows()]);\r\n $customCells = contentChildren(CustomCellDirective);\r\n $menu = viewChild.required(MatMenu);\r\n menuInjector = Injector.create({\r\n providers: [{ provide: MatMenu, useFactory: () => this.$menu() }],\r\n parent: this.injector\r\n })\r\n\r\n $tableBuilder = input.required<TableBuilder<T>>({ alias: 'tableBuilder' });\r\n $tableIdInput = input<string | undefined>(undefined, { alias: 'tableId' });\r\n $trackByInput = input<string | undefined>(undefined, { alias: 'trackBy' });\r\n $inputFilters = input<(Predicate<T> | CustomFilter<T> | FilterInfo<any, T>)[]>([], { alias: 'inputFilters' });\r\n $filterInfoInputs = computed(() =>\r\n this.$inputFilters().filter(i => !isFunction(i)) as (FilterInfo | CustomFilter)[]);\r\n\r\n $indexColumnInput = input<boolean>(false, { alias: 'indexColumn' });\r\n $selectionColumnInput = input<boolean>(false, { alias: 'selectionColumn' });\r\n $stickyHeaderInput = input<boolean>(true, { alias: 'stickyHeader' });\r\n $stickyFooterInput = input<boolean>(false, { alias: 'stickyFooter' });\r\n $groupHeaderTemplate = input<TemplateRef<any> | undefined>(undefined, { alias: 'groupHeaderTemplate' });\r\n $groupHeaderHeight = input<number | undefined>(undefined, { alias: 'groupHeaderHeight' });\r\n $pageSize = input<number | undefined>(undefined, { alias: 'pageSize' });\r\n\r\n\r\n selection$ = output<SelectionChange<T>>({ alias: 'selection' });\r\n onStateReset$ = output<null>({ alias: 'onStateReset' });\r\n onSaveState$ = output<null>({ alias: 'onSaveState' });\r\n state$ = outputFromObservable(toObservable(this.state.$savableState), { alias: 'state' });\r\n $data = computed(() => this.$sortedAndFilteredData()?.value || []);\r\n data$ = outputFromObservable(toObservable(this.$data), { alias: 'data' });\r\n\r\n private $displayData = computed(() => this.$tableBuilder() && this.$filteredSortedAndGrouped()?.displayData);\r\n public clearSelections(){\r\n this.$genericTable()?.$selection().clear(true);\r\n }\r\n public firstPage(): void {\r\n this.$paginatorComponent()?.$paginator()?.firstPage();\r\n }\r\n public lastPage(): void {\r\n this.$paginatorComponent()?.$paginator()?.lastPage();\r\n }\r\n public expandAllGroups = () => {\r\n const groupHeaders = getAllGroupHeaderNames(this.$displayData()!);\r\n this.state.expandAllOfGroup({ groupHeadersByKey: groupHeaders });\r\n }\r\n public collapseAllGroups = () => this.state.collapseAll();\r\n\r\n\r\n protected $myColumns = computed(() => {\r\n return this.state.$metaDataArray().map( metaData => ({\r\n metaData,\r\n customCell: this.$customCells().filter(cc => cc.$inited()).find(cc => cc.$customCell() === metaData.key)\r\n }))\r\n });\r\n protected $useVirtual = this.state.$isVirtual;\r\n protected $collapsedFooter = this.state.$footerCollapsed;\r\n protected $collapsedHeader = this.state.$headerCollapsed;\r\n protected $displayDataLength = computed(() => this.$displayData()?.length || 0);\r\n\r\n\r\n $tableBuilderSettings = computed(() => this.$tableBuilder().$settings());\r\n $trackBy = computed(() => this.$trackByInput() || this.$tableBuilderSettings()?.tableSettings?.trackBy);\r\n $tableId = computed(() => this.$tableIdInput() || this.$tableBuilderSettings()?.tableSettings?.tableId);\r\n $includeSelectionColumn = computed(() => this.$selectionColumnInput() || !!this.$tableBuilderSettings()?.tableSettings?.includeSelectionColumn);\r\n $includeIndexColumn = computed(() => this.$indexColumnInput() || !!this.$tableBuilderSettings()?.tableSettings?.includeIndexColumn);\r\n $stickyHeader = computed(() => {\r\n const settings = this.$tableBuilderSettings()?.columnHeaderSettings?.stickyHeaderRow;\r\n if(settings != null){\r\n return settings;\r\n }\r\n return this.$stickyHeaderInput();\r\n });\r\n $stickyFooter = computed(() => this.$stickyFooterInput() || !!this.$tableBuilderSettings()?.columnFooterSettings?.stickyFooterRow)\r\n\r\n $props = computed((): TableProps => {\r\n const indexColumn = this.$includeIndexColumn();\r\n const selectionColumn = this.$includeSelectionColumn();\r\n const stickHeader = this.$stickyHeader();\r\n const stickyFooter = this.$stickyFooter();\r\n const groupHeaderTemplate = this.$groupHeaderTemplate();\r\n const groupHeaderHeight = this.$groupHeaderHeight();\r\n return ({ indexColumn, selectionColumn, isSticky: stickHeader, stickyFooter, groupHeaderTemplate, groupHeaderHeight })\r\n });\r\n\r\n #initTableBuilder = effect(() => {\r\n const tb = this.$tableBuilder();\r\n untracked(() => {\r\n if(tb){\r\n tb?.prep(this.injector);\r\n tb.container.set(this);\r\n }\r\n })\r\n });\r\n #initializeTableSettingsFromTableBuilderAndPersistedStateEffect = effect(() => {\r\n const metaLoaded = this.$isInitializationState(InitializationState.MetaDataLoaded)();\r\n if(!metaLoaded) return;\r\n const persistedState = this.$persistedState();\r\n const tbSettings = this.$tableBuilderSettings()!;\r\n untracked(() => {\r\n this.state.setTableSettings(tbSettings);\r\n if(persistedState){\r\n persistedState.persistedTableSettings = new PersistedTableSettings(persistedState.persistedTableSettings);\r\n this.state.updateStateFromPersistedState(persistedState);\r\n }\r\n this.state.setInitializationState(InitializationState.Ready);\r\n });\r\n });\r\n #setPageSizeFromInputEffect = effect(() => {\r\n const pageSize = this.$pageSize();\r\n const userDefinedPageSize = this.state.$userDefinedPageSize();\r\n if(pageSize && !userDefinedPageSize) {\r\n untracked(() => this.state.setPageSize(pageSize));\r\n }\r\n });\r\n #patchedFilters: string[] = [];\r\n #patchSavableFilterDirectivesFromPersistedStateEffect = effect(() => {\r\n const loaded = this.$isInitializationState(InitializationState.TableSettingsLoaded)();\r\n const filterDirectives = this.$allFilterDirectives();\r\n if(!loaded || !filterDirectives.length) return;\r\n const stateFilters = this.state.$filters();\r\n\r\n untracked(() => {\r\n filterDirectives.filter(f => f.savable && !this.#patchedFilters.includes(f.filterId)).forEach( f => {\r\n this.#patchedFilters.push(f.filterId);\r\n const filter = stateFilters[f.filterId];\r\n\r\n patchDirectiveFromState(f, filter);\r\n this.state.addFilter(f.filter$ as any);\r\n });\r\n })\r\n });\r\n #patchSavableFilterInputsFromPersistedStateEffect = effect(() => {\r\n const loaded = this.$isInitializationState(InitializationState.TableSettingsLoaded)();\r\n const inputFilters = this.$filterInfoInputs();\r\n if(!loaded || !inputFilters.length) return;\r\n\r\n untracked(() => {\r\n const stateFilters = this.state.$filters();\r\n inputFilters.filter(f => f.filterId).forEach( f => {\r\n const patched = this.#patchedFilters.includes(f.filterId);\r\n const stateFilter = stateFilters[f.filterId];\r\n\r\n if(patched || !stateFilter) {\r\n this.state.addFilter(f);\r\n } else if(isCustomFilter(f)){\r\n (stateFilter as CustomFilter).predicate = f.predicate;\r\n this.state.addFilter(stateFilter);\r\n }\r\n this.#patchedFilters.push(f.filterId);\r\n });\r\n })\r\n });\r\n #addPropsToStoreFromInputsEffect = effect(() => {\r\n const props = this.$props();\r\n untracked(() => this.state.setProps(props));\r\n });\r\n #addMetaDataToStoreEffect = effect(() => {\r\n const allMetaDatas = this.$allMetaDatas();\r\n if(!allMetaDatas) return;\r\n untracked(() => {\r\n this.state.setMetaData(allMetaDatas);\r\n this.state.setLinkMaps(createLinkCreatorDict(allMetaDatas));\r\n });\r\n });\r\n #setFilteredDataLengthEffect = effect(() => {\r\n const tableBuilder = this.$tableBuilder();\r\n const data = this.$sortedAndFilteredData();\r\n if(!tableBuilder || !data) return;\r\n untracked(() => {\r\n this.dataStore.patchState({ sortedFilteredDataLength: data.value.length });\r\n })\r\n });\r\n\r\n #setDataSourceDataEffect = effect(() => {\r\n const tableBuilder = this.$tableBuilder();\r\n const flat = this.$filteredSortedAndGrouped();\r\n if(!tableBuilder || !flat) return;\r\n untracked(() => {\r\n const data = flat.displayData;\r\n this.dataSource.setData(data);\r\n this.dataStore.patchState({ sortedFilteredGroupedDataLength: data.length });\r\n })\r\n });\r\n\r\n #destroyRef = inject(DestroyRef).onDestroy(() => {\r\n const tableId = this.$tableId();\r\n if(tableId) {\r\n this.stateService.saveTableStateToLocal({ tableId, tableState: this.state.$savableState() });\r\n }\r\n });\r\n\r\n private $persistedState = computed(() => {\r\n const tableId = this.$tableId();\r\n if(tableId) {\r\n return this.stateService.$selectLocalTableStateForView(tableId)();\r\n }\r\n return undefined\r\n });\r\n private $allFilterDirectives = computed( () => {\r\n if(this.wrapper) {\r\n return [...this.$filterDirectives(), ...this.$customFilterDirectives(), ...this.wrapper.$registrations()];\r\n }\r\n return [...this.$filterDirectives(), ...this.$customFilterDirectives()];\r\n });\r\n private $tableBuilderMetaData = computed(() => this.$tableBuilder()?.$metaData());\r\n private $allMetaDatas = computed(() => {\r\n const tableBuilderMetaData = this.$tableBuilderMetaData();\r\n if(!tableBuilderMetaData) return;\r\n const customCellMetaDatas = this.$customCells().filter(cc => cc.$inited()).map(cc => cc.$metaData()).filter(d => !!d) as CustomCellMeta[];\r\n const mappedCustomCellMetaDatas = customCellMetaDatas.map( md => mergeCustomCellMetaData(md!, tableBuilderMetaData.find( item => item.key === md.key ) ));\r\n\r\n return [...tableBuilderMetaData, ...mappedCustomCellMetaDatas];\r\n });\r\n\r\n private $preds = computed(() => {\r\n const predicateInputFilters = this.$inputFilters().filter(isFunction);\r\n const notSavableFilterDirectives = this.$allFilterDirectives()\r\n .filter(d => !d.savable)\r\n .map(d => d.$filter())\r\n .filter(d => !!d && needsFilterCreation(d))\r\n .map(d => createFilterFunc(d!));\r\n return [...predicateInputFilters, ...notSavableFilterDirectives]\r\n })\r\n private $predicateFiltersState = linkedSignal<Predicate<any>[], { value: FilterPredicateState<T>, timestamp: number } >({\r\n source: this.$preds,\r\n computation: (curr, previous) => {\r\n if(!previous?.value) return ({ value: updateFilterPredicateState({ allFilters: [] as Predicate<T>[] }, curr), timestamp: new Date().getTime() })\r\n return ({ value: updateFilterPredicateState(previous.value.value, curr), timestamp: new Date().getTime() })\r\n }\r\n });\r\n private $savableFiltersState = linkedSignal<FilterInfoDict, { value: FilterInfoState<T>, timestamp: number } >({\r\n source: this.state.$filters,\r\n computation: (curr, previous) => {\r\n if(!previous?.value) return ({ value: updateFilterInfoState({ allFilters: {} }, curr), timestamp: new Date().getTime() })\r\n return ({ value: updateFilterInfoState(previous.value.value, curr), timestamp: new Date().getTime() })\r\n }\r\n });\r\n private $allFilterStatesTimeStamped = computed(() => {\r\n if(!this.$isInitializationState(InitializationState.Ready)()) return undefined;\r\n return ({ value: updateFilterState(this.$savableFiltersState(), this.$predicateFiltersState()), timestamp: new Date().getTime() })\r\n });\r\n private $sortStateTimeStamped = linkedSignal<Sort[] | false, { value: SortState, timestamp: number } | undefined>({\r\n source: computed(() => this.$isInitializationState(InitializationState.Ready)() && this.state.$getSorts()),\r\n computation: (curr, prev) => {\r\n if(!curr) return undefined;\r\n if(!prev?.value) return ({ value: updateSortState(initialSortState, curr), timestamp: new Date().getTime() });\r\n return ({ value: updateSortState(prev.value.value, curr), timestamp: new Date().getTime() });\r\n }\r\n });\r\n private $allData = computed(() => (this.$tableBuilder()?.$initialized() && this.$tableBuilder()?.$data()) || [])\r\n private $allDataTimeStamped = computed(() => {\r\n const data = this.$allData();\r\n if(!data) return undefined;\r\n return ({\r\n value: data,\r\n timestamp: new Date().getTime()\r\n })\r\n });\r\n private $allTimeStamped = computed(() => {\r\n const data = this.$allDataTimeStamped();\r\n const sort = this.$sortStateTimeStamped();\r\n const filter = this.$allFilterStatesTimeStamped();\r\n if(!data?.value || !sort?.value || !filter?.value) return undefined;\r\n return ({\r\n data,\r\n sort,\r\n filter\r\n });\r\n });\r\n private $sortedAndFilteredData = linkedSignal<{data: Timestamp<T[]>, filter: Timestamp<FilterPredicateState<T>>, sort: Timestamp<SortState>} | undefined, Timestamp<T[]> | undefined>({\r\n source: this.$allTimeStamped,\r\n computation: (values, prev) => {\r\n const init = this.$isInitializationState(InitializationState.Ready);\r\n if(!values || !init) return undefined;\r\n const { data, filter, sort } = values;\r\n const val = prev?.value?.value || data.value;\r\n const filteredData = sortAndFilterData(data, filter, sort, !prev?.value, val);\r\n return ({ value: filteredData, timestamp: new Date().getTime() });\r\n }\r\n });\r\n $timestampedGroups = computed(() => ({ value: this.state.$groupByKeys(), timestamp: new Date().getTime() }));\r\n $timestampedExpanded = computed(() => ({ value: this.state.$expandGroups(), timestamp: new Date().getTime() }));\r\n private $dataAndGroupsTimestamped = computed(() => {\r\n const data = this.$sortedAndFilteredData() as Timestamp<(T & NoneGroupHeader)[]>;\r\n const groups = this.$timestampedGroups();\r\n const expanded = this.$timestampedExpanded();\r\n if(!data) return undefined;\r\n return ({\r\n data,\r\n groups,\r\n expanded\r\n })});\r\n\r\n protected $filteredSortedAndGrouped = linkedSignal<{ data: Timestamp<(T & NoneGroupHeader)[]>, groups: Timestamp<string[]>, expanded: Timestamp<GroupedData[]>} | undefined, GroupByState | undefined>({\r\n source: this.$dataAndGroupsTimestamped,\r\n computation: (curr, prev) => {\r\n if(!curr) return undefined;\r\n const val = prev?.value?.groupedData || [];\r\n return updateGroupByState(val, curr, !prev?.value);\r\n }\r\n });\r\n\r\n private $isInitializationState = (state: InitializationState) => computed(() =>\r\n this.state.selectSignal(s => s.initializationState >= state)()) ;\r\n\r\n static headerId = 'tb-header-wrapper';\r\n headerId = TableContainerComponent.headerId;\r\n}\r\n\r\nfunction isFunction<T>(a: any):a is Predicate<T> {\r\n return typeof a === 'function';\r\n}\r\n","@let tableId = $tableId();\r\n@let tableSettings = state.$tableSettings();\r\n\r\n<ng-content select=\"[before]\" />\r\n<ng-container multiSort>\r\n <div class=\"tb-header-wrapper\" [id]=\"headerId\">\r\n <div class=\"title\">\r\n @if ((!$collapsedHeader()) || tableSettings.showTitleWhenHeaderCollapsed)\r\n {\r\n <ng-content select=\".tb-header-title\"/>\r\n }\r\n </div>\r\n @if(state.$groupByKeys().length)\r\n {\r\n <group-by-list />\r\n }\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader)\r\n {\r\n @if (!$collapsedHeader())\r\n {\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"l.menu()\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n\r\n <lib-table-header-menu #l/>\r\n\r\n }\r\n @else\r\n {\r\n <mat-icon color=\"primary\" class=\"flat-menu-button pointer\" [matMenuTriggerFor]=\"mainMenu\">more_horiz</mat-icon>\r\n <mat-menu #mainMenu='matMenu'>\r\n <div class=\"flex-column\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu; injector menuInjector\"/>\r\n </div>\r\n <lib-table-header-menu />\r\n </mat-menu>\r\n }\r\n <mat-icon class=\"collapse-icon header\" [matTooltip]=\"$collapsedHeader() ? 'expand' : 'collapse'\"\r\n (click)=\"state.toggleCollapseHeader()\">\r\n {{$collapsedHeader() ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n @if($useVirtual())\r\n {\r\n <tb-virtual-scroll-container class=\"scrollable\">\r\n <tb-generic-table [rows]=\"$customRows()\" [data]=\"$data()!\" [displayDataLength]=\"$displayDataLength()\"\r\n [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" (selection)='selection$.emit($event)' />\r\n </tb-virtual-scroll-container>\r\n }\r\n @else\r\n {\r\n <tb-generic-table [rows]=\"$customRows()\" [data]=\"$data()!\" [displayDataLength]=\"$displayDataLength()\"\r\n [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" (selection)='selection$.emit($event)' />\r\n }\r\n @if(tableSettings.usePaginator)\r\n {\r\n <div class=\"paginator\">\r\n <tb-paginator #tbPaginator />\r\n\r\n <mat-icon class=\"collapse-icon footer\" [matTooltip]=\"$collapsedFooter() ? 'expand' : 'collapse'\"\r\n (click)=\"state.toggleCollapseFooter()\">\r\n {{$collapsedFooter() ? 'expand_more' : 'expand_less'}}\r\n </mat-icon>\r\n </div>\r\n }\r\n\r\n <ng-template #headerMenu>\r\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\r\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\r\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\r\n @if (!!tableId) {<tb-profiles-menu [tableId]=\"tableId\"/>}\r\n </ng-template>\r\n\r\n</ng-container>\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { MultiSortDirective } from './directives/multi-sort.directive';\r\nimport { ModuleWithProviders } from '@angular/core';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\r\nimport { TableContainerComponent } from './components';\r\nimport { CustomCellDirective, TableFilterDirective, TableFilterStringContainsDirective, TableWrapperDirective } from './directives';\r\nimport { UtilitiesModule } from '../utilities';\r\n\r\n@NgModule({\r\n imports: [\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ],\r\n exports: [\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n UtilitiesModule,\r\n ],\r\n providers: [\r\n MultiSortDirective,\r\n ]\r\n})\r\nexport class TableBuilderModule {\r\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\r\n return {\r\n ngModule: TableBuilderModule,\r\n providers: [\r\n { provide: TableBuilderConfigToken, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n constructor(private dataSrc: Observable<T[]>) {\r\n super([]);\r\n }\r\n\r\n connect() {\r\n if(!this.subscription) {\r\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\r\n }\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if(this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import { isObservable, Observable } from 'rxjs';\r\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\r\nimport { map } from 'rxjs/operators';\r\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\r\nimport { defaultShareReplay } from '../../rxjs';\r\nimport { initIndexSymbol } from '../components/table-container/table-container.helpers/sort-state.helpers';\r\nimport { createDataCleaners } from '../components/table-container/table-container.helpers/data-state.helpers';\r\nimport { assertInInjectionContext, computed, inject, Injector, isSignal, signal, Signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { TableContainerComponent } from '../components/table-container/table-container.component';\r\n\r\nexport class TableBuilder<T = any> {\r\n #$metaData!: Signal<MetaData<T>[]>;\r\n #$data!: Signal<T[]>;\r\n #$settings! : Signal<TableBuilderSettings>;\r\n\r\n container = signal<TableContainerComponent | undefined>(undefined);\r\n\r\n $metaData = computed(() => this.$initialized() ? this.#$metaData() : undefined);\r\n $settings = computed(() => this.$initialized() ? this.#$settings() : undefined);\r\n #$metaNeedsPrep = signal(false);\r\n #$dataIsObservable = signal(false);\r\n #$settingsIsObservable = signal(false);\r\n #$needsPrep = computed(() => this.#$dataIsObservable() || this.#$metaNeedsPrep() || this.#$settingsIsObservable());\r\n $initialized = signal(false);\r\n\r\n constructor(\r\n private data: TableBuilderArgs<T[]>,\r\n private metaData?: TableBuilderArgs<MetaData<T, any>[]>,\r\n private settings: TableBuilderArgs<TableBuilderSettings<T>> = new GeneralTableSettings()\r\n ) {\r\n if(isObservable(data)){\r\n this.#$dataIsObservable.set(true);\r\n } else {\r\n this.#$data = isSignal( data ) ? data : signal(data);\r\n }\r\n if(isObservable(metaData) || !metaData){\r\n this.#$metaNeedsPrep.set(true);\r\n } else {\r\n this.#$metaData = isSignal( metaData ) ? metaData : signal(metaData);\r\n }\r\n if(isObservable(settings)){\r\n this.#$settingsIsObservable.set(true);\r\n } else {\r\n this.#$settings = isSignal( settings ) ? settings : signal(settings);\r\n }\r\n if(!this.#$needsPrep()){\r\n this.$initialized.set(true);\r\n } else {\r\n try {\r\n assertInInjectionContext(TableBuilder);\r\n const injector = inject(Injector);\r\n this.prep(injector);\r\n } catch { }\r\n }\r\n }\r\n prep(injector: Injector){\r\n if(this.#$settingsIsObservable()){\r\n this.#$settings = toSignal(this.settings as any, { injector, requireSync: true });\r\n }\r\n if(this.#$dataIsObservable()){\r\n this.#$data = toSignal(this.data as any, { injector, initialValue: [] });\r\n }\r\n if(this.#$metaNeedsPrep()){\r\n if(this.metaData){\r\n this.#$metaData = toSignal(this.metaData as any, { injector, initialValue: [] });\r\n } else {\r\n this.#$metaData = computed(() => this.createMetaData(this.#$data()[0]))\r\n }\r\n }\r\n this.$initialized.set(true);\r\n }\r\n #dataCleaners = computed(() => {\r\n const metaData = this.$metaData();\r\n if(!metaData) return undefined;\r\n return createDataCleaners(metaData);\r\n });\r\n $data = computed(() => {\r\n const data = this.#$data();\r\n const cleaners = this.#dataCleaners();\r\n if(!data || !cleaners) return [];\r\n const cleanedData = data.map((data, i) => {\r\n const cleaned = cleaners(data);\r\n cleaned[initIndexSymbol] = i;\r\n return cleaned;\r\n })\r\n return cleanedData;\r\n });\r\n\r\n createMetaData(obj: any): MetaData [] {\r\n return Object.keys(obj ?? {})\r\n .map( key => ({\r\n key,\r\n fieldType: FieldType.Unknown,\r\n order: -1\r\n }));\r\n }\r\n}\r\n\r\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\r\n reportDef$ = reportDef$.pipe(defaultShareReplay());\r\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map( r => r.metaData) ));\r\n};\r\n\r\ntype TableBuilderArgs<T> = T | Observable<T> | Signal<T>;\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { createEntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { get } from 'lodash';\r\n\r\n// State\r\nexport class AppStatusState {\r\n readonly ActionStatusBar!: ActionStatus[];\r\n}\r\n\r\nexport interface StatusState {\r\n ids: string[];\r\n entities: {[id: string]: ActionStatus};\r\n}\r\n\r\nexport class ActionStatus {\r\n id!: string;\r\n displayName?: string;\r\n status!: serverStatusTypes;\r\n responsePayload?: any;\r\n}\r\n\r\nconst InitialState: StatusState = {\r\n ids: [],\r\n entities: {}\r\n};\r\n\r\nexport enum serverStatusTypes {\r\n notStarted = 0,\r\n inProgress = 1,\r\n success = 2,\r\n error = 3\r\n}\r\n\r\n// Entity and Selectors\r\nexport const statusAdapter = createEntityAdapter<ActionStatus>();\r\nexport interface State extends EntityState<ActionStatus> {}\r\nexport const initialState: StatusState = statusAdapter.getInitialState(InitialState);\r\n\r\nexport const getStatusState = createFeatureSelector<State>('ActionStatus');\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = statusAdapter.getSelectors(getStatusState);\r\n\r\nexport const selectEntity = (id: string) => createSelector(\r\n selectEntities,\r\n (entities: any) => entities[id]\r\n);\r\n\r\n// Reducers\r\nexport function actionStatusReducer(state: StatusState = initialState, action: Action) {\r\n\r\n const actionStatus: ActionStatus = get(action, 'payload.actionStatus' ) as any;\r\n\r\n if( actionStatus ) {\r\n if( state.ids.find(id => id === actionStatus.id) ) {\r\n const modifiedObj = { ...state.entities[actionStatus.id] };\r\n modifiedObj.status = actionStatus.status;\r\n modifiedObj.responsePayload = actionStatus.responsePayload;\r\n return statusAdapter.upsertOne( modifiedObj, state);\r\n } else {\r\n return statusAdapter.addOne(actionStatus, state);\r\n }\r\n\r\n }\r\n return state;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { actionStatusReducer } from '../ngrx';\r\nimport { StoreModule } from '@ngrx/store';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('ActionStatus', actionStatusReducer),\r\n ]\r\n})\r\nexport class NgrxExtModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ActionStatus, serverStatusTypes } from '../ngrx';\r\nimport { delayOn } from '../../rxjs';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'lib-action-state-spinner',\r\n templateUrl: './action-state-spinner.component.html',\r\n styleUrls: ['./action-state-spinner.component.css'],\r\n imports: [AsyncPipe, MatProgressSpinnerModule]\r\n})\r\nexport class ActionStateSpinnerComponent implements OnInit {\r\n\r\n @Input() status$!: Observable<ActionStatus>;\r\n serverActionStatus$!: Observable<ActionStatus>;\r\n serverStatusTypes = serverStatusTypes;\r\n\r\n ngOnInit() {\r\n this.serverActionStatus$ = this.status$.pipe(\r\n delayOn( a => a.status === serverStatusTypes.inProgress, 500)\r\n );\r\n }\r\n}\r\n","@if((serverActionStatus$ | async)?.status === serverStatusTypes.inProgress)\r\n{\r\n <div id=\"blocker\">\r\n <mat-spinner class=\"spinner\" [diameter]=\"200\" />\r\n </div>\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ActionStateSpinnerComponent,\r\n ],\r\n exports: [\r\n ActionStateSpinnerComponent,\r\n ]\r\n})\r\nexport class ActionStateUiModule { }\r\n","/*\r\n * Public API Surface of action-state\r\n */\r\n\r\nexport * from './ngrx';\r\nexport * from './ngrx-ext/ngrx-ext.module';\r\nexport * from './action-state-ui/action-state-ui.module';\r\nexport * from './action-state-spinner/action-state-spinner.component';\r\n","import { EnvironmentInjector, inject, Injector, makeEnvironmentProviders, provideAppInitializer, runInInjectionContext } from \"@angular/core\";\r\nimport { Action, createSelector, MemoizedSelector, Store } from \"@ngrx/store\";\r\n\r\nlet _store: Store<any>;\r\nlet _cache: AppStoreCache;\r\nlet _ei : EnvironmentInjector;\r\n\r\n/**\r\n * Creates a selector that can dispatch an action if conditions are met.\r\n * Note: The props of the selector factory must include the props of the action.\r\n * @param selectorFactory A method that returns selector.\r\n * @param action The action that will be dispatched when conditions are met.\r\n * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched\r\n * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.\r\n */\r\nexport const createActionableSelector = <State, Result, Props extends any[]>(\r\n selectorFactory: ((...props: Props) => MemoizedSelector<State, Result>),\r\n action: ActionReturner<Props>,\r\n dispatchIf: (data: Result) => boolean = defaultFilter,\r\n) => {\r\n const options = {\r\n selectorFactory,\r\n action: (...props: Props) => () => _store.dispatch(action(...props)),\r\n dispatchIf\r\n }\r\n const actionable = createActionResultSelector(options);\r\n return (...props: Props) => createSelector(actionable(...props), b => b.result);\r\n}\r\n\r\nexport const createActionSelector = <State, Result, Props extends any[] = any[]>(options: CreateActionResultsOptions<State, Result, Props>) => {\r\n const actionable = createActionResultSelector(options);\r\n return ((...props: Props) => createSelector(actionable(...props), b => b.result));\r\n}\r\n\r\nexport const createActionableResultSelector = <State, Result, Props extends any[]>(\r\n selectorFactory: ((...props: Props) => MemoizedSelector<State, Result>),\r\n action: ActionReturner<Props>,\r\n dispatchIf: (data: Result) => boolean = defaultFilter,\r\n) => {\r\n const options: CreateActionResultsOptions<State, Result, Props> = {\r\n selectorFactory,\r\n action: (...props: Props) => () => _store.dispatch(action(...props)),\r\n dispatchIf\r\n };\r\n\r\n return createActionResultSelector(options);\r\n}\r\n\r\nexport const createActionResultSelector = <State, Result, Props extends any[] = any[]>(options: CreateActionResultsOptions<State, Result, Props>) => {\r\n const id = crypto.randomUUID();\r\n const slctr = (...props: Props) => createSelector(\r\n options.selectorFactory(...props),\r\n (selected: Result) => {\r\n const needsDispatch = (options.dispatchIf || defaultFilter)(selected);\r\n if(needsDispatch && !_cache.isInCache(id, ...props)){\r\n queueMicrotask(() =>\r\n runInInjectionContext(options.injector || _ei, () => {\r\n options.action(...props)()\r\n }));\r\n }\r\n return ({\r\n loading: needsDispatch,\r\n result: selected\r\n });\r\n }\r\n ) as ActionableMemoizedSelector<State, LoadingState<Result>>;\r\n return slctr;\r\n}\r\n\r\nclass AppStoreCache {\r\n cache: Cache = {};\r\n isInCache = (actionableSelectorId: string, ...p: any[]): boolean => {\r\n const props = p.reduce((a, b) => {\r\n if(typeof b != 'object') b = { b };\r\n return ({ ...a, ...b })\r\n }, {});\r\n\r\n let itemsInCache = this.cache[actionableSelectorId] = (this.cache[actionableSelectorId] || []);\r\n\r\n if(itemsInCache.some(itemInCache => shallowEquals(itemInCache, props))){\r\n return true;\r\n }\r\n\r\n itemsInCache.push(props);\r\n return false;\r\n }\r\n}\r\n\r\nexport const clearActionableSelectorRequestCache = () => _cache.cache = {};\r\n\r\nconst shallowEquals = (cachedItem: object, newItem: object): boolean => {\r\n const cachedItemKeys = Object.keys(cachedItem);\r\n const secondKeys = Object.keys(newItem);\r\n if(cachedItemKeys.length !== secondKeys.length) {\r\n return false;\r\n }\r\n for(let index = 0; index < cachedItemKeys.length; index++) {\r\n const currentKey = cachedItemKeys[index];\r\n if(cachedItem[currentKey] !== newItem[currentKey]){\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function defaultFilter(data: any) {\r\n return data == null || data == undefined;\r\n}\r\n\r\nconst setStore = (store: Store) => {\r\n if(store instanceof Store) _store ??= store;\r\n};\r\n\r\nconst setEnvironmentInjector = (ei: EnvironmentInjector) => {\r\n if(ei instanceof EnvironmentInjector) _ei ??= ei;\r\n};\r\n\r\nexport function provideActionableSelector(){\r\n return makeEnvironmentProviders([\r\n provideAppInitializer(setUpStoreFactory)\r\n ])\r\n}\r\n\r\nexport const setUpStoreFactory = () => {\r\n const store = inject(Store);\r\n const env = inject(EnvironmentInjector);\r\n _cache ??= new AppStoreCache();\r\n setStore(store);\r\n setEnvironmentInjector(env)\r\n}\r\n\r\nexport function setUpStoreFactoryOld(store: Store, env: EnvironmentInjector){\r\n _cache ??= new AppStoreCache();\r\n return () => new Promise((resolve, reject) => {\r\n setStore(store);\r\n setEnvironmentInjector(env)\r\n resolve(null);\r\n })\r\n}\r\n\r\n\r\nexport interface CreateActionResultsOptions<State, Result, Props extends any[]>{\r\n selectorFactory: (...props: Props) => MemoizedSelector<State, Result>,\r\n action: (...props: Props) => () => void,\r\n dispatchIf?: (data: Result) => boolean,\r\n injector?: Injector\r\n}\r\n\r\ninterface LoadingState<T> {\r\n loading: boolean;\r\n result?: T;\r\n}\r\n\r\ntype ActionableMemoizedSelector<State, Result> = MemoizedSelector<State, Result>;\r\n\r\nexport type ActionReturner<Props extends any[]> = (...props: Props) => Action;\r\n\r\ntype Cache = {\r\n [key: string]: { [key: string]: any }[];\r\n}","/*\r\n * Public API Surface of http-request-state\r\n */\r\n\r\nexport * from './http-request-state/directives';\r\nexport * from './http-request-state/rxjs';\r\nexport * from './http-request-state';\r\n\r\n\r\nexport * from './table-builder/table-builder.module';\r\n\r\nexport * from './table-builder/classes/TableBuilderConfig';\r\n\r\nexport * from './table-builder/interfaces/report-def';\r\n\r\nexport * from './table-builder/classes/MatTableObservableDataSource';\r\n\r\nexport * from './table-builder/classes/table-builder';\r\n\r\nexport * from './table-builder/classes/table-builder-general-settings';\r\n\r\nexport * from './table-builder/components';\r\n\r\nexport * from './table-builder/directives';\r\n\r\nexport * from './table-builder/enums/filterTypes';\r\n\r\n\r\nexport * from './rxjs'\r\n\r\nexport * from './utilities'\r\n\r\nexport * from './action-state';\r\n\r\nexport * from './ngrx';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","map","startWith","concatMap","merge","takeUntil","tap","i1","i2","switchMap","i3","i5","i6","i7","i4","i8","i9"],"mappings":"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"}
|