@bravobit/bb-foundation 0.51.0 → 0.51.1

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.
Files changed (49) hide show
  1. package/collections/lib/collections.config.d.ts +3 -0
  2. package/collections/lib/collections.interfaces.d.ts +10 -0
  3. package/collections/lib/components/collections-actions/collections-actions.component.d.ts +3 -0
  4. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +3 -0
  5. package/collections/public_api.d.ts +2 -0
  6. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +3 -5
  7. package/dialog/lib/dialog-header/dialog-header.component.d.ts +7 -1
  8. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +4 -7
  9. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +3 -2
  10. package/dialog/lib/dialog.insertion.d.ts +1 -2
  11. package/dialog/lib/dialog.interfaces.d.ts +5 -0
  12. package/dialog/lib/dialog.module.d.ts +5 -6
  13. package/dialog/lib/dialog.service.d.ts +4 -4
  14. package/dialog/lib/directives/confirm.directive.d.ts +2 -1
  15. package/dialog/public_api.d.ts +0 -1
  16. package/elements/lib/checkbox/checkbox.component.d.ts +3 -1
  17. package/elements/lib/elements.module.d.ts +22 -23
  18. package/elements/lib/radio-button/radio-button.component.d.ts +1 -3
  19. package/elements/public_api.d.ts +0 -1
  20. package/fesm2022/bravobit-bb-foundation-collections.mjs +27 -9
  21. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  22. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +4 -4
  23. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  24. package/fesm2022/bravobit-bb-foundation-dialog.mjs +75 -85
  25. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  26. package/fesm2022/bravobit-bb-foundation-elements.mjs +17 -44
  27. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  28. package/fesm2022/bravobit-bb-foundation-localize.mjs +24 -0
  29. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  30. package/fesm2022/bravobit-bb-foundation-notifications.mjs +2 -2
  31. package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
  32. package/fesm2022/bravobit-bb-foundation-table.mjs +26 -8
  33. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  34. package/localize/lib/localizations/dutch.localization.d.ts +6 -0
  35. package/localize/lib/localizations/english.localization.d.ts +6 -0
  36. package/localize/lib/localizations/papiamento.localization.d.ts +6 -0
  37. package/localize/lib/localizations/spanish.localization.d.ts +6 -0
  38. package/localize/lib/transforms/interpolate.transform.d.ts +1 -1
  39. package/localize/lib/transforms/plural.transform.d.ts +1 -1
  40. package/localize/lib/transforms/reference.transform.d.ts +1 -1
  41. package/package.json +5 -5
  42. package/styles/theme.scss +7 -1
  43. package/table/lib/components/table/table.component.d.ts +3 -0
  44. package/table/lib/components/table-pager/table-pager.component.d.ts +3 -0
  45. package/table/lib/interfaces/table.interfaces.d.ts +10 -0
  46. package/table/lib/table.config.d.ts +3 -0
  47. package/table/public_api.d.ts +1 -0
  48. package/dialog/lib/dialog-link/dialog-link.component.d.ts +0 -5
  49. package/elements/lib/directives/addon.directive.d.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap, tap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n private _rawFn: ((data: unknown) => void) | null = null;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n raw(fn: (data: unknown) => void) {\n this._rawFn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n tap(data => {\n if (!this._rawFn) {\n return;\n }\n this._rawFn(data);\n }),\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\nimport {map, share} from 'rxjs/operators';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ],\n imports: [AsyncPipe, BbIcon]\n})\nexport class BbTablePager implements OnInit, ControlValueAccessor {\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\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) {\n return this.calculatePages(pageNumber)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n }\n\n <!-- The list of number buttons to navigate through the list. -->\n @if (list$ | async; as list) {\n @for (item of list; track $index) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n }\n\n <!-- The next page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n }\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {BbFormControl, BbIcon, BbInput, BbSuffix} from '@bravobit/bb-foundation/elements';\nimport {catchError, debounceTime, distinctUntilChanged, map, tap} from 'rxjs/operators';\nimport {combineLatest, defer, merge, Observable, of, Subscription} from 'rxjs';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {BbTablePager} from '../table-pager/table-pager.component';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\n\n@Directive({\n selector: 'ng-template[bbTableColumnDef]'\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: 'ng-template[bbTableRowDef]'\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AsyncPipe, BbLocalize, BbFormControl, BbInput, BbIcon, ReactiveFormsModule, BbSuffix, BbTablePager, BbLocalize]\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl<number>;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl<number>;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl<number>(this._sizes[0]),\n pageNumber: new FormControl<number>(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return merge(this.queryControl.valueChanges, defer(() => of(this.queryControl?.value))).pipe(\n debounceTime(400),\n distinctUntilChanged()\n );\n }\n\n private getFormChanges() {\n return merge(this.form.valueChanges, defer(() => of(this.form?.value)));\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n @if (queryControl?.value?.length <= 0) {\n <bb-icon bbSuffix\n src=\"material:search\">\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n }\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {Attribute, booleanAttribute, ChangeDetectionStrategy, Component, Host, HostListener, Input, OnDestroy, OnInit, Optional, ViewEncapsulation} from '@angular/core';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {AsyncPipe} from '@angular/common';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n encapsulation: ViewEncapsulation.None,\n imports: [AsyncPipe]\n})\nexport class BbTableHeaderCell implements OnInit, OnDestroy {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\n\n // Inputs.\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = getControlValue(this._control);\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n@if (valueChanges$ | async; as value) {\n @if (!isDisabled) {\n <button [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n }\n}\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n ],\n exports: [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n ]\n})\nexport class TableModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;MAIa,iBAAiB,CAAA;;AAGlB,IAAA,SAAS,GAAG,IAAI,eAAe,CAA+B,IAAI,CAAC;AACnE,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAEtD,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACtB,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CACzB;;IAGL,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG9B,MAAM,CAAC,SAAyC,EAAE,EAAA;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;QAG9C,IAAI,YAAY,IAAI,MAAM,KAAK,YAAY,EAAE,KAAK,KAAK,MAAM,EAAE,KAAK,IAAI,YAAY,EAAE,QAAQ,KAAK,MAAM,EAAE,QAAQ,CAAC,EAAE;AAClH,YAAA,MAAM,CAAC,UAAU,GAAG,CAAC;;AAGzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,GAAG,YAAY,EAAE,GAAG,MAAM,EAAC,CAAC;;AAGxD;MAEqB,UAAU,CAAA;AAI/B;;ACvCK,MAAO,iBAA2B,SAAQ,UAAa,CAAA;AAExC,IAAA,WAAW;AACX,IAAA,UAAU;;AAGnB,IAAA,OAAO,GAAG,IAAI,eAAe,CAAiD,EAAE,CAAC;AACjF,IAAA,GAAG,GAAuB,IAAI,IAAI,IAAI;IACtC,MAAM,GAAqC,IAAI;IAEvD,WAAY,CAAA,UAAsB,EACtB,QAAqC,EAAA;AAC7C,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,QAAQ,KAAK;AAClC,cAAE,EAAE,CAAS,QAAQ;cACnB,QAAQ;;AAIlB,IAAA,MAAM,CAAC,IAAkD,EAAA;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC5C,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE3B,QAAA,OAAO,IAAI;;AAGf,IAAA,IAAI,CAAC,EAAsB,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE;AACb,QAAA,OAAO,IAAI;;AAGf,IAAA,GAAG,CAAC,EAA2B,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,OAAO,IAAI;;AAGf,IAAA,MAAM,CAAC,OAA0B,EAAA;AAC7B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EACtE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,MAAM,EAAC,GAAG,QAAQ,EAAE,IAAI,OAAO,IAAI,EAAE,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAC7F;AAED,QAAA,OAAO,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAI;;YAE1C,OAAO,CAAC,YAAY,EAAE;YAEtB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACjD,MAAM,cAAc,GAAG,EAAC,GAAG,eAAe,EAAE,GAAG,WAAW,EAAC;AAE3D,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;AAClC,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,IAAI,IAAG;AACP,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACd;;AAEJ,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;aACpB,CAAC,EACF,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EACtC,GAAG,CAAC,MAAM,KAAK;AACX,gBAAA,GAAG,MAAM;gBACT,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;aACpC,CAAC,CAAC,CACN;AACL,SAAC,CAAC,EACF,KAAK,EAAE,CACV;;AAGG,IAAA,cAAc,GAAG,CAAU,IAAa,KAAI;QAChD,OAAO;AACH,YAAA,QAAQ,EAAE,IAAI,GAAG,WAAW,CAAW;AACvC,YAAA,UAAU,EAAE,IAAI,GAAG,aAAa,CAAW;AAC3C,YAAA,UAAU,EAAE,IAAI,GAAG,aAAa,CAAW;AAC3C,YAAA,YAAY,EAAE,IAAI,GAAG,eAAe,CAAW;AAC/C,YAAA,IAAI,EAAE,IAAI,GAAG,MAAM;SACtB;AACL,KAAC;AAEO,IAAA,YAAY,GAAG,CAAC,IAAoC,KAAI;QAC5D,MAAM,MAAM,GAAG,EAAE;QAEjB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,EAAG,IAAI,EAAE,UAAU,IAAI,CAAC,CAAA,CAAE;QAC3C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAA,EAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAA,CAAE;QAE/C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;aACzB,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI;aACpB,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;aACrB,IAAI,CAAC,GAAG,CAAC;QAEd,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;aAClC,GAAG,CAAC,CAAC,EAAC,SAAS,EAAC,KAAK,SAAS;aAC9B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS;aAC/B,IAAI,CAAC,GAAG,CAAC;AAEd,QAAA,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;AACrB,YAAA,MAAM,CAAC,gBAAgB,CAAC,GAAG,aAAa;;QAG5C,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE;AAC9F,YAAA,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK;AAC7B,YAAA,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;;AAGzD,QAAA,OAAO,MAAM;AACjB,KAAC;AAEJ;;MChGY,YAAY,CAAA;;IAGZ,eAAe,GAAW,CAAC;IAC3B,gBAAgB,GAAY,IAAI;IACH,QAAQ,GAAY,KAAK;;AAG/D,IAAA,mBAAmB;AACnB,IAAA,eAAe;AACf,IAAA,KAAK;;AAGL,IAAA,QAAQ,GAA+B,OAAO,EAAE,CAAC;AACjD,IAAA,SAAS,GAAe,OAAO,EAAE,CAAC;;AAG1B,IAAA,YAAY,GAA4B,IAAI,eAAe,CAAS,CAAC,CAAC;AACtE,IAAA,YAAY,GAA4B,IAAI,eAAe,CAAS,CAAC,CAAC;IAE9E,QAAQ,GAAA;;QAEJ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAC7C,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,CACtC;;AAGD,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAC7E,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,UAAU,KAAK,UAAU,CAAC,CAC/D;;AAGD,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EACjF,KAAK,EAAE,CACV;;AAGL,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;IAGvC,IACI,UAAU,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;;AAGzB,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;IAGvC,IACI,UAAU,CAAC,QAAgB,EAAA;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGzC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGtB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGvB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;AAG9B,IAAA,UAAU,CAAC,QAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;;IAGhC,YAAY,GAAA;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;;IAGhC,QAAQ,GAAA;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;;AAGhC,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAGrB,IAAA,MAAM,CAAC,UAAkB,EAAE,MAAA,GAAkB,IAAI,EAAA;;AAErD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;;AAIJ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAC1B;;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;YAC3C;;;AAIJ,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAEhC,IAAI,MAAM,EAAE;AACR,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;;;AAIhC,IAAA,cAAc,CAAC,UAAkB,EAAA;QACrC,MAAM,GAAG,GAAG,CAAC;AACb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU;AAC3B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;AAEhD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM;aACpB,IAAI,CAAC,CAAC;AACN,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,UAAU,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;;;AAIhD,QAAA,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;;;;QAKrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9C,QAAA,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,GAAG;AAChD,QAAA,IAAI,iBAAiB,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,iBAAiB,CAAC;;;AAIrD,QAAA,OAAO,IAAI;;IAGP,iBAAiB,CAAC,UAAkB,EAAE,UAAkB,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU;AAChC,aAAA,MAAM,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,UAAU;AAC7C,aAAA,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,EAAC,CAAC,CAAC;;uGA9IlD,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAKF,gBAAgB,CAVxB,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI;AACxF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBL,2gDA0CA,EAAA,MAAA,EAAA,CAAA,2lCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDtBc,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAElB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAfxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGT,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,kBAAkB,EAAE;qBACvB,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACP,wBAAA,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI;AACxF,qBAAA,EAAA,OAAA,EACQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,2gDAAA,EAAA,MAAA,EAAA,CAAA,2lCAAA,CAAA,EAAA;8BAKnB,eAAe,EAAA,CAAA;sBAAvB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACqC,QAAQ,EAAA,CAAA;sBAA7C,KAAK;uBAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC;gBAsChC,UAAU,EAAA,CAAA;sBADb;gBAUG,UAAU,EAAA,CAAA;sBADb;;;ME/CQ,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;MAOY,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;MAaY,OAAO,CAAA;;AAGwC,IAAA,oBAAoB;AACX,IAAA,gBAAgB;;IAGxE,UAAU,GAAkB,IAAI;AAChC,IAAA,UAAU;IACV,WAAW,GAAa,EAAE;IAC1B,eAAe,GAA0B,QAAQ;IACjD,MAAM,GAA+B,IAAI;IACzC,MAAM,GAA+B,IAAI;;IAG1C,MAAM,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAE5C,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;;IAGtB,IACI,KAAK,CAAC,QAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;;;AAI9B,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,UAAU;;AAGV,IAAA,IAAI;AACJ,IAAA,YAAY,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;;IAG1B,YAAY,GAAW,CAAC;;AAGxB,IAAA,aAAa;IAErB,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,gBAAgB,EAAE;;IAG3B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;;AAGrC,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;;AAG5B,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAc;;AAG9C,IAAA,IAAI,iBAAiB,GAAA;QACjB,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAwB;;AAG9D,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAwB;;IAG5D,OAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;;AAGhC,IAAA,cAAc,CAAC,MAAc,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,IAAI,MAAM;;AAGvB,IAAA,WAAW,CAAC,QAAkB,EAAA;;AAElC,QAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;;;AAI9D,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;;AAGtB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ;;;;QAKJ,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC7C;;;;QAKJ,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACjC,QAAA,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;;IAGhC,WAAW,GAAA;;AAEf,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;YACtB,QAAQ,EAAE,IAAI,WAAW,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,UAAU,EAAE,IAAI,WAAW,CAAS,CAAC,CAAC;AACtC,YAAA,IAAI,EAAE,IAAI,SAAS,CAAC,EAAE;AACzB,SAAA,CAAC;;IAGE,gBAAgB,GAAA;;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAC,KAAK,EAAE,kBAAkB,EAAC,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACxC;YACD;;;AAIJ,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EACrC,GAAG,CAAC,MAAM,IAAG;AACT,YAAA,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAChE,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,gBAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAC;;AAGnC,YAAA,OAAO,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAC;AACrC,SAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAG;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAE1B,YAAA,MAAM,UAAU,GAAG,KAAK,EAAE,MAAM,IAAI,IAAI;AACxC,YAAA,MAAM,MAAM,GAAG;AACX,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,GAAG,EAAE,oBAAoB;AACzB,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,GAAG,EAAE;aACR;AAED,YAAA,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,eAAe,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC;SACtF,CAAC,CACL;;QAGD,IAAI,CAAC,kBAAkB,EAAE;;IAGrB,kBAAkB,GAAA;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QAErC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;AAC5E,YAAA,MAAM,EAAC,UAAU,EAAE,QAAQ,EAAC,GAAG,IAAI;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC7B,iBAAA,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;AAChD,iBAAA,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE7D,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvB,IAAI;gBACJ,KAAK;gBACL,QAAQ;gBACR,UAAU;gBACV,WAAW,EAAE,IAAI,CAAC;AACrB,aAAA,CAAC;AACN,SAAC,CAAC;;IAGE,eAAe,GAAA;AACnB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CACxF,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,CACzB;;IAGG,cAAc,GAAA;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;;uGAtLlE,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIF,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAS,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,SAAA,EAD9B,gBAAgB,EAAA,IAAA,EAAS,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CzD,u0NAyKA,EAAA,MAAA,EAAA,CAAA,i3FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/Hc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,UAAU,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAErH,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGd,IAAA,EAAA,EAAC,OAAO,EAAE,UAAU,EAAC,EAAA,eAAA,EACV,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,WAC5B,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,u0NAAA,EAAA,MAAA,EAAA,CAAA,i3FAAA,CAAA,EAAA;8BAKnF,oBAAoB,EAAA,CAAA;sBAA3E,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC;gBACW,gBAAgB,EAAA,CAAA;sBAAhF,YAAY;uBAAC,aAAa,EAAE,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAC;gBAGtD,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAUG,KAAK,EAAA,CAAA;sBADR;;;MEvDQ,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,oHCVxB,8CAEM,EAAA,MAAA,EAAA,CAAA,gdAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDQO,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGR,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA,EAAC,OAAO,EAAE,eAAe,EAAC,EACjB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gdAAA,CAAA,EAAA;;;MEY5B,iBAAiB,CAAA;AA4Bc,IAAA,MAAA;AACW,IAAA,KAAA;;IA1BlC,eAAe,GAA8B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IACpE,QAAQ,GAAG,IAAI,WAAW,CAA0B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;;IAGvD,QAAQ,GAAY,KAAK;;AAG/D,IAAA,aAAa;;IAGb,IACI,IAAI,CAAC,KAA8B,EAAA;;QAEnC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvC;;;AAIJ,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGjC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;;IAG9B,WAAwC,CAAA,MAAgB,EACL,KAAc,EAAA;QADzB,IAAM,CAAA,MAAA,GAAN,MAAM;QACK,IAAK,CAAA,KAAA,GAAL,KAAK;;IAGxD,QAAQ,GAAA;;QAEJ,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7B;;;AAIJ,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAC,KAAK,CAA2D,yDAAA,CAAA,CAAC;;;AAIjI,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;;QAG9D,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAGvD,WAAW,GAAA;QACP,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;;QAEjC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7B;;;AAIJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAI3D,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;;IAIvC,OAAO,GAAA;;AAEH,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB;;;;QAKJ,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClF,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;;AAG9C,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;;AAGzC,IAAA,wBAAwB,CAAC,KAA8B,EAAA;;QAE3D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvC;;;AAIJ,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;;QAIxC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;;;;QAKlD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGhC,IAAA,2BAA2B,CAAC,KAAa,EAAA;;AAE7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;;;AAIvC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;AACxE,YAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;AAC3D,YAAA,OAAO,QAAQ;SAClB,EAAE,EAAE,CAAC;;QAGN,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;;AAG1C,IAAA,UAAU,GAAG,CAAC,OAAe,KAAI;QACrC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACpD,KAAC;AA5HQ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kEA6BS,MAAM,EAAA,SAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AA7BhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAOP,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,gBAAgB,CC3BvC,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wXAYA,m1DDMc,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAEV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGf,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,OAAO,EAAE,sBAAsB;AAC/B,wBAAA,kBAAkB,EAAE;AACvB,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAC5B,OAAA,EAAA,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,wXAAA,EAAA,MAAA,EAAA,CAAA,gyDAAA,CAAA,EAAA;;0BA8BP;;0BAAY;;0BACZ;;0BAAY,SAAS;2BAAC,MAAM;yCAtBH,QAAQ,EAAA,CAAA;sBAA7C,KAAK;uBAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC;gBAOhC,IAAI,EAAA,CAAA;sBADP;gBAyDD,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;MEjEZ,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAhBhB,OAAO;YACP,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,WAAW;AACX,YAAA,YAAY,aAGZ,OAAO;YACP,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,YAAY,CAAA,EAAA,CAAA;AAGP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAhBhB,OAAO;YAKP,YAAY,CAAA,EAAA,CAAA;;2FAWP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAlBvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,OAAO;wBACP,gBAAgB;wBAChB,aAAa;wBACb,iBAAiB;wBACjB,WAAW;wBACX;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,OAAO;wBACP,gBAAgB;wBAChB,aAAa;wBACb,iBAAiB;wBACjB,WAAW;wBACX;AACH;AACJ,iBAAA;;;ACvBD;;AAEG;;;;"}
1
+ {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/interfaces/table.interfaces.ts","../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/lib/table.config.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport type TableColumnSortStrategy = 'asc' | 'desc' | 'none';\n\nexport const TABLE_CONFIG = new InjectionToken<TableConfig>('table config');\n\nexport interface TableConfig {\n icons?: {\n actionsSearch?: string;\n actionsClose?: string;\n pagerArrowPrevious?: string;\n pagerArrowNext?: string;\n };\n}\n","import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap, tap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n private _rawFn: ((data: unknown) => void) | null = null;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n raw(fn: (data: unknown) => void) {\n this._rawFn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n tap(data => {\n if (!this._rawFn) {\n return;\n }\n this._rawFn(data);\n }),\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, inject, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {TABLE_CONFIG, TableConfig} from '../../interfaces/table.interfaces';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\nimport {map, share} from 'rxjs/operators';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ],\n imports: [AsyncPipe, BbIcon]\n})\nexport class BbTablePager implements OnInit, ControlValueAccessor {\n\n // Dependencies.\n private readonly _config?: TableConfig = inject(TABLE_CONFIG, {optional: true});\n\n // Readonly data.\n readonly arrowPreviousIconName: string = this._config?.icons?.pagerArrowPrevious ?? 'material:keyboard_arrow_left';\n readonly arrowNextIconName: string = this._config?.icons?.pagerArrowNext ?? 'material:keyboard_arrow_right';\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\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) {\n return this.calculatePages(pageNumber)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon [src]=\"arrowPreviousIconName\"></bb-icon>\n </button>\n </li>\n }\n\n <!-- The list of number buttons to navigate through the list. -->\n @if (list$ | async; as list) {\n @for (item of list; track $index) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n }\n\n <!-- The next page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon [src]=\"arrowNextIconName\"></bb-icon>\n </button>\n </li>\n }\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Directive, inject,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {catchError, debounceTime, distinctUntilChanged, map, tap} from 'rxjs/operators';\nimport {BbFormControl, BbIcon, BbInput} from '@bravobit/bb-foundation/elements';\nimport {combineLatest, defer, merge, Observable, of, Subscription} from 'rxjs';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {TABLE_CONFIG, TableConfig} from '../../interfaces/table.interfaces';\nimport {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {BbTablePager} from '../table-pager/table-pager.component';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\n\n@Directive({\n selector: 'ng-template[bbTableColumnDef]'\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: 'ng-template[bbTableRowDef]'\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AsyncPipe, BbLocalize, BbFormControl, BbInput, BbIcon, ReactiveFormsModule, BbTablePager, BbLocalize]\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: TableConfig = inject(TABLE_CONFIG, {optional: true});\n\n // Readonly data.\n readonly actionsSearchIconName: string = this._config?.icons?.actionsSearch ?? 'material:search';\n readonly actionsCloseIconName: string = this._config?.icons?.actionsClose ?? 'material:close';\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl<number>;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl<number>;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl<number>(this._sizes[0]),\n pageNumber: new FormControl<number>(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return merge(this.queryControl.valueChanges, defer(() => of(this.queryControl?.value))).pipe(\n debounceTime(400),\n distinctUntilChanged()\n );\n }\n\n private getFormChanges() {\n return merge(this.form.valueChanges, defer(() => of(this.form?.value)));\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n @if (queryControl?.value?.length <= 0) {\n <bb-icon [src]=\"actionsSearchIconName\"\n bbSuffix>\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon [src]=\"actionsCloseIconName\"></bb-icon>\n </button>\n }\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {Attribute, booleanAttribute, ChangeDetectionStrategy, Component, Host, HostListener, Input, OnDestroy, OnInit, Optional, ViewEncapsulation} from '@angular/core';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {AsyncPipe} from '@angular/common';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n encapsulation: ViewEncapsulation.None,\n imports: [AsyncPipe]\n})\nexport class BbTableHeaderCell implements OnInit, OnDestroy {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\n\n // Inputs.\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = getControlValue(this._control);\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n@if (valueChanges$ | async; as value) {\n @if (!isDisabled) {\n <button [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n }\n}\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n ],\n exports: [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n ]\n})\nexport class TableModule {\n}\n","import {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {TABLE_CONFIG, TableConfig} from './interfaces/table.interfaces';\n\nexport function provideTableConfig(config: TableConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: TABLE_CONFIG, useValue: config}\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -55,6 +55,12 @@ export declare const extraDutchDictionary: {
55
55
  remove: string;
56
56
  drop: string;
57
57
  };
58
+ dialog: {
59
+ default_confirm_button: string;
60
+ default_cancel_button: string;
61
+ default_title: string;
62
+ default_description: string;
63
+ };
58
64
  times: {
59
65
  tomorrow_at: string;
60
66
  today_at: string;
@@ -55,6 +55,12 @@ export declare const extraEnglishDictionary: {
55
55
  remove: string;
56
56
  drop: string;
57
57
  };
58
+ dialog: {
59
+ default_confirm_button: string;
60
+ default_cancel_button: string;
61
+ default_title: string;
62
+ default_description: string;
63
+ };
58
64
  times: {
59
65
  tomorrow_at: string;
60
66
  today_at: string;
@@ -55,6 +55,12 @@ export declare const extraPapiamentoDictionary: {
55
55
  remove: string;
56
56
  drop: string;
57
57
  };
58
+ dialog: {
59
+ default_confirm_button: string;
60
+ default_cancel_button: string;
61
+ default_title: string;
62
+ default_description: string;
63
+ };
58
64
  times: {
59
65
  tomorrow_at: string;
60
66
  today_at: string;
@@ -55,6 +55,12 @@ export declare const extraSpanishDictionary: {
55
55
  remove: string;
56
56
  drop: string;
57
57
  };
58
+ dialog: {
59
+ default_confirm_button: string;
60
+ default_cancel_button: string;
61
+ default_title: string;
62
+ default_description: string;
63
+ };
58
64
  times: {
59
65
  tomorrow_at: string;
60
66
  today_at: string;
@@ -6,7 +6,7 @@ import { Localize } from '../localize.service';
6
6
  export declare class LocalizeInterpolateTransform extends LocalizeTransform {
7
7
  protected readonly config?: LocalizeConfig;
8
8
  protected readonly functions?: LocalizeFunction[];
9
- protected readonly substitutions: [leftSubstitution: string, rightSubstitution: string];
9
+ protected readonly substitutions: [string, string];
10
10
  protected readonly functionsMap: LocalizeFunctionMap;
11
11
  execute(value: string, data: LocalizeParams['data'], localize: Localize): string;
12
12
  protected parseInterpolationToken(value: string, data: LocalizeParams['data'], localize: Localize): string;
@@ -4,7 +4,7 @@ import { LocalizeTransform } from './abstract.transform';
4
4
  import { Localize } from '../localize.service';
5
5
  export declare class LocalizePluralTransform extends LocalizeTransform {
6
6
  protected readonly config?: LocalizeConfig;
7
- protected readonly substitutions: [leftSubstitution: string, rightSubstitution: string];
7
+ protected readonly substitutions: [string, string];
8
8
  protected readonly defaultAmount = "default";
9
9
  protected readonly multiItemRegex: RegExp;
10
10
  protected readonly singleItemRegex: RegExp;
@@ -4,6 +4,6 @@ import { LocalizeTransform } from './abstract.transform';
4
4
  import { Localize } from '../localize.service';
5
5
  export declare class LocalizeReferenceTransform extends LocalizeTransform {
6
6
  protected readonly config?: LocalizeConfig;
7
- protected readonly substitutions: [leftSubstitution: string, rightSubstitution: string];
7
+ protected readonly substitutions: [string, string];
8
8
  execute(value: string, _: LocalizeParams['data'], localize: Localize): string;
9
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bravobit/bb-foundation",
3
- "version": "0.51.0",
3
+ "version": "0.51.1",
4
4
  "description": "The Angular core foundation of the Bravobit team.",
5
5
  "author": {
6
6
  "name": "Stan van Heumen",
@@ -48,6 +48,10 @@
48
48
  "types": "./combobox/index.d.ts",
49
49
  "default": "./fesm2022/bravobit-bb-foundation-combobox.mjs"
50
50
  },
51
+ "./dialog": {
52
+ "types": "./dialog/index.d.ts",
53
+ "default": "./fesm2022/bravobit-bb-foundation-dialog.mjs"
54
+ },
51
55
  "./dashboard": {
52
56
  "types": "./dashboard/index.d.ts",
53
57
  "default": "./fesm2022/bravobit-bb-foundation-dashboard.mjs"
@@ -56,10 +60,6 @@
56
60
  "types": "./elements/index.d.ts",
57
61
  "default": "./fesm2022/bravobit-bb-foundation-elements.mjs"
58
62
  },
59
- "./dialog": {
60
- "types": "./dialog/index.d.ts",
61
- "default": "./fesm2022/bravobit-bb-foundation-dialog.mjs"
62
- },
63
63
  "./http": {
64
64
  "types": "./http/index.d.ts",
65
65
  "default": "./fesm2022/bravobit-bb-foundation-http.mjs"
package/styles/theme.scss CHANGED
@@ -112,11 +112,14 @@
112
112
 
113
113
  // Collections table label.
114
114
  --bb-collections-table-label-color: var(--bb-primary-color-550);
115
- --bb-collections-table-loader-color: red; //var(--bb-primary-color-500);
115
+ --bb-collections-table-loader-color: var(--bb-primary-color-500);
116
116
 
117
117
  // Spinner.
118
118
  --bb-spinner-color: var(--bb-primary-color-500);
119
119
  --bb-spinner-background-color: #f2f4f6;
120
+
121
+ // Dialog.
122
+ --bb-dialog-border-radius: 0.5rem;
120
123
  }
121
124
  }
122
125
 
@@ -158,5 +161,8 @@
158
161
  --bb-file-picker-border-radius: 0.1875rem;
159
162
  --bb-file-picker-border-color: hsla(213, 8%, 74%, 1);
160
163
  --bb-file-picker-background-color: hsla(300, 100%, 99%, 1);
164
+
165
+ // Legacy dialog styling.
166
+ --bb-dialog-border-radius: 0.25rem;
161
167
  }
162
168
  }
@@ -13,6 +13,9 @@ export declare class BbTableRowDef {
13
13
  static ɵdir: i0.ɵɵDirectiveDeclaration<BbTableRowDef, "ng-template[bbTableRowDef]", never, {}, {}, never, never, true, never>;
14
14
  }
15
15
  export declare class BbTable implements OnInit, OnDestroy {
16
+ private readonly _config?;
17
+ readonly actionsSearchIconName: string;
18
+ readonly actionsCloseIconName: string;
16
19
  tableColumnTemplates: QueryList<TemplateRef<any>>;
17
20
  tableRowTemplate?: TemplateRef<any>;
18
21
  identifier: string | null;
@@ -3,6 +3,9 @@ import { ControlValueAccessor } from '@angular/forms';
3
3
  import { Observable } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class BbTablePager implements OnInit, ControlValueAccessor {
6
+ private readonly _config?;
7
+ readonly arrowPreviousIconName: string;
8
+ readonly arrowNextIconName: string;
6
9
  amountOfButtons: number;
7
10
  showArrowButtons: boolean;
8
11
  disabled: boolean;
@@ -1 +1,11 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  export type TableColumnSortStrategy = 'asc' | 'desc' | 'none';
3
+ export declare const TABLE_CONFIG: InjectionToken<TableConfig>;
4
+ export interface TableConfig {
5
+ icons?: {
6
+ actionsSearch?: string;
7
+ actionsClose?: string;
8
+ pagerArrowPrevious?: string;
9
+ pagerArrowNext?: string;
10
+ };
11
+ }
@@ -0,0 +1,3 @@
1
+ import { EnvironmentProviders } from '@angular/core';
2
+ import { TableConfig } from './interfaces/table.interfaces';
3
+ export declare function provideTableConfig(config: TableConfig): EnvironmentProviders;
@@ -7,3 +7,4 @@ export * from './lib/components/table-cell/table-cell.component';
7
7
  export * from './lib/components/table-header-cell/table-header-cell.component';
8
8
  export * from './lib/components/table-pager/table-pager.component';
9
9
  export * from './lib/table.module';
10
+ export * from './lib/table.config';
@@ -1,5 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class BbDialogLink {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<BbDialogLink, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<BbDialogLink, "[bb-dialog-link]", never, {}, {}, never, ["*"], true, never>;
5
- }
@@ -1,9 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class BbSuffix {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<BbSuffix, never>;
4
- static ɵdir: i0.ɵɵDirectiveDeclaration<BbSuffix, "[bbSuffix]", never, {}, {}, never, never, true, never>;
5
- }
6
- export declare class BbPrefix {
7
- static ɵfac: i0.ɵɵFactoryDeclaration<BbPrefix, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<BbPrefix, "[bbPrefix]", never, {}, {}, never, never, true, never>;
9
- }