@bravobit/bb-foundation 0.20.2 → 0.21.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.
- package/auth/{bravobit-bb-foundation-auth.d.ts → index.d.ts} +0 -0
- package/auth/lib/directives/authenticated.directive.d.ts +1 -1
- package/auth/lib/directives/permission.directive.d.ts +1 -1
- package/auth/lib/directives/role.directive.d.ts +1 -1
- package/collections/{bravobit-bb-foundation-collections.d.ts → index.d.ts} +0 -0
- package/collections/lib/collection.d.ts +6 -6
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +1 -1
- package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +1 -1
- package/collections/lib/components/collections.directive.d.ts +4 -4
- package/controls/{bravobit-bb-foundation-controls.d.ts → index.d.ts} +0 -0
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +10 -10
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +9 -5
- package/dashboard/{bravobit-bb-foundation-dashboard.d.ts → index.d.ts} +0 -0
- package/dashboard/lib/dashboard/dashboard.component.d.ts +1 -1
- package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +1 -1
- package/dialog/{bravobit-bb-foundation-dialog.d.ts → index.d.ts} +0 -0
- package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +1 -1
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +1 -1
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +1 -1
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -1
- package/dialog/lib/dialog-link/dialog-link.component.d.ts +1 -1
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +1 -1
- package/dialog/lib/dialog.insertion.d.ts +1 -1
- package/elements/{bravobit-bb-foundation-elements.d.ts → index.d.ts} +0 -0
- package/elements/lib/avatar/avatar.component.d.ts +1 -1
- package/elements/lib/button/button.component.d.ts +2 -2
- package/elements/lib/checkbox/checkbox.component.d.ts +1 -1
- package/elements/lib/date-picker/date-picker.component.d.ts +2 -2
- package/elements/lib/directives/addon.directive.d.ts +2 -2
- package/elements/lib/directives/autosize.directive.d.ts +1 -1
- package/elements/lib/directives/focus-trap.directive.d.ts +1 -1
- package/elements/lib/directives/focus.directive.d.ts +1 -1
- package/elements/lib/directives/form-submit.directive.d.ts +1 -1
- package/elements/lib/directives/input.directive.d.ts +2 -2
- package/elements/lib/directives/template.directive.d.ts +1 -1
- package/elements/lib/dropdown/dropdown.component.d.ts +2 -2
- package/elements/lib/file-picker/file-picker.component.d.ts +2 -2
- package/elements/lib/form-control/form-control.component.d.ts +1 -1
- package/elements/lib/form-error/form-error.component.d.ts +1 -1
- package/elements/lib/form-group/form-group.component.d.ts +1 -1
- package/elements/lib/icon/icon.component.d.ts +1 -1
- package/elements/lib/image-picker/image-picker.component.d.ts +1 -1
- package/elements/lib/pipes/file-image.pipe.d.ts +1 -1
- package/elements/lib/pipes/file-size.pipe.d.ts +1 -1
- package/elements/lib/pipes/relative-time.pipe.d.ts +1 -1
- package/elements/lib/spinner/spinner.component.d.ts +1 -1
- package/elements/lib/tag/tag.component.d.ts +1 -1
- package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
- package/esm2020/auth/lib/auth.module.mjs +6 -6
- package/esm2020/auth/lib/auth.service.mjs +5 -5
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
- package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
- package/esm2020/auth/lib/directives/role.directive.mjs +3 -3
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +3 -3
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +3 -3
- package/esm2020/auth/lib/helpers/mapper.helper.mjs +3 -3
- package/esm2020/auth/lib/permissions.service.mjs +3 -3
- package/esm2020/collections/lib/collection.mjs +5 -5
- package/esm2020/collections/lib/collections.module.mjs +5 -5
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +6 -6
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +19 -6
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +5 -5
- package/esm2020/controls/lib/controls.module.mjs +5 -5
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +5 -5
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard.module.mjs +5 -5
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +8 -8
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
- package/esm2020/dialog/lib/dialog.module.mjs +7 -9
- package/esm2020/dialog/lib/dialog.service.mjs +3 -3
- package/esm2020/elements/lib/avatar/avatar.component.mjs +3 -3
- package/esm2020/elements/lib/button/button.component.mjs +6 -6
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +5 -5
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +12 -12
- package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/autosize.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/focus-trap.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/focus.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/template.directive.mjs +3 -3
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +7 -7
- package/esm2020/elements/lib/elements.module.mjs +5 -5
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +10 -10
- package/esm2020/elements/lib/form-control/form-control.component.mjs +6 -6
- package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
- package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
- package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +5 -5
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
- package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
- package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
- package/esm2020/http/lib/http.module.mjs +5 -5
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
- package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
- package/esm2020/lib/core/services/exif.service.mjs +3 -3
- package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
- package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
- package/esm2020/lib/core/services/languages.service.mjs +3 -3
- package/esm2020/lib/core/services/network.service.mjs +3 -3
- package/esm2020/lib/core/services/patch.service.mjs +3 -3
- package/esm2020/lib/core/services/platform.service.mjs +3 -3
- package/esm2020/localize/lib/localize.module.mjs +5 -5
- package/esm2020/localize/lib/localize.pipe.mjs +3 -3
- package/esm2020/localize/lib/localize.service.mjs +9 -7
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
- package/esm2020/masking/bravobit-bb-foundation-masking.mjs +5 -0
- package/esm2020/masking/lib/input-mask.directive.mjs +110 -0
- package/esm2020/masking/lib/input-mask.interface.mjs +2 -0
- package/esm2020/masking/lib/masking.module.mjs +16 -0
- package/esm2020/masking/lib/masking.service.mjs +94 -0
- package/esm2020/masking/public_api.mjs +5 -0
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +6 -6
- package/esm2020/notifications/lib/notifications.module.mjs +5 -5
- package/esm2020/notifications/lib/notifications.service.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2020/storage/lib/storage.service.mjs +8 -8
- package/esm2020/table/lib/components/table/table.component.mjs +14 -14
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +4 -4
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +6 -6
- package/esm2020/table/lib/table.module.mjs +5 -5
- package/esm2020/theming/bravobit-bb-foundation-theming.mjs +5 -0
- package/esm2020/theming/lib/themes/checkbox-group.theme.mjs +2 -0
- package/esm2020/theming/lib/themes/checkbox.theme.mjs +2 -0
- package/esm2020/theming/lib/theming.interface.mjs +3 -0
- package/esm2020/theming/lib/theming.module.mjs +38 -0
- package/esm2020/theming/lib/theming.service.mjs +100 -0
- package/esm2020/theming/public_api.mjs +4 -0
- package/fesm2015/bravobit-bb-foundation-auth.mjs +33 -33
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +26 -26
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +31 -18
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +26 -26
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +34 -36
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +143 -143
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-localize.mjs +26 -24
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +235 -0
- package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -0
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +14 -14
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-storage.mjs +7 -7
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +27 -27
- package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-theming.mjs +153 -0
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -0
- package/fesm2015/bravobit-bb-foundation.mjs +24 -24
- package/fesm2020/bravobit-bb-foundation-auth.mjs +33 -33
- package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +26 -26
- package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-controls.mjs +31 -18
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs +26 -26
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dialog.mjs +34 -36
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +143 -143
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-localize.mjs +24 -22
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-masking.mjs +223 -0
- package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -0
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +14 -14
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-storage.mjs +7 -7
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +27 -27
- package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-theming.mjs +143 -0
- package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -0
- package/fesm2020/bravobit-bb-foundation.mjs +24 -24
- package/http/{bravobit-bb-foundation-http.d.ts → index.d.ts} +0 -0
- package/{bravobit-bb-foundation.d.ts → index.d.ts} +0 -0
- package/localize/{bravobit-bb-foundation-localize.d.ts → index.d.ts} +0 -0
- package/localize/lib/localize.pipe.d.ts +1 -1
- package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
- package/localize/lib/views/localize-template-or-string.directive.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/masking/index.d.ts +5 -0
- package/masking/lib/input-mask.directive.d.ts +36 -0
- package/masking/lib/input-mask.interface.d.ts +20 -0
- package/masking/lib/masking.module.d.ts +7 -0
- package/masking/lib/masking.service.d.ts +12 -0
- package/masking/public_api.d.ts +4 -0
- package/notifications/{bravobit-bb-foundation-notifications.d.ts → index.d.ts} +0 -0
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -1
- package/package.json +36 -19
- package/recaptcha/{bravobit-bb-foundation-recaptcha.d.ts → index.d.ts} +0 -0
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +1 -1
- package/rxjs/{bravobit-bb-foundation-rxjs.d.ts → index.d.ts} +0 -0
- package/storage/{bravobit-bb-foundation-storage.d.ts → index.d.ts} +0 -0
- package/table/{bravobit-bb-foundation-table.d.ts → index.d.ts} +0 -0
- package/table/lib/components/table/table.component.d.ts +7 -7
- package/table/lib/components/table-cell/table-cell.component.d.ts +1 -1
- package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +1 -1
- package/table/lib/components/table-pager/table-pager.component.d.ts +1 -1
- package/theming/index.d.ts +5 -0
- package/theming/lib/themes/checkbox-group.theme.d.ts +5 -0
- package/theming/lib/themes/checkbox.theme.d.ts +19 -0
- package/theming/lib/theming.interface.d.ts +14 -0
- package/theming/lib/theming.module.d.ts +13 -0
- package/theming/lib/theming.service.d.ts +24 -0
- package/theming/public_api.d.ts +3 -0
- package/auth/package.json +0 -10
- package/collections/package.json +0 -10
- package/controls/package.json +0 -10
- package/dashboard/package.json +0 -10
- package/dialog/package.json +0 -10
- package/elements/package.json +0 -10
- package/http/package.json +0 -10
- package/localize/package.json +0 -10
- package/notifications/package.json +0 -10
- package/recaptcha/package.json +0 -10
- package/rxjs/package.json +0 -10
- package/storage/package.json +0 -10
- package/table/package.json +0 -10
|
@@ -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';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {filter} from 'rxjs/operators';\r\n\r\nexport class DataSourceRequest {\r\n\r\n // Data.\r\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\r\n private _loading$ = new BehaviorSubject<boolean>(true);\r\n\r\n get loading() {\r\n return this._loading$.asObservable();\r\n }\r\n\r\n get when() {\r\n return this._request$.pipe(\r\n filter(data => !!data)\r\n );\r\n }\r\n\r\n startLoading() {\r\n this._loading$.next(true);\r\n }\r\n\r\n stopLoading() {\r\n this._loading$.next(false);\r\n }\r\n\r\n update(params: Partial<DataSourcePageRequest> = {}) {\r\n const currentValue = this._request$.getValue();\r\n\r\n // Set the page number to 1 if the query or page size was changed.\r\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\r\n params.pageNumber = 1;\r\n }\r\n\r\n this._request$.next({...currentValue, ...params});\r\n }\r\n\r\n}\r\n\r\nexport abstract class DataSource<T = any> {\r\n\r\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\r\n\r\n}\r\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\r\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\r\nimport {DataSource, DataSourceRequest} from './datasource.data';\r\nimport {map, share, switchMap} from 'rxjs/operators';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\nexport class GenericDataSource<T = any> extends DataSource<T> {\r\n\r\n private readonly _httpClient: HttpClient;\r\n private readonly _endpoint$: Observable<string>;\r\n\r\n // Data.\r\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\r\n private _fn: (data: T[]) => T[] = data => data;\r\n\r\n constructor(httpClient: HttpClient,\r\n endpoint: Observable<string> | string) {\r\n super();\r\n\r\n this._httpClient = httpClient;\r\n this._endpoint$ = typeof endpoint === 'string'\r\n ? of<string>(endpoint)\r\n : endpoint;\r\n\r\n }\r\n\r\n append(item: Observable<{ [key: string]: string } | null>) {\r\n const currentValue = this._items$.getValue();\r\n const newValue = [...currentValue, item];\r\n this._items$.next(newValue);\r\n\r\n return this;\r\n }\r\n\r\n data(fn: (data: T[]) => T[]) {\r\n this._fn = fn;\r\n return this;\r\n }\r\n\r\n handle(request: DataSourceRequest) {\r\n const extraParams$ = this._items$.pipe(\r\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\r\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\r\n );\r\n\r\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\r\n switchMap(([params, endpoint, extraParams]) => {\r\n // Start the loading.\r\n request.startLoading();\r\n\r\n const formattedParams = this.formatParams(params);\r\n const combinedParams = {...formattedParams, ...extraParams};\r\n\r\n return this._httpClient.get(endpoint, {\r\n params: combinedParams\r\n }).pipe(\r\n map(data => this.formatResponse(data)),\r\n map(result => ({\r\n ...result,\r\n data: this._fn(result?.data ?? [])\r\n }))\r\n );\r\n }),\r\n share()\r\n );\r\n }\r\n\r\n private formatResponse = <T = any>(data: unknown) => {\r\n return {\r\n pageSize: data?.['page_size'] as number,\r\n pageNumber: data?.['page_number'] as number,\r\n totalPages: data?.['total_pages'] as number,\r\n totalEntries: data?.['total_entries'] as number,\r\n data: data?.['data'] as T[]\r\n };\r\n };\r\n\r\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\r\n const params = {};\r\n\r\n params['page'] = `${data?.pageNumber ?? 1}`;\r\n params['page_size'] = `${data?.pageSize ?? 25}`;\r\n\r\n const sort = (data?.sort ?? [])\r\n .map(({name}) => name)\r\n .filter(name => !!name)\r\n .join(',');\r\n\r\n const sortDirection = (data?.sort ?? [])\r\n .map(({direction}) => direction)\r\n .filter(direction => !!direction)\r\n .join(',');\r\n\r\n if (sort?.length > 0 && sortDirection?.length > 0) {\r\n params['sort'] = sort;\r\n params['sort_direction'] = sortDirection;\r\n }\r\n\r\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\r\n params['query'] = data?.query;\r\n params['query_fields'] = data?.queryFields?.join(',');\r\n }\r\n\r\n return params;\r\n };\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\r\nimport {CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\r\nimport {map, share} from 'rxjs/operators';\r\n\r\nclass BbTablePagerBase {\r\n}\r\n\r\nconst BbTablePagerMixinBase: CanDisableConstructor\r\n & typeof BbTablePagerBase\r\n = mixinDisabled(BbTablePagerBase);\r\n\r\n@Component({\r\n selector: 'bb-table-pager',\r\n templateUrl: './table-pager.component.html',\r\n styleUrls: ['./table-pager.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'class': 'bb-table-pager',\r\n '[class.disabled]': 'disabled'\r\n },\r\n inputs: ['disabled'],\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n providers: [\r\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\r\n ]\r\n})\r\nexport class BbTablePager extends BbTablePagerMixinBase implements OnInit, ControlValueAccessor {\r\n\r\n // Inputs.\r\n @Input() amountOfButtons: number = 5;\r\n @Input() showArrowButtons: boolean = true;\r\n\r\n // Observables.\r\n isPreviousDisabled$: Observable<boolean>;\r\n isNextDisabled$: Observable<boolean>;\r\n list$: Observable<{ page: number, active: boolean }[]>;\r\n\r\n // Methods.\r\n onChange: (newValue: number) => void = () => ({});\r\n onTouched: () => void = () => ({});\r\n trackByIndex = (_, item) => item.page;\r\n\r\n // Data.\r\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\r\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\r\n\r\n ngOnInit() {\r\n // Validate the previous button is disabled.\r\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\r\n map(pageNumber => pageNumber === 1)\r\n );\r\n\r\n // Validate the next button is disabled.\r\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\r\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\r\n );\r\n\r\n // Create the list with page numbers.\r\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\r\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\r\n share()\r\n );\r\n }\r\n\r\n get pageNumber() {\r\n return this._pageNumber$.getValue();\r\n }\r\n\r\n @Input()\r\n set pageNumber(newValue: number) {\r\n this.update(newValue);\r\n }\r\n\r\n get totalPages() {\r\n return this._totalPages$.getValue();\r\n }\r\n\r\n @Input()\r\n set totalPages(newValue: number) {\r\n const newTotalPages = Math.max(1, newValue);\r\n this._totalPages$.next(newTotalPages);\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(newValue: number) {\r\n this.update(newValue, false);\r\n }\r\n\r\n goToPrevious() {\r\n const newValue = this._pageNumber$.getValue() - 1;\r\n return this.update(newValue);\r\n }\r\n\r\n goToNext() {\r\n const newValue = this._pageNumber$.getValue() + 1;\r\n return this.update(newValue);\r\n }\r\n\r\n goToIndex(index: number) {\r\n return this.update(index);\r\n }\r\n\r\n private update(pageNumber: number, notify: boolean = true) {\r\n // You can only update when not disabled.\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n // Calculate the new value.\r\n const newValue = Math.min(\r\n this.totalPages,\r\n Math.max(1, pageNumber)\r\n );\r\n\r\n // Don't do anything if the page number is the same.\r\n if (this._pageNumber$.getValue() === newValue) {\r\n return;\r\n }\r\n\r\n // Push the new value.\r\n this._pageNumber$.next(newValue);\r\n\r\n if (notify) {\r\n return this.onChange(pageNumber);\r\n }\r\n }\r\n\r\n private calculatePages(pageNumber: number) {\r\n const min = 1;\r\n const max = this.totalPages;\r\n const amount = Math.max(1, this.amountOfButtons);\r\n\r\n const data = Array(amount)\r\n .fill(0)\r\n .map((_, index) => pageNumber + (index - 1));\r\n\r\n // Validate if the minimum value less than\r\n // the first value.\r\n if (data[0] < min) {\r\n return data.map(item => item + 1);\r\n }\r\n\r\n // Calculate the difference with the max\r\n // if this value is higher than 0 we should minus it.\r\n const lastValueInArray = data[data.length - 1];\r\n const differenceWithMax = lastValueInArray - max;\r\n if (differenceWithMax > 0) {\r\n return data.map(item => item - differenceWithMax);\r\n }\r\n\r\n // Just return the default data.\r\n return data;\r\n }\r\n\r\n private filterActivePages(pageNumber: number, totalPages: number) {\r\n return this.calculatePages(pageNumber)\r\n .filter(page => page > 0 && page <= totalPages)\r\n .map(page => ({page, active: pageNumber === page}));\r\n }\r\n\r\n}\r\n","<ul class=\"bb-pager-list\">\r\n <!-- The previous page arrow button. -->\r\n <li *ngIf=\"showArrowButtons\"\r\n class=\"bb-pager-list-item\"\r\n title=\"Previous page\">\r\n <button [disabled]=\"isPreviousDisabled$ | async\"\r\n (click)=\"goToPrevious()\"\r\n class=\"bb-pager-list-button\"\r\n type=\"button\">\r\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\r\n </button>\r\n </li>\r\n\r\n <!-- The list of number buttons to navigate through the list. -->\r\n <ng-container *ngIf=\"list$ | async as list\">\r\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\r\n [title]=\"'Page ' + item?.page\"\r\n class=\"bb-pager-list-item\">\r\n <button (click)=\"goToIndex(item?.page)\"\r\n [class.active]=\"item?.active\"\r\n class=\"bb-pager-list-button\"\r\n type=\"button\">\r\n {{ item?.page }}\r\n </button>\r\n </li>\r\n </ng-container>\r\n\r\n <!-- The next page arrow button. -->\r\n <li *ngIf=\"showArrowButtons\"\r\n class=\"bb-pager-list-item\"\r\n title=\"Next page\">\r\n <button [disabled]=\"isNextDisabled$ | async\"\r\n (click)=\"goToNext()\"\r\n class=\"bb-pager-list-button\"\r\n type=\"button\">\r\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component, ContentChild,\r\n ContentChildren,\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n TemplateRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\r\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\r\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\r\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\r\nimport {FormControl, FormGroup} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[bbTableColumnDef]'\r\n})\r\nexport class BbTableColumnDef {\r\n}\r\n\r\n@Directive({\r\n selector: '[bbTableRowDef]'\r\n})\r\nexport class BbTableRowDef {\r\n}\r\n\r\n@Component({\r\n selector: 'bb-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n host: {'class': 'bb-table'},\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class BbTable implements OnInit, OnDestroy {\r\n\r\n // Content.\r\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\r\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\r\n\r\n // Inputs.\r\n @Input() identifier: string | null = null;\r\n @Input() dataSource: DataSource;\r\n @Input() queryFields: string[] = [];\r\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\r\n @Input() header: TemplateRef<any> | boolean = true;\r\n @Input() footer: TemplateRef<any> | boolean = true;\r\n\r\n // Sizes.\r\n private _sizes: number[] = [25, 50, 75, 100];\r\n\r\n get sizes() {\r\n return this._sizes;\r\n }\r\n\r\n @Input()\r\n set sizes(newValue: number[]) {\r\n this.updateSizes(newValue);\r\n }\r\n\r\n // Optimizations.\r\n trackByFn = (index, item) => this.identifier ? item[this.identifier] : index;\r\n trackByValue = (_, item) => item;\r\n\r\n // Data.\r\n request: DataSourceRequest;\r\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\r\n isLoading$: Observable<boolean>;\r\n\r\n // Form.\r\n form: FormGroup;\r\n queryControl = new FormControl('');\r\n\r\n // State.\r\n private _headerCount: number = 0;\r\n\r\n // Subscriptions.\r\n private _subscription: Subscription;\r\n\r\n ngOnInit() {\r\n this.composeForm();\r\n this.watchDataChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscription?.unsubscribe();\r\n }\r\n\r\n get headerCount() {\r\n return this._headerCount;\r\n }\r\n\r\n get sortControl() {\r\n return this.form?.get('sort') as FormGroup;\r\n }\r\n\r\n get pageNumberControl() {\r\n return this.form?.get('pageNumber') as FormControl;\r\n }\r\n\r\n get pageSizeControl() {\r\n return this.form?.get('pageSize') as FormControl;\r\n }\r\n\r\n refresh() {\r\n return this.request.update();\r\n }\r\n\r\n setHeaderCount(amount: -1 | 1) {\r\n this._headerCount += amount;\r\n }\r\n\r\n private updateSizes(newValue: number[]) {\r\n // Validate the sizes has at least one value.\r\n if (newValue.length <= 0) {\r\n throw new Error('Cannot set an empty array as the sizes.');\r\n }\r\n\r\n // Set the new size.\r\n this._sizes = newValue;\r\n\r\n // Validate that the form exists already.\r\n if (!this.form) {\r\n return;\r\n }\r\n\r\n // Check if the current selected value is\r\n // in the new sizes array.\r\n const pageSizeControl = this.form.get('pageSize');\r\n if (this._sizes.includes(pageSizeControl.value)) {\r\n return;\r\n }\r\n\r\n // Set the first value in the array as\r\n // the new value.\r\n const firstValue = this._sizes[0];\r\n pageSizeControl.setValue(firstValue);\r\n }\r\n\r\n private composeForm() {\r\n // Setup the form.\r\n this.form = new FormGroup({\r\n pageSize: new FormControl(this._sizes[0]),\r\n pageNumber: new FormControl(1),\r\n sort: new FormGroup({})\r\n });\r\n }\r\n\r\n private watchDataChanges() {\r\n // Create a new request.\r\n this.request = new DataSourceRequest();\r\n this.isLoading$ = this.request.loading;\r\n\r\n if (!this.dataSource) {\r\n this.data$ = of({state: 'error_datasource'}).pipe(\r\n tap(() => this.request.stopLoading())\r\n );\r\n return;\r\n }\r\n\r\n // Pass the request to the data source.\r\n this.data$ = this.dataSource.handle(this.request).pipe(\r\n tap(() => this.request.stopLoading()),\r\n map(result => {\r\n const count = (result && result.data && result.data.length) || 0;\r\n if (count <= 0) {\r\n return {state: 'empty', result};\r\n }\r\n\r\n return {state: 'success', result};\r\n }),\r\n catchError(error => {\r\n this.request.stopLoading();\r\n\r\n const statusCode = error?.status ?? null;\r\n const states = {\r\n 0: 'error_down',\r\n 401: 'error_unauthorized',\r\n 403: 'error_forbidden',\r\n 404: 'error_not_found',\r\n 500: 'error_server'\r\n };\r\n\r\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\r\n })\r\n );\r\n\r\n // Subscribe to the data changes.\r\n this.subscribeToChanges();\r\n }\r\n\r\n private subscribeToChanges() {\r\n const form$ = this.getFormChanges();\r\n const query$ = this.getQueryChanges();\r\n\r\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\r\n const {pageNumber, pageSize} = form;\r\n const sort = Object.keys(form.sort)\r\n .map(name => ({name, direction: form.sort[name]}))\r\n .filter(item => ['asc', 'desc'].includes(item.direction));\r\n\r\n this.request.startLoading();\r\n return this.request.update({\r\n sort,\r\n query,\r\n pageSize,\r\n pageNumber,\r\n queryFields: this.queryFields\r\n });\r\n });\r\n }\r\n\r\n private getQueryChanges() {\r\n return this.queryControl.valueChanges.pipe(\r\n debounceTime(400),\r\n distinctUntilChanged(),\r\n startWith(this.queryControl.value as string)\r\n );\r\n }\r\n\r\n private getFormChanges() {\r\n return this.form.valueChanges.pipe(\r\n startWith(this.form.value as object)\r\n );\r\n }\r\n\r\n}\r\n","<!--\r\n This is the header of the table. It can be a user\r\n defined custom header or just the default header.\r\n-->\r\n\r\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\r\n class=\"bb-table-top-actions\">\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n</header>\r\n\r\n<!--\r\n This is the table that contains the\r\n rows and columns.\r\n-->\r\n\r\n<div class=\"bb-table-wrapper\">\r\n <div *ngIf=\"isLoading$ | async\"\r\n class=\"bb-table-progress\">\r\n <div class=\"bb-table-indeterminate\"></div>\r\n </div>\r\n <table class=\"bb-table-container\">\r\n <thead>\r\n <tr>\r\n <ng-content select=\"bb-table-header-cell\"></ng-content>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\r\n [ngSwitch]=\"data?.state\">\r\n <ng-container *ngSwitchCase=\"'success'\">\r\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\r\n <ng-container\r\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #tableCellsTemplates>\r\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\r\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\r\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'empty'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_datasource'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_not_found'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_server'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_down'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\r\n class=\"bb-table-bottom-actions\">\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n</footer>\r\n\r\n<ng-template #isLoadingTemplate>\r\n <tr>\r\n <td [attr.colspan]=\"headerCount\"\r\n class=\"bb-table-template\">\r\n <div class=\"bb-table-template-content\">\r\n {{ 'tables.loading' | bbLocalize }}\r\n </div>\r\n </td>\r\n </tr>\r\n</ng-template>\r\n\r\n<!--\r\n This is the template that will be used when the user has not\r\n supplied a custom header template.\r\n-->\r\n\r\n<ng-template #headerTemplate>\r\n <ng-content></ng-content>\r\n <bb-form-control>\r\n <input [formControl]=\"queryControl\"\r\n [placeholder]=\"'tables.search' | bbLocalize\"\r\n bbInput\r\n autocomplete=\"off\">\r\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\r\n bbSuffix\r\n src=\"material:search\">\r\n </bb-icon>\r\n </bb-form-control>\r\n</ng-template>\r\n\r\n<!--\r\n This is the template that will be used when the user has not\r\n supplied a custom footer template.\r\n-->\r\n\r\n<ng-template #footerTemplate>\r\n <bb-form-control *ngIf=\"sizes?.length > 1\">\r\n <select [formControl]=\"pageSizeControl\"\r\n bbInput\r\n title=\"Sizes\">\r\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\r\n [ngValue]=\"item\">\r\n {{ item }} / {{ 'tables.page' | bbLocalize }}\r\n </option>\r\n </select>\r\n </bb-form-control>\r\n\r\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\r\n [formControl]=\"pageNumberControl\">\r\n </bb-table-pager>\r\n</ng-template>\r\n\r\n<!--\r\n This the template that will be used when the user\r\n has filled in some data in the query control.\r\n-->\r\n\r\n<ng-template #closeButtonTemplate>\r\n <button bbSuffix\r\n (click)=\"queryControl?.patchValue('')\"\r\n type=\"button\"\r\n class=\"bb-table-progress-close-query\">\r\n <bb-icon src=\"material:close\"></bb-icon>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\r\n <tr>\r\n <td [attr.colspan]=\"headerCount\"\r\n class=\"bb-table-template\">\r\n <div class=\"bb-table-template-content\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\r\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\r\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\r\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\r\n <path\r\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>\r\n <path fill=\"#FAFAFA\"\r\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>\r\n </g>\r\n </g>\r\n </svg>\r\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\r\n <span *ngIf=\"status as statusCode\"\r\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\r\n </div>\r\n </td>\r\n </tr>\r\n</ng-template>\r\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'bb-table-cell',\r\n templateUrl: './table-cell.component.html',\r\n styleUrls: ['./table-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {'class': 'bb-table-cell'},\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class BbTableCell {\r\n}\r\n","<div>\r\n <ng-content></ng-content>\r\n</div>","import {\r\n Attribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Host,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\r\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\r\nimport {BbTable} from '../table/table.component';\r\nimport {FormControl} from '@angular/forms';\r\nimport {startWith} from 'rxjs/operators';\r\nimport {Observable} from 'rxjs';\r\n\r\nclass BbTableHeaderCellBase {\r\n}\r\n\r\nconst BbTableHeaderCellMixinBase: CanDisableConstructor\r\n & typeof BbTableHeaderCellBase = mixinDisabled(BbTableHeaderCellBase);\r\n\r\n@Component({\r\n selector: 'bb-table-header-cell',\r\n templateUrl: './table-header-cell.component.html',\r\n styleUrls: ['./table-header-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'class': 'bb-table-header-cell',\r\n '[class.disabled]': 'isDisabled'\r\n },\r\n inputs: ['disabled'],\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class BbTableHeaderCell extends BbTableHeaderCellMixinBase implements OnInit, OnDestroy, CanDisable {\r\n\r\n // Constants.\r\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\r\n private readonly _control = new FormControl(this._sortDirections[0]);\r\n\r\n // Data.\r\n valueChanges$: Observable<string>;\r\n\r\n // Sort.\r\n @Input()\r\n set sort(value: TableColumnSortStrategy) {\r\n // Check if the new value is a valid value.\r\n if (!this._sortDirections.includes(value)) {\r\n return;\r\n }\r\n\r\n // Set the value.\r\n this._control.setValue(value);\r\n }\r\n\r\n get sort() {\r\n return this._control.value;\r\n }\r\n\r\n constructor(@Optional() @Host() private _table?: BbTable,\r\n @Optional() @Attribute('name') private _name?: string) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n // Validate that the name and table are set.\r\n this._table?.setHeaderCount?.(1);\r\n if (!this._table || !this._name) {\r\n return;\r\n }\r\n\r\n // Check if the control already exists in the table.\r\n if (this._table.sortControl?.contains(this._name)) {\r\n this.disabled = true;\r\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\r\n }\r\n\r\n // Register the header cell with the table.\r\n this._table.sortControl?.addControl(this._name, this._control);\r\n\r\n // Get all the value changes.\r\n this.valueChanges$ = this._control.valueChanges.pipe(\r\n startWith(this._control.value as string)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this._table?.setHeaderCount?.(-1);\r\n // Validate that the name and table are set.\r\n if (!this._table || !this._name) {\r\n return;\r\n }\r\n\r\n // Un-register the header cell with the table.\r\n if (this._table?.sortControl?.contains(this._name)) {\r\n this._table?.sortControl?.removeControl(this._name);\r\n }\r\n }\r\n\r\n get isDisabled() {\r\n return this.disabled || !this._name;\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n // Check if the header cell is disabled.\r\n if (this.isDisabled) {\r\n return;\r\n }\r\n\r\n // Find the index of the current sort and\r\n // create the new index.\r\n const index = this._sortDirections.findIndex(item => item === this._control.value);\r\n const newIndex = (index + 1) % this._sortDirections.length;\r\n const newSort = this._sortDirections[newIndex];\r\n\r\n // Set the new sort.\r\n return this.updateTableAndHeaderCell(newSort);\r\n }\r\n\r\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\r\n // Check if the new value is a valid value.\r\n if (!this._sortDirections.includes(value)) {\r\n return;\r\n }\r\n\r\n // Validate the table exists.\r\n if (!this._table) {\r\n return this._control.setValue(value);\r\n }\r\n\r\n // Handle the single sorting strategy.\r\n if (this._table.sortingStrategy === 'single') {\r\n return this.handleSingleSortingStrategy(value);\r\n }\r\n\r\n // Default case when no other strategy\r\n // is used.\r\n return this._control.setValue(value);\r\n }\r\n\r\n private handleSingleSortingStrategy(value: string) {\r\n // Get the sort control.\r\n const control = this._table.sortControl;\r\n\r\n // Set each value to false since we only want to\r\n // sort on one property at a time with this strategy.\r\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\r\n previous[current] = current === this._name ? value : 'none';\r\n return previous;\r\n }, {});\r\n\r\n // Patch the entire sort value.\r\n this._table?.sortControl?.patchValue(newValue);\r\n }\r\n\r\n private logWarning = (message: string) => {\r\n console && console.warn && console.warn(message);\r\n };\r\n\r\n}\r\n","<!-- The content. -->\r\n<ng-content></ng-content>\r\n\r\n<!-- The indicator for the sort direction. -->\r\n<ng-container *ngIf=\"valueChanges$ | async as value\">\r\n <button *ngIf=\"!isDisabled\"\r\n [class.asc]=\"value === 'asc'\"\r\n [class.desc]=\"value === 'desc'\"\r\n class=\"bb-table-header-cell-toggle\"\r\n type=\"button\"></button>\r\n</ng-container>\r\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\r\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\r\nimport {BbTablePager} from './components/table-pager/table-pager.component';\r\nimport {BbTableCell} from './components/table-cell/table-cell.component';\r\nimport {ElementsModule} from '@bravobit/bb-foundation/elements';\r\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\r\nimport {ReactiveFormsModule} from '@angular/forms';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\n\r\nconst DECLARATIONS_EXPORTS = [\r\n BbTable,\r\n BbTableColumnDef,\r\n BbTableRowDef,\r\n BbTableHeaderCell,\r\n BbTableCell,\r\n BbTablePager\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],\r\n declarations: [...DECLARATIONS_EXPORTS],\r\n exports: [...DECLARATIONS_EXPORTS]\r\n})\r\nexport class TableModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i2.BbTablePager"],"mappings":"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"}
|
|
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';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {filter} from 'rxjs/operators';\r\n\r\nexport class DataSourceRequest {\r\n\r\n // Data.\r\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\r\n private _loading$ = new BehaviorSubject<boolean>(true);\r\n\r\n get loading() {\r\n return this._loading$.asObservable();\r\n }\r\n\r\n get when() {\r\n return this._request$.pipe(\r\n filter(data => !!data)\r\n );\r\n }\r\n\r\n startLoading() {\r\n this._loading$.next(true);\r\n }\r\n\r\n stopLoading() {\r\n this._loading$.next(false);\r\n }\r\n\r\n update(params: Partial<DataSourcePageRequest> = {}) {\r\n const currentValue = this._request$.getValue();\r\n\r\n // Set the page number to 1 if the query or page size was changed.\r\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\r\n params.pageNumber = 1;\r\n }\r\n\r\n this._request$.next({...currentValue, ...params});\r\n }\r\n\r\n}\r\n\r\nexport abstract class DataSource<T = any> {\r\n\r\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\r\n\r\n}\r\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\r\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\r\nimport {DataSource, DataSourceRequest} from './datasource.data';\r\nimport {map, share, switchMap} from 'rxjs/operators';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\nexport class GenericDataSource<T = any> extends DataSource<T> {\r\n\r\n private readonly _httpClient: HttpClient;\r\n private readonly _endpoint$: Observable<string>;\r\n\r\n // Data.\r\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\r\n private _fn: (data: T[]) => T[] = data => data;\r\n\r\n constructor(httpClient: HttpClient,\r\n endpoint: Observable<string> | string) {\r\n super();\r\n\r\n this._httpClient = httpClient;\r\n this._endpoint$ = typeof endpoint === 'string'\r\n ? of<string>(endpoint)\r\n : endpoint;\r\n\r\n }\r\n\r\n append(item: Observable<{ [key: string]: string } | null>) {\r\n const currentValue = this._items$.getValue();\r\n const newValue = [...currentValue, item];\r\n this._items$.next(newValue);\r\n\r\n return this;\r\n }\r\n\r\n data(fn: (data: T[]) => T[]) {\r\n this._fn = fn;\r\n return this;\r\n }\r\n\r\n handle(request: DataSourceRequest) {\r\n const extraParams$ = this._items$.pipe(\r\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\r\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\r\n );\r\n\r\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\r\n switchMap(([params, endpoint, extraParams]) => {\r\n // Start the loading.\r\n request.startLoading();\r\n\r\n const formattedParams = this.formatParams(params);\r\n const combinedParams = {...formattedParams, ...extraParams};\r\n\r\n return this._httpClient.get(endpoint, {\r\n params: combinedParams\r\n }).pipe(\r\n map(data => this.formatResponse(data)),\r\n map(result => ({\r\n ...result,\r\n data: this._fn(result?.data ?? [])\r\n }))\r\n );\r\n }),\r\n share()\r\n );\r\n }\r\n\r\n private formatResponse = <T = any>(data: unknown) => {\r\n return {\r\n pageSize: data?.['page_size'] as number,\r\n pageNumber: data?.['page_number'] as number,\r\n totalPages: data?.['total_pages'] as number,\r\n totalEntries: data?.['total_entries'] as number,\r\n data: data?.['data'] as T[]\r\n };\r\n };\r\n\r\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\r\n const params = {};\r\n\r\n params['page'] = `${data?.pageNumber ?? 1}`;\r\n params['page_size'] = `${data?.pageSize ?? 25}`;\r\n\r\n const sort = (data?.sort ?? [])\r\n .map(({name}) => name)\r\n .filter(name => !!name)\r\n .join(',');\r\n\r\n const sortDirection = (data?.sort ?? [])\r\n .map(({direction}) => direction)\r\n .filter(direction => !!direction)\r\n .join(',');\r\n\r\n if (sort?.length > 0 && sortDirection?.length > 0) {\r\n params['sort'] = sort;\r\n params['sort_direction'] = sortDirection;\r\n }\r\n\r\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\r\n params['query'] = data?.query;\r\n params['query_fields'] = data?.queryFields?.join(',');\r\n }\r\n\r\n return params;\r\n };\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\r\nimport {CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\r\nimport {map, share} from 'rxjs/operators';\r\n\r\nclass BbTablePagerBase {\r\n}\r\n\r\nconst BbTablePagerMixinBase: CanDisableConstructor\r\n & typeof BbTablePagerBase\r\n = mixinDisabled(BbTablePagerBase);\r\n\r\n@Component({\r\n selector: 'bb-table-pager',\r\n templateUrl: './table-pager.component.html',\r\n styleUrls: ['./table-pager.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'class': 'bb-table-pager',\r\n '[class.disabled]': 'disabled'\r\n },\r\n inputs: ['disabled'],\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n providers: [\r\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\r\n ]\r\n})\r\nexport class BbTablePager extends BbTablePagerMixinBase implements OnInit, ControlValueAccessor {\r\n\r\n // Inputs.\r\n @Input() amountOfButtons: number = 5;\r\n @Input() showArrowButtons: boolean = true;\r\n\r\n // Observables.\r\n isPreviousDisabled$: Observable<boolean>;\r\n isNextDisabled$: Observable<boolean>;\r\n list$: Observable<{ page: number, active: boolean }[]>;\r\n\r\n // Methods.\r\n onChange: (newValue: number) => void = () => ({});\r\n onTouched: () => void = () => ({});\r\n trackByIndex = (_, item) => item.page;\r\n\r\n // Data.\r\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\r\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\r\n\r\n ngOnInit() {\r\n // Validate the previous button is disabled.\r\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\r\n map(pageNumber => pageNumber === 1)\r\n );\r\n\r\n // Validate the next button is disabled.\r\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\r\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\r\n );\r\n\r\n // Create the list with page numbers.\r\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\r\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\r\n share()\r\n );\r\n }\r\n\r\n get pageNumber() {\r\n return this._pageNumber$.getValue();\r\n }\r\n\r\n @Input()\r\n set pageNumber(newValue: number) {\r\n this.update(newValue);\r\n }\r\n\r\n get totalPages() {\r\n return this._totalPages$.getValue();\r\n }\r\n\r\n @Input()\r\n set totalPages(newValue: number) {\r\n const newTotalPages = Math.max(1, newValue);\r\n this._totalPages$.next(newTotalPages);\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(newValue: number) {\r\n this.update(newValue, false);\r\n }\r\n\r\n goToPrevious() {\r\n const newValue = this._pageNumber$.getValue() - 1;\r\n return this.update(newValue);\r\n }\r\n\r\n goToNext() {\r\n const newValue = this._pageNumber$.getValue() + 1;\r\n return this.update(newValue);\r\n }\r\n\r\n goToIndex(index: number) {\r\n return this.update(index);\r\n }\r\n\r\n private update(pageNumber: number, notify: boolean = true) {\r\n // You can only update when not disabled.\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n // Calculate the new value.\r\n const newValue = Math.min(\r\n this.totalPages,\r\n Math.max(1, pageNumber)\r\n );\r\n\r\n // Don't do anything if the page number is the same.\r\n if (this._pageNumber$.getValue() === newValue) {\r\n return;\r\n }\r\n\r\n // Push the new value.\r\n this._pageNumber$.next(newValue);\r\n\r\n if (notify) {\r\n return this.onChange(pageNumber);\r\n }\r\n }\r\n\r\n private calculatePages(pageNumber: number) {\r\n const min = 1;\r\n const max = this.totalPages;\r\n const amount = Math.max(1, this.amountOfButtons);\r\n\r\n const data = Array(amount)\r\n .fill(0)\r\n .map((_, index) => pageNumber + (index - 1));\r\n\r\n // Validate if the minimum value less than\r\n // the first value.\r\n if (data[0] < min) {\r\n return data.map(item => item + 1);\r\n }\r\n\r\n // Calculate the difference with the max\r\n // if this value is higher than 0 we should minus it.\r\n const lastValueInArray = data[data.length - 1];\r\n const differenceWithMax = lastValueInArray - max;\r\n if (differenceWithMax > 0) {\r\n return data.map(item => item - differenceWithMax);\r\n }\r\n\r\n // Just return the default data.\r\n return data;\r\n }\r\n\r\n private filterActivePages(pageNumber: number, totalPages: number) {\r\n return this.calculatePages(pageNumber)\r\n .filter(page => page > 0 && page <= totalPages)\r\n .map(page => ({page, active: pageNumber === page}));\r\n }\r\n\r\n}\r\n","<ul class=\"bb-pager-list\">\r\n <!-- The previous page arrow button. -->\r\n <li *ngIf=\"showArrowButtons\"\r\n class=\"bb-pager-list-item\"\r\n title=\"Previous page\">\r\n <button [disabled]=\"isPreviousDisabled$ | async\"\r\n (click)=\"goToPrevious()\"\r\n class=\"bb-pager-list-button\"\r\n type=\"button\">\r\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\r\n </button>\r\n </li>\r\n\r\n <!-- The list of number buttons to navigate through the list. -->\r\n <ng-container *ngIf=\"list$ | async as list\">\r\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\r\n [title]=\"'Page ' + item?.page\"\r\n class=\"bb-pager-list-item\">\r\n <button (click)=\"goToIndex(item?.page)\"\r\n [class.active]=\"item?.active\"\r\n class=\"bb-pager-list-button\"\r\n type=\"button\">\r\n {{ item?.page }}\r\n </button>\r\n </li>\r\n </ng-container>\r\n\r\n <!-- The next page arrow button. -->\r\n <li *ngIf=\"showArrowButtons\"\r\n class=\"bb-pager-list-item\"\r\n title=\"Next page\">\r\n <button [disabled]=\"isNextDisabled$ | async\"\r\n (click)=\"goToNext()\"\r\n class=\"bb-pager-list-button\"\r\n type=\"button\">\r\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component, ContentChild,\r\n ContentChildren,\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n TemplateRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\r\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\r\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\r\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\r\nimport {FormControl, FormGroup} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[bbTableColumnDef]'\r\n})\r\nexport class BbTableColumnDef {\r\n}\r\n\r\n@Directive({\r\n selector: '[bbTableRowDef]'\r\n})\r\nexport class BbTableRowDef {\r\n}\r\n\r\n@Component({\r\n selector: 'bb-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n host: {'class': 'bb-table'},\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class BbTable implements OnInit, OnDestroy {\r\n\r\n // Content.\r\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\r\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\r\n\r\n // Inputs.\r\n @Input() identifier: string | null = null;\r\n @Input() dataSource: DataSource;\r\n @Input() queryFields: string[] = [];\r\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\r\n @Input() header: TemplateRef<any> | boolean = true;\r\n @Input() footer: TemplateRef<any> | boolean = true;\r\n\r\n // Sizes.\r\n private _sizes: number[] = [25, 50, 75, 100];\r\n\r\n get sizes() {\r\n return this._sizes;\r\n }\r\n\r\n @Input()\r\n set sizes(newValue: number[]) {\r\n this.updateSizes(newValue);\r\n }\r\n\r\n // Optimizations.\r\n trackByFn = (index, item) => this.identifier ? item[this.identifier] : index;\r\n trackByValue = (_, item) => item;\r\n\r\n // Data.\r\n request: DataSourceRequest;\r\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\r\n isLoading$: Observable<boolean>;\r\n\r\n // Form.\r\n form: FormGroup;\r\n queryControl = new FormControl('');\r\n\r\n // State.\r\n private _headerCount: number = 0;\r\n\r\n // Subscriptions.\r\n private _subscription: Subscription;\r\n\r\n ngOnInit() {\r\n this.composeForm();\r\n this.watchDataChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscription?.unsubscribe();\r\n }\r\n\r\n get headerCount() {\r\n return this._headerCount;\r\n }\r\n\r\n get sortControl() {\r\n return this.form?.get('sort') as FormGroup;\r\n }\r\n\r\n get pageNumberControl() {\r\n return this.form?.get('pageNumber') as FormControl<number>;\r\n }\r\n\r\n get pageSizeControl() {\r\n return this.form?.get('pageSize') as FormControl<number>;\r\n }\r\n\r\n refresh() {\r\n return this.request.update();\r\n }\r\n\r\n setHeaderCount(amount: -1 | 1) {\r\n this._headerCount += amount;\r\n }\r\n\r\n private updateSizes(newValue: number[]) {\r\n // Validate the sizes has at least one value.\r\n if (newValue.length <= 0) {\r\n throw new Error('Cannot set an empty array as the sizes.');\r\n }\r\n\r\n // Set the new size.\r\n this._sizes = newValue;\r\n\r\n // Validate that the form exists already.\r\n if (!this.form) {\r\n return;\r\n }\r\n\r\n // Check if the current selected value is\r\n // in the new sizes array.\r\n const pageSizeControl = this.form.get('pageSize');\r\n if (this._sizes.includes(pageSizeControl.value)) {\r\n return;\r\n }\r\n\r\n // Set the first value in the array as\r\n // the new value.\r\n const firstValue = this._sizes[0];\r\n pageSizeControl.setValue(firstValue);\r\n }\r\n\r\n private composeForm() {\r\n // Setup the form.\r\n this.form = new FormGroup({\r\n pageSize: new FormControl<number>(this._sizes[0]),\r\n pageNumber: new FormControl<number>(1),\r\n sort: new FormGroup({})\r\n });\r\n }\r\n\r\n private watchDataChanges() {\r\n // Create a new request.\r\n this.request = new DataSourceRequest();\r\n this.isLoading$ = this.request.loading;\r\n\r\n if (!this.dataSource) {\r\n this.data$ = of({state: 'error_datasource'}).pipe(\r\n tap(() => this.request.stopLoading())\r\n );\r\n return;\r\n }\r\n\r\n // Pass the request to the data source.\r\n this.data$ = this.dataSource.handle(this.request).pipe(\r\n tap(() => this.request.stopLoading()),\r\n map(result => {\r\n const count = (result && result.data && result.data.length) || 0;\r\n if (count <= 0) {\r\n return {state: 'empty', result};\r\n }\r\n\r\n return {state: 'success', result};\r\n }),\r\n catchError(error => {\r\n this.request.stopLoading();\r\n\r\n const statusCode = error?.status ?? null;\r\n const states = {\r\n 0: 'error_down',\r\n 401: 'error_unauthorized',\r\n 403: 'error_forbidden',\r\n 404: 'error_not_found',\r\n 500: 'error_server'\r\n };\r\n\r\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\r\n })\r\n );\r\n\r\n // Subscribe to the data changes.\r\n this.subscribeToChanges();\r\n }\r\n\r\n private subscribeToChanges() {\r\n const form$ = this.getFormChanges();\r\n const query$ = this.getQueryChanges();\r\n\r\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\r\n const {pageNumber, pageSize} = form;\r\n const sort = Object.keys(form.sort)\r\n .map(name => ({name, direction: form.sort[name]}))\r\n .filter(item => ['asc', 'desc'].includes(item.direction));\r\n\r\n this.request.startLoading();\r\n return this.request.update({\r\n sort,\r\n query,\r\n pageSize,\r\n pageNumber,\r\n queryFields: this.queryFields\r\n });\r\n });\r\n }\r\n\r\n private getQueryChanges() {\r\n return this.queryControl.valueChanges.pipe(\r\n debounceTime(400),\r\n distinctUntilChanged(),\r\n startWith(this.queryControl.value as string)\r\n );\r\n }\r\n\r\n private getFormChanges() {\r\n return this.form.valueChanges.pipe(\r\n startWith(this.form.value as object)\r\n );\r\n }\r\n\r\n}\r\n","<!--\r\n This is the header of the table. It can be a user\r\n defined custom header or just the default header.\r\n-->\r\n\r\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\r\n class=\"bb-table-top-actions\">\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n</header>\r\n\r\n<!--\r\n This is the table that contains the\r\n rows and columns.\r\n-->\r\n\r\n<div class=\"bb-table-wrapper\">\r\n <div *ngIf=\"isLoading$ | async\"\r\n class=\"bb-table-progress\">\r\n <div class=\"bb-table-indeterminate\"></div>\r\n </div>\r\n <table class=\"bb-table-container\">\r\n <thead>\r\n <tr>\r\n <ng-content select=\"bb-table-header-cell\"></ng-content>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\r\n [ngSwitch]=\"data?.state\">\r\n <ng-container *ngSwitchCase=\"'success'\">\r\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\r\n <ng-container\r\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #tableCellsTemplates>\r\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\r\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\r\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'empty'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_datasource'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_not_found'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_server'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'error_down'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container\r\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\r\n class=\"bb-table-bottom-actions\">\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n</footer>\r\n\r\n<ng-template #isLoadingTemplate>\r\n <tr>\r\n <td [attr.colspan]=\"headerCount\"\r\n class=\"bb-table-template\">\r\n <div class=\"bb-table-template-content\">\r\n {{ 'tables.loading' | bbLocalize }}\r\n </div>\r\n </td>\r\n </tr>\r\n</ng-template>\r\n\r\n<!--\r\n This is the template that will be used when the user has not\r\n supplied a custom header template.\r\n-->\r\n\r\n<ng-template #headerTemplate>\r\n <ng-content></ng-content>\r\n <bb-form-control>\r\n <input [formControl]=\"queryControl\"\r\n [placeholder]=\"'tables.search' | bbLocalize\"\r\n bbInput\r\n autocomplete=\"off\">\r\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\r\n bbSuffix\r\n src=\"material:search\">\r\n </bb-icon>\r\n </bb-form-control>\r\n</ng-template>\r\n\r\n<!--\r\n This is the template that will be used when the user has not\r\n supplied a custom footer template.\r\n-->\r\n\r\n<ng-template #footerTemplate>\r\n <bb-form-control *ngIf=\"sizes?.length > 1\">\r\n <select [formControl]=\"pageSizeControl\"\r\n bbInput\r\n title=\"Sizes\">\r\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\r\n [ngValue]=\"item\">\r\n {{ item }} / {{ 'tables.page' | bbLocalize }}\r\n </option>\r\n </select>\r\n </bb-form-control>\r\n\r\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\r\n [formControl]=\"pageNumberControl\">\r\n </bb-table-pager>\r\n</ng-template>\r\n\r\n<!--\r\n This the template that will be used when the user\r\n has filled in some data in the query control.\r\n-->\r\n\r\n<ng-template #closeButtonTemplate>\r\n <button bbSuffix\r\n (click)=\"queryControl?.patchValue('')\"\r\n type=\"button\"\r\n class=\"bb-table-progress-close-query\">\r\n <bb-icon src=\"material:close\"></bb-icon>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\r\n <tr>\r\n <td [attr.colspan]=\"headerCount\"\r\n class=\"bb-table-template\">\r\n <div class=\"bb-table-template-content\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\r\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\r\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\r\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\r\n <path\r\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>\r\n <path fill=\"#FAFAFA\"\r\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>\r\n </g>\r\n </g>\r\n </svg>\r\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\r\n <span *ngIf=\"status as statusCode\"\r\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\r\n </div>\r\n </td>\r\n </tr>\r\n</ng-template>\r\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'bb-table-cell',\r\n templateUrl: './table-cell.component.html',\r\n styleUrls: ['./table-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {'class': 'bb-table-cell'},\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class BbTableCell {\r\n}\r\n","<div>\r\n <ng-content></ng-content>\r\n</div>","import {\r\n Attribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Host,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\r\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\r\nimport {BbTable} from '../table/table.component';\r\nimport {FormControl} from '@angular/forms';\r\nimport {startWith} from 'rxjs/operators';\r\nimport {Observable} from 'rxjs';\r\n\r\nclass BbTableHeaderCellBase {\r\n}\r\n\r\nconst BbTableHeaderCellMixinBase: CanDisableConstructor\r\n & typeof BbTableHeaderCellBase = mixinDisabled(BbTableHeaderCellBase);\r\n\r\n@Component({\r\n selector: 'bb-table-header-cell',\r\n templateUrl: './table-header-cell.component.html',\r\n styleUrls: ['./table-header-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'class': 'bb-table-header-cell',\r\n '[class.disabled]': 'isDisabled'\r\n },\r\n inputs: ['disabled'],\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false\r\n})\r\nexport class BbTableHeaderCell extends BbTableHeaderCellMixinBase implements OnInit, OnDestroy, CanDisable {\r\n\r\n // Constants.\r\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\r\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\r\n\r\n // Data.\r\n valueChanges$: Observable<string>;\r\n\r\n // Sort.\r\n @Input()\r\n set sort(value: TableColumnSortStrategy) {\r\n // Check if the new value is a valid value.\r\n if (!this._sortDirections.includes(value)) {\r\n return;\r\n }\r\n\r\n // Set the value.\r\n this._control.setValue(value);\r\n }\r\n\r\n get sort() {\r\n return this._control.value;\r\n }\r\n\r\n constructor(@Optional() @Host() private _table?: BbTable,\r\n @Optional() @Attribute('name') private _name?: string) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n // Validate that the name and table are set.\r\n this._table?.setHeaderCount?.(1);\r\n if (!this._table || !this._name) {\r\n return;\r\n }\r\n\r\n // Check if the control already exists in the table.\r\n if (this._table.sortControl?.contains(this._name)) {\r\n this.disabled = true;\r\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\r\n }\r\n\r\n // Register the header cell with the table.\r\n this._table.sortControl?.addControl(this._name, this._control);\r\n\r\n // Get all the value changes.\r\n this.valueChanges$ = this._control.valueChanges.pipe(\r\n startWith(this._control.value as string)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this._table?.setHeaderCount?.(-1);\r\n // Validate that the name and table are set.\r\n if (!this._table || !this._name) {\r\n return;\r\n }\r\n\r\n // Un-register the header cell with the table.\r\n if (this._table?.sortControl?.contains(this._name)) {\r\n this._table?.sortControl?.removeControl(this._name);\r\n }\r\n }\r\n\r\n get isDisabled() {\r\n return this.disabled || !this._name;\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n // Check if the header cell is disabled.\r\n if (this.isDisabled) {\r\n return;\r\n }\r\n\r\n // Find the index of the current sort and\r\n // create the new index.\r\n const index = this._sortDirections.findIndex(item => item === this._control.value);\r\n const newIndex = (index + 1) % this._sortDirections.length;\r\n const newSort = this._sortDirections[newIndex];\r\n\r\n // Set the new sort.\r\n return this.updateTableAndHeaderCell(newSort);\r\n }\r\n\r\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\r\n // Check if the new value is a valid value.\r\n if (!this._sortDirections.includes(value)) {\r\n return;\r\n }\r\n\r\n // Validate the table exists.\r\n if (!this._table) {\r\n return this._control.setValue(value);\r\n }\r\n\r\n // Handle the single sorting strategy.\r\n if (this._table.sortingStrategy === 'single') {\r\n return this.handleSingleSortingStrategy(value);\r\n }\r\n\r\n // Default case when no other strategy\r\n // is used.\r\n return this._control.setValue(value);\r\n }\r\n\r\n private handleSingleSortingStrategy(value: string) {\r\n // Get the sort control.\r\n const control = this._table.sortControl;\r\n\r\n // Set each value to false since we only want to\r\n // sort on one property at a time with this strategy.\r\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\r\n previous[current] = current === this._name ? value : 'none';\r\n return previous;\r\n }, {});\r\n\r\n // Patch the entire sort value.\r\n this._table?.sortControl?.patchValue(newValue);\r\n }\r\n\r\n private logWarning = (message: string) => {\r\n console && console.warn && console.warn(message);\r\n };\r\n\r\n}\r\n","<!-- The content. -->\r\n<ng-content></ng-content>\r\n\r\n<!-- The indicator for the sort direction. -->\r\n<ng-container *ngIf=\"valueChanges$ | async as value\">\r\n <button *ngIf=\"!isDisabled\"\r\n [class.asc]=\"value === 'asc'\"\r\n [class.desc]=\"value === 'desc'\"\r\n class=\"bb-table-header-cell-toggle\"\r\n type=\"button\"></button>\r\n</ng-container>\r\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\r\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\r\nimport {BbTablePager} from './components/table-pager/table-pager.component';\r\nimport {BbTableCell} from './components/table-cell/table-cell.component';\r\nimport {ElementsModule} from '@bravobit/bb-foundation/elements';\r\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\r\nimport {ReactiveFormsModule} from '@angular/forms';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\n\r\nconst DECLARATIONS_EXPORTS = [\r\n BbTable,\r\n BbTableColumnDef,\r\n BbTableRowDef,\r\n BbTableHeaderCell,\r\n BbTableCell,\r\n BbTablePager\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],\r\n declarations: [...DECLARATIONS_EXPORTS],\r\n exports: [...DECLARATIONS_EXPORTS]\r\n})\r\nexport class TableModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i4.BbTablePager"],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { __rest } from 'tslib';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Injectable, Optional, Inject, APP_INITIALIZER, NgModule, SkipSelf } from '@angular/core';
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class ThemingOptions {
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
class Theming {
|
|
10
|
+
constructor(_options, _rendererFactory, _document) {
|
|
11
|
+
this._options = _options;
|
|
12
|
+
this._rendererFactory = _rendererFactory;
|
|
13
|
+
this._document = _document;
|
|
14
|
+
// Readonly data.
|
|
15
|
+
this._attribute = 'data-theme';
|
|
16
|
+
this._renderer = this._rendererFactory.createRenderer(null, null);
|
|
17
|
+
// State.
|
|
18
|
+
this._currentTheme = null;
|
|
19
|
+
this.setCssVariables();
|
|
20
|
+
this.setFirstTheme();
|
|
21
|
+
}
|
|
22
|
+
get all() {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
return (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.themes) !== null && _b !== void 0 ? _b : [];
|
|
25
|
+
}
|
|
26
|
+
get current() {
|
|
27
|
+
var _a;
|
|
28
|
+
return (_a = this._currentTheme) !== null && _a !== void 0 ? _a : null;
|
|
29
|
+
}
|
|
30
|
+
set(name) {
|
|
31
|
+
var _a;
|
|
32
|
+
const theme = (_a = this.all) === null || _a === void 0 ? void 0 : _a.find(theme => (theme === null || theme === void 0 ? void 0 : theme.name) === name);
|
|
33
|
+
if (!theme) {
|
|
34
|
+
throw new Error('Invalid theme.');
|
|
35
|
+
}
|
|
36
|
+
const document = this._document.documentElement;
|
|
37
|
+
if (!document) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this._renderer.setAttribute(document, this._attribute, name);
|
|
41
|
+
this._currentTheme = theme;
|
|
42
|
+
}
|
|
43
|
+
setCssVariables() {
|
|
44
|
+
var _a, _b, _c;
|
|
45
|
+
const style = this._renderer.createElement('style');
|
|
46
|
+
this._renderer.setAttribute(style, 'id', 'theming-style');
|
|
47
|
+
const variables = this.getCssVariables();
|
|
48
|
+
this._renderer.setProperty(style, 'innerHTML', variables);
|
|
49
|
+
const head = (_b = (_a = this._document) === null || _a === void 0 ? void 0 : _a.head) !== null && _b !== void 0 ? _b : null;
|
|
50
|
+
if (!head) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this._renderer.appendChild((_c = this._document) === null || _c === void 0 ? void 0 : _c.head, style);
|
|
54
|
+
}
|
|
55
|
+
getCssVariables() {
|
|
56
|
+
return this.all
|
|
57
|
+
.map(theme => `:root[${this._attribute}="${theme === null || theme === void 0 ? void 0 : theme.name}"] {${this.getThemeContents(theme)}}`)
|
|
58
|
+
.join('\n');
|
|
59
|
+
}
|
|
60
|
+
getThemeContents(theme) {
|
|
61
|
+
const properties = this.extractThemeProperties(theme);
|
|
62
|
+
const themeData = this.formatThemeData(properties);
|
|
63
|
+
return Object.keys(themeData)
|
|
64
|
+
.map(key => `${key}: ${themeData === null || themeData === void 0 ? void 0 : themeData[key]};`)
|
|
65
|
+
.join(' ');
|
|
66
|
+
}
|
|
67
|
+
formatThemeData(data, scope = null) {
|
|
68
|
+
return Object.keys(data).reduce((previous, current) => {
|
|
69
|
+
const value = data === null || data === void 0 ? void 0 : data[current];
|
|
70
|
+
if (typeof value === 'object' && value !== null) {
|
|
71
|
+
const token = this.getFormattedToken(current, scope);
|
|
72
|
+
const reformatted = this.formatThemeData(value, token);
|
|
73
|
+
return Object.assign(Object.assign({}, previous), reformatted);
|
|
74
|
+
}
|
|
75
|
+
const token = this.getFormattedToken(current, scope);
|
|
76
|
+
return Object.assign(Object.assign({}, previous), { [`--${token}`]: value });
|
|
77
|
+
}, {});
|
|
78
|
+
}
|
|
79
|
+
setFirstTheme() {
|
|
80
|
+
var _a, _b, _c;
|
|
81
|
+
const theme = (_b = (_a = this.all) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
|
|
82
|
+
if (!theme) {
|
|
83
|
+
throw new Error('No theme found.');
|
|
84
|
+
}
|
|
85
|
+
const themeName = (_c = theme === null || theme === void 0 ? void 0 : theme.name) !== null && _c !== void 0 ? _c : null;
|
|
86
|
+
return this.set(themeName);
|
|
87
|
+
}
|
|
88
|
+
getFormattedToken(key, scope = null) {
|
|
89
|
+
const result = key.replace(/([A-Z])/g, ' $1');
|
|
90
|
+
const current = result.split(' ').join('-').toLowerCase();
|
|
91
|
+
return [scope, current].filter(item => !!item).join('-');
|
|
92
|
+
}
|
|
93
|
+
extractThemeProperties(theme) {
|
|
94
|
+
// Note: Do not include useless properties like the theme.
|
|
95
|
+
const { name } = theme, rest = __rest(theme, ["name"]);
|
|
96
|
+
return rest;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
Theming.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Theming, deps: [{ token: ThemingOptions }, { token: i0.RendererFactory2 }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
100
|
+
Theming.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Theming });
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Theming, decorators: [{
|
|
102
|
+
type: Injectable
|
|
103
|
+
}], ctorParameters: function () {
|
|
104
|
+
return [{ type: ThemingOptions }, { type: i0.RendererFactory2 }, { type: Document, decorators: [{
|
|
105
|
+
type: Optional
|
|
106
|
+
}, {
|
|
107
|
+
type: Inject,
|
|
108
|
+
args: [DOCUMENT]
|
|
109
|
+
}] }];
|
|
110
|
+
} });
|
|
111
|
+
|
|
112
|
+
class ThemingModule {
|
|
113
|
+
constructor(_parent) {
|
|
114
|
+
this._parent = _parent;
|
|
115
|
+
if (this._parent) {
|
|
116
|
+
throw new Error('ThemingModule is already loaded; Import it in the core module only.');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
static forRoot(options) {
|
|
120
|
+
return {
|
|
121
|
+
ngModule: ThemingModule,
|
|
122
|
+
providers: [
|
|
123
|
+
Theming,
|
|
124
|
+
{ provide: APP_INITIALIZER, deps: [Theming], useFactory: initializeTheme, multi: true },
|
|
125
|
+
{ provide: ThemingOptions, useValue: options }
|
|
126
|
+
]
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
ThemingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ThemingModule, deps: [{ token: ThemingModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
131
|
+
ThemingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: ThemingModule });
|
|
132
|
+
ThemingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ThemingModule });
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ThemingModule, decorators: [{
|
|
134
|
+
type: NgModule,
|
|
135
|
+
args: [{}]
|
|
136
|
+
}], ctorParameters: function () {
|
|
137
|
+
return [{ type: ThemingModule, decorators: [{
|
|
138
|
+
type: Optional
|
|
139
|
+
}, {
|
|
140
|
+
type: SkipSelf
|
|
141
|
+
}] }];
|
|
142
|
+
} });
|
|
143
|
+
function initializeTheme(_) {
|
|
144
|
+
// Note: We just need to initialize the theme.
|
|
145
|
+
return () => ({});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Generated bundle index. Do not edit.
|
|
150
|
+
*/
|
|
151
|
+
|
|
152
|
+
export { Theming, ThemingModule, ThemingOptions, initializeTheme };
|
|
153
|
+
//# sourceMappingURL=bravobit-bb-foundation-theming.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-theming.mjs","sources":["../../../projects/bb-foundation/theming/src/lib/theming.interface.ts","../../../projects/bb-foundation/theming/src/lib/theming.service.ts","../../../projects/bb-foundation/theming/src/lib/theming.module.ts","../../../projects/bb-foundation/theming/src/bravobit-bb-foundation-theming.ts"],"sourcesContent":["import {CheckboxGroupTheme} from './themes/checkbox-group.theme';\r\nimport {CheckboxTheme} from './themes/checkbox.theme';\r\n\r\nexport class ThemingOptions {\r\n themes: Theme[];\r\n}\r\n\r\nexport interface Theme {\r\n name: string;\r\n\r\n accentColor?: string;\r\n checkbox?: Partial<CheckboxTheme>;\r\n checkboxGroup?: Partial<CheckboxGroupTheme>\r\n\r\n custom?: { [key: string]: string };\r\n}","import {Inject, Injectable, Injector, Optional, Renderer2, RendererFactory2} from '@angular/core';\r\nimport {Theme, ThemingOptions} from './theming.interface';\r\nimport {DOCUMENT} from '@angular/common';\r\n\r\n@Injectable()\r\nexport class Theming {\r\n\r\n // Readonly data.\r\n private readonly _attribute: string = 'data-theme';\r\n private readonly _renderer: Renderer2 = this._rendererFactory.createRenderer(null, null);\r\n\r\n // State.\r\n private _currentTheme: Theme | null = null;\r\n\r\n constructor(private _options: ThemingOptions,\r\n private _rendererFactory: RendererFactory2,\r\n @Optional() @Inject(DOCUMENT) private _document: Document) {\r\n this.setCssVariables();\r\n this.setFirstTheme();\r\n }\r\n\r\n get all() {\r\n return this._options?.themes ?? [];\r\n }\r\n\r\n get current() {\r\n return this._currentTheme ?? null;\r\n }\r\n\r\n set(name: string) {\r\n const theme = this.all?.find(theme => theme?.name === name);\r\n if (!theme) {\r\n throw new Error('Invalid theme.');\r\n }\r\n\r\n const document = this._document.documentElement;\r\n if (!document) {\r\n return;\r\n }\r\n\r\n this._renderer.setAttribute(document, this._attribute, name);\r\n this._currentTheme = theme;\r\n }\r\n\r\n private setCssVariables() {\r\n const style = this._renderer.createElement('style');\r\n this._renderer.setAttribute(style, 'id', 'theming-style');\r\n\r\n const variables = this.getCssVariables();\r\n this._renderer.setProperty(style, 'innerHTML', variables);\r\n\r\n const head = this._document?.head ?? null;\r\n if (!head) {\r\n return;\r\n }\r\n\r\n this._renderer.appendChild(this._document?.head, style);\r\n }\r\n\r\n private getCssVariables() {\r\n return this.all\r\n .map(theme => `:root[${this._attribute}=\"${theme?.name}\"] {${this.getThemeContents(theme)}}`)\r\n .join('\\n');\r\n }\r\n\r\n private getThemeContents(theme: Theme) {\r\n const properties = this.extractThemeProperties(theme);\r\n const themeData = this.formatThemeData(properties);\r\n return Object.keys(themeData)\r\n .map(key => `${key}: ${themeData?.[key]};`)\r\n .join(' ');\r\n }\r\n\r\n private formatThemeData(data: object, scope: string | null = null) {\r\n return Object.keys(data).reduce((previous, current) => {\r\n const value = data?.[current];\r\n if (typeof value === 'object' && value !== null) {\r\n const token = this.getFormattedToken(current, scope);\r\n const reformatted = this.formatThemeData(value, token);\r\n return {...previous, ...reformatted};\r\n }\r\n\r\n const token = this.getFormattedToken(current, scope);\r\n return {...previous, [`--${token}`]: value};\r\n }, {});\r\n }\r\n\r\n private setFirstTheme() {\r\n const theme = this.all?.[0] ?? null;\r\n if (!theme) {\r\n throw new Error('No theme found.');\r\n }\r\n\r\n const themeName = theme?.name ?? null;\r\n return this.set(themeName);\r\n }\r\n\r\n private getFormattedToken(key: string, scope: string | null = null) {\r\n const result = key.replace(/([A-Z])/g, ' $1');\r\n const current = result.split(' ').join('-').toLowerCase();\r\n return [scope, current].filter(item => !!item).join('-');\r\n }\r\n\r\n private extractThemeProperties(theme: Theme) {\r\n // Note: Do not include useless properties like the theme.\r\n const {name, ...rest} = theme;\r\n return rest;\r\n }\r\n\r\n}","import {APP_INITIALIZER, ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\r\nimport {ThemingOptions} from './theming.interface';\r\nimport {Theming} from './theming.service';\r\n\r\n@NgModule({})\r\nexport class ThemingModule {\r\n\r\n constructor(@Optional() @SkipSelf() private _parent?: ThemingModule) {\r\n if (this._parent) {\r\n throw new Error('ThemingModule is already loaded; Import it in the core module only.');\r\n }\r\n }\r\n\r\n static forRoot(options: ThemingOptions): ModuleWithProviders<ThemingModule> {\r\n return {\r\n ngModule: ThemingModule,\r\n providers: [\r\n Theming,\r\n {provide: APP_INITIALIZER, deps: [Theming], useFactory: initializeTheme, multi: true},\r\n {provide: ThemingOptions, useValue: options}\r\n ]\r\n };\r\n }\r\n\r\n}\r\n\r\nexport function initializeTheme(_: Theming) {\r\n // Note: We just need to initialize the theme.\r\n return () => ({});\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -33,9 +33,9 @@ class Platform {
|
|
|
33
33
|
this.isDesktop = this.isBrowser && !(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/.test(navigator.userAgent));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
Platform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
37
|
-
Platform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
36
|
+
Platform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
Platform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Platform, providedIn: 'root' });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Platform, decorators: [{
|
|
39
39
|
type: Injectable,
|
|
40
40
|
args: [{
|
|
41
41
|
providedIn: 'root'
|
|
@@ -125,9 +125,9 @@ class FileLoader {
|
|
|
125
125
|
return this.blobToFile(blobFile, name);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
-
FileLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
129
|
-
FileLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
128
|
+
FileLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
129
|
+
FileLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FileLoader, providedIn: 'root' });
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FileLoader, decorators: [{
|
|
131
131
|
type: Injectable,
|
|
132
132
|
args: [{
|
|
133
133
|
providedIn: 'root'
|
|
@@ -288,9 +288,9 @@ class Exif {
|
|
|
288
288
|
});
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
|
-
Exif.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
292
|
-
Exif.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
293
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
291
|
+
Exif.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Exif, deps: [{ token: Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
292
|
+
Exif.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Exif, providedIn: 'root' });
|
|
293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Exif, decorators: [{
|
|
294
294
|
type: Injectable,
|
|
295
295
|
args: [{
|
|
296
296
|
providedIn: 'root'
|
|
@@ -412,9 +412,9 @@ class ImageConverter {
|
|
|
412
412
|
});
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
|
-
ImageConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
416
|
-
ImageConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
417
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
415
|
+
ImageConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ImageConverter, deps: [{ token: Exif }, { token: Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
416
|
+
ImageConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ImageConverter, providedIn: 'root' });
|
|
417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ImageConverter, decorators: [{
|
|
418
418
|
type: Injectable,
|
|
419
419
|
args: [{
|
|
420
420
|
providedIn: 'root'
|
|
@@ -480,9 +480,9 @@ class Languages {
|
|
|
480
480
|
.sort((a, b) => b.quality - a.quality);
|
|
481
481
|
}
|
|
482
482
|
}
|
|
483
|
-
Languages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
484
|
-
Languages.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
485
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
483
|
+
Languages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Languages, deps: [{ token: ACCEPT_LANGUAGE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
484
|
+
Languages.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Languages, providedIn: 'root' });
|
|
485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Languages, decorators: [{
|
|
486
486
|
type: Injectable,
|
|
487
487
|
args: [{
|
|
488
488
|
providedIn: 'root'
|
|
@@ -540,9 +540,9 @@ class Network {
|
|
|
540
540
|
this._online$ = merge(now$, online$, offline$).pipe(map(value => value), distinctUntilChanged(), shareReplay(1));
|
|
541
541
|
}
|
|
542
542
|
}
|
|
543
|
-
Network.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
544
|
-
Network.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
545
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
543
|
+
Network.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Network, deps: [{ token: Platform }, { token: WINDOW, optional: true }, { token: NAVIGATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
544
|
+
Network.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Network, providedIn: 'root' });
|
|
545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Network, decorators: [{
|
|
546
546
|
type: Injectable,
|
|
547
547
|
args: [{
|
|
548
548
|
providedIn: 'root'
|
|
@@ -600,9 +600,9 @@ class Patch {
|
|
|
600
600
|
this._subscription.add(subscription);
|
|
601
601
|
}
|
|
602
602
|
}
|
|
603
|
-
Patch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
604
|
-
Patch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
605
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
603
|
+
Patch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Patch, deps: [{ token: Platform }, { token: WINDOW, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
604
|
+
Patch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Patch, providedIn: 'root' });
|
|
605
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Patch, decorators: [{
|
|
606
606
|
type: Injectable,
|
|
607
607
|
args: [{
|
|
608
608
|
providedIn: 'root'
|
|
@@ -635,9 +635,9 @@ class Clipboard {
|
|
|
635
635
|
return new ClipboardCopy(text, this._document);
|
|
636
636
|
}
|
|
637
637
|
}
|
|
638
|
-
Clipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
639
|
-
Clipboard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
640
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
638
|
+
Clipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Clipboard, deps: [{ token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
639
|
+
Clipboard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Clipboard, providedIn: 'root' });
|
|
640
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Clipboard, decorators: [{
|
|
641
641
|
type: Injectable,
|
|
642
642
|
args: [{
|
|
643
643
|
providedIn: 'root'
|