@one-paragon/angular-utilities 2.0.21 → 2.0.22
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.
|
@@ -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/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/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/groupBy.helpers.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.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.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.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\n export type RequestStateCancelled = {\r\n status: RequestStatus.cancelled\r\n }\r\n\r\n export type RequestStateNotStarted = {\r\n status: RequestStatus.notStarted\r\n }\r\n\r\n export type RequestStateInProgress = {\r\n status: RequestStatus.inProgress\r\n }\r\n\r\n export type RequestStateSuccess<T> = {\r\n status: RequestStatus.success;\r\n body: T;\r\n }\r\n\r\n export type RequestStateError = {\r\n status: RequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\n export 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, inject } 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> {\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 } 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> {\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 } 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> {\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 } 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> {\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 } 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> {\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 } 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> {\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\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 { flatten } from 'lodash';\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} 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>(): OperatorFunction<(T | null | undefined), T> {\r\n return (source: Observable<T | null | undefined>) => {\r\n return source.pipe(filter( (o: T | null | undefined): o is T => o != null) )\r\n }\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 { 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, 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 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 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 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.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\nexport function wrapInArr<T>(sig: Signal<T>) : Signal<[T]>;\r\nexport function wrapInArr<T>(obs: Observable<T>): Observable<[T]>;\r\nexport function wrapInArr<T>(sigOrObs: Signal<T> | Observable<T>){\r\n return isSignal(sigOrObs) ?\r\n computed(() => [sigOrObs()])\r\n : sigOrObs.pipe(map(a => [a]));\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\nimport { isFunction } from \"lodash\";\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 = isFunction(optionsOrProject) ? 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 width?: string;\r\n noExport?: boolean;\r\n noFilter?: boolean;\r\n noSort?: 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 ) => 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> = (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\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}\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\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}\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, Target } 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 interface Group {\r\n key: string;\r\n groupName: string;\r\n children: any[];\r\n isGroupHeader: true;\r\n}\r\n\r\nexport interface GroupedData {\r\n key: string,\r\n expandedHeaders: string[]\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 } 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({\r\n selector: '[customCell]',\r\n })\r\nexport class CustomCellDirective<T = any> {\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 } 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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 { 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 { get } from 'lodash';\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}\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}\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 return (rowObj) => {\r\n const value = get(rowObj, filter.key);\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 { Sort } from \"@angular/material/sort\";\r\nimport { 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\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>): Sort[] => {\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 };\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\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$ = 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 $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 <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 [for]=\"cal\" preventEnter />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.DateBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"fromVal\" preventEnter />\r\n <mat-datepicker #fromVal></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"toVal\" preventEnter />\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 StopPropagationDirective,\r\n TrimWhitespaceDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\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 <div>\r\n @if($type() === FieldType.Number || $type() === FieldType.Currency){\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index, $event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\"/>\r\n }\r\n @else {\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index ,$event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\r\n #input [autoFocus]=\"$index === value.length - 1\" />\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 <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 <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.NumberBetween){\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n@if (CurrentFilterType === FilterType.In) {\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 <input type=\"datetime-local\" [ngModel]=\"info.filterValue\" preventEnter name=\"filterValue\" class=\"op-date-time-input\"/>\r\n}\r\n@if(CurrentFilterType === FilterType.DateTimeBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.Start\" preventEnter name=\"Start\" class=\"op-date-time-input\"/>\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.End\" preventEnter name=\"End\" class=\"op-date-time-input\"/>\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\r\n onEnter(filter: FilterInfo, event: any) {\r\n event.preventDefault();\r\n if (filter.filterValue != null && filter.filterType) {\r\n this.state.addFilter(filter);\r\n this.close.emit();\r\n }\r\n }\r\n}\r\n","@let filter = $filter();\r\n@let currentFilterType = $currentFilterType();\r\n\r\n@if (filter) {\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 (click)=\"close.emit();\" type=\"button\"\r\n [matTooltip]=\"'Close'\">\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()\" (ngModelChange)=\"$enteredFilterType.set($event)\" [panelWidth]=\"null\">\r\n @for (kvp of filterTypes[filter.fieldType]; track kvp) {\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 <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Boolean){\r\n <ng-container *ngTemplateOutlet=\"Boolean\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Date){\r\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.DateTime){\r\n <tb-date-time-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Enum){\r\n <ng-container *ngTemplateOutlet=\"Enum\" />\r\n }\r\n\r\n @if(currentFilterType === FilterType.IsNull){\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 (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\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 <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n </mat-form-field>\r\n } @else if(currentFilterType === FilterType.In) {\r\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" />\r\n }\r\n </ng-template>\r\n \r\n <ng-template #Boolean >\r\n @if(currentFilterType === FilterType.BooleanEquals){\r\n <div class=\"switch\">\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\r\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\" preventEnter>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 <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\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 <span matTooltip=\"Show/hide columns\">\r\n <button 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 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 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 (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n @for (col of displayCols; track col.key) {\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n @if(col.isVisible){\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n } @else {\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.noFilter);\r\n });\r\n\r\n addFilter(metaData: MetaData) {\r\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\r\n }\r\n}","<button 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 <button (click)=\"addFilter(md)\" mat-menu-item>\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 <button class=\"cancel-button\" mat-icon-button (click)=\"clearAll()\" matTooltip=\"Close all Filters Cards\">\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 <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 <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 <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 { get } from 'lodash';\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 nested = metaData.key.includes('.');\r\n const defaultFunc = nested ? (value: any) => get( value, metaData.key) : (value: any) => value[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 src=\"{{value}}\" height=\"75px\" width=\"75px\" />\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 $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.$metaData().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\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) {\r\n if (filter.filterValue != undefined && filter.filterType) {\r\n this.tableState.addFilter(filter);\r\n this.$trigger()!.closeMenu();\r\n }\r\n }\r\n}\r\n","@let metaData = $metaData();\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 (!(metaData.fieldType === FieldType.NotMapped))\r\n {\r\n <button 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 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 (!(metaData.fieldType === FieldType.NotMapped))\r\n {\r\n <ng-form #myForm=\"ngForm\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"currentFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n \r\n @if(currentFilterType === FilterType.Or || currentFilterType === FilterType.In){\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [ngModel]=\"undefined\"/>\r\n }\r\n @else if(metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber) {\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\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\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 (metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency) {\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\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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 (metaData.fieldType === FieldType.Boolean) {\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 stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"undefined\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"boolField.control.setValue(true);\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"boolField.control.setValue(false)\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime) {\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\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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 [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n }\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\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 } 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 {\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) {\r\n const metaData = this.$metaData();\r\n if(metaData?.click) {\r\n metaData.click(element,key);\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 matHeaderCellDef #myHeader>\r\n <mat-header-cell cdkDrag [style]='styles?.header' resizeColumn [key]=\"metaData.key\" class=\"column-head\"\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){\r\n <div mat-sort-header [disabled]=\"metaData.noSort\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n } @else if(metaData.fieldType === FieldType.NotMapped){\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 <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 </ng-container>\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) : ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' (click)='cellClicked(element, metaData.key)' >\r\n <ng-container *ngTemplateOutlet=\"$innerTemplate()!; context: { value: ($transform()! | func : element), element: element, additional: $additional(), innerStyles: styles.innerBody, $implicit: element }; 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 <ng-container\r\n *ngTemplateOutlet=\"customCell!.columnDef!.footerCell.template; context: {metaData: metaData, data: $data, styles : styles.footer }\"/>\r\n } @else {\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 <span class=\"bold\">\r\n @switch (metaData.fieldType) {\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: Sort[]): 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: Sort[], allSorts: Sort[]}\r\n\r\nfunction addInitSort(sorts: Sort[]){\r\n return [...sorts, {active: initIndexSymbol as unknown as string, direction: 'asc' as SortDirection}];\r\n}\r\n\r\nfunction sortsRemoved(previousSorts: Sort[], currentSorts: Sort[]): 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: Sort[], currentSorts: Sort[]){\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: []};","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 { 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 { 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, VirtualScrollOptions } 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\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\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 || (hasData && (metaFooter || hasSelectionColumn)) ? '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\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) 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 $selectableData = computed(() => {\r\n if(this.state.$viewType() === 'virtual paginator' || this.state.$viewType() === 'paginator'){\r\n const previousPageRecords = this.state.$currentPage() * this.state.$pageSize();\r\n return this.$data().slice(previousPageRecords, previousPageRecords + this.state.$pageSize());\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 #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 $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) => {\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});\r\n } catch (error) {\r\n return 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","<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n #table\r\n [dataSource]=\"$dataSource()\"\r\n [trackBy]=\"$trackByFunction()\"\r\n [style]=\"$tableWidth()\"\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 (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!($masterToggleChecked())\"\r\n [indeterminate]=\"$masterToggleIndeterminate()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"/>\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\"></mat-footer-cell>\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 <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\r\n @if (!expanded()) {\r\n <mat-icon>chevron_right</mat-icon>\r\n } @else {\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 }\"></ng-container>\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 />\r\n\r\n <mat-row [style.height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"\r\n [style.min-height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"\r\n *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"/>\r\n</mat-table>\r\n\r\n<mat-header-row [style.height]=\"$headerHeight()\" [style.min-height]=\"$headerHeight()\"\r\n *matHeaderRowDef=\"$keys(); sticky: state.$props().isSticky\" [style.top.px]=\"($offset()! * -1)\"/>\r\n<mat-footer-row [style.height]=\"$footerHeight()\" [style.min-height]=\"$footerHeight()\"\r\n *matFooterRowDef=\"$keys(); sticky: $stickyFooter() \"\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 { get } from 'lodash';\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 = get( row,meta.key);\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 { get } from \"lodash\";\r\nimport { FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { Dictionary } from \"@ngrx/entity\";\r\nimport { QueryParamsHandling } from \"@angular/router\";\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 const routerLinkOptions = useRouterLink ? {\r\n queryParams: (element: T) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = typeof value === 'function' ? value(element) : parseInterpolated(value, element);\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: (element: T) => typeof value === 'function' ? value(element) : parseInterpolated(value, element),\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 (element:any) => get(element, (metaData.additional!.link!.urlKey as string))\r\n :\r\n (element:any) => get(element, metaData.key);\r\n\r\nconst parseInterpolated = ( interpolatedString: string, element: any ) =>\r\n interpolatedString.replace(/{([^}]+)}/g, (_, key) => get(element ,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","import { ComponentStore } from \"@ngrx/component-store\";\r\nimport { Injectable, Signal } from \"@angular/core\";\r\nimport { Observable, filter, tap } from \"rxjs\";\r\nimport { concatLatestFrom } from '@ngrx/operators';\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\nimport { PersistedTableState, TableState } 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 { groupBy } from \"lodash\";\r\nimport { Timestamp } from \"rxjs\";\r\nimport { Group, GroupedData } from \"../../../classes/TableState\";\r\nimport { initIndexSymbol } from \"./sort-state.helpers\";\r\n\r\nfunction getGroupedData(data: any[], groupByKeys: string[]): any[] {\r\n return tbGroupBy(data, groupByKeys);\r\n}\r\n\r\nconst tbGroupBy = (data: any[], groupByKeys: string[], parentGroupName?: any): any[] => {\r\n const currentKey = groupByKeys[0];\r\n const res = groupBy(data, currentKey);\r\n const remainingGroupByKeys = groupByKeys.slice(1);\r\n const finalGroups = !remainingGroupByKeys.length;\r\n if (remainingGroupByKeys.length) {\r\n Object.keys(res).forEach(key => res[key] = tbGroupBy(res[key], remainingGroupByKeys, key))\r\n }\r\n return Object.keys(res).map((groupName, i) => {\r\n const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;\r\n const groupHeaders = res[groupName]?.filter(row => row.isGroupHeader) ?? [];\r\n return ({\r\n isGroupHeader: true,\r\n groupHeaderDisplay: groupName,\r\n hasTheData: finalGroups,\r\n children: finalGroups ? res[groupName] : res[groupName].map(d => {d.padding += 20; return d}),\r\n groupName: `tb_group_${uniqName}`,\r\n padding: 1,\r\n key: currentKey,\r\n length : groupHeaders.reduce((acc, curr) => curr.length + acc,0) + ((res[groupName] ?? []).length - groupHeaders.length),\r\n [initIndexSymbol]: uniqName,\r\n } as Group\r\n );\r\n })\r\n}\r\n\r\nexport function updateGroupByState<T = 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)).flat();\r\n return ({displayData: newDisplayData, groupedData});\r\n}\r\n\r\nexport function _updateGroupByState({ groupedData }:GroupByState, [data, groups, expanded] : [Timestamp<any[]>, Timestamp<string[]>, Timestamp<GroupedData[]>], index: number){\r\n return updateGroupByState(groupedData, {data, groups, expanded}, index === 0)\r\n}\r\n\r\nfunction mapGroupHeader(obj: any, data: GroupedData[]){\r\n const showChildren = data.find(a => a.expandedHeaders.includes(obj.groupName));\r\n const children = !showChildren ? [] : \r\n obj.hasTheData ? obj.children\r\n : obj.children.map(a => mapGroupHeader(a, data))\r\n\r\n return [obj, ...children].flat()\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: any[]};\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 return groupBy(groups, 'key')\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 groupBy(groups, 'key')\r\n}\r\n\r\nconst getGroupHeaders = (data: any[], filterFunc: (d:any) => boolean, arr:any[] = []): Group[] => {\r\n const headers = data.filter(filterFunc);\r\n arr.push(...headers);\r\n headers.forEach(h => {if(!!h.children.length) getGroupHeaders(h.children, filterFunc, arr)});\r\n return arr;\r\n}","import { Sort } from \"@angular/material/sort\";\r\nimport { orderBy } from 'lodash';\r\nimport { Predicate } from \"@angular/core\";\r\n\r\nexport function sortData<T>(data: T[], sorted: Sort[]): T[] {\r\n const ordered = orderBy(data, sorted.map(r => r.active), sorted.map(r => r.direction));\r\n return ordered;\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","import { Observable, Timestamp, combineLatest, map, scan, timestamp } from \"rxjs\";\r\nimport { SortState } from \"./sort-state.helpers\";\r\nimport { FilterPredicateState } from \"./filter-state.helpers\";\r\nimport { filterData, sortData, tbNoShowSymbol } from \"../../../functions/sort-data-function\";\r\nimport { defaultShareReplay } from \"../../../../rxjs/defaultShareReplay\";\r\nimport { FieldType, MetaData } from \"../../../interfaces/report-def\";\r\nimport { get, 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, filteredData: 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 if(runAllOnAllData){\r\n const filteredData = filterData(sortData(allData.value , sort.value.sortsToRun ), filters.value.allFilters, resetFilters);\r\n return filteredData;\r\n }\r\n if(sortChanged){\r\n return (sortData(filteredData, sort.value.sortsToRun));\r\n }\r\n return (filterData(filteredData, 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 notNestedKey = metaData.key as unknown as keyof T; \r\n switch ( metaData.fieldType ) {\r\n case FieldType.Currency:\r\n case FieldType.Number:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key);\r\n const num = Number( val );\r\n set(t as {}, metaData.key, isNaN(num) || val == null ? null : num)\r\n });\r\n } else {\r\n transforms.push( (t:T) => {\r\n const val = t[notNestedKey];\r\n const num = Number( val );\r\n t[notNestedKey] = (isNaN(num) || val == null ? null : num) as any\r\n });\r\n }\r\n break;\r\n }\r\n case FieldType.Date:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key) as string;\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n set(t as {}, metaData.key, null as any);\r\n return\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n set(t as {}, metaData.key, d as any);\r\n })\r\n } else {\r\n transforms.push( (t:T) => {\r\n const val = t[notNestedKey] as string;\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n t[notNestedKey] = null as any;\r\n return\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n t[notNestedKey] = d as any;\r\n })\r\n }\r\n break;\r\n }\r\n \r\n case FieldType.DateTime:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key);\r\n const dateTime = Date.parse(val as string);\r\n if(isNaN(dateTime)){\r\n set(t as {}, metaData.key, null as any);\r\n return\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n set(t as {}, metaData.key, dt as any);\r\n return\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n set(t as {}, metaData.key, dt as any);\r\n return\r\n }\r\n dt.setSeconds(0, 0);\r\n set(t as {}, metaData.key, dt as any);\r\n })\r\n } else {\r\n transforms.push((t:T) => {\r\n const val = t[notNestedKey] as string;\r\n const dateTime = Date.parse(val);\r\n if(isNaN(dateTime)){\r\n t[notNestedKey] = null as any;\r\n return;\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n t[notNestedKey] = dt as any;\r\n return;\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n t[notNestedKey] = dt as any;\r\n return;\r\n }\r\n dt.setSeconds(0, 0);\r\n t[notNestedKey] = dt as any;\r\n })\r\n }\r\n }\r\n }\r\n return transforms;\r\n }, [] as ((t:T) => void)[])\r\n}","import { Component, ChangeDetectionStrategy, ElementRef, computed, inject, viewChild, input, 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 <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()) {<button mat-button (click)=\"showAll()\"><span [style.text-decoration]=\"$showAll() ? 'line-through' : ''\" >All</span></button>}\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 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.$dataLength();\r\n untracked(() => {\r\n if(paginator){\r\n paginator.length = dataLength;\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 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\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, 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}\r\n","<span class=\"tb-group-label\">Group By:</span>\r\n<mat-chip-set>\r\n @for (groupByKey of tableStore.$groupByKeys(); track groupByKey)\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(groupByKey)\">\r\n {{groupByKey | 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 mat-icon-button [matMenuTriggerFor]=\"menu\" #trigger=\"matMenuTrigger\" [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 [matTooltip]=\"'Save Profile'\" mat-stroked-button (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 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 [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox class=\"display-none\" [checked]=\"true\" #m />\r\n </div>\r\n }\r\n @if (allProfilesPanelOpened()) {<hr class=\"divider\"/>}\r\n <div [class]=\"{ hide: !$keys().length, 'all-profile-row': true }\" mat-menu-item stop-propagation (click)=\"allProfilesPanelOpened.set(!allProfilesPanelOpened())\">\r\n <div class=\"all-profiles\">\r\n <span>All Profiles</span>\r\n <span [class]=\"(allProfilesPanelOpened() ? 'all-profile-arrow-close' : 'all-profile-arrow-open') + ' all-profile-arrow'\" class=\"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 <div class=\"profile-line\" [class]=\"key === $currentProfile() ? 'current-in-list' : 'not-current-in-list'\">\r\n <button [matTooltip]=\"'Select Profile'\" class=\"menu-item first-in-line\" mat-stroked-button (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 [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (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 [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"unsetDefault()\">\r\n <mat-icon style=\"color: green;\">star</mat-icon>\r\n </button>\r\n }\r\n <button [matTooltip]=\"'Delete Profile'\" class=\"last-in-line\" stop-propagation mat-icon-button (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 matInput #addedKey=\"matInput\" [name]=\"'key'\" />\r\n </div>\r\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m2.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m2.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox class=\"display-none\" [ngModel]=\"!$defaultProfile()\" #m2 />\r\n </div>\r\n <button class=\"add-button\" color=\"primary\" [matTooltip]=\"'Create New Profile'\" mat-raised-button (click)=\"addState(addedKey.value, m2.checked); addedKey.value = null\" [disabled]=\"!addedKey.value\">\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.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 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 <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\" (click)=\"apply()\"\r\n stop-propagation [class.apply-border]=\"dirty\"\r\n [disabled]=\"!dirty\">\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 <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #sortedGroup=\"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 <!-- Menu Item Headers -->\r\n @if (sorted.length > 1) {\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]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\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]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\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 <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #notSortedGroup=\"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 <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';\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';\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 mat-menu-item [matMenuTriggerFor]=\"r.menu()\" #d=\"matMenuItem\" [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 <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 <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 class=\"profiles-menu\" #pm [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 [value]=\"$rowHeightNum()\"\r\n (change)=\"updateHeight('row', i)\"\r\n placeholder=\"Set Size\"\r\n [min]=\"10\" [max]=\"100\" />\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 [value]=\"$headerHeightNum()\"\r\n (change)=\"updateHeight('header', i2)\"\r\n placeholder=\"Set Size\"\r\n [min]=\"10\" [max]=\"100\"/>\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';\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 } 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 { _updateGroupByState, 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 { isFunction } from 'lodash';\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.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 #initTableBuilderIfNeeded = effect(() => {\r\n const tb = this.$tableBuilder();\r\n untracked(() => {\r\n if(tb) this.$tableBuilder()?.prep(this.injector)\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();\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 private $filteredSortedAndGrouped = linkedSignal<{ data: Timestamp<T[]>, 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","@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 <group-by-list />\r\n }\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader) {\r\n @if (!$collapsedHeader()) {\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 <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">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 [matTooltip]=\"$collapsedHeader() ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\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 (selection)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" />\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 (selection)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" />\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 [matTooltip]=\"$collapsedFooter() ? 'expand' : 'collapse'\" class=\"collapse-icon footer\"\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\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 $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\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 <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/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/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/groupBy.helpers.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.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.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.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\n export type RequestStateCancelled = {\r\n status: RequestStatus.cancelled\r\n }\r\n\r\n export type RequestStateNotStarted = {\r\n status: RequestStatus.notStarted\r\n }\r\n\r\n export type RequestStateInProgress = {\r\n status: RequestStatus.inProgress\r\n }\r\n\r\n export type RequestStateSuccess<T> = {\r\n status: RequestStatus.success;\r\n body: T;\r\n }\r\n\r\n export type RequestStateError = {\r\n status: RequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\n export 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, inject } 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> {\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 } 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> {\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 } 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> {\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 } 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> {\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 } 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> {\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 } 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> {\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\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 { flatten } from 'lodash';\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} 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>(): OperatorFunction<(T | null | undefined), T> {\r\n return (source: Observable<T | null | undefined>) => {\r\n return source.pipe(filter( (o: T | null | undefined): o is T => o != null) )\r\n }\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 { 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, 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 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 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 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.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\nexport function wrapInArr<T>(sig: Signal<T>) : Signal<[T]>;\r\nexport function wrapInArr<T>(obs: Observable<T>): Observable<[T]>;\r\nexport function wrapInArr<T>(sigOrObs: Signal<T> | Observable<T>){\r\n return isSignal(sigOrObs) ?\r\n computed(() => [sigOrObs()])\r\n : sigOrObs.pipe(map(a => [a]));\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\nimport { isFunction } from \"lodash\";\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 = isFunction(optionsOrProject) ? 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 width?: string;\r\n noExport?: boolean;\r\n noFilter?: boolean;\r\n noSort?: 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 ) => 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> = (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\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}\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\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}\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, Target } 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 interface Group {\r\n key: string;\r\n groupName: string;\r\n children: any[];\r\n isGroupHeader: true;\r\n}\r\n\r\nexport interface GroupedData {\r\n key: string,\r\n expandedHeaders: string[]\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 } 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({\r\n selector: '[customCell]',\r\n })\r\nexport class CustomCellDirective<T = any> {\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 } 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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 { 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 { get } from 'lodash';\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}\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}\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 return (rowObj) => {\r\n const value = get(rowObj, filter.key);\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 { Sort } from \"@angular/material/sort\";\r\nimport { 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\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>): Sort[] => {\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 };\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\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$ = 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 $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 <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 [for]=\"cal\" preventEnter />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.DateBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"fromVal\" preventEnter />\r\n <mat-datepicker #fromVal></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"toVal\" preventEnter />\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 StopPropagationDirective,\r\n TrimWhitespaceDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\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 <div>\r\n @if($type() === FieldType.Number || $type() === FieldType.Currency){\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index, $event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\"/>\r\n }\r\n @else {\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index ,$event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\r\n #input [autoFocus]=\"$index === value.length - 1\" />\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 <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 <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.NumberBetween){\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n@if (CurrentFilterType === FilterType.In) {\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 <input type=\"datetime-local\" [ngModel]=\"info.filterValue\" preventEnter name=\"filterValue\" class=\"op-date-time-input\"/>\r\n}\r\n@if(CurrentFilterType === FilterType.DateTimeBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.Start\" preventEnter name=\"Start\" class=\"op-date-time-input\"/>\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.End\" preventEnter name=\"End\" class=\"op-date-time-input\"/>\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\r\n onEnter(filter: FilterInfo, event: any) {\r\n event.preventDefault();\r\n if (filter.filterValue != null && filter.filterType) {\r\n this.state.addFilter(filter);\r\n this.close.emit();\r\n }\r\n }\r\n}\r\n","@let filter = $filter();\r\n@let currentFilterType = $currentFilterType();\r\n\r\n@if (filter) {\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 (click)=\"close.emit();\" type=\"button\"\r\n [matTooltip]=\"'Close'\">\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()\" (ngModelChange)=\"$enteredFilterType.set($event)\" [panelWidth]=\"null\">\r\n @for (kvp of filterTypes[filter.fieldType]; track kvp) {\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 <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Boolean){\r\n <ng-container *ngTemplateOutlet=\"Boolean\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Date){\r\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.DateTime){\r\n <tb-date-time-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Enum){\r\n <ng-container *ngTemplateOutlet=\"Enum\" />\r\n }\r\n\r\n @if(currentFilterType === FilterType.IsNull){\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 (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\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 <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n </mat-form-field>\r\n } @else if(currentFilterType === FilterType.In) {\r\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" />\r\n }\r\n </ng-template>\r\n \r\n <ng-template #Boolean >\r\n @if(currentFilterType === FilterType.BooleanEquals){\r\n <div class=\"switch\">\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\r\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\" preventEnter>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 <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\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 <span matTooltip=\"Show/hide columns\">\r\n <button 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 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 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 (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n @for (col of displayCols; track col.key) {\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n @if(col.isVisible){\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n } @else {\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.noFilter);\r\n });\r\n\r\n addFilter(metaData: MetaData) {\r\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\r\n }\r\n}","<button 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 <button (click)=\"addFilter(md)\" mat-menu-item>\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 <button class=\"cancel-button\" mat-icon-button (click)=\"clearAll()\" matTooltip=\"Close all Filters Cards\">\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 <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 <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 <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 { get } from 'lodash';\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 nested = metaData.key.includes('.');\r\n const defaultFunc = nested ? (value: any) => get( value, metaData.key) : (value: any) => value[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 src=\"{{value}}\" height=\"75px\" width=\"75px\" />\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 $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.$metaData().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\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) {\r\n if (filter.filterValue != undefined && filter.filterType) {\r\n this.tableState.addFilter(filter);\r\n this.$trigger()!.closeMenu();\r\n }\r\n }\r\n}\r\n","@let metaData = $metaData();\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 (!(metaData.fieldType === FieldType.NotMapped))\r\n {\r\n <button 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 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 (!(metaData.fieldType === FieldType.NotMapped))\r\n {\r\n <ng-form #myForm=\"ngForm\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"currentFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n \r\n @if(currentFilterType === FilterType.Or || currentFilterType === FilterType.In){\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [ngModel]=\"undefined\"/>\r\n }\r\n @else if(metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber) {\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\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\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 (metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency) {\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\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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 (metaData.fieldType === FieldType.Boolean) {\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 stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"undefined\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"boolField.control.setValue(true);\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"boolField.control.setValue(false)\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime) {\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\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [class]=\"{'chosen-icon': currentFilterType === 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 [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n }\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\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 } 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 {\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) {\r\n const metaData = this.$metaData();\r\n if(metaData?.click) {\r\n metaData.click(element,key);\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 matHeaderCellDef #myHeader>\r\n <mat-header-cell cdkDrag [style]='styles?.header' resizeColumn [key]=\"metaData.key\" class=\"column-head\"\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){\r\n <div mat-sort-header [disabled]=\"metaData.noSort\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n } @else if(metaData.fieldType === FieldType.NotMapped){\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 <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 </ng-container>\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) : ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' (click)='cellClicked(element, metaData.key)' >\r\n <ng-container *ngTemplateOutlet=\"$innerTemplate()!; context: { value: ($transform()! | func : element), element: element, additional: $additional(), innerStyles: styles.innerBody, $implicit: element }; 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 <ng-container\r\n *ngTemplateOutlet=\"customCell!.columnDef!.footerCell.template; context: {metaData: metaData, data: $data, styles : styles.footer }\"/>\r\n } @else {\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 <span class=\"bold\">\r\n @switch (metaData.fieldType) {\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: Sort[]): 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: Sort[], allSorts: Sort[]}\r\n\r\nfunction addInitSort(sorts: Sort[]){\r\n return [...sorts, {active: initIndexSymbol as unknown as string, direction: 'asc' as SortDirection}];\r\n}\r\n\r\nfunction sortsRemoved(previousSorts: Sort[], currentSorts: Sort[]): 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: Sort[], currentSorts: Sort[]){\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: []};","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 { 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 { 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, VirtualScrollOptions } 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\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\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 || (hasData && (metaFooter || hasSelectionColumn)) ? '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\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) 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 $selectableData = computed(() => {\r\n if(this.state.$viewType() === 'virtual paginator' || this.state.$viewType() === 'paginator'){\r\n const previousPageRecords = this.state.$currentPage() * this.state.$pageSize();\r\n return this.$data().slice(previousPageRecords, previousPageRecords + this.state.$pageSize());\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 #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 $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) => {\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});\r\n } catch (error) {\r\n return 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","<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n #table\r\n [dataSource]=\"$dataSource()\"\r\n [trackBy]=\"$trackByFunction()\"\r\n [style]=\"$tableWidth()\"\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 (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!($masterToggleChecked())\"\r\n [indeterminate]=\"$masterToggleIndeterminate()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\" class=\"select-column\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"/>\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\"></mat-footer-cell>\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 <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded());\">\r\n @if (!expanded()) {\r\n <mat-icon>chevron_right</mat-icon>\r\n } @else {\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 }\"></ng-container>\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 />\r\n\r\n <mat-row [style.height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"\r\n [style.min-height]=\"state.$props().groupHeaderHeight ? state.$props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"\r\n *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"/>\r\n</mat-table>\r\n\r\n<mat-header-row [style.height]=\"$headerHeight()\" [style.min-height]=\"$headerHeight()\"\r\n *matHeaderRowDef=\"$keys(); sticky: state.$props().isSticky\" [style.top.px]=\"($offset()! * -1)\"/>\r\n<mat-footer-row [style.height]=\"$footerHeight()\" [style.min-height]=\"$footerHeight()\"\r\n *matFooterRowDef=\"$keys(); sticky: $stickyFooter() \"\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 { get } from 'lodash';\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 = get( row,meta.key);\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 { get } from \"lodash\";\r\nimport { FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { Dictionary } from \"@ngrx/entity\";\r\nimport { QueryParamsHandling } from \"@angular/router\";\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 const routerLinkOptions = useRouterLink ? {\r\n queryParams: (element: T) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = typeof value === 'function' ? value(element) : parseInterpolated(value, element);\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: (element: T) => typeof value === 'function' ? value(element) : parseInterpolated(value, element),\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 (element:any) => get(element, (metaData.additional!.link!.urlKey as string))\r\n :\r\n (element:any) => get(element, metaData.key);\r\n\r\nconst parseInterpolated = ( interpolatedString: string, element: any ) =>\r\n interpolatedString.replace(/{([^}]+)}/g, (_, key) => get(element ,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","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 { groupBy } from \"lodash\";\r\nimport { Timestamp } from \"rxjs\";\r\nimport { Group, GroupedData } from \"../../../classes/TableState\";\r\nimport { initIndexSymbol } from \"./sort-state.helpers\";\r\n\r\nfunction getGroupedData(data: any[], groupByKeys: string[]): any[] {\r\n return tbGroupBy(data, groupByKeys);\r\n}\r\n\r\nconst tbGroupBy = (data: any[], groupByKeys: string[], parentGroupName?: any): any[] => {\r\n const currentKey = groupByKeys[0];\r\n const res = groupBy(data, currentKey);\r\n const remainingGroupByKeys = groupByKeys.slice(1);\r\n const finalGroups = !remainingGroupByKeys.length;\r\n if (remainingGroupByKeys.length) {\r\n Object.keys(res).forEach(key => res[key] = tbGroupBy(res[key], remainingGroupByKeys, key))\r\n }\r\n return Object.keys(res).map((groupName, i) => {\r\n const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;\r\n const groupHeaders = res[groupName]?.filter(row => row.isGroupHeader) ?? [];\r\n return ({\r\n isGroupHeader: true,\r\n groupHeaderDisplay: groupName,\r\n hasTheData: finalGroups,\r\n children: finalGroups ? res[groupName] : res[groupName].map(d => {d.padding += 20; return d}),\r\n groupName: `tb_group_${uniqName}`,\r\n padding: 1,\r\n key: currentKey,\r\n length : groupHeaders.reduce((acc, curr) => curr.length + acc,0) + ((res[groupName] ?? []).length - groupHeaders.length),\r\n [initIndexSymbol]: uniqName,\r\n } as Group\r\n );\r\n })\r\n}\r\n\r\nexport function updateGroupByState<T = 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)).flat();\r\n return ({displayData: newDisplayData, groupedData});\r\n}\r\n\r\nexport function _updateGroupByState({ groupedData }:GroupByState, [data, groups, expanded] : [Timestamp<any[]>, Timestamp<string[]>, Timestamp<GroupedData[]>], index: number){\r\n return updateGroupByState(groupedData, {data, groups, expanded}, index === 0)\r\n}\r\n\r\nfunction mapGroupHeader(obj: any, data: GroupedData[]){\r\n const showChildren = data.find(a => a.expandedHeaders.includes(obj.groupName));\r\n const children = !showChildren ? [] : \r\n obj.hasTheData ? obj.children\r\n : obj.children.map(a => mapGroupHeader(a, data))\r\n\r\n return [obj, ...children].flat()\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: any[]};\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 return groupBy(groups, 'key')\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 groupBy(groups, 'key')\r\n}\r\n\r\nconst getGroupHeaders = (data: any[], filterFunc: (d:any) => boolean, arr:any[] = []): Group[] => {\r\n const headers = data.filter(filterFunc);\r\n arr.push(...headers);\r\n headers.forEach(h => {if(!!h.children.length) getGroupHeaders(h.children, filterFunc, arr)});\r\n return arr;\r\n}","import { Sort } from \"@angular/material/sort\";\r\nimport { orderBy } from 'lodash';\r\nimport { Predicate } from \"@angular/core\";\r\n\r\nexport function sortData<T>(data: T[], sorted: Sort[]): T[] {\r\n const ordered = orderBy(data, sorted.map(r => r.active), sorted.map(r => r.direction));\r\n return ordered;\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","import { Observable, Timestamp, combineLatest, map, scan, timestamp } from \"rxjs\";\r\nimport { SortState } from \"./sort-state.helpers\";\r\nimport { FilterPredicateState } from \"./filter-state.helpers\";\r\nimport { filterData, sortData, tbNoShowSymbol } from \"../../../functions/sort-data-function\";\r\nimport { defaultShareReplay } from \"../../../../rxjs/defaultShareReplay\";\r\nimport { FieldType, MetaData } from \"../../../interfaces/report-def\";\r\nimport { get, 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, filteredData: 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 if(runAllOnAllData){\r\n const filteredData = filterData(sortData(allData.value , sort.value.sortsToRun ), filters.value.allFilters, resetFilters);\r\n return filteredData;\r\n }\r\n if(sortChanged){\r\n return (sortData(filteredData, sort.value.sortsToRun));\r\n }\r\n return (filterData(filteredData, 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 notNestedKey = metaData.key as unknown as keyof T; \r\n switch ( metaData.fieldType ) {\r\n case FieldType.Currency:\r\n case FieldType.Number:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key);\r\n const num = Number( val );\r\n set(t as {}, metaData.key, isNaN(num) || val == null ? null : num)\r\n });\r\n } else {\r\n transforms.push( (t:T) => {\r\n const val = t[notNestedKey];\r\n const num = Number( val );\r\n t[notNestedKey] = (isNaN(num) || val == null ? null : num) as any\r\n });\r\n }\r\n break;\r\n }\r\n case FieldType.Date:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key) as string;\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n set(t as {}, metaData.key, null as any);\r\n return\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n set(t as {}, metaData.key, d as any);\r\n })\r\n } else {\r\n transforms.push( (t:T) => {\r\n const val = t[notNestedKey] as string;\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n t[notNestedKey] = null as any;\r\n return\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n t[notNestedKey] = d as any;\r\n })\r\n }\r\n break;\r\n }\r\n \r\n case FieldType.DateTime:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key);\r\n const dateTime = Date.parse(val as string);\r\n if(isNaN(dateTime)){\r\n set(t as {}, metaData.key, null as any);\r\n return\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n set(t as {}, metaData.key, dt as any);\r\n return\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n set(t as {}, metaData.key, dt as any);\r\n return\r\n }\r\n dt.setSeconds(0, 0);\r\n set(t as {}, metaData.key, dt as any);\r\n })\r\n } else {\r\n transforms.push((t:T) => {\r\n const val = t[notNestedKey] as string;\r\n const dateTime = Date.parse(val);\r\n if(isNaN(dateTime)){\r\n t[notNestedKey] = null as any;\r\n return;\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n t[notNestedKey] = dt as any;\r\n return;\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n t[notNestedKey] = dt as any;\r\n return;\r\n }\r\n dt.setSeconds(0, 0);\r\n t[notNestedKey] = dt as any;\r\n })\r\n }\r\n }\r\n }\r\n return transforms;\r\n }, [] as ((t:T) => void)[])\r\n}","import { Component, ChangeDetectionStrategy, ElementRef, computed, inject, viewChild, input, 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 <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()) {<button mat-button (click)=\"showAll()\"><span [style.text-decoration]=\"$showAll() ? 'line-through' : ''\" >All</span></button>}\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 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.$dataLength();\r\n untracked(() => {\r\n if(paginator){\r\n paginator.length = dataLength;\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 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\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, 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}\r\n","<span class=\"tb-group-label\">Group By:</span>\r\n<mat-chip-set>\r\n @for (groupByKey of tableStore.$groupByKeys(); track groupByKey)\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(groupByKey)\">\r\n {{groupByKey | 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 mat-icon-button [matMenuTriggerFor]=\"menu\" #trigger=\"matMenuTrigger\" [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 [matTooltip]=\"'Save Profile'\" mat-stroked-button (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 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 [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox class=\"display-none\" [checked]=\"true\" #m />\r\n </div>\r\n }\r\n @if (allProfilesPanelOpened()) {<hr class=\"divider\"/>}\r\n <div [class]=\"{ hide: !$keys().length, 'all-profile-row': true }\" mat-menu-item stop-propagation (click)=\"allProfilesPanelOpened.set(!allProfilesPanelOpened())\">\r\n <div class=\"all-profiles\">\r\n <span>All Profiles</span>\r\n <span [class]=\"`${(allProfilesPanelOpened() ? 'all-profile-arrow-close' : 'all-profile-arrow-open')} all-profile-arrow`\" class=\"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 <div class=\"profile-line\" [class]=\"key === $currentProfile() ? 'current-in-list' : 'not-current-in-list'\">\r\n <button [matTooltip]=\"'Select Profile'\" class=\"menu-item first-in-line\" mat-stroked-button (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 [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (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 [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"unsetDefault()\">\r\n <mat-icon style=\"color: green;\">star</mat-icon>\r\n </button>\r\n }\r\n <button [matTooltip]=\"'Delete Profile'\" class=\"last-in-line\" stop-propagation mat-icon-button (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 matInput #addedKey=\"matInput\" [name]=\"'key'\" />\r\n </div>\r\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m2.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m2.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox class=\"display-none\" [ngModel]=\"!$defaultProfile()\" #m2 />\r\n </div>\r\n <button class=\"add-button\" color=\"primary\" [matTooltip]=\"'Create New Profile'\" mat-raised-button (click)=\"addState(addedKey.value, m2.checked); addedKey.value = null\" [disabled]=\"!addedKey.value\">\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.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 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 <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\" (click)=\"apply()\"\r\n stop-propagation [class.apply-border]=\"dirty\"\r\n [disabled]=\"!dirty\">\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 <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #sortedGroup=\"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 <!-- Menu Item Headers -->\r\n @if (sorted.length > 1) {\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]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\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]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\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 <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #notSortedGroup=\"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 <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';\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';\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 mat-menu-item [matMenuTriggerFor]=\"r.menu()\" #d=\"matMenuItem\" [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 <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 <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 class=\"profiles-menu\" #pm [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 [value]=\"$rowHeightNum()\"\r\n (change)=\"updateHeight('row', i)\"\r\n placeholder=\"Set Size\"\r\n [min]=\"10\" [max]=\"100\" />\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 [value]=\"$headerHeightNum()\"\r\n (change)=\"updateHeight('header', i2)\"\r\n placeholder=\"Set Size\"\r\n [min]=\"10\" [max]=\"100\"/>\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';\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 } 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 { _updateGroupByState, 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 { isFunction } from 'lodash';\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.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 #initTableBuilderIfNeeded = effect(() => {\r\n const tb = this.$tableBuilder();\r\n untracked(() => {\r\n if(tb) this.$tableBuilder()?.prep(this.injector)\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();\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 private $filteredSortedAndGrouped = linkedSignal<{ data: Timestamp<T[]>, 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","@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 <group-by-list />\r\n }\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader) {\r\n @if (!$collapsedHeader()) {\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 <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">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 [matTooltip]=\"$collapsedHeader() ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\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 (selection)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" />\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 (selection)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"$trackBy()\" [dataSource]=\"dataSource\" />\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 [matTooltip]=\"$collapsedFooter() ? 'expand' : 'collapse'\" class=\"collapse-icon footer\"\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\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 $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\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 <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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"}
|