@bravobit/bb-foundation 0.57.4 → 0.57.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/bravobit-bb-foundation-auth.mjs +22 -22
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +43 -43
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +25 -25
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +34 -34
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +106 -102
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-localize.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +13 -13
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-select.mjs +22 -22
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation.mjs +21 -21
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-collections.mjs","sources":["../../../projects/bb-foundation/collections/src/lib/providers/collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/api-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/classes/array.collection.ts","../../../projects/bb-foundation/collections/src/lib/providers/local-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-data.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-data-row.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-empty.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-error.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-initial.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-item.directive.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.html","../../../projects/bb-foundation/collections/src/lib/collections.interfaces.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-actions/collections-actions.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-actions/collections-actions.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table/collections-table.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table/collections-table.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table-sorting/collections-table-sorting.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table-sorting/collections-table-sorting.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table-label/collections-table-label.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table-label/collections-table-label.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-grid/collections-grid.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-grid/collections-grid.component.html","../../../projects/bb-foundation/collections/src/lib/collection.ts","../../../projects/bb-foundation/collections/src/lib/collections.module.ts","../../../projects/bb-foundation/collections/src/lib/collections.config.ts","../../../projects/bb-foundation/collections/src/bravobit-bb-foundation-collections.ts"],"sourcesContent":["import {CollectionApiParams, CollectionContext, CollectionData, CollectionRequest} from '../interfaces/collection.interface';\nimport {Observable} from 'rxjs';\n\nexport abstract class CollectionProvider<T> {\n\n protected cachedRequestParams: Record<string, CollectionApiParams> | null = null;\n\n abstract transform(request: CollectionRequest, context: CollectionContext<T>): Observable<CollectionData<T>>;\n\n protected validateParams(request: Record<string, CollectionApiParams>, _context: CollectionContext<T>) {\n return request;\n }\n\n protected formatArrayToCollectionData(items: T[]) {\n const count = items?.length ?? 1;\n return <CollectionData<T>>{\n pageSize: count,\n totalEntries: count,\n pageNumber: 1,\n totalPages: 1,\n data: items\n };\n }\n\n protected deepCompare(value1: unknown, value2: unknown) {\n if (value1 === value2) {\n return true;\n }\n\n if (typeof value1 !== 'object' || typeof value2 !== 'object' || value1 === null || value2 === null) {\n return false;\n }\n\n const keys1 = Object.keys(value1);\n const keys2 = Object.keys(value2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n if (!keys2.includes(key)) {\n return false;\n }\n if (!this.deepCompare(value1[key], value2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n}\n","import {CollectionApiResponse, CollectionData, CollectionApiParams, CollectionRequest, CollectionContext} from '../interfaces/collection.interface';\nimport {combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './collection.provider';\nimport {map, switchMap, tap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class ApiCollectionProvider<T> extends CollectionProvider<T> {\n\n // State.\n protected extraParams: Record<string, Observable<CollectionApiParams>> = {};\n protected extraObjectParams: Observable<Record<string, CollectionApiParams>>[] = [];\n\n constructor(protected readonly endpoint: string | Observable<string>,\n protected readonly httpClient: HttpClient) {\n super();\n }\n\n append(name: string, value: CollectionApiParams | Observable<CollectionApiParams>) {\n this.extraParams[name] = isObservable(value) ? value : of(value);\n return this;\n }\n\n appendObject(value: Record<string, CollectionApiParams> | Observable<Record<string, CollectionApiParams>>) {\n const params = isObservable(value) ? value : of(value);\n this.extraObjectParams.push(params);\n }\n\n transform(request: CollectionRequest, context: CollectionContext<T>) {\n const endpoint$ = isObservable(this.endpoint) ? this.endpoint : of(this.endpoint);\n const params = this.getBackendFormat(request);\n const extraParams$ = this.getExtraParams(this.extraParams);\n const extraObjectParams$ = this.getExtraObjectParams(this.extraObjectParams);\n\n return combineLatest([endpoint$, extraParams$, extraObjectParams$]).pipe(\n tap(() => context.collection.loading$.next(true)),\n switchMap(([endpoint, extraParams, extraObjectParams]) => {\n const validatedParams = this.validateParams({...params, ...extraParams, ...extraObjectParams}, context);\n return this.httpClient.get<CollectionApiResponse<T> | T[]>(endpoint, {params: validatedParams});\n }),\n map(response => this.formatToCollectionData(response))\n );\n }\n\n protected override validateParams(request: Record<string, CollectionApiParams>, context: CollectionContext<T>) {\n if (!this.deepCompare(request, this.cachedRequestParams)) {\n if (request?.['page'] && request?.['page'] === this.cachedRequestParams?.['page']) {\n context.collection.pageNumberControl?.setValue(1);\n request['page'] = context.collection.pageNumberControl?.value;\n }\n }\n\n this.cachedRequestParams = {...request};\n return request;\n }\n\n protected getExtraParams(params: Record<string, Observable<CollectionApiParams>>) {\n const keys = Object.keys(params ?? {});\n if (keys?.length <= 0) {\n return of({});\n }\n\n const observables$ = keys.map(key => params?.[key]);\n return combineLatest(observables$).pipe(\n map(data => {\n return data.reduce((previous, current, index) => {\n if (current === null || current === undefined) {\n return previous;\n }\n const key = keys?.[index];\n return {...previous, [key]: current};\n }, {});\n })\n );\n }\n\n protected getExtraObjectParams(params$: Observable<Record<string, CollectionApiParams>>[]) {\n if (params$?.length <= 0) {\n return of({});\n }\n return combineLatest(params$).pipe(\n map(data => (data ?? []).reduce((previous, current) => ({...previous, ...(current ?? {})}), {})),\n map(data => {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current] ?? null;\n if (value === null || value === undefined) {\n return previous;\n }\n\n return {...previous, [current]: value};\n }, {});\n })\n );\n }\n\n protected formatToCollectionData(response: CollectionApiResponse<T> | T[]) {\n if (Array.isArray(response)) {\n return this.formatArrayToCollectionData(response);\n }\n\n return <CollectionData<T>>{\n pageSize: response?.page_size,\n pageNumber: response?.page_number,\n totalPages: response?.total_pages,\n totalEntries: response?.total_entries,\n data: response?.data,\n raw: response\n };\n }\n\n protected getBackendFormat(request: CollectionRequest) {\n const params = {};\n\n params['page'] = request?.pageNumber ?? 1;\n params['page_size'] = request?.pageSize ?? 25;\n\n if (request?.sort) {\n const sort = Array.isArray(request?.sort) ? request?.sort : [request?.sort];\n const filteredSort = sort?.filter(item => !!item?.name && !!item?.direction);\n\n params['sort'] = filteredSort?.map(item => item?.name)?.join(',');\n params['sort_direction'] = filteredSort?.map(item => item?.direction)?.join(',');\n }\n\n if (request?.query && request?.query?.length > 0 && request?.queryFields && request?.queryFields?.length > 0) {\n params['query'] = request?.query;\n params['query_fields'] = request?.queryFields?.join(',');\n }\n\n return params;\n }\n\n}\n","import {ArrayCollectionStringKeys} from '../interfaces/array-collection.interface';\nimport {CollectionRequestSort} from '../interfaces/collection.interface';\n\nexport class ArrayCollection<T> {\n\n constructor(protected value: T[]) {\n }\n\n search(query: string, fields: ArrayCollectionStringKeys<T>[]) {\n const normalizedQuery = this.normalizeValueAsString(query);\n if (normalizedQuery === null || normalizedQuery?.length <= 0) {\n return this;\n }\n\n const queryFields = fields ?? [];\n if (queryFields.length <= 0) {\n throw new Error('cannot search without query fields');\n }\n\n this.value = this.value.filter(item => {\n for (const field of queryFields) {\n const normalizedValue = this.normalizeValueAsString(item?.[field]);\n if (normalizedValue === null) {\n continue;\n }\n\n if (normalizedValue.includes(normalizedQuery)) {\n return true;\n }\n }\n\n return false;\n });\n\n return this;\n }\n\n sortBy(sort: CollectionRequestSort<keyof T> | CollectionRequestSort<keyof T>[], sortables: Partial<Record<ArrayCollectionStringKeys<T>, 'string' | 'number'>>) {\n if (sort === null || sort === undefined) {\n return this;\n }\n \n const sorts = Array.isArray(sort) ? sort : [sort];\n if (sorts.length <= 0) {\n return this;\n }\n\n this.value = this.value.sort((a, b) => {\n for (const item of sorts) {\n const type = sortables?.[<any>item?.name] ?? null;\n if (type === null) {\n throw new Error(`invalid sorting key \"${item?.name?.toString()}\"`);\n }\n const aValue = a?.[item?.name] ?? null;\n const bValue = b?.[item?.name] ?? null;\n const direction = item?.direction ?? null;\n\n if (type === 'string') {\n const comparison = String(aValue).localeCompare(String(bValue));\n if (comparison !== 0) {\n return direction === 'asc' ? comparison : -comparison;\n }\n } else if (type === 'number') {\n if (aValue < bValue) return direction === 'asc' ? -1 : 1;\n if (aValue > bValue) return direction === 'asc' ? 1 : -1;\n }\n }\n\n return 0;\n });\n\n return this;\n }\n\n toPage(pageNumber: number, pageSize: number) {\n const totalEntries = this.value?.length ?? 0;\n const totalPages = Math.max(1, Math.ceil(totalEntries / pageSize));\n\n const startIndex = (pageNumber - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n const data = this.value?.slice(startIndex, endIndex) ?? [];\n\n return {totalPages, totalEntries, pageSize, pageNumber, data};\n }\n\n toArray() {\n return this.value;\n }\n\n protected normalizeValueAsString(value: unknown) {\n if (value === null || value === undefined) {\n return null;\n }\n return value\n .toString()\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n }\n\n}\n","import {ArrayCollectionOptions} from '../interfaces/array-collection.interface';\nimport {CollectionRequest} from '../interfaces/collection.interface';\nimport {ArrayCollection} from '../classes/array.collection';\nimport {CollectionProvider} from './collection.provider';\nimport {delay, map} from 'rxjs/operators';\nimport {BehaviorSubject} from 'rxjs';\n\nexport class LocalCollectionProvider<T> extends CollectionProvider<T> {\n\n private _items$ = new BehaviorSubject<T[]>([]);\n\n constructor(items: T[],\n private _options?: ArrayCollectionOptions<T>) {\n super();\n this.update(items);\n }\n\n update(value: T[]) {\n this._items$.next(value);\n }\n\n transform(request: CollectionRequest) {\n return this._items$.pipe(\n map(items => {\n return new ArrayCollection<T>(items)\n .search(request?.query, <any>request.queryFields)\n .sortBy(<any>request?.sort, this._options?.sortables ?? {})\n .toPage(request?.pageNumber, request?.pageSize);\n }),\n delay(1)\n );\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsDataContext<T> {\n items!: T[];\n loading!: boolean;\n\n constructor(items: T[], loading: boolean) {\n this.items = items;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsData]'\n})\nexport class BbCollectionsData<T> {\n\n constructor(public template: TemplateRef<BbCollectionsDataContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsData<T>, ctx: unknown): ctx is BbCollectionsDataContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsDataRowContext<T> {\n item!: T;\n $implicit!: T;\n\n constructor(item: T) {\n this.item = item;\n this.$implicit = item;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsDataRow]'\n})\nexport class BbCollectionsDataRow<T> {\n\n constructor(public template: TemplateRef<BbCollectionsDataRowContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsDataRow<T>, ctx: unknown): ctx is BbCollectionsDataRowContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsEmptyContext<T> {\n query!: string;\n loading!: boolean;\n\n constructor(query: string, loading: boolean) {\n this.query = query;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsEmpty]'\n})\nexport class BbCollectionsEmpty<T> {\n\n constructor(public template: TemplateRef<BbCollectionsEmptyContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsEmpty<T>, ctx: unknown): ctx is BbCollectionsEmptyContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsErrorContext<T> {\n error!: Error;\n loading!: boolean;\n\n constructor(error: Error, loading: boolean) {\n this.error = error;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsError]'\n})\nexport class BbCollectionsError<T> {\n\n constructor(public template: TemplateRef<BbCollectionsErrorContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsError<T>, ctx: unknown): ctx is BbCollectionsErrorContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsInitialContext<T> {\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsInitial]'\n})\nexport class BbCollectionsInitial<T> {\n\n constructor(public template: TemplateRef<BbCollectionsInitialContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsInitial<T>, ctx: unknown): ctx is BbCollectionsInitialContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsItemContext<T> {\n item!: T;\n $implicit!: T;\n\n constructor(item: T) {\n this.item = item;\n this.$implicit = item;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsItem]'\n})\nexport class BbCollectionsItem<T> {\n\n constructor(public template: TemplateRef<BbCollectionsItemContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsItem<T>, ctx: unknown): ctx is BbCollectionsItemContext<T> {\n return true;\n }\n\n}\n","import {ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsInitial, BbCollectionsInitialContext} from '../../directives/collections-initial.directive';\nimport {BbCollectionsError, BbCollectionsErrorContext} from '../../directives/collections-error.directive';\nimport {BbCollectionsEmpty, BbCollectionsEmptyContext} from '../../directives/collections-empty.directive';\nimport {BbCollectionsData, BbCollectionsDataContext} from '../../directives/collections-data.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: '[bb-collections-viewer]',\n templateUrl: './collections-viewer.component.html',\n styleUrls: ['./collections-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-viewer'},\n imports: [AsyncPipe, NgTemplateOutlet]\n})\nexport class BbCollectionsViewer<T = unknown> {\n\n // Content.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<BbCollectionsDataContext<T>>;\n @ContentChild(BbCollectionsEmpty, {read: TemplateRef, static: false}) emptyTemplate?: TemplateRef<BbCollectionsEmptyContext<T>>;\n @ContentChild(BbCollectionsError, {read: TemplateRef, static: false}) errorTemplate?: TemplateRef<BbCollectionsErrorContext<T>>;\n @ContentChild(BbCollectionsInitial, {read: TemplateRef, static: false}) initialTemplate?: TemplateRef<BbCollectionsInitialContext<T>>;\n\n // Inputs.\n @Input() collection: Collection<T> | null = null;\n\n}\n","@if (collection?.data$ | async; as data) {\n @switch (data?.state) {\n @case ('initial') {\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n }\n @case ('empty') {\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n }\n @case ('error') {\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n }\n @default {\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n }\n }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const COLLECTIONS_CONFIG = new InjectionToken<CollectionsConfig>('collections config');\n\nexport interface CollectionsConfig {\n icons?: {\n actionsSearch?: string;\n actionsClose?: string;\n pagerArrowPrevious?: string;\n pagerArrowNext?: string;\n };\n}\n","import {ChangeDetectionStrategy, Component, inject, Input, numberAttribute, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {COLLECTIONS_CONFIG, CollectionsConfig} from '../../collections.interfaces';\nimport {CollectionData} from '../../interfaces/collection.interface';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {combineLatestMap} from '@bravobit/bb-foundation/rxjs';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\nimport {map, shareReplay} from 'rxjs/operators';\nimport {Collection} from '../../collection';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-collections-pager',\n templateUrl: './collections-pager.component.html',\n styleUrls: ['./collections-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-pager'},\n imports: [AsyncPipe, BbLocalizeString, BbLocalize, BbLocalizeTemplate, BbIcon]\n})\nexport class BbCollectionsPager implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: CollectionsConfig = inject(COLLECTIONS_CONFIG, {optional: true});\n\n // Readonly data.\n readonly arrowPreviousIconName: string = this._config?.icons?.pagerArrowPrevious ?? 'material:arrow_back';\n readonly arrowNextIconName: string = this._config?.icons?.pagerArrowNext ?? 'material:arrow_forward';\n\n @Input({transform: numberAttribute})\n set maxAmountOfButtons(value: number) {\n this._maxAmountOfButtons$.next(Math.max(1, value));\n }\n\n get maxAmountOfButtons() {\n return this._maxAmountOfButtons$.getValue();\n }\n\n @Input({required: true})\n set collection(collection: Collection<unknown> | null) {\n this._collection = collection;\n this.observeCollectionChanges();\n }\n\n get collection() {\n return this._collection;\n }\n\n // Data.\n data$: Observable<{\n start?: number,\n end?: number,\n totalEntries?: number,\n totalPages?: number,\n pageNumber?: number,\n pages?: { page: number, active: boolean }[]\n }>;\n\n // State and subscriptions.\n private _collection: Collection<unknown> | null = null;\n private _subscription: Subscription | null = null;\n private _cache$ = new BehaviorSubject<Partial<CollectionData<unknown>>>({});\n private _maxAmountOfButtons$ = new BehaviorSubject<number>(3);\n\n ngOnInit() {\n this.setData();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n setPage(pageNumber: number, totalPages: number) {\n // Calculate the new value.\n const newValue = Math.min(\n totalPages,\n Math.max(1, pageNumber)\n );\n\n // Validate the value is actually different.\n const currentValue = this._collection?.pageNumberControl?.value;\n if (currentValue === newValue) {\n return;\n }\n\n this._collection?.pageNumberControl?.setValue(pageNumber);\n }\n\n private setData() {\n this.data$ = combineLatestMap({\n cache: this._cache$,\n maxAmountOfButtons: this._maxAmountOfButtons$\n }).pipe(\n map(({cache, maxAmountOfButtons}) => {\n const pageSize = cache?.pageSize ?? 1;\n const pageNumber = cache?.pageNumber ?? 1;\n\n const totalEntries = Math.max(0, cache?.totalEntries ?? 0);\n const start = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));\n const end = Math.max(0, Math.min((start - 1) + pageSize, totalEntries));\n const totalPages = Math.max(0, cache?.totalPages ?? 1);\n\n const pages = this.filterActivePages(pageNumber, totalPages, maxAmountOfButtons);\n\n return {start, end, totalEntries, totalPages, pages, pageNumber};\n }),\n shareReplay({refCount: true, bufferSize: 1})\n );\n }\n\n private observeCollectionChanges() {\n if (this._subscription) {\n this._subscription?.unsubscribe();\n }\n\n if (!this._collection) {\n return;\n }\n\n this._subscription = this._collection.raw$.subscribe(data => {\n if (data) {\n this._cache$.next(data);\n }\n });\n }\n\n private calculatePages(pageNumber: number, totalPages: number, maxAmountOfButtons: number) {\n const min = 1;\n const max = totalPages;\n const amount = Math.max(1, maxAmountOfButtons);\n\n const start = Math.max(0, pageNumber - Math.floor(amount / 2));\n const data = Array(amount)\n .fill(0)\n .map((_, index) => start + index);\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number, maxAmountOfButtons: number) {\n return this.calculatePages(pageNumber, totalPages, maxAmountOfButtons)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","@if (data$ | async; as data) {\n <div [bb-localize-string]=\"'collection.showing_label' | bbLocalize\"\n class=\"bb-collections-pager-text\">\n <strong *bbLocalizeTemplate=\"'start'\">{{ data?.start }}</strong>\n <strong *bbLocalizeTemplate=\"'end'\">{{ data?.end }}</strong>\n <strong *bbLocalizeTemplate=\"'total'\">{{ data?.totalEntries }}</strong>\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"data?.pageNumber <= 1\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n <bb-icon [src]=\"arrowPreviousIconName\"\n size=\"1.125\"></bb-icon>\n </button>\n </li>\n @for (item of data?.pages; track item?.page) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"data?.pageNumber >= data?.totalPages\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n <bb-icon [src]=\"arrowNextIconName\"\n size=\"1.125\"></bb-icon>\n </button>\n </li>\n </ul>\n </div>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation} from '@angular/core';\nimport {COLLECTIONS_CONFIG, CollectionsConfig} from '../../collections.interfaces';\nimport {BbFormControl, BbIcon, BbInput} from '@bravobit/bb-foundation/elements';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: 'bb-collections-actions',\n templateUrl: './collections-actions.component.html',\n styleUrls: ['./collections-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-actions',\n '[class.standalone]': 'standalone'\n },\n imports: [ReactiveFormsModule, BbInput, BbLocalize, BbIcon, BbFormControl]\n})\nexport class BbCollectionsActions<T> {\n\n // Dependencies.\n private readonly _config?: CollectionsConfig = inject(COLLECTIONS_CONFIG, {optional: true});\n\n // Readonly data.\n readonly searchIconName: string = this._config?.icons?.actionsSearch ?? 'material:search';\n readonly closeIconName: string = this._config?.icons?.actionsClose ?? 'material:close';\n\n // Inputs.\n @Input({required: true}) collection: Collection<T> | null = null;\n @Input() queryPlaceholder: string | null = null;\n @Input({transform: booleanAttribute}) standalone: boolean = false;\n\n}\n","<div class=\"bb-collections-actions-row\">\n @if (collection?.queryFieldsControl?.value?.length > 0) {\n <bb-form-control class=\"bb-collections-actions-search\">\n <bb-icon [src]=\"searchIconName\"\n bbPrefix></bb-icon>\n <input [formControl]=\"collection?.queryControl\"\n [placeholder]=\"queryPlaceholder ?? ('collection.search_label' | bbLocalize)\"\n bbInput\n autocomplete=\"off\"\n type=\"search\">\n @if (collection?.queryControl?.value?.length > 0) {\n <button (click)=\"collection?.queryControl?.setValue('')\"\n bbSuffix\n data-button\n type=\"button\">\n <bb-icon [src]=\"closeIconName\"></bb-icon>\n </button>\n }\n </bb-form-control>\n }\n <ng-content select=\"[data-collections-action]\"></ng-content>\n</div>\n<ng-content></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsDataRow, BbCollectionsDataRowContext} from '../../directives/collections-data-row.directive';\nimport {BbCollectionsData, BbCollectionsDataContext} from '../../directives/collections-data.directive';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {BbCollectionsActions} from '../collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from '../collections-viewer/collections-viewer.component';\nimport {BbCollectionsInitial} from '../../directives/collections-initial.directive';\nimport {BbCollectionsPager} from '../collections-pager/collections-pager.component';\nimport {BbCollectionsEmpty} from '../../directives/collections-empty.directive';\nimport {BbCollectionsError} from '../../directives/collections-error.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbSpinner} from '@bravobit/bb-foundation/elements';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {Collection} from '../../collection';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-collections-table',\n templateUrl: './collections-table.component.html',\n styleUrls: ['./collections-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-table',\n '[class.include-vertical-lines]': 'includeVerticalLines'\n },\n imports: [\n NgTemplateOutlet,\n BbCollectionsViewer,\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsActions,\n BbCollectionsPager,\n BbLocalizeString,\n BbTemplate,\n BbLocalize,\n BbLocalizeTemplate,\n BbSpinner,\n AsyncPipe\n ]\n})\nexport class BbCollectionsTable<T = any> {\n\n // Readonly data.\n readonly collection$ = new BehaviorSubject<Collection<T> | null>(null);\n\n // Views.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<BbCollectionsDataContext<T>>;\n @ContentChild(BbCollectionsDataRow, {read: TemplateRef, static: false}) dataRowTemplate?: TemplateRef<BbCollectionsDataRowContext<T>>;\n\n // Inputs.\n @Input() queryPlaceholder: string | null = null;\n @Input() emptyContent: string | TemplateRef<any> | null = null;\n @Input() noResultsContent: string | TemplateRef<any> | null = null;\n @Input() errorContent: string | TemplateRef<any> | null = null;\n @Input() trackByProperty: string | null = 'id';\n @Input({transform: booleanAttribute}) includeVerticalLines: boolean = false;\n @Input({transform: booleanAttribute}) hideActions: boolean = false;\n @Input({transform: booleanAttribute}) hidePager: boolean = false;\n\n @Input({required: true})\n set collection(collection: Collection<T>) {\n this.collection$.next(collection);\n }\n\n get collection() {\n return this.collection$.getValue();\n }\n\n}\n","@if (!hideActions) {\n <bb-collections-actions [collection]=\"collection\"\n [queryPlaceholder]=\"queryPlaceholder\">\n <ng-content ngProjectAs=\"[data-collections-action]\"\n select=\"[data-collections-action]\"></ng-content>\n <ng-content ngProjectAs=\"[data-collections-row]\"\n select=\"[data-collections-row]\"></ng-content>\n </bb-collections-actions>\n}\n\n<ng-content select=\"[data-collections-header]\"></ng-content>\n\n<div [class.loading]=\"collection?.loading$ | async\"\n class=\"bb-collections-table-wrapper\">\n <div [collection]=\"collection\"\n class=\"bb-collections-table-container\"\n bb-collections-viewer>\n @if (collection?.loading$ | async) {\n <div class=\"bb-collections-table-loading\"></div>\n }\n <table *bbCollectionsData=\"let items = items; let loading = loading\">\n <ng-content select=\"thead\"></ng-content>\n @if (dataTemplate) {\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: $any(items), loading: loading}\"></ng-container>\n } @else {\n <tbody>\n @for (item of items; track (trackByProperty === null ? $index : item[trackByProperty])) {\n <ng-container\n *ngTemplateOutlet=\"dataRowTemplate; context: {$implicit: item, item: item}\"></ng-container>\n }\n </tbody>\n }\n <ng-content select=\"tfoot\"></ng-content>\n </table>\n <div *bbCollectionsEmpty=\"let query = query\"\n class=\"bb-collections-table-info\">\n <div class=\"bb-collections-table-image empty\"></div>\n @if (query?.length > 0) {\n <ng-template [bbTemplate]=\"noResultsContent\">\n <p [bb-localize-string]=\"$any(noResultsContent) ?? ('collection.no_results_label' | bbLocalize)\"\n class=\"bb-collections-table-info-text\">\n <strong *bbLocalizeTemplate=\"'query'\">{{ query ?? '...' }}</strong>\n </p>\n </ng-template>\n } @else {\n <ng-template [bbTemplate]=\"emptyContent\">\n <p class=\"bb-collections-table-info-text\">\n {{ $any(emptyContent) ?? ('collection.empty_label' | bbLocalize) }}\n </p>\n </ng-template>\n }\n </div>\n <div *bbCollectionsError=\"let error = error\"\n class=\"bb-collections-table-info\">\n <div class=\"bb-collections-table-image error\"></div>\n <ng-template [bbTemplate]=\"errorContent\">\n <p class=\"bb-collections-table-info-text\">\n {{ $any(errorContent) ?? ('collection.error_label' | bbLocalize) }}\n </p>\n </ng-template>\n </div>\n <div *bbCollectionsInitial\n class=\"bb-collections-table-info\">\n <bb-spinner class=\"block\"></bb-spinner>\n </div>\n </div>\n</div>\n\n@if (!hidePager) {\n <footer class=\"bb-collections-table-footer\">\n <bb-collections-pager [collection]=\"collection\"></bb-collections-pager>\n </footer>\n}\n","import {Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, OnDestroy, OnInit, Optional, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsTable} from '../collections-table/collections-table.component';\nimport {distinctUntilChanged, map, switchMap} from 'rxjs/operators';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {of, Subscription} from 'rxjs';\n\n@Component({\n selector: 'th[bb-collections-table-sorting]',\n templateUrl: './collections-table-sorting.component.html',\n styleUrls: ['./collections-table-sorting.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-table-sorting',\n '[class.asc]': 'direction === \\'asc\\'',\n '[class.desc]': 'direction === \\'desc\\''\n }\n})\nexport class BbCollectionsTableSorting implements OnInit, OnDestroy {\n\n // Readonly data.\n readonly orderedOptions: [null, 'asc', 'desc'] = [null, 'asc', 'desc'];\n\n // State.\n direction: 'asc' | 'desc' | null = null;\n\n // Subscription.\n private _subscription = new Subscription();\n\n constructor(@Attribute('bb-collections-table-sorting') private _name: string,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _parent?: BbCollectionsTable<unknown>) {\n }\n\n ngOnInit() {\n if (this._parent === null || this._parent === undefined) {\n return;\n }\n\n const direction$ = this._parent.collection$.pipe(\n switchMap(collection => !!collection?.sortControl ? getControlValue(collection?.sortControl) : of(null)),\n map(value => Array.isArray(value) ? value : [value]),\n map(value => value?.find(item => item?.name === this._name)),\n map(sorting => sorting?.direction ?? null),\n distinctUntilChanged()\n );\n const subscription = direction$.subscribe(direction => {\n this.direction = direction;\n this._changeDetectorRef.markForCheck();\n });\n this._subscription.add(subscription);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n @HostListener('click')\n onClick() {\n if (!this._name) {\n return;\n }\n\n const nextDirection = this.getNextOption(this.direction);\n const controlValue = nextDirection === null ? null : {name: this._name, direction: nextDirection};\n this._parent?.collection?.sortControl?.setValue(controlValue);\n }\n\n private getNextOption(direction: string) {\n const index = this.orderedOptions.findIndex(item => item === direction);\n const newIndex = (index + 1) % this.orderedOptions?.length;\n return this.orderedOptions?.[newIndex] ?? null;\n }\n\n}\n","<ng-content></ng-content>\n","import {ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbAvatar} from '@bravobit/bb-foundation/elements';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n selector: '[bb-collections-table-label]',\n templateUrl: './collections-table-label.component.html',\n styleUrls: ['./collections-table-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-table-label'},\n imports: [BbAvatar, BbTemplate]\n})\nexport class BbCollectionsTableLabel {\n\n // Inputs.\n @Input({required: true}) titleLabel: string | TemplateRef<any> | null = null;\n @Input() descriptionLabel: string | TemplateRef<any> | null = null;\n @Input() imageUrl: string | null = null;\n @Input() alt: string | null = null;\n @Input() type: 'image' | 'avatar' | 'content' = 'image';\n\n}\n","@switch (type) {\n @case ('avatar') {\n <bb-avatar [title]=\"alt ?? '...'\"\n [src]=\"imageUrl\"\n size=\"2\"\n class=\"bb-collections-table-label-avatar\">\n </bb-avatar>\n }\n @case ('content') {\n <ng-content></ng-content>\n }\n @default {\n @if (imageUrl; as src) {\n <div [style.background-image]=\"'url(' + src + ')'\"\n class=\"bb-collections-table-label-image\"></div>\n }\n }\n}\n\n<div class=\"bb-collections-table-label-content\">\n <span class=\"bb-collections-table-label-title\"><ng-template\n [bbTemplate]=\"titleLabel\">{{ titleLabel }}</ng-template></span>\n @if (descriptionLabel; as descriptionContent) {\n <small class=\"bb-collections-table-label-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">{{ descriptionContent }}</ng-template>\n </small>\n }\n</div>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsItem, BbCollectionsItemContext} from '../../directives/collections-item.directive';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {BbCollectionsActions} from '../collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from '../collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from '../collections-pager/collections-pager.component';\nimport {BbCollectionsInitial} from '../../directives/collections-initial.directive';\nimport {BbCollectionsError} from '../../directives/collections-error.directive';\nimport {BbCollectionsEmpty} from '../../directives/collections-empty.directive';\nimport {BbCollectionsData} from '../../directives/collections-data.directive';\nimport {BbSpinner} from '@bravobit/bb-foundation/elements';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {Collection} from '../../collection';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-collections-grid',\n templateUrl: './collections-grid.component.html',\n styleUrls: ['./collections-grid.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-grid'},\n imports: [\n BbCollectionsData,\n BbCollectionsViewer,\n NgTemplateOutlet,\n BbCollectionsActions,\n BbCollectionsPager,\n BbCollectionsInitial,\n BbSpinner,\n BbCollectionsError,\n BbTemplate,\n BbLocalize,\n BbCollectionsEmpty,\n BbLocalizeString,\n BbLocalizeTemplate\n ]\n})\nexport class BbCollectionsGrid<T> {\n\n // Readonly data.\n readonly collection$ = new BehaviorSubject<Collection<T> | null>(null);\n\n // Views.\n @ContentChild(BbCollectionsItem, {read: TemplateRef, static: false}) itemTemplate?: TemplateRef<BbCollectionsItemContext<T>>;\n\n // Inputs.\n @Input() queryPlaceholder: string | null = null;\n @Input() emptyContent: string | TemplateRef<any> | null = null;\n @Input() noResultsContent: string | TemplateRef<any> | null = null;\n @Input() errorContent: string | TemplateRef<any> | null = null;\n @Input() trackByProperty: string | null = 'id';\n @Input({transform: booleanAttribute}) hideActions: boolean = false;\n @Input({transform: booleanAttribute}) hidePager: boolean = false;\n\n @Input({required: true})\n set collection(collection: Collection<T>) {\n this.collection$.next(collection);\n }\n\n get collection() {\n return this.collection$.getValue();\n }\n\n}\n","@if (!hideActions) {\n <bb-collections-actions [collection]=\"collection\"\n [queryPlaceholder]=\"queryPlaceholder\"\n standalone>\n <ng-content ngProjectAs=\"[data-collections-action]\"\n select=\"[data-collections-action]\"></ng-content>\n <ng-content ngProjectAs=\"[data-collections-row]\"\n select=\"[data-collections-row]\"></ng-content>\n </bb-collections-actions>\n}\n\n<div [collection]=\"collection\"\n class=\"bb-collections-grid-container\"\n bb-collections-viewer>\n <ul *bbCollectionsData=\"let items = items\"\n class=\"bb-collections-grid-list\">\n @for (item of items; track (trackByProperty === null ? $index : item[trackByProperty])) {\n <li class=\"bb-collections-grid-item\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, item: item}\"></ng-container>\n </li>\n }\n </ul>\n <div *bbCollectionsEmpty=\"let query = query\"\n class=\"bb-collections-grid-info\">\n <div class=\"bb-collections-grid-image empty\"></div>\n @if (query?.length > 0) {\n <ng-template [bbTemplate]=\"noResultsContent\">\n <p [bb-localize-string]=\"$any(noResultsContent) ?? ('collection.no_results_label' | bbLocalize)\"\n class=\"bb-collections-grid-info-text\">\n <strong *bbLocalizeTemplate=\"'query'\">{{ query ?? '...' }}</strong>\n </p>\n </ng-template>\n } @else {\n <ng-template [bbTemplate]=\"emptyContent\">\n <p class=\"bb-collections-grid-info-text\">\n {{ $any(emptyContent) ?? ('collection.empty_label' | bbLocalize) }}\n </p>\n </ng-template>\n }\n </div>\n <div *bbCollectionsError=\"let error = error\"\n class=\"bb-collections-grid-info\">\n <div class=\"bb-collections-grid-image error\"></div>\n <ng-template [bbTemplate]=\"errorContent\">\n <p class=\"bb-collections-grid-info-text\">\n {{ $any(errorContent) ?? ('collection.error_label' | bbLocalize) }}\n </p>\n </ng-template>\n </div>\n <div *bbCollectionsInitial\n class=\"bb-collections-grid-info\">\n <bb-spinner class=\"block\"></bb-spinner>\n </div>\n</div>\n\n@if (!hidePager) {\n <footer class=\"bb-collections-grid-footer\">\n <bb-collections-pager [collection]=\"collection\"></bb-collections-pager>\n </footer>\n}\n","import {catchError, debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, tap} from 'rxjs/operators';\nimport {CollectionData, CollectionRequest, CollectionRequestSort} from './interfaces/collection.interface';\nimport {BehaviorSubject, combineLatest, defer, isObservable, merge, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './providers/collection.provider';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {FormControl} from '@angular/forms';\n\nexport const enum CollectionState {\n Initial = 'initial',\n Error = 'error',\n Empty = 'empty',\n Data = 'data'\n}\n\nexport class Collection<T> {\n\n // Controls.\n readonly queryControl: FormControl<string | null>;\n readonly queryFieldsControl: FormControl<string[]>;\n readonly pageNumberControl: FormControl<number>;\n readonly pageSizeControl: FormControl<number>;\n readonly sortControl: FormControl<CollectionRequestSort | CollectionRequestSort[]>;\n\n // Request.\n readonly data$: Observable<{\n response?: CollectionData<T>,\n request?: CollectionRequest,\n error?: Error\n state: CollectionState,\n loading: boolean,\n initial: boolean\n }>;\n\n readonly raw$ = new BehaviorSubject<CollectionData<T> | null>(null);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n // State.\n private _formatter: (item: T[]) => T[] | Observable<T[]> = null;\n private _refresh$ = new BehaviorSubject<number>(0);\n\n constructor(private readonly _provider: CollectionProvider<T>,\n readonly _initialValues: Partial<CollectionRequest> = {}) {\n this.queryControl = new FormControl<string | null>(_initialValues?.query ?? null);\n this.queryFieldsControl = new FormControl<string[]>(_initialValues?.queryFields ?? []);\n this.pageNumberControl = new FormControl<number>(_initialValues?.pageNumber ?? 1);\n this.pageSizeControl = new FormControl<number>(_initialValues?.pageSize ?? 25);\n this.sortControl = new FormControl<CollectionRequestSort | CollectionRequestSort[] | null>(_initialValues?.sort ?? null);\n\n this.data$ = this.getData();\n }\n\n refresh() {\n this._refresh$.next(0);\n }\n\n setFormatter(callback: (items: T[]) => T[] | Observable<T[]>) {\n this._formatter = callback;\n return this;\n }\n\n private getData() {\n const data$ = this.request.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(request => {\n return this._provider.transform(request, {collection: this}).pipe(\n tap(response => this.cacheCollectionData(response)),\n map(response => ({response, request, initial: false})),\n catchError(error => of<{ error: Error, response: CollectionData<T> | null, request: CollectionRequest, initial: boolean }>({\n error,\n request,\n response: null,\n initial: false\n })),\n tap(() => this.loading$.next(false))\n );\n }),\n startWith<{ initial: boolean, response: CollectionData<T> | null }>({initial: true, response: null}),\n shareReplay({refCount: true, bufferSize: 1})\n );\n\n return combineLatest([data$, this.loading$.asObservable()]).pipe(\n switchMap(([data, loading]) => {\n const combined = {...data, loading};\n return this.formatResponse(data?.response).pipe(\n map(response => {\n const data = {...combined, response};\n return {...data, state: this.getState(data)};\n })\n );\n })\n );\n }\n\n private formatResponse(response: CollectionData<T>) {\n if (!response || !this._formatter) {\n return of(response);\n }\n\n const items = response?.data ?? [];\n const data = this._formatter?.(items) ?? items;\n const data$ = isObservable(data) ? data : of(data);\n\n return data$.pipe(\n map(data => ({...response, data}))\n );\n }\n\n private getState(data: { response?: CollectionData<T>, request?: CollectionRequest, error?: Error, loading: boolean, initial: boolean }) {\n if (!!data?.error) {\n return CollectionState.Error;\n }\n\n if (!!data?.initial) {\n return CollectionState.Initial;\n }\n\n const count = data?.response?.data?.length ?? 0;\n if (count <= 0) {\n return CollectionState.Empty;\n }\n\n return CollectionState.Data;\n }\n\n private cacheCollectionData(data: CollectionData<T>) {\n this.raw$.next(data);\n }\n\n private get request() {\n const pageNumber$ = getControlValue<number>(this.pageNumberControl);\n const pageSize$ = getControlValue<number>(this.pageSizeControl);\n const query$ = this.getQueryObservable();\n const queryFields$ = getControlValue<string[]>(this.queryFieldsControl);\n const sort$ = getControlValue<CollectionRequestSort | CollectionRequestSort[]>(this.sortControl);\n\n return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(\n map(([pageNumber, pageSize, query, queryFields, sort]) => ({\n pageNumber,\n pageSize,\n query,\n queryFields,\n sort\n }))\n );\n }\n\n private getQueryObservable() {\n return merge(this.queryControl.valueChanges, defer(() => of(this.queryControl?.value))).pipe(\n debounceTime(400),\n distinctUntilChanged()\n );\n }\n\n}\n\n","import {BbCollectionsTableSorting} from './components/collections-table-sorting/collections-table-sorting.component';\nimport {BbCollectionsTableLabel} from './components/collections-table-label/collections-table-label.component';\nimport {BbCollectionsActions} from './components/collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from './components/collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from './components/collections-pager/collections-pager.component';\nimport {BbCollectionsTable} from './components/collections-table/collections-table.component';\nimport {BbCollectionsGrid} from './components/collections-grid/collections-grid.component';\nimport {BbCollectionsDataRow} from './directives/collections-data-row.directive';\nimport {BbCollectionsInitial} from './directives/collections-initial.directive';\nimport {BbCollectionsEmpty} from './directives/collections-empty.directive';\nimport {BbCollectionsError} from './directives/collections-error.directive';\nimport {BbCollectionsData} from './directives/collections-data.directive';\nimport {BbCollectionsItem} from './directives/collections-item.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbCollectionsViewer,\n BbCollectionsPager,\n BbCollectionsTable,\n BbCollectionsTableSorting,\n BbCollectionsTableLabel,\n BbCollectionsGrid,\n BbCollectionsActions,\n BbCollectionsData,\n BbCollectionsDataRow,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsItem\n ],\n exports: [\n BbCollectionsViewer,\n BbCollectionsPager,\n BbCollectionsTable,\n BbCollectionsTableSorting,\n BbCollectionsTableLabel,\n BbCollectionsGrid,\n BbCollectionsActions,\n BbCollectionsData,\n BbCollectionsDataRow,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsItem\n ]\n})\nexport class CollectionsModule {\n}\n","import {COLLECTIONS_CONFIG, CollectionsConfig} from './collections.interfaces';\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\n\nexport function provideCollectionsConfig(config: CollectionsConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: COLLECTIONS_CONFIG, useValue: config}\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BbCollectionsTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-collections.mjs","sources":["../../../projects/bb-foundation/collections/src/lib/providers/collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/api-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/classes/array.collection.ts","../../../projects/bb-foundation/collections/src/lib/providers/local-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-data.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-data-row.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-empty.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-error.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-initial.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-item.directive.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.html","../../../projects/bb-foundation/collections/src/lib/collections.interfaces.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-actions/collections-actions.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-actions/collections-actions.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table/collections-table.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table/collections-table.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table-sorting/collections-table-sorting.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table-sorting/collections-table-sorting.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table-label/collections-table-label.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table-label/collections-table-label.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-grid/collections-grid.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-grid/collections-grid.component.html","../../../projects/bb-foundation/collections/src/lib/collection.ts","../../../projects/bb-foundation/collections/src/lib/collections.module.ts","../../../projects/bb-foundation/collections/src/lib/collections.config.ts","../../../projects/bb-foundation/collections/src/bravobit-bb-foundation-collections.ts"],"sourcesContent":["import {CollectionApiParams, CollectionContext, CollectionData, CollectionRequest} from '../interfaces/collection.interface';\nimport {Observable} from 'rxjs';\n\nexport abstract class CollectionProvider<T> {\n\n protected cachedRequestParams: Record<string, CollectionApiParams> | null = null;\n\n abstract transform(request: CollectionRequest, context: CollectionContext<T>): Observable<CollectionData<T>>;\n\n protected validateParams(request: Record<string, CollectionApiParams>, _context: CollectionContext<T>) {\n return request;\n }\n\n protected formatArrayToCollectionData(items: T[]) {\n const count = items?.length ?? 1;\n return <CollectionData<T>>{\n pageSize: count,\n totalEntries: count,\n pageNumber: 1,\n totalPages: 1,\n data: items\n };\n }\n\n protected deepCompare(value1: unknown, value2: unknown) {\n if (value1 === value2) {\n return true;\n }\n\n if (typeof value1 !== 'object' || typeof value2 !== 'object' || value1 === null || value2 === null) {\n return false;\n }\n\n const keys1 = Object.keys(value1);\n const keys2 = Object.keys(value2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n if (!keys2.includes(key)) {\n return false;\n }\n if (!this.deepCompare(value1[key], value2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n}\n","import {CollectionApiResponse, CollectionData, CollectionApiParams, CollectionRequest, CollectionContext} from '../interfaces/collection.interface';\nimport {combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './collection.provider';\nimport {map, switchMap, tap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class ApiCollectionProvider<T> extends CollectionProvider<T> {\n\n // State.\n protected extraParams: Record<string, Observable<CollectionApiParams>> = {};\n protected extraObjectParams: Observable<Record<string, CollectionApiParams>>[] = [];\n\n constructor(protected readonly endpoint: string | Observable<string>,\n protected readonly httpClient: HttpClient) {\n super();\n }\n\n append(name: string, value: CollectionApiParams | Observable<CollectionApiParams>) {\n this.extraParams[name] = isObservable(value) ? value : of(value);\n return this;\n }\n\n appendObject(value: Record<string, CollectionApiParams> | Observable<Record<string, CollectionApiParams>>) {\n const params = isObservable(value) ? value : of(value);\n this.extraObjectParams.push(params);\n }\n\n transform(request: CollectionRequest, context: CollectionContext<T>) {\n const endpoint$ = isObservable(this.endpoint) ? this.endpoint : of(this.endpoint);\n const params = this.getBackendFormat(request);\n const extraParams$ = this.getExtraParams(this.extraParams);\n const extraObjectParams$ = this.getExtraObjectParams(this.extraObjectParams);\n\n return combineLatest([endpoint$, extraParams$, extraObjectParams$]).pipe(\n tap(() => context.collection.loading$.next(true)),\n switchMap(([endpoint, extraParams, extraObjectParams]) => {\n const validatedParams = this.validateParams({...params, ...extraParams, ...extraObjectParams}, context);\n return this.httpClient.get<CollectionApiResponse<T> | T[]>(endpoint, {params: validatedParams});\n }),\n map(response => this.formatToCollectionData(response))\n );\n }\n\n protected override validateParams(request: Record<string, CollectionApiParams>, context: CollectionContext<T>) {\n if (!this.deepCompare(request, this.cachedRequestParams)) {\n if (request?.['page'] && request?.['page'] === this.cachedRequestParams?.['page']) {\n context.collection.pageNumberControl?.setValue(1);\n request['page'] = context.collection.pageNumberControl?.value;\n }\n }\n\n this.cachedRequestParams = {...request};\n return request;\n }\n\n protected getExtraParams(params: Record<string, Observable<CollectionApiParams>>) {\n const keys = Object.keys(params ?? {});\n if (keys?.length <= 0) {\n return of({});\n }\n\n const observables$ = keys.map(key => params?.[key]);\n return combineLatest(observables$).pipe(\n map(data => {\n return data.reduce((previous, current, index) => {\n if (current === null || current === undefined) {\n return previous;\n }\n const key = keys?.[index];\n return {...previous, [key]: current};\n }, {});\n })\n );\n }\n\n protected getExtraObjectParams(params$: Observable<Record<string, CollectionApiParams>>[]) {\n if (params$?.length <= 0) {\n return of({});\n }\n return combineLatest(params$).pipe(\n map(data => (data ?? []).reduce((previous, current) => ({...previous, ...(current ?? {})}), {})),\n map(data => {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current] ?? null;\n if (value === null || value === undefined) {\n return previous;\n }\n\n return {...previous, [current]: value};\n }, {});\n })\n );\n }\n\n protected formatToCollectionData(response: CollectionApiResponse<T> | T[]) {\n if (Array.isArray(response)) {\n return this.formatArrayToCollectionData(response);\n }\n\n return <CollectionData<T>>{\n pageSize: response?.page_size,\n pageNumber: response?.page_number,\n totalPages: response?.total_pages,\n totalEntries: response?.total_entries,\n data: response?.data,\n raw: response\n };\n }\n\n protected getBackendFormat(request: CollectionRequest) {\n const params = {};\n\n params['page'] = request?.pageNumber ?? 1;\n params['page_size'] = request?.pageSize ?? 25;\n\n if (request?.sort) {\n const sort = Array.isArray(request?.sort) ? request?.sort : [request?.sort];\n const filteredSort = sort?.filter(item => !!item?.name && !!item?.direction);\n\n params['sort'] = filteredSort?.map(item => item?.name)?.join(',');\n params['sort_direction'] = filteredSort?.map(item => item?.direction)?.join(',');\n }\n\n if (request?.query && request?.query?.length > 0 && request?.queryFields && request?.queryFields?.length > 0) {\n params['query'] = request?.query;\n params['query_fields'] = request?.queryFields?.join(',');\n }\n\n return params;\n }\n\n}\n","import {ArrayCollectionStringKeys} from '../interfaces/array-collection.interface';\nimport {CollectionRequestSort} from '../interfaces/collection.interface';\n\nexport class ArrayCollection<T> {\n\n constructor(protected value: T[]) {\n }\n\n search(query: string, fields: ArrayCollectionStringKeys<T>[]) {\n const normalizedQuery = this.normalizeValueAsString(query);\n if (normalizedQuery === null || normalizedQuery?.length <= 0) {\n return this;\n }\n\n const queryFields = fields ?? [];\n if (queryFields.length <= 0) {\n throw new Error('cannot search without query fields');\n }\n\n this.value = this.value.filter(item => {\n for (const field of queryFields) {\n const normalizedValue = this.normalizeValueAsString(item?.[field]);\n if (normalizedValue === null) {\n continue;\n }\n\n if (normalizedValue.includes(normalizedQuery)) {\n return true;\n }\n }\n\n return false;\n });\n\n return this;\n }\n\n sortBy(sort: CollectionRequestSort<keyof T> | CollectionRequestSort<keyof T>[], sortables: Partial<Record<ArrayCollectionStringKeys<T>, 'string' | 'number'>>) {\n if (sort === null || sort === undefined) {\n return this;\n }\n \n const sorts = Array.isArray(sort) ? sort : [sort];\n if (sorts.length <= 0) {\n return this;\n }\n\n this.value = this.value.sort((a, b) => {\n for (const item of sorts) {\n const type = sortables?.[<any>item?.name] ?? null;\n if (type === null) {\n throw new Error(`invalid sorting key \"${item?.name?.toString()}\"`);\n }\n const aValue = a?.[item?.name] ?? null;\n const bValue = b?.[item?.name] ?? null;\n const direction = item?.direction ?? null;\n\n if (type === 'string') {\n const comparison = String(aValue).localeCompare(String(bValue));\n if (comparison !== 0) {\n return direction === 'asc' ? comparison : -comparison;\n }\n } else if (type === 'number') {\n if (aValue < bValue) return direction === 'asc' ? -1 : 1;\n if (aValue > bValue) return direction === 'asc' ? 1 : -1;\n }\n }\n\n return 0;\n });\n\n return this;\n }\n\n toPage(pageNumber: number, pageSize: number) {\n const totalEntries = this.value?.length ?? 0;\n const totalPages = Math.max(1, Math.ceil(totalEntries / pageSize));\n\n const startIndex = (pageNumber - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n const data = this.value?.slice(startIndex, endIndex) ?? [];\n\n return {totalPages, totalEntries, pageSize, pageNumber, data};\n }\n\n toArray() {\n return this.value;\n }\n\n protected normalizeValueAsString(value: unknown) {\n if (value === null || value === undefined) {\n return null;\n }\n return value\n .toString()\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n }\n\n}\n","import {ArrayCollectionOptions} from '../interfaces/array-collection.interface';\nimport {CollectionRequest} from '../interfaces/collection.interface';\nimport {ArrayCollection} from '../classes/array.collection';\nimport {CollectionProvider} from './collection.provider';\nimport {delay, map} from 'rxjs/operators';\nimport {BehaviorSubject} from 'rxjs';\n\nexport class LocalCollectionProvider<T> extends CollectionProvider<T> {\n\n private _items$ = new BehaviorSubject<T[]>([]);\n\n constructor(items: T[],\n private _options?: ArrayCollectionOptions<T>) {\n super();\n this.update(items);\n }\n\n update(value: T[]) {\n this._items$.next(value);\n }\n\n transform(request: CollectionRequest) {\n return this._items$.pipe(\n map(items => {\n return new ArrayCollection<T>(items)\n .search(request?.query, <any>request.queryFields)\n .sortBy(<any>request?.sort, this._options?.sortables ?? {})\n .toPage(request?.pageNumber, request?.pageSize);\n }),\n delay(1)\n );\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsDataContext<T> {\n items!: T[];\n loading!: boolean;\n\n constructor(items: T[], loading: boolean) {\n this.items = items;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsData]'\n})\nexport class BbCollectionsData<T> {\n\n constructor(public template: TemplateRef<BbCollectionsDataContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsData<T>, ctx: unknown): ctx is BbCollectionsDataContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsDataRowContext<T> {\n item!: T;\n $implicit!: T;\n\n constructor(item: T) {\n this.item = item;\n this.$implicit = item;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsDataRow]'\n})\nexport class BbCollectionsDataRow<T> {\n\n constructor(public template: TemplateRef<BbCollectionsDataRowContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsDataRow<T>, ctx: unknown): ctx is BbCollectionsDataRowContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsEmptyContext<T> {\n query!: string;\n loading!: boolean;\n\n constructor(query: string, loading: boolean) {\n this.query = query;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsEmpty]'\n})\nexport class BbCollectionsEmpty<T> {\n\n constructor(public template: TemplateRef<BbCollectionsEmptyContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsEmpty<T>, ctx: unknown): ctx is BbCollectionsEmptyContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsErrorContext<T> {\n error!: Error;\n loading!: boolean;\n\n constructor(error: Error, loading: boolean) {\n this.error = error;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsError]'\n})\nexport class BbCollectionsError<T> {\n\n constructor(public template: TemplateRef<BbCollectionsErrorContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsError<T>, ctx: unknown): ctx is BbCollectionsErrorContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsInitialContext<T> {\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsInitial]'\n})\nexport class BbCollectionsInitial<T> {\n\n constructor(public template: TemplateRef<BbCollectionsInitialContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsInitial<T>, ctx: unknown): ctx is BbCollectionsInitialContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsItemContext<T> {\n item!: T;\n $implicit!: T;\n\n constructor(item: T) {\n this.item = item;\n this.$implicit = item;\n }\n}\n\n@Directive({\n selector: 'ng-template[bbCollectionsItem]'\n})\nexport class BbCollectionsItem<T> {\n\n constructor(public template: TemplateRef<BbCollectionsItemContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsItem<T>, ctx: unknown): ctx is BbCollectionsItemContext<T> {\n return true;\n }\n\n}\n","import {ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsInitial, BbCollectionsInitialContext} from '../../directives/collections-initial.directive';\nimport {BbCollectionsError, BbCollectionsErrorContext} from '../../directives/collections-error.directive';\nimport {BbCollectionsEmpty, BbCollectionsEmptyContext} from '../../directives/collections-empty.directive';\nimport {BbCollectionsData, BbCollectionsDataContext} from '../../directives/collections-data.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: '[bb-collections-viewer]',\n templateUrl: './collections-viewer.component.html',\n styleUrls: ['./collections-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-viewer'},\n imports: [AsyncPipe, NgTemplateOutlet]\n})\nexport class BbCollectionsViewer<T = unknown> {\n\n // Content.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<BbCollectionsDataContext<T>>;\n @ContentChild(BbCollectionsEmpty, {read: TemplateRef, static: false}) emptyTemplate?: TemplateRef<BbCollectionsEmptyContext<T>>;\n @ContentChild(BbCollectionsError, {read: TemplateRef, static: false}) errorTemplate?: TemplateRef<BbCollectionsErrorContext<T>>;\n @ContentChild(BbCollectionsInitial, {read: TemplateRef, static: false}) initialTemplate?: TemplateRef<BbCollectionsInitialContext<T>>;\n\n // Inputs.\n @Input() collection: Collection<T> | null = null;\n\n}\n","@if (collection?.data$ | async; as data) {\n @switch (data?.state) {\n @case ('initial') {\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n }\n @case ('empty') {\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n }\n @case ('error') {\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n }\n @default {\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n }\n }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const COLLECTIONS_CONFIG = new InjectionToken<CollectionsConfig>('collections config');\n\nexport interface CollectionsConfig {\n icons?: {\n actionsSearch?: string;\n actionsClose?: string;\n pagerArrowPrevious?: string;\n pagerArrowNext?: string;\n };\n}\n","import {ChangeDetectionStrategy, Component, inject, Input, numberAttribute, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {COLLECTIONS_CONFIG, CollectionsConfig} from '../../collections.interfaces';\nimport {CollectionData} from '../../interfaces/collection.interface';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {combineLatestMap} from '@bravobit/bb-foundation/rxjs';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\nimport {map, shareReplay} from 'rxjs/operators';\nimport {Collection} from '../../collection';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-collections-pager',\n templateUrl: './collections-pager.component.html',\n styleUrls: ['./collections-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-pager'},\n imports: [AsyncPipe, BbLocalizeString, BbLocalize, BbLocalizeTemplate, BbIcon]\n})\nexport class BbCollectionsPager implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: CollectionsConfig = inject(COLLECTIONS_CONFIG, {optional: true});\n\n // Readonly data.\n readonly arrowPreviousIconName: string = this._config?.icons?.pagerArrowPrevious ?? 'material:arrow_back';\n readonly arrowNextIconName: string = this._config?.icons?.pagerArrowNext ?? 'material:arrow_forward';\n\n @Input({transform: numberAttribute})\n set maxAmountOfButtons(value: number) {\n this._maxAmountOfButtons$.next(Math.max(1, value));\n }\n\n get maxAmountOfButtons() {\n return this._maxAmountOfButtons$.getValue();\n }\n\n @Input({required: true})\n set collection(collection: Collection<unknown> | null) {\n this._collection = collection;\n this.observeCollectionChanges();\n }\n\n get collection() {\n return this._collection;\n }\n\n // Data.\n data$: Observable<{\n start?: number,\n end?: number,\n totalEntries?: number,\n totalPages?: number,\n pageNumber?: number,\n pages?: { page: number, active: boolean }[]\n }>;\n\n // State and subscriptions.\n private _collection: Collection<unknown> | null = null;\n private _subscription: Subscription | null = null;\n private _cache$ = new BehaviorSubject<Partial<CollectionData<unknown>>>({});\n private _maxAmountOfButtons$ = new BehaviorSubject<number>(3);\n\n ngOnInit() {\n this.setData();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n setPage(pageNumber: number, totalPages: number) {\n // Calculate the new value.\n const newValue = Math.min(\n totalPages,\n Math.max(1, pageNumber)\n );\n\n // Validate the value is actually different.\n const currentValue = this._collection?.pageNumberControl?.value;\n if (currentValue === newValue) {\n return;\n }\n\n this._collection?.pageNumberControl?.setValue(pageNumber);\n }\n\n private setData() {\n this.data$ = combineLatestMap({\n cache: this._cache$,\n maxAmountOfButtons: this._maxAmountOfButtons$\n }).pipe(\n map(({cache, maxAmountOfButtons}) => {\n const pageSize = cache?.pageSize ?? 1;\n const pageNumber = cache?.pageNumber ?? 1;\n\n const totalEntries = Math.max(0, cache?.totalEntries ?? 0);\n const start = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));\n const end = Math.max(0, Math.min((start - 1) + pageSize, totalEntries));\n const totalPages = Math.max(0, cache?.totalPages ?? 1);\n\n const pages = this.filterActivePages(pageNumber, totalPages, maxAmountOfButtons);\n\n return {start, end, totalEntries, totalPages, pages, pageNumber};\n }),\n shareReplay({refCount: true, bufferSize: 1})\n );\n }\n\n private observeCollectionChanges() {\n if (this._subscription) {\n this._subscription?.unsubscribe();\n }\n\n if (!this._collection) {\n return;\n }\n\n this._subscription = this._collection.raw$.subscribe(data => {\n if (data) {\n this._cache$.next(data);\n }\n });\n }\n\n private calculatePages(pageNumber: number, totalPages: number, maxAmountOfButtons: number) {\n const min = 1;\n const max = totalPages;\n const amount = Math.max(1, maxAmountOfButtons);\n\n const start = Math.max(0, pageNumber - Math.floor(amount / 2));\n const data = Array(amount)\n .fill(0)\n .map((_, index) => start + index);\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number, maxAmountOfButtons: number) {\n return this.calculatePages(pageNumber, totalPages, maxAmountOfButtons)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","@if (data$ | async; as data) {\n <div [bb-localize-string]=\"'collection.showing_label' | bbLocalize\"\n class=\"bb-collections-pager-text\">\n <strong *bbLocalizeTemplate=\"'start'\">{{ data?.start }}</strong>\n <strong *bbLocalizeTemplate=\"'end'\">{{ data?.end }}</strong>\n <strong *bbLocalizeTemplate=\"'total'\">{{ data?.totalEntries }}</strong>\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"data?.pageNumber <= 1\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n <bb-icon [src]=\"arrowPreviousIconName\"\n size=\"1.125\"></bb-icon>\n </button>\n </li>\n @for (item of data?.pages; track item?.page) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"data?.pageNumber >= data?.totalPages\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n <bb-icon [src]=\"arrowNextIconName\"\n size=\"1.125\"></bb-icon>\n </button>\n </li>\n </ul>\n </div>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation} from '@angular/core';\nimport {COLLECTIONS_CONFIG, CollectionsConfig} from '../../collections.interfaces';\nimport {BbFormControl, BbIcon, BbInput} from '@bravobit/bb-foundation/elements';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: 'bb-collections-actions',\n templateUrl: './collections-actions.component.html',\n styleUrls: ['./collections-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-actions',\n '[class.standalone]': 'standalone'\n },\n imports: [ReactiveFormsModule, BbInput, BbLocalize, BbIcon, BbFormControl]\n})\nexport class BbCollectionsActions<T> {\n\n // Dependencies.\n private readonly _config?: CollectionsConfig = inject(COLLECTIONS_CONFIG, {optional: true});\n\n // Readonly data.\n readonly searchIconName: string = this._config?.icons?.actionsSearch ?? 'material:search';\n readonly closeIconName: string = this._config?.icons?.actionsClose ?? 'material:close';\n\n // Inputs.\n @Input({required: true}) collection: Collection<T> | null = null;\n @Input() queryPlaceholder: string | null = null;\n @Input({transform: booleanAttribute}) standalone: boolean = false;\n\n}\n","<div class=\"bb-collections-actions-row\">\n @if (collection?.queryFieldsControl?.value?.length > 0) {\n <bb-form-control class=\"bb-collections-actions-search\">\n <bb-icon [src]=\"searchIconName\"\n bbPrefix></bb-icon>\n <input [formControl]=\"collection?.queryControl\"\n [placeholder]=\"queryPlaceholder ?? ('collection.search_label' | bbLocalize)\"\n bbInput\n autocomplete=\"off\"\n type=\"search\">\n @if (collection?.queryControl?.value?.length > 0) {\n <button (click)=\"collection?.queryControl?.setValue('')\"\n bbSuffix\n data-button\n type=\"button\">\n <bb-icon [src]=\"closeIconName\"></bb-icon>\n </button>\n }\n </bb-form-control>\n }\n <ng-content select=\"[data-collections-action]\"></ng-content>\n</div>\n<ng-content></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsDataRow, BbCollectionsDataRowContext} from '../../directives/collections-data-row.directive';\nimport {BbCollectionsData, BbCollectionsDataContext} from '../../directives/collections-data.directive';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {BbCollectionsActions} from '../collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from '../collections-viewer/collections-viewer.component';\nimport {BbCollectionsInitial} from '../../directives/collections-initial.directive';\nimport {BbCollectionsPager} from '../collections-pager/collections-pager.component';\nimport {BbCollectionsEmpty} from '../../directives/collections-empty.directive';\nimport {BbCollectionsError} from '../../directives/collections-error.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbSpinner} from '@bravobit/bb-foundation/elements';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {Collection} from '../../collection';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-collections-table',\n templateUrl: './collections-table.component.html',\n styleUrls: ['./collections-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-table',\n '[class.include-vertical-lines]': 'includeVerticalLines'\n },\n imports: [\n NgTemplateOutlet,\n BbCollectionsViewer,\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsActions,\n BbCollectionsPager,\n BbLocalizeString,\n BbTemplate,\n BbLocalize,\n BbLocalizeTemplate,\n BbSpinner,\n AsyncPipe\n ]\n})\nexport class BbCollectionsTable<T = any> {\n\n // Readonly data.\n readonly collection$ = new BehaviorSubject<Collection<T> | null>(null);\n\n // Views.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<BbCollectionsDataContext<T>>;\n @ContentChild(BbCollectionsDataRow, {read: TemplateRef, static: false}) dataRowTemplate?: TemplateRef<BbCollectionsDataRowContext<T>>;\n\n // Inputs.\n @Input() queryPlaceholder: string | null = null;\n @Input() emptyContent: string | TemplateRef<any> | null = null;\n @Input() noResultsContent: string | TemplateRef<any> | null = null;\n @Input() errorContent: string | TemplateRef<any> | null = null;\n @Input() trackByProperty: string | null = 'id';\n @Input({transform: booleanAttribute}) includeVerticalLines: boolean = false;\n @Input({transform: booleanAttribute}) hideActions: boolean = false;\n @Input({transform: booleanAttribute}) hidePager: boolean = false;\n\n @Input({required: true})\n set collection(collection: Collection<T>) {\n this.collection$.next(collection);\n }\n\n get collection() {\n return this.collection$.getValue();\n }\n\n}\n","@if (!hideActions) {\n <bb-collections-actions [collection]=\"collection\"\n [queryPlaceholder]=\"queryPlaceholder\">\n <ng-content ngProjectAs=\"[data-collections-action]\"\n select=\"[data-collections-action]\"></ng-content>\n <ng-content ngProjectAs=\"[data-collections-row]\"\n select=\"[data-collections-row]\"></ng-content>\n </bb-collections-actions>\n}\n\n<ng-content select=\"[data-collections-header]\"></ng-content>\n\n<div [class.loading]=\"collection?.loading$ | async\"\n class=\"bb-collections-table-wrapper\">\n <div [collection]=\"collection\"\n class=\"bb-collections-table-container\"\n bb-collections-viewer>\n @if (collection?.loading$ | async) {\n <div class=\"bb-collections-table-loading\"></div>\n }\n <table *bbCollectionsData=\"let items = items; let loading = loading\">\n <ng-content select=\"thead\"></ng-content>\n @if (dataTemplate) {\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: $any(items), loading: loading}\"></ng-container>\n } @else {\n <tbody>\n @for (item of items; track (trackByProperty === null ? $index : item[trackByProperty])) {\n <ng-container\n *ngTemplateOutlet=\"dataRowTemplate; context: {$implicit: item, item: item}\"></ng-container>\n }\n </tbody>\n }\n <ng-content select=\"tfoot\"></ng-content>\n </table>\n <div *bbCollectionsEmpty=\"let query = query\"\n class=\"bb-collections-table-info\">\n <div class=\"bb-collections-table-image empty\"></div>\n @if (query?.length > 0) {\n <ng-template [bbTemplate]=\"noResultsContent\">\n <p [bb-localize-string]=\"$any(noResultsContent) ?? ('collection.no_results_label' | bbLocalize)\"\n class=\"bb-collections-table-info-text\">\n <strong *bbLocalizeTemplate=\"'query'\">{{ query ?? '...' }}</strong>\n </p>\n </ng-template>\n } @else {\n <ng-template [bbTemplate]=\"emptyContent\">\n <p class=\"bb-collections-table-info-text\">\n {{ $any(emptyContent) ?? ('collection.empty_label' | bbLocalize) }}\n </p>\n </ng-template>\n }\n </div>\n <div *bbCollectionsError=\"let error = error\"\n class=\"bb-collections-table-info\">\n <div class=\"bb-collections-table-image error\"></div>\n <ng-template [bbTemplate]=\"errorContent\">\n <p class=\"bb-collections-table-info-text\">\n {{ $any(errorContent) ?? ('collection.error_label' | bbLocalize) }}\n </p>\n </ng-template>\n </div>\n <div *bbCollectionsInitial\n class=\"bb-collections-table-info\">\n <bb-spinner class=\"block\"></bb-spinner>\n </div>\n </div>\n</div>\n\n@if (!hidePager) {\n <footer class=\"bb-collections-table-footer\">\n <bb-collections-pager [collection]=\"collection\"></bb-collections-pager>\n </footer>\n}\n","import {Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, OnDestroy, OnInit, Optional, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsTable} from '../collections-table/collections-table.component';\nimport {distinctUntilChanged, map, switchMap} from 'rxjs/operators';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {of, Subscription} from 'rxjs';\n\n@Component({\n selector: 'th[bb-collections-table-sorting]',\n templateUrl: './collections-table-sorting.component.html',\n styleUrls: ['./collections-table-sorting.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-table-sorting',\n '[class.asc]': 'direction === \\'asc\\'',\n '[class.desc]': 'direction === \\'desc\\''\n }\n})\nexport class BbCollectionsTableSorting implements OnInit, OnDestroy {\n\n // Readonly data.\n readonly orderedOptions: [null, 'asc', 'desc'] = [null, 'asc', 'desc'];\n\n // State.\n direction: 'asc' | 'desc' | null = null;\n\n // Subscription.\n private _subscription = new Subscription();\n\n constructor(@Attribute('bb-collections-table-sorting') private _name: string,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _parent?: BbCollectionsTable<unknown>) {\n }\n\n ngOnInit() {\n if (this._parent === null || this._parent === undefined) {\n return;\n }\n\n const direction$ = this._parent.collection$.pipe(\n switchMap(collection => !!collection?.sortControl ? getControlValue(collection?.sortControl) : of(null)),\n map(value => Array.isArray(value) ? value : [value]),\n map(value => value?.find(item => item?.name === this._name)),\n map(sorting => sorting?.direction ?? null),\n distinctUntilChanged()\n );\n const subscription = direction$.subscribe(direction => {\n this.direction = direction;\n this._changeDetectorRef.markForCheck();\n });\n this._subscription.add(subscription);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n @HostListener('click')\n onClick() {\n if (!this._name) {\n return;\n }\n\n const nextDirection = this.getNextOption(this.direction);\n const controlValue = nextDirection === null ? null : {name: this._name, direction: nextDirection};\n this._parent?.collection?.sortControl?.setValue(controlValue);\n }\n\n private getNextOption(direction: string) {\n const index = this.orderedOptions.findIndex(item => item === direction);\n const newIndex = (index + 1) % this.orderedOptions?.length;\n return this.orderedOptions?.[newIndex] ?? null;\n }\n\n}\n","<ng-content></ng-content>\n","import {ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbAvatar} from '@bravobit/bb-foundation/elements';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n selector: '[bb-collections-table-label]',\n templateUrl: './collections-table-label.component.html',\n styleUrls: ['./collections-table-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-table-label'},\n imports: [BbAvatar, BbTemplate]\n})\nexport class BbCollectionsTableLabel {\n\n // Inputs.\n @Input({required: true}) titleLabel: string | TemplateRef<any> | null = null;\n @Input() descriptionLabel: string | TemplateRef<any> | null = null;\n @Input() imageUrl: string | null = null;\n @Input() alt: string | null = null;\n @Input() type: 'image' | 'avatar' | 'content' = 'image';\n\n}\n","@switch (type) {\n @case ('avatar') {\n <bb-avatar [title]=\"alt ?? '...'\"\n [src]=\"imageUrl\"\n size=\"2\"\n class=\"bb-collections-table-label-avatar\">\n </bb-avatar>\n }\n @case ('content') {\n <ng-content></ng-content>\n }\n @default {\n @if (imageUrl; as src) {\n <div [style.background-image]=\"'url(' + src + ')'\"\n class=\"bb-collections-table-label-image\"></div>\n }\n }\n}\n\n<div class=\"bb-collections-table-label-content\">\n <span class=\"bb-collections-table-label-title\"><ng-template\n [bbTemplate]=\"titleLabel\">{{ titleLabel }}</ng-template></span>\n @if (descriptionLabel; as descriptionContent) {\n <small class=\"bb-collections-table-label-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">{{ descriptionContent }}</ng-template>\n </small>\n }\n</div>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsItem, BbCollectionsItemContext} from '../../directives/collections-item.directive';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {BbCollectionsActions} from '../collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from '../collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from '../collections-pager/collections-pager.component';\nimport {BbCollectionsInitial} from '../../directives/collections-initial.directive';\nimport {BbCollectionsError} from '../../directives/collections-error.directive';\nimport {BbCollectionsEmpty} from '../../directives/collections-empty.directive';\nimport {BbCollectionsData} from '../../directives/collections-data.directive';\nimport {BbSpinner} from '@bravobit/bb-foundation/elements';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {Collection} from '../../collection';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-collections-grid',\n templateUrl: './collections-grid.component.html',\n styleUrls: ['./collections-grid.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-grid'},\n imports: [\n BbCollectionsData,\n BbCollectionsViewer,\n NgTemplateOutlet,\n BbCollectionsActions,\n BbCollectionsPager,\n BbCollectionsInitial,\n BbSpinner,\n BbCollectionsError,\n BbTemplate,\n BbLocalize,\n BbCollectionsEmpty,\n BbLocalizeString,\n BbLocalizeTemplate\n ]\n})\nexport class BbCollectionsGrid<T> {\n\n // Readonly data.\n readonly collection$ = new BehaviorSubject<Collection<T> | null>(null);\n\n // Views.\n @ContentChild(BbCollectionsItem, {read: TemplateRef, static: false}) itemTemplate?: TemplateRef<BbCollectionsItemContext<T>>;\n\n // Inputs.\n @Input() queryPlaceholder: string | null = null;\n @Input() emptyContent: string | TemplateRef<any> | null = null;\n @Input() noResultsContent: string | TemplateRef<any> | null = null;\n @Input() errorContent: string | TemplateRef<any> | null = null;\n @Input() trackByProperty: string | null = 'id';\n @Input({transform: booleanAttribute}) hideActions: boolean = false;\n @Input({transform: booleanAttribute}) hidePager: boolean = false;\n\n @Input({required: true})\n set collection(collection: Collection<T>) {\n this.collection$.next(collection);\n }\n\n get collection() {\n return this.collection$.getValue();\n }\n\n}\n","@if (!hideActions) {\n <bb-collections-actions [collection]=\"collection\"\n [queryPlaceholder]=\"queryPlaceholder\"\n standalone>\n <ng-content ngProjectAs=\"[data-collections-action]\"\n select=\"[data-collections-action]\"></ng-content>\n <ng-content ngProjectAs=\"[data-collections-row]\"\n select=\"[data-collections-row]\"></ng-content>\n </bb-collections-actions>\n}\n\n<div [collection]=\"collection\"\n class=\"bb-collections-grid-container\"\n bb-collections-viewer>\n <ul *bbCollectionsData=\"let items = items\"\n class=\"bb-collections-grid-list\">\n @for (item of items; track (trackByProperty === null ? $index : item[trackByProperty])) {\n <li class=\"bb-collections-grid-item\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, item: item}\"></ng-container>\n </li>\n }\n </ul>\n <div *bbCollectionsEmpty=\"let query = query\"\n class=\"bb-collections-grid-info\">\n <div class=\"bb-collections-grid-image empty\"></div>\n @if (query?.length > 0) {\n <ng-template [bbTemplate]=\"noResultsContent\">\n <p [bb-localize-string]=\"$any(noResultsContent) ?? ('collection.no_results_label' | bbLocalize)\"\n class=\"bb-collections-grid-info-text\">\n <strong *bbLocalizeTemplate=\"'query'\">{{ query ?? '...' }}</strong>\n </p>\n </ng-template>\n } @else {\n <ng-template [bbTemplate]=\"emptyContent\">\n <p class=\"bb-collections-grid-info-text\">\n {{ $any(emptyContent) ?? ('collection.empty_label' | bbLocalize) }}\n </p>\n </ng-template>\n }\n </div>\n <div *bbCollectionsError=\"let error = error\"\n class=\"bb-collections-grid-info\">\n <div class=\"bb-collections-grid-image error\"></div>\n <ng-template [bbTemplate]=\"errorContent\">\n <p class=\"bb-collections-grid-info-text\">\n {{ $any(errorContent) ?? ('collection.error_label' | bbLocalize) }}\n </p>\n </ng-template>\n </div>\n <div *bbCollectionsInitial\n class=\"bb-collections-grid-info\">\n <bb-spinner class=\"block\"></bb-spinner>\n </div>\n</div>\n\n@if (!hidePager) {\n <footer class=\"bb-collections-grid-footer\">\n <bb-collections-pager [collection]=\"collection\"></bb-collections-pager>\n </footer>\n}\n","import {catchError, debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, tap} from 'rxjs/operators';\nimport {CollectionData, CollectionRequest, CollectionRequestSort} from './interfaces/collection.interface';\nimport {BehaviorSubject, combineLatest, defer, isObservable, merge, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './providers/collection.provider';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {FormControl} from '@angular/forms';\n\nexport const enum CollectionState {\n Initial = 'initial',\n Error = 'error',\n Empty = 'empty',\n Data = 'data'\n}\n\nexport class Collection<T> {\n\n // Controls.\n readonly queryControl: FormControl<string | null>;\n readonly queryFieldsControl: FormControl<string[]>;\n readonly pageNumberControl: FormControl<number>;\n readonly pageSizeControl: FormControl<number>;\n readonly sortControl: FormControl<CollectionRequestSort | CollectionRequestSort[]>;\n\n // Request.\n readonly data$: Observable<{\n response?: CollectionData<T>,\n request?: CollectionRequest,\n error?: Error\n state: CollectionState,\n loading: boolean,\n initial: boolean\n }>;\n\n readonly raw$ = new BehaviorSubject<CollectionData<T> | null>(null);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n // State.\n private _formatter: (item: T[]) => T[] | Observable<T[]> = null;\n private _refresh$ = new BehaviorSubject<number>(0);\n\n constructor(private readonly _provider: CollectionProvider<T>,\n readonly _initialValues: Partial<CollectionRequest> = {}) {\n this.queryControl = new FormControl<string | null>(_initialValues?.query ?? null);\n this.queryFieldsControl = new FormControl<string[]>(_initialValues?.queryFields ?? []);\n this.pageNumberControl = new FormControl<number>(_initialValues?.pageNumber ?? 1);\n this.pageSizeControl = new FormControl<number>(_initialValues?.pageSize ?? 25);\n this.sortControl = new FormControl<CollectionRequestSort | CollectionRequestSort[] | null>(_initialValues?.sort ?? null);\n\n this.data$ = this.getData();\n }\n\n refresh() {\n this._refresh$.next(0);\n }\n\n setFormatter(callback: (items: T[]) => T[] | Observable<T[]>) {\n this._formatter = callback;\n return this;\n }\n\n private getData() {\n const data$ = this.request.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(request => {\n return this._provider.transform(request, {collection: this}).pipe(\n tap(response => this.cacheCollectionData(response)),\n map(response => ({response, request, initial: false})),\n catchError(error => of<{ error: Error, response: CollectionData<T> | null, request: CollectionRequest, initial: boolean }>({\n error,\n request,\n response: null,\n initial: false\n })),\n tap(() => this.loading$.next(false))\n );\n }),\n startWith<{ initial: boolean, response: CollectionData<T> | null }>({initial: true, response: null}),\n shareReplay({refCount: true, bufferSize: 1})\n );\n\n return combineLatest([data$, this.loading$.asObservable()]).pipe(\n switchMap(([data, loading]) => {\n const combined = {...data, loading};\n return this.formatResponse(data?.response).pipe(\n map(response => {\n const data = {...combined, response};\n return {...data, state: this.getState(data)};\n })\n );\n })\n );\n }\n\n private formatResponse(response: CollectionData<T>) {\n if (!response || !this._formatter) {\n return of(response);\n }\n\n const items = response?.data ?? [];\n const data = this._formatter?.(items) ?? items;\n const data$ = isObservable(data) ? data : of(data);\n\n return data$.pipe(\n map(data => ({...response, data}))\n );\n }\n\n private getState(data: { response?: CollectionData<T>, request?: CollectionRequest, error?: Error, loading: boolean, initial: boolean }) {\n if (!!data?.error) {\n return CollectionState.Error;\n }\n\n if (!!data?.initial) {\n return CollectionState.Initial;\n }\n\n const count = data?.response?.data?.length ?? 0;\n if (count <= 0) {\n return CollectionState.Empty;\n }\n\n return CollectionState.Data;\n }\n\n private cacheCollectionData(data: CollectionData<T>) {\n this.raw$.next(data);\n }\n\n private get request() {\n const pageNumber$ = getControlValue<number>(this.pageNumberControl);\n const pageSize$ = getControlValue<number>(this.pageSizeControl);\n const query$ = this.getQueryObservable();\n const queryFields$ = getControlValue<string[]>(this.queryFieldsControl);\n const sort$ = getControlValue<CollectionRequestSort | CollectionRequestSort[]>(this.sortControl);\n\n return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(\n map(([pageNumber, pageSize, query, queryFields, sort]) => ({\n pageNumber,\n pageSize,\n query,\n queryFields,\n sort\n }))\n );\n }\n\n private getQueryObservable() {\n return merge(this.queryControl.valueChanges, defer(() => of(this.queryControl?.value))).pipe(\n debounceTime(400),\n distinctUntilChanged()\n );\n }\n\n}\n\n","import {BbCollectionsTableSorting} from './components/collections-table-sorting/collections-table-sorting.component';\nimport {BbCollectionsTableLabel} from './components/collections-table-label/collections-table-label.component';\nimport {BbCollectionsActions} from './components/collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from './components/collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from './components/collections-pager/collections-pager.component';\nimport {BbCollectionsTable} from './components/collections-table/collections-table.component';\nimport {BbCollectionsGrid} from './components/collections-grid/collections-grid.component';\nimport {BbCollectionsDataRow} from './directives/collections-data-row.directive';\nimport {BbCollectionsInitial} from './directives/collections-initial.directive';\nimport {BbCollectionsEmpty} from './directives/collections-empty.directive';\nimport {BbCollectionsError} from './directives/collections-error.directive';\nimport {BbCollectionsData} from './directives/collections-data.directive';\nimport {BbCollectionsItem} from './directives/collections-item.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbCollectionsViewer,\n BbCollectionsPager,\n BbCollectionsTable,\n BbCollectionsTableSorting,\n BbCollectionsTableLabel,\n BbCollectionsGrid,\n BbCollectionsActions,\n BbCollectionsData,\n BbCollectionsDataRow,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsItem\n ],\n exports: [\n BbCollectionsViewer,\n BbCollectionsPager,\n BbCollectionsTable,\n BbCollectionsTableSorting,\n BbCollectionsTableLabel,\n BbCollectionsGrid,\n BbCollectionsActions,\n BbCollectionsData,\n BbCollectionsDataRow,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsItem\n ]\n})\nexport class CollectionsModule {\n}\n","import {COLLECTIONS_CONFIG, CollectionsConfig} from './collections.interfaces';\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\n\nexport function provideCollectionsConfig(config: CollectionsConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: COLLECTIONS_CONFIG, useValue: config}\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BbCollectionsTable"],"mappings":"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"}
|