@devopmaat/badaboom 1.3.8 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/devopmaat-badaboom.mjs +1291 -1047
- package/fesm2022/devopmaat-badaboom.mjs.map +1 -1
- package/index.d.ts +1229 -3
- package/lib/application/media/media-display/_bdb-media-display-theme.scss +36 -0
- package/lib/application/media/media-input/_bdb-media-input-theme.scss +36 -0
- package/lib/application/media/media-upload/_bdb-media-upload-theme.scss +36 -0
- package/lib/styles/_core-theme.scss +31 -0
- package/lib/styles/_theme.scss +35 -2
- package/lib/styles/material/_toolbar-theme.scss +7 -0
- package/package.json +5 -5
- package/lib/application/common/bdb-data-source.d.ts +0 -25
- package/lib/application/common/full-table/bdb-full-table.component.d.ts +0 -27
- package/lib/application/common/paginator/bdb-paginator.component.d.ts +0 -17
- package/lib/application/common/query-input/bdb-query-input.component.d.ts +0 -15
- package/lib/application/common/search/bdb-search-wrapper.component.d.ts +0 -13
- package/lib/application/common/search/bdb-search.component.d.ts +0 -43
- package/lib/application/common/table/bdb-cell.directive.d.ts +0 -9
- package/lib/application/common/table/bdb-column-builder.d.ts +0 -18
- package/lib/application/common/table/bdb-column-options.d.ts +0 -33
- package/lib/application/common/table/bdb-column-type.d.ts +0 -10
- package/lib/application/common/table/bdb-column.d.ts +0 -19
- package/lib/application/common/table/bdb-context-action.d.ts +0 -7
- package/lib/application/common/table/bdb-table.component.d.ts +0 -58
- package/lib/application/common/table/dynamic.pipe.d.ts +0 -9
- package/lib/application/exception-log/exception-log-table/exception-log-table.component.d.ts +0 -26
- package/lib/application/media/media-display/media-display.component.d.ts +0 -23
- package/lib/application/media/media-full-table/media-full-table.component.d.ts +0 -24
- package/lib/application/media/media-table/media-table.component.d.ts +0 -21
- package/lib/application/media/media-type.pipe.d.ts +0 -8
- package/lib/application/media/media-upload/media-drop.directive.d.ts +0 -27
- package/lib/application/media/media-upload/media-upload.component.d.ts +0 -15
- package/lib/application/task-log/task-log-outcome.pipe.d.ts +0 -8
- package/lib/application/task-log/task-log-status.pipe.d.ts +0 -8
- package/lib/application/task-log-parameter/task-log-parameter-value.pipe.d.ts +0 -10
- package/lib/application/user/user-table/user-table.component.d.ts +0 -25
- package/lib/bdb-auth-options.d.ts +0 -28
- package/lib/bdb-options.d.ts +0 -19
- package/lib/common/alert/bdb-alert.component.d.ts +0 -10
- package/lib/common/alert-error-response/bdb-alert-error-response.component.d.ts +0 -16
- package/lib/common/bdb-flex-child.directive.d.ts +0 -11
- package/lib/common/bdb-flex.directive.d.ts +0 -28
- package/lib/common/bdb-form-error.directive.d.ts +0 -15
- package/lib/common/bdb-grid-child.directive.d.ts +0 -14
- package/lib/common/bdb-grid.directive.d.ts +0 -26
- package/lib/common/bdb-palette.d.ts +0 -2
- package/lib/common/boolean-display/bdb-boolean-display.component.d.ts +0 -7
- package/lib/common/collapse-row/bdb-collapse-row.component.d.ts +0 -9
- package/lib/common/error-response-dialog/error-response-dialog.component.d.ts +0 -10
- package/lib/common/field/bdb-field.component.d.ts +0 -7
- package/lib/common/file-size.pipe.d.ts +0 -7
- package/lib/common/function.pipe.d.ts +0 -7
- package/lib/common/layout-error.d.ts +0 -3
- package/lib/common/linked-list.d.ts +0 -15
- package/lib/common/plain-number.pipe.d.ts +0 -7
- package/lib/common/youtube-player/youtube-player.component.d.ts +0 -14
- package/lib/domain/auth/account-info.d.ts +0 -6
- package/lib/domain/auth/account.service.d.ts +0 -29
- package/lib/domain/auth/auth.service.d.ts +0 -41
- package/lib/domain/auth/reset-password-token.d.ts +0 -4
- package/lib/domain/auth/token-expired.interceptor.d.ts +0 -2
- package/lib/domain/auth/token-reponse.d.ts +0 -5
- package/lib/domain/auth/token.interceptor.d.ts +0 -2
- package/lib/domain/common/bdb-filter.d.ts +0 -9
- package/lib/domain/common/bdb-request.d.ts +0 -10
- package/lib/domain/common/bdb-response.d.ts +0 -6
- package/lib/domain/common/entities/bdb-entity-read.d.ts +0 -3
- package/lib/domain/common/entities/bdb-entity-update.d.ts +0 -3
- package/lib/domain/common/entities/bdb-entity.d.ts +0 -3
- package/lib/domain/common/services/bdb-service-cr.d.ts +0 -7
- package/lib/domain/common/services/bdb-service-crd.d.ts +0 -7
- package/lib/domain/common/services/bdb-service-cru.d.ts +0 -8
- package/lib/domain/common/services/bdb-service-crud.d.ts +0 -8
- package/lib/domain/common/services/bdb-service-r.d.ts +0 -10
- package/lib/domain/common/services/bdb-service-rd.d.ts +0 -7
- package/lib/domain/common/services/bdb-service-ru.d.ts +0 -8
- package/lib/domain/common/services/bdb-service-rud.d.ts +0 -8
- package/lib/domain/common/services/bdb-service.d.ts +0 -6
- package/lib/domain/entities/exception-log/exception-log-read.d.ts +0 -9
- package/lib/domain/entities/exception-log/exception-log.d.ts +0 -9
- package/lib/domain/entities/exception-log/exception-log.service.d.ts +0 -9
- package/lib/domain/entities/media/media-preview.d.ts +0 -6
- package/lib/domain/entities/media/media.d.ts +0 -12
- package/lib/domain/entities/media/media.service.d.ts +0 -11
- package/lib/domain/entities/role/role-read.d.ts +0 -7
- package/lib/domain/entities/role/role.d.ts +0 -4
- package/lib/domain/entities/role/role.service.d.ts +0 -9
- package/lib/domain/entities/task-log/task-log-create.d.ts +0 -5
- package/lib/domain/entities/task-log/task-log-read.d.ts +0 -11
- package/lib/domain/entities/task-log/task-log.d.ts +0 -15
- package/lib/domain/entities/task-log/task-log.service.d.ts +0 -12
- package/lib/domain/entities/task-log-parameter/task-log-parameter-create.d.ts +0 -7
- package/lib/domain/entities/task-log-parameter/task-log-parameter-read.d.ts +0 -11
- package/lib/domain/entities/task-log-parameter/task-log-parameter.d.ts +0 -10
- package/lib/domain/entities/task-log-parameter/task-log-parameter.service.d.ts +0 -9
- package/lib/domain/entities/task-log-schedule/task-log-schedule-create.d.ts +0 -5
- package/lib/domain/entities/task-log-schedule/task-log-schedule-read.d.ts +0 -7
- package/lib/domain/entities/task-log-schedule/task-log-schedule-update.d.ts +0 -5
- package/lib/domain/entities/task-log-schedule/task-log-schedule.d.ts +0 -7
- package/lib/domain/entities/task-log-schedule/task-log-schedule.service.d.ts +0 -11
- package/lib/domain/entities/user/user-create.d.ts +0 -3
- package/lib/domain/entities/user/user-read.d.ts +0 -6
- package/lib/domain/entities/user/user-update.d.ts +0 -4
- package/lib/domain/entities/user/user.d.ts +0 -5
- package/lib/domain/entities/user/user.service.d.ts +0 -11
- package/lib/domain/entities/user-role/user-role-create.d.ts +0 -4
- package/lib/domain/entities/user-role/user-role-read.d.ts +0 -7
- package/lib/domain/entities/user-role/user-role.d.ts +0 -7
- package/lib/domain/entities/user-role/user-role.service.d.ts +0 -10
- package/lib/domain/enums/media-type.d.ts +0 -6
- package/lib/domain/enums/task-log-outcome.d.ts +0 -8
- package/lib/domain/enums/task-log-parameter-type.d.ts +0 -6
- package/lib/domain/enums/task-log-status.d.ts +0 -7
- package/lib/domain/tasks/task-log-scheduler.service.d.ts +0 -11
- package/lib/domain/tasks/task-log-type-parameter.d.ts +0 -11
- package/lib/domain/tasks/task-log-type.d.ts +0 -7
- package/lib/domain/tasks/task-log-type.service.d.ts +0 -14
- package/lib/lib.config.d.ts +0 -11
- package/lib/presentation/access-denied-page/access-denied-page.component.d.ts +0 -16
- package/lib/presentation/auth-container/auth-container.component.d.ts +0 -5
- package/lib/presentation/forgot-password-page/forgot-password-page.component.d.ts +0 -20
- package/lib/presentation/invalid-token-page/invalid-token-page.component.d.ts +0 -8
- package/lib/presentation/logged-out.guard.d.ts +0 -2
- package/lib/presentation/login-page/login-page.component.d.ts +0 -27
- package/lib/presentation/logout-page/logout-page.component.d.ts +0 -13
- package/lib/presentation/reset-password-page/reset-password-page.component.d.ts +0 -31
- package/lib/presentation/reset-password.resolver.d.ts +0 -3
- package/lib/presentation/role.guard.d.ts +0 -2
- package/public-api.d.ts +0 -110
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devopmaat-badaboom.mjs","sources":["../../../projects/badaboom/src/lib/bdb-auth-options.ts","../../../projects/badaboom/src/lib/bdb-options.ts","../../../projects/badaboom/src/lib/common/alert/bdb-alert.component.ts","../../../projects/badaboom/src/lib/common/alert/bdb-alert.component.html","../../../projects/badaboom/src/lib/common/alert-error-response/bdb-alert-error-response.component.ts","../../../projects/badaboom/src/lib/common/alert-error-response/bdb-alert-error-response.component.html","../../../projects/badaboom/src/lib/common/error-response-dialog/error-response-dialog.component.ts","../../../projects/badaboom/src/lib/common/error-response-dialog/error-response-dialog.component.html","../../../projects/badaboom/src/lib/domain/common/services/bdb-service.ts","../../../projects/badaboom/src/lib/domain/auth/account.service.ts","../../../projects/badaboom/src/lib/domain/auth/auth.service.ts","../../../projects/badaboom/src/lib/domain/auth/token-expired.interceptor.ts","../../../projects/badaboom/src/lib/presentation/auth-container/auth-container.component.ts","../../../projects/badaboom/src/lib/presentation/auth-container/auth-container.component.html","../../../projects/badaboom/src/lib/presentation/logged-out.guard.ts","../../../projects/badaboom/src/lib/presentation/role.guard.ts","../../../projects/badaboom/src/lib/presentation/reset-password.resolver.ts","../../../projects/badaboom/src/lib/domain/auth/token.interceptor.ts","../../../projects/badaboom/src/lib/lib.config.ts","../../../projects/badaboom/src/lib/application/common/bdb-data-source.ts","../../../projects/badaboom/src/lib/application/common/paginator/bdb-paginator.component.ts","../../../projects/badaboom/src/lib/application/common/paginator/bdb-paginator.component.html","../../../projects/badaboom/src/lib/application/common/query-input/bdb-query-input.component.ts","../../../projects/badaboom/src/lib/application/common/query-input/bdb-query-input.component.html","../../../projects/badaboom/src/lib/application/common/search/bdb-search-wrapper.component.ts","../../../projects/badaboom/src/lib/common/function.pipe.ts","../../../projects/badaboom/src/lib/common/bdb-form-error.directive.ts","../../../projects/badaboom/src/lib/application/common/search/bdb-search.component.ts","../../../projects/badaboom/src/lib/application/common/search/bdb-search.component.html","../../../projects/badaboom/src/lib/application/common/table/bdb-cell.directive.ts","../../../projects/badaboom/src/lib/application/common/table/bdb-column-type.ts","../../../projects/badaboom/src/lib/application/common/table/bdb-column-builder.ts","../../../projects/badaboom/src/lib/application/common/table/dynamic.pipe.ts","../../../projects/badaboom/src/lib/common/boolean-display/bdb-boolean-display.component.ts","../../../projects/badaboom/src/lib/common/boolean-display/bdb-boolean-display.component.html","../../../projects/badaboom/src/lib/application/common/table/bdb-table.component.ts","../../../projects/badaboom/src/lib/application/common/table/bdb-table.component.html","../../../projects/badaboom/src/lib/common/layout-error.ts","../../../projects/badaboom/src/lib/common/bdb-flex.directive.ts","../../../projects/badaboom/src/lib/application/common/full-table/bdb-full-table.component.ts","../../../projects/badaboom/src/lib/application/common/full-table/bdb-full-table.component.html","../../../projects/badaboom/src/lib/application/exception-log/exception-log-table/exception-log-table.component.ts","../../../projects/badaboom/src/lib/application/exception-log/exception-log-table/exception-log-table.component.html","../../../projects/badaboom/src/lib/domain/enums/media-type.ts","../../../projects/badaboom/src/lib/application/media/media-type.pipe.ts","../../../projects/badaboom/src/lib/common/file-size.pipe.ts","../../../projects/badaboom/src/lib/application/media/media-full-table/media-full-table.component.ts","../../../projects/badaboom/src/lib/application/media/media-full-table/media-full-table.component.html","../../../projects/badaboom/src/lib/application/media/media-table/media-table.component.ts","../../../projects/badaboom/src/lib/application/media/media-table/media-table.component.html","../../../projects/badaboom/src/lib/common/youtube-player/youtube-player.component.ts","../../../projects/badaboom/src/lib/common/youtube-player/youtube-player.component.html","../../../projects/badaboom/src/lib/application/media/media-display/media-display.component.ts","../../../projects/badaboom/src/lib/application/media/media-display/media-display.component.html","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-r.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-rd.ts","../../../projects/badaboom/src/lib/domain/entities/media/media.service.ts","../../../projects/badaboom/src/lib/application/media/media-upload/media-drop.directive.ts","../../../projects/badaboom/src/lib/application/media/media-upload/media-upload.component.ts","../../../projects/badaboom/src/lib/application/media/media-upload/media-upload.component.html","../../../projects/badaboom/src/lib/domain/enums/task-log-status.ts","../../../projects/badaboom/src/lib/application/task-log/task-log-status.pipe.ts","../../../projects/badaboom/src/lib/domain/enums/task-log-outcome.ts","../../../projects/badaboom/src/lib/application/task-log/task-log-outcome.pipe.ts","../../../projects/badaboom/src/lib/domain/enums/task-log-parameter-type.ts","../../../projects/badaboom/src/lib/application/task-log-parameter/task-log-parameter-value.pipe.ts","../../../projects/badaboom/src/lib/application/user/user-table/user-table.component.ts","../../../projects/badaboom/src/lib/application/user/user-table/user-table.component.html","../../../projects/badaboom/src/lib/common/bdb-flex-child.directive.ts","../../../projects/badaboom/src/lib/common/linked-list.ts","../../../projects/badaboom/src/lib/common/bdb-grid.directive.ts","../../../projects/badaboom/src/lib/common/bdb-grid-child.directive.ts","../../../projects/badaboom/src/lib/common/collapse-row/bdb-collapse-row.component.ts","../../../projects/badaboom/src/lib/common/collapse-row/bdb-collapse-row.component.html","../../../projects/badaboom/src/lib/common/field/bdb-field.component.ts","../../../projects/badaboom/src/lib/common/field/bdb-field.component.html","../../../projects/badaboom/src/lib/common/plain-number.pipe.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-cr.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-ru.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-crd.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-cru.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-rud.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-crud.ts","../../../projects/badaboom/src/lib/domain/entities/exception-log/exception-log.service.ts","../../../projects/badaboom/src/lib/domain/entities/role/role.service.ts","../../../projects/badaboom/src/lib/domain/entities/task-log/task-log.service.ts","../../../projects/badaboom/src/lib/domain/entities/task-log-parameter/task-log-parameter.service.ts","../../../projects/badaboom/src/lib/domain/entities/task-log-schedule/task-log-schedule.service.ts","../../../projects/badaboom/src/lib/domain/entities/user/user.service.ts","../../../projects/badaboom/src/lib/domain/entities/user-role/user-role.service.ts","../../../projects/badaboom/src/lib/domain/tasks/task-log-scheduler.service.ts","../../../projects/badaboom/src/lib/domain/tasks/task-log-type.service.ts","../../../projects/badaboom/src/lib/presentation/access-denied-page/access-denied-page.component.ts","../../../projects/badaboom/src/lib/presentation/access-denied-page/access-denied-page.component.html","../../../projects/badaboom/src/lib/presentation/forgot-password-page/forgot-password-page.component.ts","../../../projects/badaboom/src/lib/presentation/forgot-password-page/forgot-password-page.component.html","../../../projects/badaboom/src/lib/presentation/invalid-token-page/invalid-token-page.component.ts","../../../projects/badaboom/src/lib/presentation/invalid-token-page/invalid-token-page.component.html","../../../projects/badaboom/src/lib/presentation/login-page/login-page.component.ts","../../../projects/badaboom/src/lib/presentation/login-page/login-page.component.html","../../../projects/badaboom/src/lib/presentation/logout-page/logout-page.component.ts","../../../projects/badaboom/src/lib/presentation/logout-page/logout-page.component.html","../../../projects/badaboom/src/lib/presentation/reset-password-page/reset-password-page.component.ts","../../../projects/badaboom/src/lib/presentation/reset-password-page/reset-password-page.component.html","../../../projects/badaboom/src/devopmaat-badaboom.ts"],"sourcesContent":["export interface BdbAuthOptions {\r\n loginPath: string;\r\n logoutPath: string;\r\n accessDeniedPath: string;\r\n forgotPasswordPath: string;\r\n resetPasswordPath: string;\r\n invalidTokenPath: string;\r\n addPresentation: boolean;\r\n}\r\n\r\nexport class BdbAuthOptionsBuilder {\r\n private _loginPath?: string;\r\n private _logoutPath?: string;\r\n private _accessDeniedPath?: string;\r\n private _forgotPasswordPath?: string;\r\n private _resetPasswordPath?: string;\r\n private _invalidTokenPath?: string;\r\n private _addPresentation = false;\r\n\r\n constructor(configure: BdbAuthOptionsConfigure) {\r\n configure(this);\r\n }\r\n\r\n set loginPath(path: string) {\r\n this._loginPath = path;\r\n }\r\n\r\n set logoutPath(path: string) {\r\n this._logoutPath = path;\r\n }\r\n\r\n set accessDeniedPath(path: string) {\r\n this._accessDeniedPath = path;\r\n }\r\n\r\n set forgotPasswordPath(path: string) {\r\n this._forgotPasswordPath = path;\r\n }\r\n\r\n set resetPasswordPath(path: string) {\r\n this._resetPasswordPath = path;\r\n }\r\n\r\n set invalidTokenPath(path: string) {\r\n this._invalidTokenPath = path;\r\n }\r\n\r\n addPresentation(): void {\r\n this._addPresentation = true;\r\n }\r\n\r\n build(): BdbAuthOptions {\r\n return {\r\n loginPath: this._loginPath ?? 'inloggen',\r\n logoutPath: this._logoutPath ?? 'uitloggen',\r\n accessDeniedPath: this._accessDeniedPath ?? 'toegang-geweigerd',\r\n forgotPasswordPath: this._forgotPasswordPath ?? 'wachtwoord-vergeten',\r\n resetPasswordPath: this._resetPasswordPath ?? 'herstel-wachtwoord',\r\n invalidTokenPath: this._invalidTokenPath ?? 'ongeldig-token',\r\n addPresentation: this._addPresentation,\r\n };\r\n }\r\n}\r\n\r\nexport type BdbAuthOptionsConfigure = (_: BdbAuthOptionsBuilder) => void;\r\n","import { InjectionToken } from '@angular/core';\r\nimport { BdbAuthOptions, BdbAuthOptionsBuilder, BdbAuthOptionsConfigure } from './bdb-auth-options';\r\n\r\nexport interface BdbOptions {\r\n backendUrl: string;\r\n mediaUrl: string;\r\n authOptions?: BdbAuthOptions;\r\n}\r\n\r\nexport class BdbOptionsBuilder {\r\n private _backendUrl!: string;\r\n private _mediaUrl!: string;\r\n private _auth?: BdbAuthOptionsConfigure;\r\n\r\n constructor(configure: BdbOptionsConfigure) {\r\n configure(this);\r\n }\r\n\r\n set backendUrl(url: string) {\r\n this._backendUrl = url;\r\n }\r\n set mediaUrl(url: string) {\r\n this._mediaUrl = url;\r\n }\r\n\r\n addAuth(configure: BdbAuthOptionsConfigure): void {\r\n this._auth = configure;\r\n }\r\n\r\n build(): BdbOptions {\r\n if (!this._backendUrl) {\r\n throw 'backendUrl mag niet leeg zijn';\r\n }\r\n if (!this._mediaUrl) {\r\n throw 'mediaUrl mag niet leeg zijn';\r\n }\r\n\r\n const options: BdbOptions = { backendUrl: this._backendUrl, mediaUrl: this._mediaUrl };\r\n\r\n if (this._auth) {\r\n options.authOptions = new BdbAuthOptionsBuilder(this._auth).build();\r\n }\r\n\r\n return options;\r\n }\r\n}\r\n\r\nexport type BdbOptionsConfigure = (_: BdbOptionsBuilder) => void;\r\n\r\nexport const BDB_OPTIONS = new InjectionToken<BdbOptions>('BdbOptions');\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'bdb-alert',\r\n imports: [CommonModule, MatIconModule],\r\n templateUrl: './bdb-alert.component.html',\r\n styleUrls: ['./bdb-alert.component.scss'],\r\n})\r\nexport class BdbAlertComponent {\r\n @HostBinding('class') class = 'bdb-alert';\r\n @Input() label = '';\r\n @Input() icon = 'task_alt';\r\n @Input() inline = false;\r\n\r\n constructor() {}\r\n}\r\n","<div class=\"bdb-alert-wrapper\" [ngStyle]=\"{ display: inline ? 'inline-flex' : 'flex' }\">\r\n <div class=\"bdb-icon-container\">\r\n <mat-icon>{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"content-container\">\r\n <div>\r\n <div class=\"label\">\r\n {{ label }}\r\n </div>\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, Input, OnChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbAlertComponent } from '../alert/bdb-alert.component';\r\n\r\nconst LoginFailed = 'LOGIN_FAILED';\r\nconst LoginNotAllowed = 'LOGIN_NOT_ALLOWED';\r\nconst LoginRequiredTwoFactor = 'LOGIN_REQUIRES_TWO_FACTOR';\r\nconst LockedOut = 'LOCKED_OUT';\r\n\r\ntype ProblemDetails = {\r\n type?: string;\r\n title?: string;\r\n status?: number;\r\n detail?: string;\r\n instance?: string;\r\n errors?: {\r\n [key: string]: unknown;\r\n };\r\n};\r\n\r\n@Component({\r\n selector: 'bdb-alert-error-response',\r\n imports: [CommonModule, BdbAlertComponent],\r\n templateUrl: './bdb-alert-error-response.component.html',\r\n styleUrls: ['./bdb-alert-error-response.component.scss'],\r\n})\r\nexport class BdbAlertErrorResponseComponent implements OnChanges {\r\n @Input() value: HttpErrorResponse | undefined | null;\r\n loginFailed = false;\r\n\r\n alertClass = 'error';\r\n icon = 'error_outline';\r\n label = 'Onbekende fout';\r\n message = '';\r\n errorCode: string | undefined;\r\n\r\n validationFailures(): string[] | null {\r\n if (this.value && this.value.error && this.value.error.errors) {\r\n const ret: string[] = [];\r\n const pd = this.value.error as ProblemDetails;\r\n if (pd.errors) {\r\n const errors = pd.errors;\r\n Object.keys(errors).forEach((x: string) => ret.push(`${errors[x]}`));\r\n }\r\n return ret;\r\n }\r\n return null;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.errorCode = undefined;\r\n if (this.value) {\r\n switch (this.value.status) {\r\n case 0:\r\n this.label = 'Communicatie mislukt';\r\n this.message = 'Controleer uw internetverbinding';\r\n break;\r\n case 400:\r\n this.alertClass = 'warn';\r\n this.icon = 'warning';\r\n this.label = 'Invoerfout';\r\n break;\r\n case 401:\r\n if (this.value.error === LoginFailed) {\r\n this.label = 'Inloggen mislukt';\r\n this.message = 'Controleer gegevens en probeer opnieuw';\r\n } else if (this.value.error === LoginNotAllowed) {\r\n this.label = 'Inloggen mislukt';\r\n this.message = 'Login niet toegestaan';\r\n } else if (this.value.error === LockedOut) {\r\n this.alertClass = 'warn';\r\n this.icon = 'warning';\r\n this.label = 'Tijdelijk geblokkeerd';\r\n this.message = 'Te veel mislukte inlogpogingen';\r\n } else if (this.value.error === LoginRequiredTwoFactor) {\r\n this.label = 'Inloggen mislukt';\r\n this.message = 'Tweestapsverificatie vereist';\r\n } else {\r\n this.label = 'Onbevoegd';\r\n this.message = 'U bent niet bevoegd voor de gevraagde actie';\r\n }\r\n break;\r\n case 403:\r\n this.label = 'Toegang geweigerd';\r\n this.message = 'Onvoldoende rechten voor de gevraagde actie';\r\n break;\r\n case 404:\r\n this.label = 'Niet gevonden';\r\n this.message = 'De opgevraagde bron kon niet worden gevonden';\r\n break;\r\n case 415:\r\n this.label = 'Mediatype niet ondersteund';\r\n this.message = this.value.error;\r\n break;\r\n case 500: {\r\n this.label = this.value.error?.title ?? 'Fout bij afhandeling';\r\n const errorDetail = this.value.error?.exceptionLogCode;\r\n if (errorDetail && errorDetail.match(/[A-Z0-9]{6}/g)) {\r\n this.errorCode = `${errorDetail.slice(0, 2)}-${errorDetail.slice(2, 4)}-${errorDetail.slice(4)}`;\r\n } else {\r\n this.message = this.value.error?.detail;\r\n }\r\n break;\r\n }\r\n default:\r\n this.label = 'Onbekende fout';\r\n this.message = 'Status: ' + this.value.status;\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","<bdb-alert [icon]=\"icon\" [label]=\"label\" *ngIf=\"value\" [class]=\"alertClass\">\r\n <ng-container [ngSwitch]=\"value.status\">\r\n <ng-container *ngSwitchCase=\"400\">\r\n <div *ngFor=\"let message of validationFailures()\">{{ message }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"500\">\r\n <div *ngIf=\"errorCode; else displayMessage\">\r\n Foutcode voor technische ondersteuning: <strong>{{ errorCode }}</strong>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngTemplateOutlet=\"displayMessage\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</bdb-alert>\r\n\r\n<ng-template #displayMessage>\r\n {{ message }}\r\n</ng-template>\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { BdbAlertErrorResponseComponent } from '../alert-error-response/bdb-alert-error-response.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'bdb-error-response-dialog',\r\n imports: [MatDialogModule, BdbAlertErrorResponseComponent, MatIconModule, MatButtonModule],\r\n templateUrl: './error-response-dialog.component.html',\r\n styleUrl: './error-response-dialog.component.scss',\r\n})\r\nexport class BdbErrorResponseDialogComponent {\r\n readonly data = inject<{ title: string; error: HttpErrorResponse }>(MAT_DIALOG_DATA);\r\n}\r\n","<h2 mat-dialog-title>{{ data.title }}</h2>\r\n<div mat-dialog-content>\r\n <bdb-alert-error-response [value]=\"data.error\"></bdb-alert-error-response>\r\n</div>\r\n<div mat-dialog-actions align=\"end\">\r\n <button mat-button type=\"button\" mat-dialog-close class=\"warn\"><mat-icon>close</mat-icon> Sluiten</button>\r\n</div>\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { BDB_OPTIONS } from '../../../bdb-options';\r\n\r\nexport abstract class BdbService {\r\n baseUrl: string;\r\n httpClient: HttpClient;\r\n\r\n constructor(areaName: string) {\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n this.baseUrl = `${bdbOptions.backendUrl}/${areaName}`;\r\n this.httpClient = inject(HttpClient);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { TokenResponse } from './token-reponse';\r\nimport { BdbService } from '../common/services/bdb-service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AccountService extends BdbService {\r\n constructor() {\r\n super('account');\r\n }\r\n\r\n login(value: { email: string; password: string }): Observable<TokenResponse> {\r\n return this.httpClient.post<TokenResponse>(`${this.baseUrl}/login`, value);\r\n }\r\n\r\n exchangeRefreshToken(value: { token: string; refreshToken: string }): Observable<TokenResponse> {\r\n return this.httpClient.post<TokenResponse>(`${this.baseUrl}/exchange-refresh-token`, value);\r\n }\r\n\r\n forgotPassword(value: { email: string }): Observable<boolean> {\r\n return this.httpClient.post<boolean>(`${this.baseUrl}/forgot-password`, value);\r\n }\r\n\r\n resetPassword(value: { email: string; token: string; password: string }): Observable<TokenResponse> {\r\n return this.httpClient.post<TokenResponse>(`${this.baseUrl}/reset-password`, value);\r\n }\r\n\r\n validateResetPasswordToken(value: { email: string; token: string }): Observable<boolean> {\r\n return this.httpClient.post<boolean>(`${this.baseUrl}/validate-reset-password-token`, value);\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, concatMap, filter, shareReplay, tap } from 'rxjs/operators';\r\nimport { BDB_OPTIONS } from '../../bdb-options';\r\nimport { BdbErrorResponseDialogComponent } from '../../common/error-response-dialog/error-response-dialog.component';\r\nimport { AccountInfo } from './account-info';\r\nimport { AccountService } from './account.service';\r\nimport { TokenResponse } from './token-reponse';\r\n\r\nconst tokenKey = 'access_token';\r\nconst refreshTokenKey = 'refresh_token';\r\n\r\nconst emailAddressClaimName = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress';\r\nconst roleClaimName = 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role';\r\nconst nameClaimName = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name';\r\nconst nameIdentifierClaimName = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier';\r\n\r\nconst defaultClaims = [\r\n 'AspNet.Identity.SecurityStamp',\r\n 'aud',\r\n 'exp',\r\n 'iss',\r\n roleClaimName,\r\n nameClaimName,\r\n nameIdentifierClaimName,\r\n emailAddressClaimName,\r\n];\r\n\r\nexport function getAuthorizationHeaderFromToken(token: string): string {\r\n return `Bearer ${token}`;\r\n}\r\n\r\nexport function getTokenFromAuthorizationHeader(header: string): string {\r\n return header.replace(/^(Bearer )/g, '');\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n token$: BehaviorSubject<string | null>;\r\n account$: BehaviorSubject<AccountInfo | null>;\r\n\r\n currentRefreshTokenRequest: Observable<string | null> | undefined;\r\n\r\n matDialog = inject(MatDialog);\r\n router = inject(Router);\r\n readonly bdbOptions = inject(BDB_OPTIONS);\r\n\r\n constructor(private accountService: AccountService) {\r\n const token = localStorage.getItem(tokenKey);\r\n this.token$ = new BehaviorSubject(token);\r\n const accountInfo = token === null ? null : this.getAccountInfoFromToken(token);\r\n this.account$ = new BehaviorSubject(accountInfo);\r\n }\r\n\r\n login(value: { email: string; password: string }): Observable<TokenResponse> {\r\n return this.accountService.login(value).pipe(\r\n tap({\r\n next: tokenResponse => this.processTokenResponse(tokenResponse),\r\n })\r\n );\r\n }\r\n\r\n logout(): void {\r\n this.token$.next(null);\r\n this.account$.next(null);\r\n localStorage.removeItem(tokenKey);\r\n localStorage.removeItem(refreshTokenKey);\r\n }\r\n\r\n refreshToken(expiredToken: string): Observable<string | null> {\r\n const currentToken = this.token$.getValue();\r\n\r\n if (expiredToken !== currentToken) {\r\n return this.token$.asObservable();\r\n }\r\n\r\n const refreshToken = localStorage.getItem(refreshTokenKey);\r\n\r\n if (!refreshToken) {\r\n throw new Error('Verversen login token mislukt');\r\n }\r\n\r\n if (this.currentRefreshTokenRequest === undefined) {\r\n this.currentRefreshTokenRequest = this.accountService\r\n .exchangeRefreshToken({ token: currentToken, refreshToken })\r\n .pipe(\r\n tap(() => (this.currentRefreshTokenRequest = undefined)),\r\n catchError((x: HttpErrorResponse) => {\r\n this.logout();\r\n this.matDialog\r\n .open(BdbErrorResponseDialogComponent, {\r\n data: { title: 'Authenticatie verversen mislukt. U wordt nu uitgelogd', error: x },\r\n })\r\n .afterClosed()\r\n .subscribe({\r\n next: () => this.router.navigate(['/' + this.bdbOptions.authOptions?.loginPath]),\r\n });\r\n return of(undefined);\r\n }),\r\n filter(x => x !== undefined),\r\n concatMap(x => {\r\n this.processTokenResponse(x);\r\n return this.token$;\r\n }),\r\n shareReplay(1)\r\n );\r\n }\r\n return this.currentRefreshTokenRequest;\r\n }\r\n\r\n resetPassword(value: { email: string; token: string; password: string }): Observable<TokenResponse> {\r\n return this.accountService.resetPassword(value).pipe(\r\n tap({\r\n next: tokenResponse => this.processTokenResponse(tokenResponse),\r\n })\r\n );\r\n }\r\n\r\n forgotPassword(value: { email: string }): Observable<boolean> {\r\n return this.accountService.forgotPassword(value);\r\n }\r\n\r\n validateResetPasswordToken(value: { email: string; token: string }): Observable<boolean> {\r\n return this.accountService.validateResetPasswordToken(value);\r\n }\r\n\r\n /* helper methods */\r\n\r\n private processTokenResponse(x: TokenResponse): void {\r\n if (!x || !x.token || !x.refreshToken) {\r\n this.logout();\r\n return;\r\n }\r\n\r\n this.token$.next(x.token);\r\n this.account$.next(this.getAccountInfoFromToken(x.token));\r\n localStorage.setItem(tokenKey, x.token);\r\n localStorage.setItem(refreshTokenKey, x.refreshToken);\r\n }\r\n\r\n private getAccountInfoFromToken(token: string): AccountInfo {\r\n const decodedJWT = JSON.parse(window.atob(token.split('.')[1]));\r\n let roles: string[] = [];\r\n const decodedRoles = decodedJWT[roleClaimName];\r\n if (decodedRoles) {\r\n if (Array.isArray(decodedRoles)) {\r\n roles = decodedRoles;\r\n } else {\r\n roles = [decodedRoles];\r\n }\r\n }\r\n\r\n const claims: Map<string, unknown> = new Map<string, unknown>();\r\n for (const [key, value] of Object.entries(decodedJWT)) {\r\n if (defaultClaims.indexOf(key) >= 0) {\r\n continue;\r\n }\r\n claims.set(key, value);\r\n }\r\n\r\n return {\r\n email: decodedJWT[nameClaimName],\r\n id: decodedJWT['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'],\r\n roles: roles,\r\n claims: claims,\r\n };\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\r\nimport { catchError, concatMap, filter, take, throwError } from 'rxjs';\r\nimport { AuthService, getAuthorizationHeaderFromToken, getTokenFromAuthorizationHeader } from './auth.service';\r\n\r\nconst TokenExpired = 'token-expired';\r\n\r\nexport const tokenExpiredInterceptor: HttpInterceptorFn = (req, next) => {\r\n const authService = inject(AuthService);\r\n\r\n return next(req).pipe(\r\n catchError(error => {\r\n if (!(error instanceof HttpErrorResponse) || error.status !== 401 || !error.headers.get(TokenExpired)) {\r\n return throwError(() => error);\r\n }\r\n\r\n const authorizationHeader = req.headers.get('Authorization');\r\n\r\n const expiredToken = getTokenFromAuthorizationHeader(authorizationHeader ?? '');\r\n\r\n return authService.refreshToken(expiredToken).pipe(\r\n filter(x => x !== null),\r\n take(1),\r\n concatMap(x =>\r\n next(\r\n req.clone({\r\n setHeaders: {\r\n Authorization: getAuthorizationHeaderFromToken(x ?? ''),\r\n },\r\n })\r\n )\r\n )\r\n );\r\n })\r\n );\r\n};\r\n","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n@Component({\r\n imports: [RouterOutlet],\r\n templateUrl: './auth-container.component.html',\r\n styleUrls: ['./auth-container.component.scss'],\r\n})\r\nexport class AuthContainerComponent {}\r\n","<router-outlet></router-outlet>\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { AuthService } from '../domain/auth/auth.service';\r\nimport { BDB_OPTIONS } from '../bdb-options';\r\n\r\nexport const loggedOutGuard: CanActivateFn = (_, state) => {\r\n const authService = inject(AuthService);\r\n const router = inject(Router);\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n const isLoggedIn = !!authService.account$.getValue();\r\n\r\n return isLoggedIn\r\n ? router.createUrlTree([`/${bdbOptions.authOptions?.logoutPath}`], {\r\n queryParams: { returnUrl: state.url },\r\n })\r\n : true;\r\n};\r\n","import { CanActivateFn, Router } from '@angular/router';\r\nimport { inject } from '@angular/core';\r\nimport { BDB_OPTIONS } from '../bdb-options';\r\nimport { AuthService } from '../domain/auth/auth.service';\r\n\r\nexport function roleGuard(...roles: string[]): CanActivateFn {\r\n return (_, state) => {\r\n const authService = inject(AuthService);\r\n const router = inject(Router);\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n const account = authService.account$.getValue();\r\n\r\n if (!account) {\r\n return router.createUrlTree([`/${bdbOptions.authOptions?.loginPath}`], {\r\n queryParams: { returnUrl: state.url },\r\n });\r\n }\r\n\r\n if (!roles.length) {\r\n return true;\r\n }\r\n\r\n const userRoles = account.roles;\r\n\r\n if (userRoles.some(x => roles.includes(x))) {\r\n return true;\r\n }\r\n\r\n return router.createUrlTree([`/${bdbOptions.authOptions?.accessDeniedPath}`], {\r\n queryParams: { returnUrl: state.url },\r\n });\r\n };\r\n}\r\n","import { ResolveFn, Router } from '@angular/router';\r\nimport { BDB_OPTIONS } from '../bdb-options';\r\nimport { inject } from '@angular/core';\r\nimport { ResetPasswordToken } from '../domain/auth/reset-password-token';\r\nimport { catchError, concatMap, map, of, tap } from 'rxjs';\r\nimport { AuthService } from '../domain/auth/auth.service';\r\n\r\nexport const resetPasswordResolver: ResolveFn<ResetPasswordToken> = route => {\r\n const authService = inject(AuthService);\r\n const router = inject(Router);\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n const invalidTokenPath = bdbOptions.authOptions?.invalidTokenPath;\r\n\r\n const model: ResetPasswordToken = {\r\n token: route.queryParams['token'],\r\n email: route.queryParams['email'],\r\n };\r\n\r\n return of(model).pipe(\r\n tap(x => {\r\n if (!x.token || !x.email) {\r\n throw new Error('Could not obtain token');\r\n }\r\n }),\r\n concatMap(x => authService.validateResetPasswordToken(x)),\r\n tap(x => {\r\n if (!x) {\r\n throw new Error('Token is not valid');\r\n }\r\n }),\r\n catchError(() => router.navigate(['/', invalidTokenPath])),\r\n map(() => model)\r\n );\r\n};\r\n","import { HttpInterceptorFn } from '@angular/common/http';\r\nimport { AuthService, getAuthorizationHeaderFromToken } from './auth.service';\r\nimport { inject } from '@angular/core';\r\nimport { concatMap, take } from 'rxjs';\r\n\r\nexport const tokenInterceptor: HttpInterceptorFn = (req, next) => {\r\n const authService = inject(AuthService);\r\n\r\n return authService.token$.pipe(\r\n take(1),\r\n concatMap(x => {\r\n const request =\r\n x === null\r\n ? req\r\n : req.clone({\r\n setHeaders: {\r\n Authorization: getAuthorizationHeaderFromToken(x ?? ''),\r\n },\r\n });\r\n return next(request);\r\n })\r\n );\r\n};\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\nimport { BDB_OPTIONS, BdbOptionsBuilder, BdbOptionsConfigure } from './bdb-options';\r\nimport { provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport { tokenExpiredInterceptor } from './domain/auth/token-expired.interceptor';\r\nimport { Routes, provideRouter } from '@angular/router';\r\nimport { AuthContainerComponent } from './presentation/auth-container/auth-container.component';\r\nimport { loggedOutGuard } from './presentation/logged-out.guard';\r\nimport { roleGuard } from './presentation/role.guard';\r\nimport { resetPasswordResolver } from './presentation/reset-password.resolver';\r\nimport { tokenInterceptor } from './domain/auth/token.interceptor';\r\n\r\n/**\r\n * Configures BaDaBoom by providing necessary tokens.\r\n * Takes root routes and provides the router with these routes, appending routes if specified\r\n * @param {BdbOptionsConfigure} optionsConfigure\r\n * @param {Routes} routes\r\n * @return {EnvironmentProviders}\r\n */\r\nexport function provideBaDaBoom(optionsConfigure: BdbOptionsConfigure, routes: Routes): EnvironmentProviders {\r\n const options = new BdbOptionsBuilder(optionsConfigure).build();\r\n\r\n let authRoutes: Routes = [];\r\n\r\n if (options.authOptions?.addPresentation) {\r\n const authOptions = options.authOptions;\r\n\r\n authRoutes = [\r\n {\r\n path: '',\r\n component: AuthContainerComponent,\r\n children: [\r\n {\r\n path: authOptions.loginPath,\r\n canActivate: [loggedOutGuard],\r\n loadComponent: () =>\r\n import('./presentation/login-page/login-page.component').then(x => x.LoginPageComponent),\r\n },\r\n {\r\n path: authOptions.logoutPath,\r\n canActivate: [roleGuard()],\r\n loadComponent: () =>\r\n import('./presentation/logout-page/logout-page.component').then(x => x.LogoutPageComponent),\r\n },\r\n {\r\n path: authOptions.forgotPasswordPath,\r\n canActivate: [loggedOutGuard],\r\n loadComponent: () =>\r\n import('./presentation/forgot-password-page/forgot-password-page.component').then(\r\n x => x.ForgotPasswordPageComponent\r\n ),\r\n },\r\n {\r\n path: authOptions.resetPasswordPath,\r\n canActivate: [loggedOutGuard],\r\n resolve: [resetPasswordResolver],\r\n loadComponent: () =>\r\n import('./presentation/reset-password-page/reset-password-page.component').then(\r\n x => x.ResetPasswordPageComponent\r\n ),\r\n },\r\n {\r\n path: authOptions.accessDeniedPath,\r\n loadComponent: () =>\r\n import('./presentation/access-denied-page/access-denied-page.component').then(\r\n x => x.AccessDeniedPageComponent\r\n ),\r\n },\r\n {\r\n path: authOptions.invalidTokenPath,\r\n loadComponent: () =>\r\n import('./presentation/invalid-token-page/invalid-token-page.component').then(\r\n x => x.InvalidTokenPageComponent\r\n ),\r\n },\r\n ],\r\n },\r\n ];\r\n }\r\n\r\n return makeEnvironmentProviders([\r\n { provide: BDB_OPTIONS, useValue: options },\r\n provideHttpClient(withInterceptors([tokenInterceptor, tokenExpiredInterceptor])),\r\n provideRouter([...routes, ...authRoutes]),\r\n ]);\r\n}\r\n","import { DataSource } from '@angular/cdk/collections';\r\nimport { BdbEntityRead } from '../../domain/common/entities/bdb-entity-read';\r\nimport { BehaviorSubject, Observable, Subject, catchError, finalize, of } from 'rxjs';\r\nimport { BdbResponse } from '../../domain/common/bdb-response';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { BdbRequest } from '../../domain/common/bdb-request';\r\nimport { BdbServiceR } from '../../domain/common/services/bdb-service-r';\r\nimport { BdbEntity } from '../../domain/common/entities/bdb-entity';\r\n\r\nexport class BdbDataSource<TEntityRead extends BdbEntityRead> implements DataSource<TEntityRead> {\r\n public dataSubject = new BehaviorSubject<TEntityRead[]>([]);\r\n private responseSubject = new Subject<BdbResponse<TEntityRead>>();\r\n private loadingSubject = new BehaviorSubject<boolean>(false);\r\n private errorSubject = new BehaviorSubject<HttpErrorResponse | null>(null);\r\n\r\n public loading$ = this.loadingSubject.asObservable();\r\n public error$ = this.errorSubject.asObservable();\r\n public response$ = this.responseSubject.asObservable();\r\n\r\n public readonly request: BdbRequest;\r\n\r\n get data(): TEntityRead[] {\r\n return this.dataSubject.value;\r\n }\r\n\r\n constructor(\r\n private service: BdbServiceR<BdbEntity, TEntityRead>,\r\n initialRequest: BdbRequest = {}\r\n ) {\r\n this.request = initialRequest;\r\n }\r\n\r\n disconnect(): void {\r\n return;\r\n }\r\n\r\n connect(): Observable<TEntityRead[] | readonly TEntityRead[]> {\r\n return this.dataSubject.asObservable();\r\n }\r\n\r\n loadMethod(service: BdbServiceR<BdbEntity, TEntityRead>, request: BdbRequest): Observable<BdbResponse<TEntityRead>> {\r\n return service.read(request);\r\n }\r\n\r\n load(): void {\r\n this.loadingSubject.next(true);\r\n this.errorSubject.next(null);\r\n\r\n this.loadMethod(this.service, this.request)\r\n .pipe(\r\n catchError((err: HttpErrorResponse) => {\r\n this.errorSubject.next(err);\r\n return of({ page: 0, count: 0, rows: [], pageSize: 15 });\r\n }),\r\n finalize(() => this.loadingSubject.next(false))\r\n )\r\n .subscribe({\r\n next: (response: BdbResponse<TEntityRead>) => {\r\n this.dataSubject.next(response.rows);\r\n this.responseSubject.next(response);\r\n },\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\n\r\n@Component({\r\n selector: 'bdb-paginator',\r\n imports: [MatPaginatorModule],\r\n templateUrl: './bdb-paginator.component.html',\r\n styleUrls: ['./bdb-paginator.component.scss'],\r\n})\r\nexport class BdbPaginatorComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n\r\n private _onDestroy = new Subject<void>();\r\n\r\n pageSize?: number;\r\n page?: number;\r\n length?: number;\r\n\r\n ngOnInit(): void {\r\n this.dataSource.response$.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: x => {\r\n this.pageSize = x.pageSize;\r\n this.page = x.page;\r\n this.length = x.count;\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n changePage(event: PageEvent): void {\r\n this.dataSource.request.page = event.pageIndex;\r\n this.dataSource.request.pageSize = event.pageSize;\r\n this.dataSource.load();\r\n }\r\n}\r\n","<mat-paginator\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"page\"\r\n [length]=\"length\"\r\n (page)=\"changePage($event)\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [hidePageSize]=\"true\">\r\n</mat-paginator>\r\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'bdb-query-input[dataSource]',\r\n imports: [CommonModule, ReactiveFormsModule, MatIconModule],\r\n templateUrl: './bdb-query-input.component.html',\r\n styleUrls: ['./bdb-query-input.component.scss'],\r\n})\r\nexport class BdbQueryInputComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {\r\n @HostBinding('class') class = 'bdb-query-input';\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n private _onDestroy = new Subject<void>();\r\n queryFormControl = new FormControl<string | undefined>(undefined, { nonNullable: true });\r\n\r\n ngOnInit(): void {\r\n this.queryFormControl.valueChanges\r\n .pipe(debounceTime(100), distinctUntilChanged(), takeUntil(this._onDestroy))\r\n .subscribe({\r\n next: x => {\r\n if (this.dataSource) {\r\n this.dataSource.request.query = x;\r\n this.dataSource.request.page = 0;\r\n this.dataSource.load();\r\n }\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n}\r\n","<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n","import { Component, inject, Input, OnInit } from '@angular/core';\r\nimport { ControlContainer, FormControl } from '@angular/forms';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\n\r\n@Component({ template: '', standalone: true })\r\nexport abstract class BdbSearchWrapperBaseComponent<TEntityRead extends BdbEntityRead> implements OnInit {\r\n @Input() controlName?: string;\r\n @Input() control?: FormControl<TEntityRead | null>;\r\n\r\n formControl!: FormControl<TEntityRead | null>;\r\n\r\n controlContainer = inject(ControlContainer);\r\n\r\n ngOnInit(): void {\r\n if (this.control) {\r\n this.formControl = this.control;\r\n return;\r\n }\r\n\r\n if (!this.controlName) {\r\n throw 'No FormControl or FormControlName provided';\r\n }\r\n\r\n const ctrl = this.controlContainer.control?.get(this.controlName);\r\n\r\n if (!ctrl) {\r\n throw `FormControl '${this.controlName}' not found`;\r\n }\r\n\r\n this.formControl = ctrl as FormControl<TEntityRead | null>;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n// Opzettelijk geen bdb prefix, aangezien dit een pure util is\r\n// Daartoe in eerste instantie ook niet beschikbaar gesteld in public api\r\n// Als hier wel reden toe is: heroverwegen bdb prefix toe te voegen\r\n\r\n@Pipe({\r\n name: 'function',\r\n standalone: true,\r\n})\r\nexport class FunctionPipe<T> implements PipeTransform {\r\n transform(value: T, fn: (x: T) => string): string {\r\n return fn(value);\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { AbstractControl, ControlContainer } from '@angular/forms';\r\n\r\nconst errorMessageMap = new Map([\r\n ['required', 'Verplicht'],\r\n ['email', 'Ongeldig e-mail'],\r\n ['phone', 'Ongeldig tel.nr'],\r\n ['requiredTrue', 'Verplicht'],\r\n ['pattern', 'Ongeldig'],\r\n]);\r\n\r\nfunction getErrorMessage(validationErrorKey: string, validationErrorValue: { [key: string]: unknown }): string {\r\n switch (validationErrorKey) {\r\n case 'minlength':\r\n return `Minimum lengte: ${validationErrorValue['requiredLength']}`;\r\n case 'maxlength':\r\n return `Maximum lengte: ${validationErrorValue['requiredLength']}`;\r\n case 'max':\r\n return `Max: ${validationErrorValue['max']}`;\r\n case 'min':\r\n return `Min: ${validationErrorValue['min']}`;\r\n case 'custom':\r\n return `${validationErrorValue}`;\r\n default:\r\n return errorMessageMap.get(validationErrorKey) ?? validationErrorKey;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[bdbFormError]',\r\n standalone: true,\r\n})\r\nexport class BdbFormErrorDirective implements OnInit {\r\n @Input() bdbFormError!: string | AbstractControl;\r\n\r\n control!: AbstractControl;\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2,\r\n private controlContainer: ControlContainer\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.bdbFormError) {\r\n throw new Error('No (name for) formcontrol provided');\r\n }\r\n\r\n if (typeof this.bdbFormError === 'string') {\r\n const ctrl = this.controlContainer.control?.get(this.bdbFormError);\r\n\r\n if (!ctrl) {\r\n throw new Error(`No formcontrol found for name '${this.bdbFormError}'`);\r\n }\r\n\r\n this.control = ctrl;\r\n } else {\r\n this.control = this.bdbFormError;\r\n }\r\n\r\n this.setError();\r\n\r\n this.control.statusChanges.subscribe({\r\n next: () => this.setError(),\r\n });\r\n }\r\n\r\n setError(): void {\r\n const validationErrors = this.control.errors;\r\n\r\n if (!validationErrors) {\r\n return;\r\n }\r\n\r\n const validationErrorKey = Object.keys(validationErrors)[0];\r\n\r\n const validationErrorValue = validationErrors[validationErrorKey];\r\n\r\n const errorMessage = getErrorMessage(validationErrorKey, validationErrorValue);\r\n\r\n this.renderer.setProperty(this.element.nativeElement, 'innerText', errorMessage);\r\n }\r\n}\r\n","import { CollectionViewer, ListRange } from '@angular/cdk/collections';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\r\nimport {\r\n MatAutocompleteModule,\r\n MatAutocompleteSelectedEvent,\r\n MatAutocompleteTrigger,\r\n} from '@angular/material/autocomplete';\r\nimport { MatButtonModule, MatIconButton } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, filter, Observable, Subject, takeUntil } from 'rxjs';\r\nimport { FunctionPipe } from '../../../common/function.pipe';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { BdbFormErrorDirective } from '../../../common/bdb-form-error.directive';\r\n\r\n@Component({\r\n selector: 'bdb-search',\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n MatAutocompleteModule,\r\n BdbFormErrorDirective,\r\n FunctionPipe,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './bdb-search.component.html',\r\n styleUrls: ['./bdb-search.component.scss'],\r\n})\r\nexport class BdbSearchComponent<TEntityRead extends BdbEntityRead>\r\n implements CollectionViewer, OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\r\n{\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n @Input() displayFn!: (_: TEntityRead | string) => string;\r\n @Input() label = '';\r\n @Input() hint = '';\r\n @Input() placeholder = '';\r\n\r\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\r\n @ViewChild('clearButton') clearButton?: MatIconButton;\r\n @ViewChild(MatAutocompleteTrigger) autoCompleteTrigger?: MatAutocompleteTrigger;\r\n\r\n private readonly _onDestroy = new Subject<void>();\r\n\r\n viewChange = new BehaviorSubject<ListRange>({\r\n start: 0,\r\n end: Number.MAX_VALUE,\r\n });\r\n\r\n searchOptions?: Observable<TEntityRead[] | readonly TEntityRead[]>;\r\n\r\n searchCtrl = new FormControl<string | TEntityRead>('', {\r\n nonNullable: true,\r\n validators: [(): ValidationErrors | null => this.ngControl.errors],\r\n });\r\n\r\n inputTabIndex = 0;\r\n hasValue = false;\r\n isDisabled = false;\r\n\r\n onChange?: (_: TEntityRead | null) => void;\r\n onTouch?: () => void;\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n ngControl.valueAccessor = this;\r\n\r\n this.searchCtrl.valueChanges\r\n .pipe(\r\n takeUntil(this._onDestroy),\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n filter(x => typeof x === 'string')\r\n )\r\n .subscribe({\r\n next: x => {\r\n this.dataSource.request.query = x as string;\r\n this.dataSource.load();\r\n },\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.searchOptions = this.dataSource.connect();\r\n\r\n this.ngControl.valueChanges?.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: () => this.searchCtrl.updateValueAndValidity(),\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.autoCompleteTrigger?.panelClosingActions.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: x => {\r\n if (x === null) {\r\n this.searchCtrl.setValue('');\r\n this.searchInput?.nativeElement.blur();\r\n }\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n writeValue(obj: TEntityRead | null): void {\r\n if (!obj) {\r\n this.hasValue = false;\r\n this.inputTabIndex = 0;\r\n this.searchCtrl.setValue('');\r\n return;\r\n }\r\n\r\n this.searchCtrl.setValue(obj);\r\n this.inputTabIndex = -1;\r\n this.hasValue = true;\r\n }\r\n\r\n registerOnChange(fn: (_: TEntityRead | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouch = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.searchCtrl.disable() : this.searchCtrl.enable();\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n onFocus(): void {\r\n if (this.hasValue) {\r\n this.searchInput?.nativeElement.blur();\r\n this.autoCompleteTrigger?.closePanel();\r\n this.clearButton?.focus();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (!this.onTouch) {\r\n throw 'No onTouch callback registered';\r\n }\r\n\r\n this.onTouch();\r\n }\r\n\r\n selectOption(event: MatAutocompleteSelectedEvent): void {\r\n if (!this.onChange) {\r\n throw 'No onChange callback registered';\r\n }\r\n\r\n this.inputTabIndex = -1;\r\n this.hasValue = true;\r\n this.searchInput?.nativeElement.blur();\r\n\r\n const value = event.option.value as TEntityRead;\r\n this.onChange(value);\r\n }\r\n\r\n clear(): void {\r\n if (!this.onChange) {\r\n throw 'No onChange callback registered';\r\n }\r\n\r\n this.hasValue = false;\r\n this.inputTabIndex = 0;\r\n this.searchCtrl.setValue('');\r\n this.searchInput?.nativeElement.focus();\r\n\r\n this.onChange(null);\r\n }\r\n}\r\n","<div class=\"search-container\">\r\n <div class=\"search-disabled-cover\" *ngIf=\"hasValue\">\r\n <button #clearButton mat-icon-button type=\"button\" [disabled]=\"isDisabled\" (click)=\"clear()\" color=\"danger\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </div>\r\n <mat-form-field class=\"search-form-field\">\r\n <mat-label>{{ label }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n [formControl]=\"searchCtrl\"\r\n [matAutocomplete]=\"autoComplete\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n #searchInput\r\n [tabIndex]=\"inputTabIndex\"\r\n [placeholder]=\"placeholder\" />\r\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"selectOption($event)\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of searchOptions | async\" [value]=\"option\">\r\n {{ option | function: displayFn }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-icon *ngIf=\"!hasValue\" matSuffix [ngClass]=\"{ 'search-icon-disabled': isDisabled }\">search</mat-icon>\r\n <mat-error [bdbFormError]=\"searchCtrl\"> </mat-error>\r\n <mat-hint>{{ hint }}</mat-hint>\r\n </mat-form-field>\r\n</div>\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[bdbCellDef]',\r\n standalone: true,\r\n})\r\nexport class BdbCellDirective {\r\n @Input()\r\n public bdbCellDef = '';\r\n\r\n constructor(public templateRef: TemplateRef<never>) {}\r\n}\r\n","export enum BdbColumnType {\r\n String = 'String',\r\n Number = 'Number',\r\n Percentage = 'Percentage',\r\n Currency = 'Currency',\r\n Date = 'Date',\r\n Boolean = 'Boolean',\r\n Enum = 'Enum',\r\n Custom = 'Custom',\r\n}\r\n","import {\r\n BdbBooleanColumnOptions,\r\n BdbColumnOptions,\r\n BdbCurrencyColumnOptions,\r\n BdbDateColumnOptions,\r\n BdbEnumColumnOptions,\r\n BdbNumberColumnOptions,\r\n BdbPercentageColumnOptions,\r\n BdbStringColumnOptions,\r\n} from './bdb-column-options';\r\nimport { BdbColumn } from './bdb-column';\r\nimport { BdbColumnType } from './bdb-column-type';\r\nimport { Injectable } from '@angular/core';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BdbColumnBuilder<TRead extends BdbEntityRead> {\r\n build(...columns: BdbColumn<TRead, unknown>[]): BdbColumn<TRead, unknown>[] {\r\n return columns;\r\n }\r\n\r\n string(\r\n field: (x: TRead) => string | undefined,\r\n title: string,\r\n options: BdbStringColumnOptions = {}\r\n ): BdbColumn<TRead, string | undefined> {\r\n const ret = this._buildCommonOptions(BdbColumnType.String, field, title, options);\r\n ret.pipe = options.pipe;\r\n return ret;\r\n }\r\n\r\n number(\r\n field: (x: TRead) => number | undefined,\r\n title: string,\r\n options: BdbNumberColumnOptions = {}\r\n ): BdbColumn<TRead, number | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Number, field, title, options);\r\n ret.pipe = options.pipe;\r\n ret.format = options.format;\r\n return ret;\r\n }\r\n\r\n percentage(\r\n field: (x: TRead) => number | undefined,\r\n title: string,\r\n options: BdbPercentageColumnOptions = {}\r\n ): BdbColumn<TRead, number | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Percentage, field, title, options);\r\n ret.digitsInfo = options.digitsInfo;\r\n ret.locale = options.locale;\r\n return ret;\r\n }\r\n\r\n currency(\r\n field: (x: TRead) => number | undefined,\r\n title: string,\r\n options: BdbCurrencyColumnOptions = {}\r\n ): BdbColumn<TRead, number | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Currency, field, title, options);\r\n ret.currencyCode = options.currencyCode;\r\n ret.display = options.display;\r\n ret.digitsInfo = options.digitsInfo;\r\n ret.locale = options.locale;\r\n return ret;\r\n }\r\n\r\n date(\r\n field: (x: TRead) => Date | undefined,\r\n title: string,\r\n options: BdbDateColumnOptions = {}\r\n ): BdbColumn<TRead, Date | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Date, field, title, options);\r\n ret.format = options.format ?? 'short';\r\n if (ret.width === undefined) {\r\n switch (ret.format) {\r\n case 'short':\r\n ret.width = 144;\r\n break;\r\n case 'shortDate':\r\n ret.width = 96;\r\n break;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n boolean(\r\n field: (x: TRead) => boolean | undefined,\r\n title: string,\r\n options: BdbBooleanColumnOptions = {}\r\n ): BdbColumn<TRead, boolean | undefined> {\r\n const ret = this._buildCommonOptions(BdbColumnType.Boolean, field, title, options);\r\n ret.icon = options.icon ?? true;\r\n return ret;\r\n }\r\n\r\n enum<TEnum>(\r\n field: (x: TRead) => TEnum | undefined,\r\n title: string,\r\n options: BdbEnumColumnOptions = {}\r\n ): BdbColumn<TRead, TEnum | undefined> {\r\n const ret = this._buildCommonOptions(BdbColumnType.Enum, field, title, options);\r\n ret.pipe = options.pipe;\r\n return ret;\r\n }\r\n\r\n custom(id: string, title: string, options: BdbColumnOptions = {}): BdbColumn<TRead, unknown> {\r\n return {\r\n type: BdbColumnType.Custom,\r\n id: id,\r\n title: title,\r\n field: () => undefined,\r\n sortDisabled: options.sortDisabled ?? true,\r\n width: options.width,\r\n textAlign: options.textAlign,\r\n };\r\n }\r\n\r\n private _buildCommonOptions<TColumnType>(\r\n type: BdbColumnType,\r\n field: (x: TRead) => TColumnType,\r\n title: string,\r\n options: BdbColumnOptions | undefined = undefined\r\n ): BdbColumn<TRead, TColumnType> {\r\n const id =\r\n options?.id ??\r\n field\r\n .toString()\r\n .split('.')\r\n .slice(1)\r\n .map(x => x.replace(/(\\?|!)$/, ''))\r\n .join('.');\r\n return {\r\n type: type,\r\n id: id,\r\n title: title,\r\n field: field,\r\n sortDisabled: options?.sortDisabled,\r\n width: options?.width,\r\n textAlign: options?.textAlign,\r\n };\r\n }\r\n}\r\n","import { Injector, Pipe, PipeTransform, Type } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'dynamicPipe',\r\n standalone: true,\r\n})\r\nexport class DynamicPipe implements PipeTransform {\r\n constructor(private injector: Injector) {}\r\n\r\n transform(value: unknown, requiredPipe: Type<PipeTransform>, pipeArgs: unknown): unknown {\r\n const injector = Injector.create({\r\n name: 'DynamicPipe',\r\n parent: this.injector,\r\n providers: [{ provide: requiredPipe }],\r\n });\r\n const pipe = injector.get(requiredPipe);\r\n return pipe.transform(value, pipeArgs);\r\n }\r\n}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'bdb-boolean-display',\r\n imports: [CommonModule, MatIconModule],\r\n templateUrl: './bdb-boolean-display.component.html',\r\n styleUrls: ['./bdb-boolean-display.component.scss'],\r\n})\r\nexport class BdbBooleanDisplayComponent {\r\n @HostBinding('class') class = 'bdb-boolean-display';\r\n @Input() value?: boolean | null;\r\n}\r\n","<mat-icon *ngIf=\"value === false\" class=\"false\">clear</mat-icon>\r\n<mat-icon *ngIf=\"value === true\" class=\"true\">check</mat-icon>\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n TrackByFunction,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { Subject } from 'rxjs';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { BdbAlertErrorResponseComponent } from '../../../common/alert-error-response/bdb-alert-error-response.component';\r\nimport { DynamicPipe } from './dynamic.pipe';\r\nimport { BdbBooleanDisplayComponent } from '../../../common/boolean-display/bdb-boolean-display.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BdbEntity } from '../../../domain/common/entities/bdb-entity';\r\nimport { BdbColumn } from './bdb-column';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { BdbContextAction } from './bdb-context-action';\r\nimport { BdbCellDirective } from './bdb-cell.directive';\r\nimport { BdbColumnType } from './bdb-column-type';\r\nimport { BdbM3Palette } from '../../../common/bdb-palette';\r\n\r\n@Component({\r\n selector: 'bdb-table[dataSource]',\r\n imports: [\r\n CommonModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatSortModule,\r\n BdbAlertErrorResponseComponent,\r\n DynamicPipe,\r\n BdbBooleanDisplayComponent,\r\n MatMenuModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './bdb-table.component.html',\r\n styleUrls: ['./bdb-table.component.scss'],\r\n})\r\nexport class BdbTableComponent<TRead extends BdbEntity> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\r\n private readonly _onDestroy = new Subject<void>();\r\n\r\n @Input() columns: BdbColumn<TRead, unknown>[] = [];\r\n @Input() dataSource!: BdbDataSource<TRead>;\r\n @Input() autoLoad?: boolean = undefined;\r\n\r\n @Input() displayedColumns: string[] = [];\r\n @Input() contextActions: BdbContextAction<TRead>[] = [];\r\n\r\n @Input() selection?: SelectionModel<TRead>;\r\n @Input() selectOnRowClick = true;\r\n @Input() selectedRowClass = 'selected';\r\n\r\n @Input() isClickable = true;\r\n\r\n @Output() rowClick = new EventEmitter<TRead>();\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<TRead>; row: TRead }>();\r\n\r\n @ViewChild(MatMenuTrigger) contextMenu!: MatMenuTrigger;\r\n @ContentChildren(BdbCellDirective, { descendants: true }) cellTemplates: QueryList<BdbCellDirective> | undefined;\r\n\r\n error: HttpErrorResponse | undefined;\r\n columnType = BdbColumnType;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n @Input() rowColor?: (x: TRead) => BdbM3Palette;\r\n\r\n public trackById: TrackByFunction<BdbEntity> = (_: number, item: BdbEntity) => {\r\n return item.id;\r\n };\r\n\r\n ngOnInit(): void {\r\n if (this.autoLoad !== false) {\r\n this.load();\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.columns && !this.displayedColumns.length) {\r\n this.displayedColumns = this.columns.map(x => x.id);\r\n }\r\n if (this.selection?.isMultipleSelection() && !(this.displayedColumns[0] === 'selection')) {\r\n this.displayedColumns.unshift('selection');\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.setColumnTemplates();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n public load(): void {\r\n this.error = undefined;\r\n\r\n this.dataSource.load();\r\n }\r\n\r\n setColumnTemplates(): void {\r\n const templates = this.cellTemplates;\r\n if (templates == undefined || !this.cellTemplates?.length) {\r\n return;\r\n }\r\n if (this.columns && this.columns.length) {\r\n this.columns.forEach(x => {\r\n const tpl = templates.filter(y => y.bdbCellDef === x.id)[0];\r\n if (tpl) {\r\n x.template = tpl.templateRef;\r\n }\r\n });\r\n }\r\n }\r\n\r\n onRowClick(row: TRead): void {\r\n if (this.selection && this.selectOnRowClick) {\r\n this.selection.toggle(row);\r\n }\r\n this.rowClick.emit(row);\r\n }\r\n\r\n // SORT\r\n sortData(event: Sort): void {\r\n const column = this.columns.find(x => x.id === event.active);\r\n if (column) {\r\n this.dataSource.request.sortField = column.id;\r\n this.dataSource.request.sortDirection = event.direction;\r\n this.dataSource.load();\r\n }\r\n }\r\n\r\n // CONTEXT MENU\r\n onContextMenu(event: MouseEvent, row: TRead): void {\r\n event.preventDefault();\r\n if (this.contextActions && this.contextActions.length) {\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menuData = { row: row };\r\n if (this.contextMenu.menu) {\r\n this.contextMenu.menu.focusFirstItem('mouse');\r\n }\r\n this.contextMenu.openMenu();\r\n }\r\n }\r\n\r\n onContextMenuAction(action: BdbContextAction<TRead>, row: TRead): void {\r\n this.contextAction.emit({ action: action, row: row });\r\n }\r\n\r\n isAllSelected(): boolean {\r\n if (!this.selection) {\r\n return false;\r\n }\r\n return this.dataSource.data.every(x => this.selection?.isSelected(x));\r\n }\r\n\r\n anySelected(): boolean {\r\n if (!this.selection) {\r\n return false;\r\n }\r\n return this.dataSource.data.some(x => this.selection?.isSelected(x));\r\n }\r\n\r\n toggleAllRows(): void {\r\n if (!(this.selection && this.dataSource)) {\r\n return;\r\n }\r\n if (this.isAllSelected()) {\r\n this.selection.deselect(...this.dataSource.data);\r\n } else {\r\n this.selection.select(...this.dataSource.data);\r\n }\r\n }\r\n\r\n rowClass(row: TRead): { [klass: string]: unknown } | undefined {\r\n if (!(this.selection || this.rowColor)) {\r\n return undefined;\r\n }\r\n const ret: { [klass: string]: unknown } = {};\r\n if (this.selection) {\r\n ret[this.selectedRowClass] = this.selection.isSelected(row);\r\n }\r\n if (this.rowColor) {\r\n const palette = this.rowColor(row);\r\n if (palette) {\r\n ret['bdb-' + palette] = true;\r\n } else if (!this.selection) {\r\n return undefined;\r\n }\r\n }\r\n return ret;\r\n }\r\n}\r\n","<div class=\"bdb-table-container\">\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n *ngIf=\"dataSource\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n color=\"primary\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n color=\"accent\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]=\"column.id\" *ngFor=\"let column of columns\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n <bdb-alert-error-response\r\n [value]=\"dataSource.error$ | async\"\r\n *ngIf=\"dataSource && (dataSource.error$ | async); else noData\"></bdb-alert-error-response>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"columnType.String\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Number\">{{ column.field(row) | number: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Percentage\">{{\r\n column.field(row) | percent: column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Currency\">{{\r\n column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Date\"> {{ column.field(row) | date: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Boolean\">\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Enum\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Custom\">*?*</ng-container>\r\n <ng-container *ngSwitchDefault>{{ column.field(row) | json }}</ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n <ng-container *ngFor=\"let action of contextActions\">\r\n <button\r\n mat-menu-item\r\n (click)=\"onContextMenuAction(action, row)\"\r\n *ngIf=\"action.condition === undefined || action.condition(row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n</mat-menu>\r\n","export class LayoutError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { LayoutError } from './layout-error';\r\n\r\ntype FlexSpacing = {\r\n align: string;\r\n justify: string;\r\n};\r\n\r\nconst DEFAULT_FLEX_DIRECTION = 'row';\r\nconst DEFAULT_FLEX_GAP = '';\r\nconst DEFAULT_FLEX_SPACING: FlexSpacing = {\r\n justify: 'start',\r\n align: 'stretch',\r\n};\r\n\r\n@Directive({\r\n selector: '[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]',\r\n standalone: true,\r\n})\r\nexport class BdbFlexDirective implements OnInit {\r\n @Input() bdbFlex = '';\r\n @Input() bdbFlexDirection = '';\r\n @Input() bdbFlexGap = '';\r\n @Input() bdbFlexSpacing = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.element.nativeElement, 'display', 'flex');\r\n\r\n const bdbFlexInputs = this.bdbFlex.split(' ').filter(x => !!x);\r\n\r\n this.setDirection(bdbFlexInputs[0]);\r\n this.setGap(bdbFlexInputs[1]);\r\n this.setSpacing({\r\n justify: bdbFlexInputs[2],\r\n align: bdbFlexInputs[3],\r\n });\r\n }\r\n\r\n setDirection(bdbFlexInput?: string): void {\r\n const direction = this.validateDirection(this.getDirection(bdbFlexInput));\r\n this.renderer.setStyle(this.element.nativeElement, 'flex-direction', direction);\r\n }\r\n\r\n getDirection(bdbFlexInput?: string): string {\r\n const trimmedBdbFlexDirection = this.bdbFlexDirection.trim();\r\n\r\n if (trimmedBdbFlexDirection) {\r\n return trimmedBdbFlexDirection;\r\n }\r\n\r\n if (bdbFlexInput) {\r\n return bdbFlexInput;\r\n }\r\n\r\n return DEFAULT_FLEX_DIRECTION;\r\n }\r\n\r\n validateDirection(direction: string): string {\r\n switch (direction) {\r\n case 'row':\r\n return 'row';\r\n case 'col':\r\n return 'column';\r\n default:\r\n throw new LayoutError(`'${direction}' is not a valid value for flex direction`);\r\n }\r\n }\r\n\r\n setGap(bdbFlexInput?: string): void {\r\n const gap = this.validateGap(this.getGap(bdbFlexInput));\r\n this.renderer.setStyle(this.element.nativeElement, 'gap', gap);\r\n }\r\n\r\n getGap(bdbFlexInput?: string): string {\r\n const trimmedBdbFlexGap = this.bdbFlexGap.trim();\r\n\r\n if (trimmedBdbFlexGap) {\r\n return trimmedBdbFlexGap;\r\n }\r\n\r\n if (bdbFlexInput) {\r\n return bdbFlexInput;\r\n }\r\n\r\n return DEFAULT_FLEX_GAP;\r\n }\r\n\r\n validateGap(gap: string): string {\r\n return gap;\r\n }\r\n\r\n setSpacing(bdbFlexInput: Partial<FlexSpacing>): void {\r\n const spacing = this.validateSpacing(this.getSpacing(bdbFlexInput));\r\n this.renderer.setStyle(this.element.nativeElement, 'align-items', spacing.align);\r\n this.renderer.setStyle(this.element.nativeElement, 'justify-content', spacing.justify);\r\n }\r\n\r\n getSpacing(bdbFlexInput: Partial<FlexSpacing>): FlexSpacing {\r\n const splitBdbFlexSpacing = this.bdbFlexSpacing.split(' ').filter(x => !!x);\r\n\r\n if (splitBdbFlexSpacing.length === 2) {\r\n return {\r\n align: splitBdbFlexSpacing[0],\r\n justify: splitBdbFlexSpacing[1],\r\n };\r\n }\r\n\r\n if (bdbFlexInput.align && bdbFlexInput.justify) {\r\n return {\r\n align: bdbFlexInput.align,\r\n justify: bdbFlexInput.justify,\r\n };\r\n }\r\n\r\n return DEFAULT_FLEX_SPACING;\r\n }\r\n\r\n validateSpacing(spacing: FlexSpacing): FlexSpacing {\r\n return spacing;\r\n }\r\n}\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { BdbFlexDirective } from '../../../common/bdb-flex.directive';\r\nimport { BdbQueryInputComponent } from '../query-input/bdb-query-input.component';\r\nimport { BdbPaginatorComponent } from '../paginator/bdb-paginator.component';\r\nimport { BdbTableComponent } from '../table/bdb-table.component';\r\nimport { BdbEntity } from '../../../domain/common/entities/bdb-entity';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { BdbColumn } from '../table/bdb-column';\r\nimport { BdbContextAction } from '../table/bdb-context-action';\r\nimport { BdbM3Palette } from '../../../common/bdb-palette';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbCellDirective } from '../table/bdb-cell.directive';\r\n\r\n@Component({\r\n selector: 'bdb-full-table',\r\n imports: [\r\n CommonModule,\r\n BdbFlexDirective,\r\n MatToolbarModule,\r\n BdbQueryInputComponent,\r\n BdbPaginatorComponent,\r\n BdbTableComponent,\r\n BdbCellDirective,\r\n ],\r\n templateUrl: './bdb-full-table.component.html',\r\n styleUrl: './bdb-full-table.component.scss',\r\n})\r\nexport class BdbFullTableComponent<TEntityRead extends BdbEntity> {\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n @Input() columns: BdbColumn<TEntityRead, unknown>[] = [];\r\n @Input() displayedColumns: string[] = [];\r\n @Input() autoLoad?: boolean = undefined;\r\n\r\n @Input() selection?: SelectionModel<TEntityRead>;\r\n @Input() contextActions: BdbContextAction<TEntityRead>[] = [];\r\n @Input() rowColor?: (x: TEntityRead) => BdbM3Palette;\r\n @Input() showToolbar: boolean = true;\r\n\r\n @Output() rowClick = new EventEmitter<TEntityRead>();\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<TEntityRead>; row: TEntityRead }>();\r\n\r\n @ContentChildren(BdbCellDirective, { descendants: true }) cellTemplates: QueryList<BdbCellDirective> | undefined;\r\n}\r\n","@if (showToolbar) {\r\n <mat-toolbar>\r\n <div bdbFlex=\"row 8px start center\">\r\n <ng-content select=\"toolbar-item\"></ng-content>\r\n </div>\r\n <bdb-query-input [dataSource]=\"dataSource\"></bdb-query-input>\r\n </mat-toolbar>\r\n}\r\n<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [autoLoad]=\"autoLoad\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [rowColor]=\"rowColor\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"contextAction.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\">\r\n @for (cellTemplate of cellTemplates; track cellTemplate.bdbCellDef) {\r\n <ng-template bdbCellDef=\"{{ cellTemplate.bdbCellDef }}\" let-element>\r\n <ng-container *ngTemplateOutlet=\"cellTemplate.templateRef; context: { $implicit: element }\"></ng-container>\r\n </ng-template>\r\n }\r\n</bdb-table>\r\n<bdb-paginator [dataSource]=\"dataSource\"></bdb-paginator>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbTableComponent } from '../../common/table/bdb-table.component';\r\nimport { ExceptionLogRead } from '../../../domain/entities/exception-log/exception-log-read';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\n\r\n@Component({\r\n selector: 'bdb-exception-log-table[dataSource]',\r\n imports: [CommonModule, BdbTableComponent],\r\n templateUrl: './exception-log-table.component.html',\r\n styleUrls: ['./exception-log-table.component.scss'],\r\n})\r\nexport class ExceptionLogTableComponent {\r\n @Input() dataSource!: BdbDataSource<ExceptionLogRead>;\r\n @Input() displayedColumns: string[] = [];\r\n @Output() rowClick = new EventEmitter<ExceptionLogRead>();\r\n\r\n columns: BdbColumn<ExceptionLogRead, unknown>[] = this.cb.build(this.cb.string(x => x.message, 'Message'));\r\n\r\n constructor(\r\n private cb: BdbColumnBuilder<ExceptionLogRead>,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute\r\n ) {}\r\n\r\n @Input() contextActions: BdbContextAction<ExceptionLogRead>[] = [\r\n {\r\n icon: 'search',\r\n color: 'primary',\r\n label: 'Details',\r\n identifier: 'details',\r\n },\r\n ];\r\n\r\n onRowClick(row: ExceptionLogRead): void {\r\n this.rowClick.emit(row);\r\n }\r\n\r\n onContextAction(event: { action: BdbContextAction<ExceptionLogRead>; row: ExceptionLogRead }): void {\r\n switch (event.action.identifier) {\r\n case 'details':\r\n this.router.navigate([event.row.id], { relativeTo: this.activatedRoute });\r\n break;\r\n }\r\n }\r\n}\r\n","<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n","export enum MediaType {\r\n Image = 'Image',\r\n Video = 'Video',\r\n File = 'File',\r\n}\r\n\r\nexport const MediaTypeMap = new Map<MediaType, string>([\r\n [MediaType.Image, 'Afbeelding'],\r\n [MediaType.Video, 'Video'],\r\n [MediaType.File, 'Bestand'],\r\n]);\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MediaType, MediaTypeMap } from '../../domain/enums/media-type';\r\n\r\n@Pipe({\r\n name: 'mediaType',\r\n})\r\nexport class MediaTypePipe implements PipeTransform {\r\n transform(value: MediaType | undefined): string | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return MediaTypeMap.get(value) ?? '???';\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n transform(bytes: number | undefined): string | undefined {\r\n if (bytes === undefined) {\r\n return undefined;\r\n }\r\n if (isNaN(bytes) || bytes === 0) return '0 Bytes';\r\n\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\r\n return `${parseFloat((bytes / Math.pow(1024, i)).toFixed(1))} ${sizes[i]}`;\r\n }\r\n}\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { Media } from '../../../domain/entities/media/media';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\nimport { MediaTypePipe } from '../media-type.pipe';\r\nimport { FileSizePipe } from '../../../common/file-size.pipe';\r\nimport { BdbFullTableComponent } from '../../common/full-table/bdb-full-table.component';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'bdb-media-full-table',\r\n imports: [BdbFullTableComponent, MatButtonModule],\r\n templateUrl: './media-full-table.component.html',\r\n styleUrl: './media-full-table.component.scss',\r\n})\r\nexport class MediaFullTableComponent {\r\n @Input() dataSource!: BdbDataSource<Media>;\r\n @Input() displayedColumns: string[] = [];\r\n @Input() selection?: SelectionModel<Media>;\r\n @Input() showToolbar = true;\r\n @Input() contextActions: BdbContextAction<Media>[] = [];\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<Media>; row: Media }>();\r\n @Output() rowClick = new EventEmitter<Media>();\r\n\r\n cb = inject(BdbColumnBuilder<Media>);\r\n\r\n columns: BdbColumn<Media, unknown>[] = this.cb.build(\r\n this.cb.enum(x => x.type, 'Type', { pipe: MediaTypePipe, width: 120 }),\r\n this.cb.string(x => x.fileName, 'Bestandsnaam'),\r\n this.cb.string(x => x.reference, 'Referentie', { width: 200 }),\r\n this.cb.number(x => x.fileSize, 'Bestandsgrootte', { pipe: FileSizePipe, width: 200 }),\r\n this.cb.number(x => x.height, 'Hoogte', { width: 200 }),\r\n this.cb.number(x => x.width, 'Breedte', { width: 200 })\r\n );\r\n}\r\n","<bdb-full-table\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [showToolbar]=\"showToolbar\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n <ng-content select=\"toolbar-item\" ngProjectAs=\"toolbar-item\"></ng-content>\r\n <ng-content></ng-content>\r\n</bdb-full-table>\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbTableComponent } from '../../common/table/bdb-table.component';\r\nimport { MediaTypePipe } from '../media-type.pipe';\r\nimport { FileSizePipe } from '../../../common/file-size.pipe';\r\nimport { Media } from '../../../domain/entities/media/media';\r\n\r\n@Component({\r\n selector: 'bdb-media-table',\r\n imports: [CommonModule, BdbTableComponent],\r\n templateUrl: './media-table.component.html',\r\n styleUrls: ['./media-table.component.scss'],\r\n})\r\nexport class MediaTableComponent {\r\n @Input() dataSource!: BdbDataSource<Media>;\r\n @Input() displayedColumns: string[] = [];\r\n @Input() contextActions: BdbContextAction<Media>[] = [];\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<Media>; row: Media }>();\r\n @Output() rowClick = new EventEmitter<Media>();\r\n\r\n cb = inject(BdbColumnBuilder<Media>);\r\n\r\n columns: BdbColumn<Media, unknown>[] = this.cb.build(\r\n this.cb.enum(x => x.type, 'Type', { pipe: MediaTypePipe, width: 120 }),\r\n this.cb.string(x => x.fileName, 'Bestandsnaam'),\r\n this.cb.string(x => x.reference, 'Referentie', { width: 200 }),\r\n this.cb.number(x => x.fileSize, 'Bestandsgrootte', { pipe: FileSizePipe, width: 200 }),\r\n this.cb.number(x => x.height, 'Hoogte', { width: 200 }),\r\n this.cb.number(x => x.width, 'Breedte', { width: 200 })\r\n );\r\n}\r\n","<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n</bdb-table>\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { YouTubePlayerModule } from '@angular/youtube-player';\r\n\r\n@Component({\r\n selector: 'bdb-youtube-player',\r\n imports: [YouTubePlayerModule],\r\n templateUrl: './youtube-player.component.html',\r\n styleUrl: './youtube-player.component.scss',\r\n})\r\nexport class BdbYoutubePlayerComponent implements AfterViewInit {\r\n //https://stackoverflow.com/a/72043964\r\n @ViewChild('youTubePlayer') youTubePlayer!: ElementRef<HTMLDivElement>;\r\n\r\n videoHeight: number | undefined = 100;\r\n videoWidth: number | undefined = 100;\r\n\r\n @Input() videoId?: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.onResize();\r\n window.addEventListener('resize', this.onResize.bind(this));\r\n }\r\n\r\n onResize(): void {\r\n // you can remove this line if you want to have wider video player than 1200px\r\n this.videoWidth = Math.min(this.youTubePlayer.nativeElement.clientWidth, 1200);\r\n // so you keep the ratio\r\n this.videoHeight = this.videoWidth * 0.6;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","<div #youTubePlayer class=\"bdb-youtube-player\">\r\n <youtube-player [width]=\"videoWidth\" [height]=\"videoHeight\" [videoId]=\"videoId\"></youtube-player>\r\n</div>\r\n","import { Component, inject, Input, OnChanges } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MediaType } from '../../../domain/enums/media-type';\r\nimport { BDB_OPTIONS } from '../../../bdb-options';\r\nimport { BdbYoutubePlayerComponent } from '../../../common/youtube-player/youtube-player.component';\r\nimport { Media } from '../../../domain/entities/media/media';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'bdb-media-display',\r\n imports: [MatButtonModule, MatIconModule, NgTemplateOutlet, BdbYoutubePlayerComponent],\r\n templateUrl: './media-display.component.html',\r\n styleUrls: ['./media-display.component.scss'],\r\n})\r\nexport class BdbMediaDisplayComponent implements OnChanges {\r\n @Input() media?: Media;\r\n @Input() mode: 'preview' | 'live' = 'preview';\r\n @Input() width?: number;\r\n @Input() height?: number;\r\n @Input() alt?: string;\r\n bdbOptions = inject(BDB_OPTIONS);\r\n\r\n src?: string;\r\n\r\n mediaType = MediaType;\r\n hasError = false;\r\n noMediaUrl?: string;\r\n\r\n ngOnChanges(): void {\r\n this.src = this.getSource(this.media);\r\n this.hasError = false;\r\n this.noMediaUrl =\r\n this.bdbOptions.backendUrl + '/na.png' + `?width=${this.width ?? '256'}&height=${this.height ?? '256'}`;\r\n }\r\n\r\n getSource(media?: Media, download = false): string | undefined {\r\n if (!media) {\r\n return undefined;\r\n }\r\n\r\n const params = new URLSearchParams();\r\n if (this.width) {\r\n params.append('width', `${this.width}`);\r\n }\r\n if (this.height) {\r\n params.append('height', `${this.height}`);\r\n }\r\n\r\n switch (media.type) {\r\n case MediaType.File:\r\n if (media.fileName && this.getFileExtension(media.fileName) === 'pdf') {\r\n if (download) {\r\n return `${this.bdbOptions.mediaUrl}/${media.fileName}`;\r\n }\r\n const previewFileName = media.preview?.fileName;\r\n\r\n if (!previewFileName) {\r\n return undefined;\r\n }\r\n\r\n if (this.mode === 'live') {\r\n params.set('width', '512');\r\n params.delete('height');\r\n }\r\n\r\n return `${this.bdbOptions.mediaUrl}/${previewFileName}?${params.toString()}`;\r\n } else {\r\n return undefined;\r\n }\r\n\r\n case MediaType.Image:\r\n return `${this.bdbOptions.mediaUrl}/${media.fileName}?${params.toString()}`;\r\n case MediaType.Video:\r\n return `https://img.youtube.com/vi/${media.reference}/maxresdefault.jpg`;\r\n }\r\n }\r\n\r\n errorHandler(): void {\r\n this.hasError = true;\r\n }\r\n\r\n getDownloadUrl(): string | undefined {\r\n if (!this.media) {\r\n return undefined;\r\n }\r\n\r\n return `${this.bdbOptions.mediaUrl}/${this.media.fileName}`;\r\n }\r\n\r\n public getFileExtension(fileName: string): string | undefined {\r\n const parts = fileName.split('.');\r\n if (parts.length === 1 || parts.some(x => x === '')) {\r\n return undefined;\r\n }\r\n return parts.pop()?.toLocaleLowerCase();\r\n }\r\n}\r\n","@if (media && !hasError) {\r\n @switch (media.type) {\r\n @case (mediaType.File) {\r\n <ng-container *ngTemplateOutlet=\"mode === 'preview' ? filePreview : fileLive\"></ng-container>\r\n }\r\n @case (mediaType.Video) {\r\n <ng-container *ngTemplateOutlet=\"mode === 'preview' ? videoPreview : videoPlayer\"></ng-container>\r\n }\r\n @default {\r\n <img [src]=\"src\" (error)=\"errorHandler()\" [alt]=\"alt\" />\r\n }\r\n }\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"noMedia\"></ng-container>\r\n}\r\n\r\n<ng-template #fileNameDisplay>\r\n <div bdbFlex=\"col 8px center center\" style=\"width: 100%; height: 100%\">\r\n <div>Geen preview beschikbaar</div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #videoPreview>\r\n <div bdbFlex=\"col 0px center center\">\r\n <mat-icon>play_circle_outline</mat-icon>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"fileNameDisplay\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #videoPlayer>\r\n <bdb-youtube-player [videoId]=\"media?.reference\"></bdb-youtube-player>\r\n</ng-template>\r\n\r\n<ng-template #filePreview>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"fileNameDisplay\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #fileLive>\r\n <div class=\"file-live\">\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"fileNameDisplay\"></ng-container>\r\n }\r\n\r\n <div class=\"file-overlay\">\r\n <a mat-fab aria-label=\"Download\" [href]=\"getSource(media, true)\" target=\"_blank\" download class=\"primary\">\r\n <mat-icon>save_alt</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #noMedia>\r\n <svg version=\"1.1\" viewBox=\"0 0 180 180\" xmlns:svg=\"http://www.w3.org/2000/svg\">\r\n <g transform=\"translate(-2,-6)\">\r\n <rect style=\"fill: #9f9f9f\" width=\"90\" height=\"90\" x=\"-18\" y=\"85\" ry=\"8.4\" transform=\"rotate(-16.3)\" />\r\n <g transform=\"rotate(16.3,229,-1658.3)\">\r\n <rect\r\n ry=\"4.6\"\r\n y=\"1.6\"\r\n x=\"547\"\r\n height=\"110\"\r\n width=\"110\"\r\n style=\"fill: #a2a2a2; stroke: #ffffff; stroke-width: 5.4\" />\r\n <g\r\n style=\"stroke: #ffffff; stroke-width: 13; stroke-miterlimit: 4\"\r\n transform=\"matrix(0.17265471,0,0,0.17265471,512.49324,-6.3296456)\">\r\n <rect style=\"fill: #cccccc\" width=\"491\" height=\"449\" x=\"270\" y=\"107\" />\r\n <rect style=\"fill: #ffffff\" id=\"rect3342\" width=\"491\" height=\"209\" x=\"270\" y=\"107\" />\r\n <path\r\n style=\"fill: #cccccc\"\r\n d=\"m 300,317.36255 38.46147,-53.53818 60.53097,-45.16084 15.88277,18.57394 13.61285,-38.68356 8.20133,-2.98188 13.3106,-28.2093 180,179.99979\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; paint-order: stroke\"\r\n d=\"m 180,60 c 4.09311,16.474688 7.71219,33.067277 10.85156,49.75 2.38256,12.66097 4.48857,25.37408 6.31641,38.12695 l -22.06445,-7.16015 -46.11133,-29.41602 5.32422,46.42578 -1.61524,24.78711 10.05274,30.37695 73.18554,-11.75585 L 300,180 252.19922,102.56641 242.5,117.5 215.375,95.375 Z\"\r\n transform=\"translate(270,107.36227)\" />\r\n <path\r\n d=\"m 419.99999,347.36252 81.89918,-74.42959 18.50574,-9.68009 23.6512,-44.18894 25.94388,-21.70121 179.99999,179.99979\"\r\n style=\"fill: #cccccc; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\"\r\n d=\"m 569.99999,197.36269 35.9388,80.91289 v 30.11038 30.11038 l 22.45864,19.46652 c 6.52453,-6.45031 14.14893,-11.78526 22.44431,-15.70477 14.8245,-7.00447 31.33823,-9.35959 47.17057,-13.6217 6.42776,-1.73037 12.90672,-3.85419 18.21343,-7.87277 1.35174,-1.02362 2.61592,-2.16281 3.77424,-3.40107 h -30 l -40.52149,-40.55006 -29.85645,-48.91972 -10.25307,8.83886 z\" />\r\n <path\r\n style=\"fill: #ffffff\"\r\n d=\"m 419.99999,557.36227 c -0.41699,-9.60089 -8.81759,-17.60878 17.1252,-30.66806 31.8318,-16.02389 125.895,-35.88836 152.1537,-59.98434 19.42709,-17.82687 -70.4154,-37.66945 -55.0191,-59.07323 6.981,-9.70528 59.037,-19.96947 82.1463,-30.27386 21.90569,-9.76799 15.14129,-19.80328 31.4046,-29.97507 15.7092,-9.82558 68.3499,-19.77358 72.18929,-30.02516 -10.41359,10.52188 -68.83379,20.40327 -89.99999,30.00026 -22.3377,10.128 -21.4689,19.93018 -49.4313,29.48367 -30.1245,10.29239 -89.142,20.55268 -102.7077,30.51626 -28.4133,20.86858 46.863,42.59995 16.2024,59.99993 C 452.54309,490.92554 344.7219,510.65712 300,527.3626 c -30.9039,11.54369 -28.4079,17.74799 -30,29.99967\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { Observable } from 'rxjs';\r\nimport { BdbRequest } from '../bdb-request';\r\nimport { BdbResponse } from '../bdb-response';\r\nimport { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbService } from './bdb-service';\r\n\r\nexport abstract class BdbServiceR<TEntity extends BdbEntity, TEntityRead extends BdbEntityRead> extends BdbService {\r\n read(request: BdbRequest): Observable<BdbResponse<TEntityRead>> {\r\n return this.httpClient.post<BdbResponse<TEntityRead>>(`${this.baseUrl}/read`, request);\r\n }\r\n\r\n get(id: number): Observable<TEntity> {\r\n return this.httpClient.get<TEntity>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbServiceR } from './bdb-service-r';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceRD<TEntity extends BdbEntity, TEntityRead extends BdbEntityRead> extends BdbServiceR<\r\n TEntity,\r\n TEntityRead\r\n> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BdbServiceRD } from '../../common/services/bdb-service-rd';\r\nimport { Media } from './media';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MediaService extends BdbServiceRD<Media, Media> {\r\n constructor() {\r\n super('media');\r\n }\r\n\r\n upload(file: File): Observable<Media> {\r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n return this.httpClient.post<Media>(`${this.baseUrl}/upload`, formData);\r\n }\r\n\r\n fromUrl(url: string): Observable<Media> {\r\n return this.httpClient.post<Media>(`${this.baseUrl}/from-url`, {\r\n url: url,\r\n });\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Directive, EventEmitter, Output, HostBinding, HostListener } from '@angular/core';\r\nimport { MediaService } from '../../../domain/entities/media/media.service';\r\nimport { Media } from '../../../domain/entities/media/media';\r\n\r\nexport interface ImageFile {\r\n file: File;\r\n url: string;\r\n}\r\n\r\nenum DropClass {\r\n Default = 'drop-box', // Default color\r\n Over = 'drop-hover', // Color to be used once the file is \"over\" the drop box\r\n}\r\n\r\n@Directive({\r\n selector: '[bdbMediaDrop]',\r\n standalone: true,\r\n})\r\nexport class MediaDropDirective {\r\n @Output() dropStart = new EventEmitter<unknown>();\r\n @Output() dropComplete = new EventEmitter<Media>();\r\n @Output() dropError = new EventEmitter<HttpErrorResponse>();\r\n\r\n constructor(private service: MediaService) {}\r\n\r\n @HostBinding('class') hostClass = DropClass.Default;\r\n\r\n @HostListener('dragover', ['$event']) public dragOver(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer) {\r\n if (event.dataTransfer.types.includes('Files') || event.dataTransfer.types.includes('text/uri-list')) {\r\n // this is at least a file / URL\r\n this.hostClass = DropClass.Over;\r\n event.dataTransfer.dropEffect = 'copy';\r\n } else {\r\n // reject\r\n event.dataTransfer.dropEffect = 'none';\r\n }\r\n }\r\n }\r\n\r\n @HostListener('dragleave', ['$event']) public dragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.hostClass = DropClass.Default;\r\n }\r\n\r\n @HostListener('drop', ['$event']) public drop(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer) {\r\n this.hostClass = DropClass.Default;\r\n\r\n if (event.dataTransfer.types.includes('text/uri-list')) {\r\n this.dropStart.emit(event);\r\n\r\n let url = event.dataTransfer.getData('URL');\r\n if (!url) {\r\n url = event.dataTransfer.getData('Text');\r\n }\r\n this.service.fromUrl(url).subscribe({\r\n next: (x: Media) => this.dropComplete.emit(x),\r\n error: (x: HttpErrorResponse) => {\r\n console.log('Fout bij het importeren:', x);\r\n this.dropError.emit(x);\r\n },\r\n });\r\n } else if (event.dataTransfer.types.includes('Files')) {\r\n for (let i = 0; i < event.dataTransfer.files.length; ++i) {\r\n const file = event.dataTransfer.files.item(i);\r\n if (file != null) {\r\n this.service.upload(file).subscribe({\r\n next: (x: Media) => {\r\n this.dropComplete.emit(x);\r\n },\r\n error: (x: HttpErrorResponse) => {\r\n this.dropError.emit(x);\r\n },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { MediaDropDirective } from './media-drop.directive';\r\nimport { Media } from '../../../domain/entities/media/media';\r\n\r\n@Component({\r\n selector: 'bdb-media-upload',\r\n imports: [MatIconModule, DragDropModule, MediaDropDirective],\r\n templateUrl: './media-upload.component.html',\r\n styleUrls: ['./media-upload.component.scss'],\r\n})\r\nexport class BdbMediaUploadComponent {\r\n @Input() size: number = 256;\r\n @Input() icon: string = 'arrow_upload_ready';\r\n @Output() mediaUploaded = new EventEmitter<Media>();\r\n @Output() dropError = new EventEmitter<HttpErrorResponse | undefined>();\r\n\r\n onDropComplete($event: Media | undefined): void {\r\n this.mediaUploaded.emit($event);\r\n }\r\n\r\n onDropError($event: HttpErrorResponse): void {\r\n this.dropError.emit($event);\r\n }\r\n\r\n onDropStart(): void {\r\n this.dropError.emit(undefined);\r\n }\r\n}\r\n","<div\r\n class=\"drop-box\"\r\n bdbMediaDrop\r\n (dropComplete)=\"onDropComplete($event)\"\r\n (dropError)=\"onDropError($event)\"\r\n (dropStart)=\"onDropStart()\">\r\n <mat-icon\r\n [style]=\"\r\n 'font-size: ' + size + 'px; height: 100%; width: 100%; min-width: ' + size + 'px; min-height: ' + size + 'px'\r\n \"\r\n >{{ icon }}</mat-icon\r\n >\r\n</div>\r\n","export enum TaskLogStatus {\r\n New = 'New',\r\n Running = 'Running',\r\n Waiting = 'Waiting',\r\n Completed = 'Completed',\r\n}\r\n\r\nexport const TaskLogStatusMap = new Map<TaskLogStatus, string>([\r\n [TaskLogStatus.New, 'Nieuw'],\r\n [TaskLogStatus.Running, 'Lopend'],\r\n [TaskLogStatus.Waiting, 'Wachten'],\r\n [TaskLogStatus.Completed, 'Afgerond'],\r\n]);\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TaskLogStatus, TaskLogStatusMap } from '../../domain/enums/task-log-status';\r\n\r\n@Pipe({\r\n name: 'taskLogStatus',\r\n standalone: true,\r\n})\r\nexport class TaskLogStatusPipe implements PipeTransform {\r\n transform(value: TaskLogStatus | undefined): string | undefined {\r\n if (!value) {\r\n return undefined;\r\n }\r\n return TaskLogStatusMap.get(value) ?? '???';\r\n }\r\n}\r\n","export enum TaskLogOutcome {\r\n Noop = 'Noop',\r\n Success = 'Success',\r\n Info = 'Info',\r\n Warning = 'Warning',\r\n Error = 'Error',\r\n}\r\n\r\nexport const TaskLogOutcomeMap = new Map<TaskLogOutcome, string>([\r\n [TaskLogOutcome.Noop, 'Noop'],\r\n [TaskLogOutcome.Success, 'Succes'],\r\n [TaskLogOutcome.Info, 'Info'],\r\n [TaskLogOutcome.Warning, 'Waarschuwing'],\r\n [TaskLogOutcome.Error, 'Foutmelding'],\r\n]);\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TaskLogOutcome, TaskLogOutcomeMap } from '../../domain/enums/task-log-outcome';\r\n\r\n@Pipe({\r\n name: 'taskLogOutcome',\r\n standalone: true,\r\n})\r\nexport class TaskLogOutcomePipe implements PipeTransform {\r\n transform(value: TaskLogOutcome | undefined): string | undefined {\r\n if (!value) {\r\n return undefined;\r\n }\r\n return TaskLogOutcomeMap.get(value) ?? '???';\r\n }\r\n}\r\n","export enum TaskLogParameterType {\r\n String = 'String',\r\n Int = 'Int',\r\n Decimal = 'Decimal',\r\n Bool = 'Bool',\r\n}\r\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\r\nimport { TaskLogParameter } from '../../domain/entities/task-log-parameter/task-log-parameter';\r\nimport { TaskLogParameterType } from '../../domain/enums/task-log-parameter-type';\r\n\r\n@Pipe({\r\n name: 'taskLogParameterValue',\r\n standalone: true,\r\n})\r\nexport class TaskLogParameterValuePipe implements PipeTransform {\r\n constructor(@Inject(LOCALE_ID) private locale: string) {}\r\n\r\n transform(value: TaskLogParameter): string {\r\n switch (value.type) {\r\n case TaskLogParameterType.String:\r\n return value.stringValue ?? '';\r\n case TaskLogParameterType.Int:\r\n return !value.intValue\r\n ? ''\r\n : value.intValue.toLocaleString(this.locale, {\r\n minimumIntegerDigits: 1,\r\n });\r\n case TaskLogParameterType.Decimal:\r\n return !value.decimalValue\r\n ? ''\r\n : value.decimalValue.toLocaleString(this.locale, {\r\n minimumIntegerDigits: 1,\r\n maximumFractionDigits: 6,\r\n });\r\n case TaskLogParameterType.Bool:\r\n switch (value.boolValue) {\r\n case true:\r\n return 'Ja';\r\n case false:\r\n return 'Nee';\r\n default:\r\n return '';\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { UserRead } from '../../../domain/entities/user/user-read';\r\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { BdbTableComponent } from '../../common/table/bdb-table.component';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\nimport { BdbCellDirective } from '../../common/table/bdb-cell.directive';\r\n\r\n@Component({\r\n selector: 'bdb-user-table[dataSource]',\r\n imports: [CommonModule, BdbTableComponent, MatDialogModule, BdbCellDirective],\r\n templateUrl: './user-table.component.html',\r\n styleUrls: ['./user-table.component.scss'],\r\n})\r\nexport class UserTableComponent {\r\n @Input() dataSource!: BdbDataSource<UserRead>;\r\n @Input() displayedColumns: string[] = [];\r\n @Output() rowClick = new EventEmitter<UserRead>();\r\n\r\n columns: BdbColumn<UserRead, unknown>[] = this.cb.build(\r\n this.cb.number(x => x.id, 'ID', { width: 75 }),\r\n this.cb.string(x => x.email, 'E-mail', { width: 250 }),\r\n this.cb.custom('roles', 'Rollen')\r\n );\r\n\r\n constructor(\r\n private matDialog: MatDialog,\r\n private cb: BdbColumnBuilder<UserRead>\r\n ) {}\r\n\r\n @Input() contextActions: BdbContextAction<UserRead>[] = [\r\n {\r\n icon: 'search',\r\n color: 'primary',\r\n label: 'Details',\r\n identifier: 'details',\r\n },\r\n { icon: 'edit', color: 'primary', label: 'Wijzigen', identifier: 'edit' },\r\n {\r\n icon: 'delete',\r\n color: 'warn',\r\n label: 'Verwijderen',\r\n identifier: 'delete',\r\n },\r\n ];\r\n\r\n onRowClick(user: UserRead): void {\r\n this.rowClick.emit(user);\r\n }\r\n\r\n onContextAction(event: { action: BdbContextAction<UserRead>; row: UserRead }): void {\r\n // switch (event.action.identifier) {\r\n // case 'delete':\r\n // this.matDialog\r\n // .open(UserDeleteDialogComponent, { data: event.row })\r\n // .afterClosed()\r\n // .pipe(filter(x => !!x))\r\n // .subscribe(() => this.dataSource.load());\r\n // break;\r\n // case 'edit':\r\n // this.matDialog\r\n // .open(UserUpdateDialogComponent, { data: event.row })\r\n // .afterClosed()\r\n // .pipe(filter(x => !!x))\r\n // .subscribe(() => this.dataSource.load());\r\n // break;\r\n // }\r\n }\r\n}\r\n","<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[bdbFlexChild]',\r\n standalone: true,\r\n})\r\nexport class BdbFlexChildDirective implements OnInit {\r\n @Input() bdbFlexChild = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.element.nativeElement, 'flex', this.bdbFlexChild);\r\n }\r\n}\r\n","export class LinkedList<T> implements Iterable<T> {\r\n head?: Node<T>;\r\n tail?: Node<T>;\r\n length = 0;\r\n\r\n constructor(data: T[] = []) {\r\n data.forEach(x => this.push(x));\r\n }\r\n\r\n [Symbol.iterator](): Iterator<T> {\r\n let node = this.head;\r\n return {\r\n next(): IteratorResult<T> {\r\n if (!node) {\r\n return { done: true, value: undefined };\r\n }\r\n\r\n const value = node.value;\r\n\r\n node = node.next;\r\n\r\n return { done: false, value: value };\r\n },\r\n };\r\n }\r\n\r\n push(value: T): void {\r\n const newNode = new Node(value);\r\n\r\n if (!this.tail) {\r\n this.head = newNode;\r\n } else {\r\n this.tail.next = newNode;\r\n newNode.previous = this.tail;\r\n }\r\n\r\n this.tail = newNode;\r\n this.length++;\r\n }\r\n\r\n pop(): T | undefined {\r\n if (!this.tail) {\r\n return undefined;\r\n }\r\n\r\n const value = this.tail.value;\r\n\r\n if (!this.tail.previous) {\r\n this.head = undefined;\r\n this.tail = undefined;\r\n } else {\r\n this.tail = this.tail.previous;\r\n this.tail.next = undefined;\r\n }\r\n\r\n this.length--;\r\n return value;\r\n }\r\n}\r\n\r\nexport class Node<T> {\r\n value: T;\r\n previous?: Node<T>;\r\n next?: Node<T>;\r\n\r\n constructor(value: T) {\r\n this.value = value;\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { LinkedList } from './linked-list';\r\n\r\ntype BdbGridInput = {\r\n gap?: string;\r\n columns?: BdbGridAxisInput;\r\n rows?: BdbGridAxisInput;\r\n};\r\n\r\ntype BdbGridAxisInput = {\r\n type: 'template' | 'auto';\r\n input: string;\r\n};\r\n\r\n@Directive({\r\n selector: '[bdbGrid], [bdbGridColumns], [bdbGridRows], [bdbGridGap]',\r\n standalone: true,\r\n})\r\nexport class BdbGridDirective implements OnInit {\r\n @Input() bdbGrid = '';\r\n @Input() bdbGridColumns = '';\r\n @Input() bdbGridRows = '';\r\n @Input() bdbGridGap = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.element.nativeElement, 'display', 'grid');\r\n\r\n const inputs = this.parseBdbGridInput();\r\n\r\n const gap = !this.bdbGridGap ? inputs.gap : this.bdbGridGap;\r\n\r\n if (gap) {\r\n this.renderer.setStyle(this.element.nativeElement, 'gap', gap);\r\n }\r\n\r\n this.setAxis('columns', inputs.columns);\r\n this.setAxis('rows', inputs.rows);\r\n }\r\n\r\n parseBdbGridInput(): BdbGridInput {\r\n const result: BdbGridInput = {};\r\n\r\n const input = this.bdbGrid.split(' ').filter(x => !!x);\r\n\r\n const linkedList = new LinkedList(input);\r\n\r\n let node = linkedList.head;\r\n\r\n if (!node) {\r\n return result;\r\n }\r\n\r\n if (node.value !== 'template' && node.value !== 'auto') {\r\n result.gap = node.value;\r\n node = node.next;\r\n }\r\n\r\n if (!node) {\r\n return result;\r\n }\r\n\r\n const columns: BdbGridAxisInput = {\r\n type: node.value === 'auto' ? 'auto' : 'template',\r\n input: '',\r\n };\r\n\r\n node = node.next;\r\n const columnsInput = [];\r\n\r\n while (node) {\r\n if (node.value === 'auto' || node.value === 'template') {\r\n break;\r\n }\r\n columnsInput.push(node.value);\r\n node = node.next;\r\n }\r\n\r\n columns.input = columnsInput.join(' ');\r\n result.columns = columns;\r\n\r\n if (!node) {\r\n return result;\r\n }\r\n\r\n const rows: BdbGridAxisInput = {\r\n type: node.value === 'auto' ? 'auto' : 'template',\r\n input: '',\r\n };\r\n\r\n node = node.next;\r\n const rowsInput = [];\r\n\r\n while (node) {\r\n rowsInput.push(node.value);\r\n node = node.next;\r\n }\r\n\r\n rows.input = rowsInput.join(' ');\r\n result.rows = rows;\r\n\r\n return result;\r\n }\r\n\r\n setAxis(axis: 'columns' | 'rows', gridInput?: BdbGridAxisInput): void {\r\n let result = gridInput;\r\n\r\n const axisInput = axis === 'columns' ? this.bdbGridColumns : this.bdbGridRows;\r\n\r\n if (axisInput) {\r\n let input = axisInput.split(' ').filter(x => !!x);\r\n const type = input[0] === 'auto' ? 'auto' : 'template';\r\n if (input[0] === 'auto' || input[0] === 'template') {\r\n input = input.slice(1);\r\n }\r\n result = {\r\n type: type,\r\n input: input.join(' '),\r\n };\r\n }\r\n\r\n if (result) {\r\n const selector = result.type === 'auto' ? `grid-auto-${axis}` : `grid-template-${axis}`;\r\n this.renderer.setStyle(this.element.nativeElement, selector, result.input);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { LinkedList } from './linked-list';\r\n\r\n@Directive({\r\n selector: '[bdbGridChild], [bdbGridColumn], [bdbGridRow]',\r\n standalone: true,\r\n})\r\nexport class BdbGridChildDirective implements OnInit {\r\n @Input() bdbGridChild = '';\r\n @Input() bdbGridRow = '';\r\n @Input() bdbGridColumn = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n const axes = this.splitAxes();\r\n\r\n let column = axes[0];\r\n let row = axes[1];\r\n\r\n if (this.bdbGridColumn) {\r\n column = this.bdbGridColumn;\r\n }\r\n\r\n if (this.bdbGridRow) {\r\n row = this.bdbGridRow;\r\n }\r\n\r\n if (column) {\r\n this.renderer.setStyle(this.element.nativeElement, 'grid-column', column);\r\n }\r\n\r\n if (row) {\r\n this.renderer.setStyle(this.element.nativeElement, 'grid-row', row);\r\n }\r\n }\r\n\r\n splitAxes(): string[] {\r\n const input = this.bdbGridChild.split(' ').filter(x => !!x);\r\n\r\n if (!input.length) {\r\n return [];\r\n }\r\n\r\n let sourceList = new LinkedList(input);\r\n let targetList = new LinkedList<string>();\r\n let node = sourceList.head;\r\n\r\n while (node) {\r\n if (node.value === 'span' && node.next) {\r\n targetList.push(`span ${node.next.value}`);\r\n node = node.next;\r\n } else {\r\n targetList.push(node.value);\r\n }\r\n node = node.next;\r\n }\r\n\r\n sourceList = targetList;\r\n targetList = new LinkedList<string>();\r\n node = sourceList.head;\r\n\r\n while (node) {\r\n if (node.next && node.next.value === '/' && node.next.next) {\r\n targetList.push(`${node.value} / ${node.next.next.value}`);\r\n node = node.next.next;\r\n } else {\r\n targetList.push(node.value);\r\n }\r\n node = node.next;\r\n }\r\n\r\n if (targetList.length !== 2 || !targetList.head || !targetList.tail) {\r\n return [];\r\n }\r\n\r\n return [targetList.head.value, targetList.tail.value];\r\n }\r\n}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'bdb-collapse-row',\r\n imports: [MatIconModule],\r\n templateUrl: './bdb-collapse-row.component.html',\r\n styleUrl: './bdb-collapse-row.component.scss',\r\n})\r\nexport class BdbCollapseRowComponent {\r\n @Input() collapsed = false;\r\n @Input() canCollapse = true;\r\n @HostBinding('class') class = 'bdb-collapse-row';\r\n @HostBinding('class.collapsed')\r\n public get isCollapsed(): boolean {\r\n return this.collapsed;\r\n }\r\n}\r\n","<div class=\"left\">\r\n <ng-content select=\"left\"></ng-content>\r\n</div>\r\n<div class=\"gap\">\r\n <div class=\"indicator\" (click)=\"collapsed = canCollapse && !collapsed\">\r\n <div class=\"top\"></div>\r\n <div class=\"middle\">\r\n <mat-icon>{{ collapsed ? 'left_panel_open' : 'left_panel_close' }}</mat-icon>\r\n </div>\r\n <div class=\"bottom\"></div>\r\n </div>\r\n</div>\r\n<div class=\"right\">\r\n <ng-content select=\"right\"></ng-content>\r\n</div>\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'bdb-field',\r\n imports: [CommonModule],\r\n templateUrl: './bdb-field.component.html',\r\n styleUrls: ['./bdb-field.component.scss'],\r\n})\r\nexport class BdbFieldComponent {\r\n @HostBinding() class = 'bdb-field';\r\n @Input() label = '';\r\n}\r\n","<div class=\"field-label\">{{ label }}</div>\r\n<ng-content></ng-content>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'bdbPlainNumber',\r\n standalone: true,\r\n})\r\nexport class PlainNumberPipe implements PipeTransform {\r\n transform(value: number | undefined): string | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return '' + value;\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbServiceR } from './bdb-service-r';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCR<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n> extends BdbServiceR<TEntity, TEntityRead> {\r\n create(createModel: TEntityCreate): Observable<number> {\r\n return this.httpClient.post<number>(this.baseUrl, createModel);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceR } from './bdb-service-r';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceRU<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceR<TEntity, TEntityRead> {\r\n update(updateModel: TEntityUpdate): Observable<TEntity> {\r\n return this.httpClient.put<TEntity>(this.baseUrl, updateModel);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbServiceCR } from './bdb-service-cr';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCRD<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n> extends BdbServiceCR<TEntity, TEntityRead, TEntityCreate> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceCR } from './bdb-service-cr';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCRU<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceCR<TEntity, TEntityRead, TEntityCreate> {\r\n update(updateModel: TEntityUpdate): Observable<never> {\r\n return this.httpClient.put<never>(this.baseUrl, updateModel);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceRU } from './bdb-service-ru';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceRUD<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceRU<TEntity, TEntityRead, TEntityUpdate> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceCRU } from './bdb-service-cru';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCRUD<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceCRU<TEntity, TEntityRead, TEntityCreate, TEntityUpdate> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceR } from '../../common/services/bdb-service-r';\r\nimport { ExceptionLog } from './exception-log';\r\nimport { ExceptionLogRead } from './exception-log-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExceptionLogService extends BdbServiceR<ExceptionLog, ExceptionLogRead> {\r\n constructor() {\r\n super('exception-log');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceR } from '../../common/services/bdb-service-r';\r\nimport { Role } from './role';\r\nimport { RoleRead } from './role-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoleService extends BdbServiceR<Role, RoleRead> {\r\n constructor() {\r\n super('role');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceCR } from '../../common/services/bdb-service-cr';\r\nimport { TaskLog } from './task-log';\r\nimport { TaskLogRead } from './task-log-read';\r\nimport { TaskLogCreate } from './task-log-create';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogService extends BdbServiceCR<TaskLog, TaskLogRead, TaskLogCreate> {\r\n constructor() {\r\n super('task-log');\r\n }\r\n\r\n start(id: number): Observable<void> {\r\n return this.httpClient.post<void>(`${this.baseUrl}/start`, { id });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceR } from '../../common/services/bdb-service-r';\r\nimport { TaskLogParameter } from './task-log-parameter';\r\nimport { TaskLogParameterRead } from './task-log-parameter-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogParameterService extends BdbServiceR<TaskLogParameter, TaskLogParameterRead> {\r\n constructor() {\r\n super('task-log-parameter');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceCRUD } from '../../common/services/bdb-service-crud';\r\nimport { TaskLogSchedule } from './task-log-schedule';\r\nimport { TaskLogScheduleRead } from './task-log-schedule-read';\r\nimport { TaskLogScheduleCreate } from './task-log-schedule-create';\r\nimport { TaskLogScheduleUpdate } from './task-log-schedule-update';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogScheduleService extends BdbServiceCRUD<\r\n TaskLogSchedule,\r\n TaskLogScheduleRead,\r\n TaskLogScheduleCreate,\r\n TaskLogScheduleUpdate\r\n> {\r\n constructor() {\r\n super('task-log-schedule');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { User } from './user';\r\nimport { UserRead } from './user-read';\r\nimport { BdbServiceCRUD } from '../../common/services/bdb-service-crud';\r\nimport { UserUpdate } from './user-update';\r\nimport { UserCreate } from './user-create';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserService extends BdbServiceCRUD<User, UserRead, UserCreate, UserUpdate> {\r\n constructor() {\r\n super('user');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceCRD } from '../../common/services/bdb-service-crd';\r\nimport { UserRole } from './user-role';\r\nimport { UserRoleRead } from './user-role-read';\r\nimport { UserRoleCreate } from './user-role-create';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserRoleService extends BdbServiceCRD<UserRole, UserRoleRead, UserRoleCreate> {\r\n constructor() {\r\n super('user-role');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BdbService } from '../common/services/bdb-service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogSchedulerService extends BdbService {\r\n constructor() {\r\n super('task-log-scheduler');\r\n }\r\n\r\n public isRunning(): Observable<boolean> {\r\n return this.httpClient.get<boolean>(`${this.baseUrl}/is-running`);\r\n }\r\n\r\n public startScheduler(): Observable<void> {\r\n return this.httpClient.get<void>(`${this.baseUrl}/start`);\r\n }\r\n\r\n public stopScheduler(): Observable<void> {\r\n return this.httpClient.get<void>(`${this.baseUrl}/stop`);\r\n }\r\n}\r\n","import { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { map, shareReplay, tap } from 'rxjs/operators';\r\nimport { BdbService } from '../common/services/bdb-service';\r\nimport { TaskLogType } from './task-log-type';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogTypeService extends BdbService {\r\n TaskLogTypes = new BehaviorSubject<TaskLogType[]>([]);\r\n getAllObservable: Observable<TaskLogType[]> | null = null;\r\n\r\n constructor() {\r\n super('task-log-type');\r\n this.load();\r\n }\r\n\r\n public load(): void {\r\n this.getAll().subscribe({\r\n next: x => this.TaskLogTypes.next(x),\r\n });\r\n }\r\n\r\n private getAll(): Observable<TaskLogType[]> {\r\n if (this.getAllObservable) {\r\n return this.getAllObservable;\r\n }\r\n this.getAllObservable = this.httpClient.get<TaskLogType[]>(this.baseUrl).pipe(\r\n shareReplay(1),\r\n tap(() => (this.getAllObservable = null))\r\n );\r\n return this.getAllObservable;\r\n }\r\n\r\n public get(identifier: string): Observable<TaskLogType | null> {\r\n if (this.getAllObservable) {\r\n return this.getAllObservable.pipe(map(x => x.filter(y => y.identifier === identifier)[0]));\r\n }\r\n const types = this.TaskLogTypes.getValue();\r\n if (types && types.length) {\r\n return of(types.filter(x => x.identifier === identifier)[0]);\r\n }\r\n return of(null);\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { BdbAlertComponent } from '../../common/alert/bdb-alert.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterLink } from '@angular/router';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { BdbFlexDirective } from '../../common/bdb-flex.directive';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'bdb-access-denied-page',\r\n imports: [\r\n CommonModule,\r\n MatCardModule,\r\n BdbAlertComponent,\r\n MatButtonModule,\r\n RouterLink,\r\n MatIconModule,\r\n BdbFlexDirective,\r\n ],\r\n templateUrl: './access-denied-page.component.html',\r\n styleUrls: ['./access-denied-page.component.scss'],\r\n})\r\nexport class AccessDeniedPageComponent implements OnInit, OnDestroy {\r\n private readonly _onDestroy = new Subject<void>();\r\n\r\n loginRoutePath?: string;\r\n logoutRoutePath?: string;\r\n\r\n isLoggedIn = true;\r\n\r\n constructor(\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions,\r\n private authService: AuthService\r\n ) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n this.logoutRoutePath = bdbOptions.authOptions?.logoutPath;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.authService.account$.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: x => (this.isLoggedIn = x !== null),\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n}\r\n","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Toegang geweigerd</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert color=\"danger\" label=\"Geen toegang\" icon=\"block\">\r\n U heeft onvoldoende rechten voor de gevraagde toepassing\r\n </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button *ngIf=\"!isLoggedIn\">Inloggen</a>\r\n <a [routerLink]=\"['/', logoutRoutePath]\" mat-button *ngIf=\"isLoggedIn\">Uitloggen</a>\r\n </mat-card-actions>\r\n</mat-card>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { RouterLink } from '@angular/router';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { BdbAlertComponent } from '../../common/alert/bdb-alert.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\n\r\n@Component({\r\n selector: 'bdb-forgot-password-page',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatCardModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n RouterLink,\r\n BdbAlertErrorResponseComponent,\r\n BdbAlertComponent,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './forgot-password-page.component.html',\r\n styleUrls: ['./forgot-password-page.component.scss'],\r\n})\r\nexport class ForgotPasswordPageComponent {\r\n loginRoutePath?: string;\r\n\r\n emailCtrl = new FormControl('', { validators: [Validators.required, Validators.email], nonNullable: true });\r\n\r\n isComplete = false;\r\n isPending = false;\r\n\r\n error?: HttpErrorResponse;\r\n\r\n forgotPasswordForm = new FormGroup({\r\n email: this.emailCtrl,\r\n });\r\n\r\n constructor(\r\n private authService: AuthService,\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions\r\n ) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n }\r\n\r\n forgotPassword(): void {\r\n if (this.isPending || !this.forgotPasswordForm.valid) {\r\n return;\r\n }\r\n this.isPending = true;\r\n this.error = undefined;\r\n const formValue = this.forgotPasswordForm.getRawValue();\r\n this.forgotPasswordForm.disable();\r\n\r\n this.authService.forgotPassword(formValue).subscribe({\r\n next: () => {\r\n this.isComplete = true;\r\n this.isPending = false;\r\n this.forgotPasswordForm.enable();\r\n },\r\n error: e => {\r\n this.error = e;\r\n this.isPending = false;\r\n this.forgotPasswordForm.enable();\r\n },\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"forgotPassword()\" *ngIf=\"!isComplete; else isCompleteTemplate\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord vergeten</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"forgot-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>E-mailadres</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <!-- <mat-error *ngIf=\"emailCtrl.errors\">{{ emailCtrl | bdbErrorMessage }}</mat-error> -->\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"forgot-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>lock_reset</mat-icon>\r\n <span>Herstel wachtwoord</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n</form>\r\n\r\n<ng-template #isCompleteTemplate>\r\n <bdb-alert color=\"success\" label=\"Wachtwoord herstel gestart\"> Controleer uw e-mail voor instructies </bdb-alert>\r\n</ng-template>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { BdbAlertComponent } from '../../common/alert/bdb-alert.component';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterLink } from '@angular/router';\r\nimport { BdbFlexDirective } from '../../common/bdb-flex.directive';\r\n\r\n@Component({\r\n selector: 'bdb-invalid-token-page',\r\n imports: [CommonModule, MatCardModule, BdbAlertComponent, MatButtonModule, RouterLink, BdbFlexDirective],\r\n templateUrl: './invalid-token-page.component.html',\r\n styleUrls: ['./invalid-token-page.component.scss'],\r\n})\r\nexport class InvalidTokenPageComponent {\r\n loginRoutePath?: string;\r\n\r\n constructor(@Inject(BDB_OPTIONS) bdbOptions: BdbOptions) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n }\r\n}\r\n","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Ongeldig token</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert color=\"warn\" label=\"Verlopen\" icon=\"block\"> Uw wachtwoord herstel link is niet (meer) geldig </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button>Inloggen</a>\r\n </mat-card-actions>\r\n</mat-card>\r\n","import { Inject, Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { BdbFlexDirective } from '../../common/bdb-flex.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbFormErrorDirective } from '../../common/bdb-form-error.directive';\r\nimport { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';\r\n\r\n@Component({\r\n selector: 'bdb-login-page',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n RouterLink,\r\n MatCardModule,\r\n BdbAlertErrorResponseComponent,\r\n BdbFlexDirective,\r\n BdbFormErrorDirective,\r\n ],\r\n templateUrl: './login-page.component.html',\r\n styleUrls: ['./login-page.component.scss'],\r\n})\r\nexport class LoginPageComponent implements OnInit {\r\n forgotPasswordRoutePath?: string;\r\n\r\n emailCtrl = new FormControl('', {\r\n validators: [Validators.required, Validators.email],\r\n nonNullable: true,\r\n });\r\n passwordCtrl = new FormControl('', { validators: [Validators.required], nonNullable: true });\r\n\r\n error?: HttpErrorResponse;\r\n\r\n postLoginUrl = '/';\r\n\r\n isPending = false;\r\n\r\n loginForm = new FormGroup({\r\n email: this.emailCtrl,\r\n password: this.passwordCtrl,\r\n });\r\n\r\n constructor(\r\n private router: Router,\r\n private authService: AuthService,\r\n private route: ActivatedRoute,\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions\r\n ) {\r\n this.forgotPasswordRoutePath = bdbOptions.authOptions?.forgotPasswordPath;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.route.queryParams.subscribe({\r\n next: x => (this.postLoginUrl = x['returnUrl'] ?? '/'),\r\n });\r\n }\r\n\r\n login(): void {\r\n this.loginForm.markAllAsTouched();\r\n\r\n if (this.isPending || !this.loginForm.valid) {\r\n return;\r\n }\r\n\r\n this.isPending = true;\r\n this.error = undefined;\r\n const formValue = this.loginForm.getRawValue();\r\n this.loginForm.disable();\r\n\r\n this.authService.login(formValue).subscribe({\r\n next: () => {\r\n this.isPending = false;\r\n this.loginForm.enable();\r\n this.router.navigate([this.postLoginUrl]);\r\n },\r\n error: e => {\r\n this.error = e;\r\n this.isPending = false;\r\n this.loginForm.enable();\r\n },\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Inloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content bdbFlex=\"col\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-form-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <mat-error bdbFormError=\"email\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Wachtwoord</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" />\r\n <mat-error bdbFormError=\"password\"></mat-error>\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 8px end center\">\r\n <a mat-button [routerLink]=\"['/', forgotPasswordRoutePath]\">\r\n <mat-icon>contact_support</mat-icon>\r\n <span>Wachtwoord vergeten</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>login</mat-icon>\r\n <span>Inloggen</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\n\r\n@Component({\r\n selector: 'bdb-logout-page',\r\n imports: [MatCardModule, MatButtonModule, MatIconModule, RouterLink],\r\n templateUrl: './logout-page.component.html',\r\n styleUrls: ['./logout-page.component.scss'],\r\n})\r\nexport class LogoutPageComponent {\r\n constructor(\r\n private router: Router,\r\n private authService: AuthService,\r\n @Inject(BDB_OPTIONS) private bdbOptions: BdbOptions\r\n ) {}\r\n\r\n logout(): void {\r\n this.authService.logout();\r\n this.router.navigate(['/', this.bdbOptions.authOptions?.loginPath]);\r\n }\r\n}\r\n","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Uitloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"logout-page-card-content\"> Weet u zeker dat u wilt uitloggen? </mat-card-content>\r\n <mat-card-actions class=\"logout-page-card-actions\">\r\n <a mat-button routerLink=\"/\">\r\n <mat-icon>arrow_back</mat-icon>\r\n <span>Blijf ingelogd</span>\r\n </a>\r\n <button (click)=\"logout()\" mat-flat-button color=\"primary\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log uit</span>\r\n </button></mat-card-actions\r\n >\r\n</mat-card>\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ResetPasswordToken } from '../../domain/auth/reset-password-token';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';\r\n\r\nexport function equalValueValidator(otherControl: AbstractControl): ValidatorFn {\r\n return (thisControl: AbstractControl): ValidationErrors | null => {\r\n const otherValue = otherControl.value;\r\n const thisValue = thisControl.value;\r\n return otherValue === thisValue ? null : { custom: 'Komt niet overeen' };\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'bdb-reset-password-page',\r\n imports: [\r\n ReactiveFormsModule,\r\n MatCardModule,\r\n BdbAlertErrorResponseComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n RouterLink,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './reset-password-page.component.html',\r\n styleUrls: ['./reset-password-page.component.scss'],\r\n})\r\nexport class ResetPasswordPageComponent implements OnInit {\r\n loginRoutePath?: string;\r\n\r\n isPending = false;\r\n\r\n error?: HttpErrorResponse;\r\n\r\n passwordCtrl = new FormControl('', {\r\n validators: [\r\n Validators.required,\r\n Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*()])[A-Za-z0-9!@#$%^&*()]{6,}$'),\r\n ],\r\n nonNullable: true,\r\n });\r\n confirmPasswordCtrl = new FormControl('', {\r\n validators: [Validators.required, equalValueValidator(this.passwordCtrl)],\r\n nonNullable: true,\r\n });\r\n\r\n resetPasswordForm = new FormGroup({\r\n email: new FormControl('', { validators: [Validators.required, Validators.email], nonNullable: true }),\r\n token: new FormControl('', { validators: [Validators.required], nonNullable: true }),\r\n password: this.passwordCtrl,\r\n confirmPassword: this.confirmPasswordCtrl,\r\n });\r\n\r\n resetPasswordToken?: ResetPasswordToken;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions\r\n ) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.activatedRoute.data.subscribe({\r\n next: x => {\r\n this.resetPasswordToken = x['resetPasswordToken'];\r\n if (this.resetPasswordToken) {\r\n this.resetPasswordForm.patchValue(this.resetPasswordToken);\r\n }\r\n },\r\n });\r\n }\r\n\r\n resetPassword(): void {\r\n if (this.isPending || !this.resetPasswordForm.valid) {\r\n return;\r\n }\r\n this.isPending = true;\r\n this.error = undefined;\r\n\r\n const formValue = this.resetPasswordForm.getRawValue();\r\n this.resetPasswordForm.disable();\r\n\r\n this.authService.resetPassword(formValue).subscribe({\r\n next: () => {\r\n this.isPending = false;\r\n this.resetPasswordForm.enable();\r\n this.router.navigate(['/']);\r\n },\r\n error: e => {\r\n this.error = e;\r\n this.isPending = false;\r\n this.resetPasswordForm.enable();\r\n },\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord herstellen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"reset-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <p>{{ resetPasswordToken?.email }}</p>\r\n\r\n <mat-form-field>\r\n <mat-label>Nieuw wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"passwordCtrl\" />\r\n <!-- <mat-error *ngIf=\"passwordCtrl.errors\">{{ passwordCtrl | bdbErrorMessage }}</mat-error> -->\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Bevestig wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"confirmPasswordCtrl\" />\r\n <!-- <mat-error *ngIf=\"confirmPasswordCtrl.errors\">{{ confirmPasswordCtrl | bdbErrorMessage }}</mat-error> -->\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"reset-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>sync_lock</mat-icon>\r\n <span>Stel wachtwoord in</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n</form>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1.AccountService","catchError","filter","concatMap","tap","i1","i2","i7","i4","i5","i6","i1.BdbColumnBuilder","i1.MediaService","i2.BdbColumnBuilder","map","i1.AuthService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devopmaat-badaboom.mjs","sources":["../../../projects/badaboom/src/lib/bdb-auth-options.ts","../../../projects/badaboom/src/lib/bdb-options.ts","../../../projects/badaboom/src/lib/common/alert/bdb-alert.component.ts","../../../projects/badaboom/src/lib/common/alert/bdb-alert.component.html","../../../projects/badaboom/src/lib/common/alert-error-response/bdb-alert-error-response.component.ts","../../../projects/badaboom/src/lib/common/alert-error-response/bdb-alert-error-response.component.html","../../../projects/badaboom/src/lib/common/error-response-dialog/error-response-dialog.component.ts","../../../projects/badaboom/src/lib/common/error-response-dialog/error-response-dialog.component.html","../../../projects/badaboom/src/lib/domain/common/services/bdb-service.ts","../../../projects/badaboom/src/lib/domain/auth/account.service.ts","../../../projects/badaboom/src/lib/domain/auth/auth.service.ts","../../../projects/badaboom/src/lib/domain/auth/token-expired.interceptor.ts","../../../projects/badaboom/src/lib/presentation/auth-container/auth-container.component.ts","../../../projects/badaboom/src/lib/presentation/auth-container/auth-container.component.html","../../../projects/badaboom/src/lib/presentation/logged-out.guard.ts","../../../projects/badaboom/src/lib/presentation/role.guard.ts","../../../projects/badaboom/src/lib/presentation/reset-password.resolver.ts","../../../projects/badaboom/src/lib/domain/auth/token.interceptor.ts","../../../projects/badaboom/src/lib/lib.config.ts","../../../projects/badaboom/src/lib/application/common/bdb-data-source.ts","../../../projects/badaboom/src/lib/common/layout-error.ts","../../../projects/badaboom/src/lib/common/bdb-flex.directive.ts","../../../projects/badaboom/src/lib/application/common/query-input/bdb-query-input.component.ts","../../../projects/badaboom/src/lib/application/common/query-input/bdb-query-input.component.html","../../../projects/badaboom/src/lib/application/common/paginator/bdb-paginator.component.ts","../../../projects/badaboom/src/lib/application/common/paginator/bdb-paginator.component.html","../../../projects/badaboom/src/lib/application/common/table/dynamic.pipe.ts","../../../projects/badaboom/src/lib/common/boolean-display/bdb-boolean-display.component.ts","../../../projects/badaboom/src/lib/common/boolean-display/bdb-boolean-display.component.html","../../../projects/badaboom/src/lib/application/common/table/bdb-cell.directive.ts","../../../projects/badaboom/src/lib/application/common/table/bdb-column-type.ts","../../../projects/badaboom/src/lib/application/common/table/bdb-table.component.ts","../../../projects/badaboom/src/lib/application/common/table/bdb-table.component.html","../../../projects/badaboom/src/lib/application/common/full-table/bdb-full-table.component.ts","../../../projects/badaboom/src/lib/application/common/full-table/bdb-full-table.component.html","../../../projects/badaboom/src/lib/application/common/search/bdb-search-wrapper.component.ts","../../../projects/badaboom/src/lib/common/function.pipe.ts","../../../projects/badaboom/src/lib/common/bdb-form-error.directive.ts","../../../projects/badaboom/src/lib/application/common/search/bdb-search.component.ts","../../../projects/badaboom/src/lib/application/common/search/bdb-search.component.html","../../../projects/badaboom/src/lib/application/common/table/bdb-column-builder.ts","../../../projects/badaboom/src/lib/application/exception-log/exception-log-table/exception-log-table.component.ts","../../../projects/badaboom/src/lib/application/exception-log/exception-log-table/exception-log-table.component.html","../../../projects/badaboom/src/lib/common/file-size.pipe.ts","../../../projects/badaboom/src/lib/common/youtube-player/youtube-player.component.ts","../../../projects/badaboom/src/lib/common/youtube-player/youtube-player.component.html","../../../projects/badaboom/src/lib/domain/enums/media-type.ts","../../../projects/badaboom/src/lib/application/media/media-type-icon.pipe.ts","../../../projects/badaboom/src/lib/application/media/media-display/media-display.component.ts","../../../projects/badaboom/src/lib/application/media/media-display/media-display.component.html","../../../projects/badaboom/src/lib/application/media/media-type.pipe.ts","../../../projects/badaboom/src/lib/application/media/media-full-table/media-full-table.component.ts","../../../projects/badaboom/src/lib/application/media/media-full-table/media-full-table.component.html","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-r.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-rd.ts","../../../projects/badaboom/src/lib/domain/entities/media/media.service.ts","../../../projects/badaboom/src/lib/application/media/media-upload/media-drop.directive.ts","../../../projects/badaboom/src/lib/application/media/media-upload/media-upload.component.ts","../../../projects/badaboom/src/lib/application/media/media-upload/media-upload.component.html","../../../projects/badaboom/src/lib/application/media/media-input/media-input.component.ts","../../../projects/badaboom/src/lib/application/media/media-input/media-input.component.html","../../../projects/badaboom/src/lib/application/media/media-table/media-table.component.ts","../../../projects/badaboom/src/lib/application/media/media-table/media-table.component.html","../../../projects/badaboom/src/lib/domain/enums/task-log-outcome.ts","../../../projects/badaboom/src/lib/application/task-log/task-log-outcome.pipe.ts","../../../projects/badaboom/src/lib/domain/enums/task-log-status.ts","../../../projects/badaboom/src/lib/application/task-log/task-log-status.pipe.ts","../../../projects/badaboom/src/lib/domain/enums/task-log-parameter-type.ts","../../../projects/badaboom/src/lib/application/task-log-parameter/task-log-parameter-value.pipe.ts","../../../projects/badaboom/src/lib/application/user/user-table/user-table.component.ts","../../../projects/badaboom/src/lib/application/user/user-table/user-table.component.html","../../../projects/badaboom/src/lib/common/bdb-flex-child.directive.ts","../../../projects/badaboom/src/lib/common/linked-list.ts","../../../projects/badaboom/src/lib/common/bdb-grid-child.directive.ts","../../../projects/badaboom/src/lib/common/bdb-grid.directive.ts","../../../projects/badaboom/src/lib/common/collapse-row/bdb-collapse-row.component.ts","../../../projects/badaboom/src/lib/common/collapse-row/bdb-collapse-row.component.html","../../../projects/badaboom/src/lib/common/field/bdb-field.component.ts","../../../projects/badaboom/src/lib/common/field/bdb-field.component.html","../../../projects/badaboom/src/lib/common/plain-number.pipe.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-cr.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-crd.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-cru.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-crud.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-ru.ts","../../../projects/badaboom/src/lib/domain/common/services/bdb-service-rud.ts","../../../projects/badaboom/src/lib/domain/entities/exception-log/exception-log.service.ts","../../../projects/badaboom/src/lib/domain/entities/role/role.service.ts","../../../projects/badaboom/src/lib/domain/entities/task-log/task-log.service.ts","../../../projects/badaboom/src/lib/domain/entities/task-log-parameter/task-log-parameter.service.ts","../../../projects/badaboom/src/lib/domain/entities/task-log-schedule/task-log-schedule.service.ts","../../../projects/badaboom/src/lib/domain/entities/user/user.service.ts","../../../projects/badaboom/src/lib/domain/entities/user-role/user-role.service.ts","../../../projects/badaboom/src/lib/domain/tasks/task-log-scheduler.service.ts","../../../projects/badaboom/src/lib/domain/tasks/task-log-type.service.ts","../../../projects/badaboom/src/lib/presentation/access-denied-page/access-denied-page.component.ts","../../../projects/badaboom/src/lib/presentation/access-denied-page/access-denied-page.component.html","../../../projects/badaboom/src/lib/presentation/forgot-password-page/forgot-password-page.component.ts","../../../projects/badaboom/src/lib/presentation/forgot-password-page/forgot-password-page.component.html","../../../projects/badaboom/src/lib/presentation/invalid-token-page/invalid-token-page.component.ts","../../../projects/badaboom/src/lib/presentation/invalid-token-page/invalid-token-page.component.html","../../../projects/badaboom/src/lib/presentation/login-page/login-page.component.ts","../../../projects/badaboom/src/lib/presentation/login-page/login-page.component.html","../../../projects/badaboom/src/lib/presentation/logout-page/logout-page.component.ts","../../../projects/badaboom/src/lib/presentation/logout-page/logout-page.component.html","../../../projects/badaboom/src/lib/presentation/reset-password-page/reset-password-page.component.ts","../../../projects/badaboom/src/lib/presentation/reset-password-page/reset-password-page.component.html","../../../projects/badaboom/src/devopmaat-badaboom.ts"],"sourcesContent":["export interface BdbAuthOptions {\r\n loginPath: string;\r\n logoutPath: string;\r\n accessDeniedPath: string;\r\n forgotPasswordPath: string;\r\n resetPasswordPath: string;\r\n invalidTokenPath: string;\r\n addPresentation: boolean;\r\n}\r\n\r\nexport class BdbAuthOptionsBuilder {\r\n private _loginPath?: string;\r\n private _logoutPath?: string;\r\n private _accessDeniedPath?: string;\r\n private _forgotPasswordPath?: string;\r\n private _resetPasswordPath?: string;\r\n private _invalidTokenPath?: string;\r\n private _addPresentation = false;\r\n\r\n constructor(configure: BdbAuthOptionsConfigure) {\r\n configure(this);\r\n }\r\n\r\n set loginPath(path: string) {\r\n this._loginPath = path;\r\n }\r\n\r\n set logoutPath(path: string) {\r\n this._logoutPath = path;\r\n }\r\n\r\n set accessDeniedPath(path: string) {\r\n this._accessDeniedPath = path;\r\n }\r\n\r\n set forgotPasswordPath(path: string) {\r\n this._forgotPasswordPath = path;\r\n }\r\n\r\n set resetPasswordPath(path: string) {\r\n this._resetPasswordPath = path;\r\n }\r\n\r\n set invalidTokenPath(path: string) {\r\n this._invalidTokenPath = path;\r\n }\r\n\r\n addPresentation(): void {\r\n this._addPresentation = true;\r\n }\r\n\r\n build(): BdbAuthOptions {\r\n return {\r\n loginPath: this._loginPath ?? 'inloggen',\r\n logoutPath: this._logoutPath ?? 'uitloggen',\r\n accessDeniedPath: this._accessDeniedPath ?? 'toegang-geweigerd',\r\n forgotPasswordPath: this._forgotPasswordPath ?? 'wachtwoord-vergeten',\r\n resetPasswordPath: this._resetPasswordPath ?? 'herstel-wachtwoord',\r\n invalidTokenPath: this._invalidTokenPath ?? 'ongeldig-token',\r\n addPresentation: this._addPresentation,\r\n };\r\n }\r\n}\r\n\r\nexport type BdbAuthOptionsConfigure = (_: BdbAuthOptionsBuilder) => void;\r\n","import { InjectionToken } from '@angular/core';\r\nimport { BdbAuthOptions, BdbAuthOptionsBuilder, BdbAuthOptionsConfigure } from './bdb-auth-options';\r\n\r\nexport interface BdbOptions {\r\n backendUrl: string;\r\n mediaUrl: string;\r\n authOptions?: BdbAuthOptions;\r\n}\r\n\r\nexport class BdbOptionsBuilder {\r\n private _backendUrl!: string;\r\n private _mediaUrl!: string;\r\n private _auth?: BdbAuthOptionsConfigure;\r\n\r\n constructor(configure: BdbOptionsConfigure) {\r\n configure(this);\r\n }\r\n\r\n set backendUrl(url: string) {\r\n this._backendUrl = url;\r\n }\r\n set mediaUrl(url: string) {\r\n this._mediaUrl = url;\r\n }\r\n\r\n addAuth(configure: BdbAuthOptionsConfigure): void {\r\n this._auth = configure;\r\n }\r\n\r\n build(): BdbOptions {\r\n if (!this._backendUrl) {\r\n throw 'backendUrl mag niet leeg zijn';\r\n }\r\n if (!this._mediaUrl) {\r\n throw 'mediaUrl mag niet leeg zijn';\r\n }\r\n\r\n const options: BdbOptions = { backendUrl: this._backendUrl, mediaUrl: this._mediaUrl };\r\n\r\n if (this._auth) {\r\n options.authOptions = new BdbAuthOptionsBuilder(this._auth).build();\r\n }\r\n\r\n return options;\r\n }\r\n}\r\n\r\nexport type BdbOptionsConfigure = (_: BdbOptionsBuilder) => void;\r\n\r\nexport const BDB_OPTIONS = new InjectionToken<BdbOptions>('BdbOptions');\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'bdb-alert',\r\n imports: [CommonModule, MatIconModule],\r\n templateUrl: './bdb-alert.component.html',\r\n styleUrls: ['./bdb-alert.component.scss'],\r\n})\r\nexport class BdbAlertComponent {\r\n @HostBinding('class') class = 'bdb-alert';\r\n @Input() label = '';\r\n @Input() icon = 'task_alt';\r\n @Input() inline = false;\r\n\r\n constructor() {}\r\n}\r\n","<div class=\"bdb-alert-wrapper\" [ngStyle]=\"{ display: inline ? 'inline-flex' : 'flex' }\">\r\n <div class=\"bdb-icon-container\">\r\n <mat-icon>{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"content-container\">\r\n <div>\r\n <div class=\"label\">\r\n {{ label }}\r\n </div>\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BdbAlertComponent } from '../alert/bdb-alert.component';\r\n\r\nconst LoginFailed = 'LOGIN_FAILED';\r\nconst LoginNotAllowed = 'LOGIN_NOT_ALLOWED';\r\nconst LoginRequiredTwoFactor = 'LOGIN_REQUIRES_TWO_FACTOR';\r\nconst LockedOut = 'LOCKED_OUT';\r\n\r\ntype ProblemDetails = {\r\n type?: string;\r\n title?: string;\r\n status?: number;\r\n detail?: string;\r\n instance?: string;\r\n errors?: {\r\n [key: string]: unknown;\r\n };\r\n};\r\n\r\n@Component({\r\n selector: 'bdb-alert-error-response',\r\n imports: [CommonModule, BdbAlertComponent, MatButtonModule, MatIconModule],\r\n templateUrl: './bdb-alert-error-response.component.html',\r\n styleUrls: ['./bdb-alert-error-response.component.scss'],\r\n})\r\nexport class BdbAlertErrorResponseComponent implements OnChanges {\r\n @Input() value: HttpErrorResponse | undefined | null;\r\n @Input() dismissable = false;\r\n @Output() dismiss = new EventEmitter<void>();\r\n loginFailed = false;\r\n\r\n alertClass = 'error';\r\n icon = 'error_outline';\r\n label = 'Onbekende fout';\r\n message = '';\r\n errorCode: string | undefined;\r\n\r\n validationFailures(): string[] | null {\r\n if (this.value && this.value.error && this.value.error.errors) {\r\n const ret: string[] = [];\r\n const pd = this.value.error as ProblemDetails;\r\n if (pd.errors) {\r\n const errors = pd.errors;\r\n Object.keys(errors).forEach((x: string) => ret.push(`${errors[x]}`));\r\n }\r\n return ret;\r\n }\r\n return null;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.errorCode = undefined;\r\n if (this.value) {\r\n switch (this.value.status) {\r\n case 0:\r\n this.label = 'Communicatie mislukt';\r\n this.message = 'Controleer uw internetverbinding';\r\n break;\r\n case 400:\r\n this.alertClass = 'warn';\r\n this.icon = 'warning';\r\n this.label = 'Invoerfout';\r\n break;\r\n case 401:\r\n if (this.value.error === LoginFailed) {\r\n this.label = 'Inloggen mislukt';\r\n this.message = 'Controleer gegevens en probeer opnieuw';\r\n } else if (this.value.error === LoginNotAllowed) {\r\n this.label = 'Inloggen mislukt';\r\n this.message = 'Login niet toegestaan';\r\n } else if (this.value.error === LockedOut) {\r\n this.alertClass = 'warn';\r\n this.icon = 'warning';\r\n this.label = 'Tijdelijk geblokkeerd';\r\n this.message = 'Te veel mislukte inlogpogingen';\r\n } else if (this.value.error === LoginRequiredTwoFactor) {\r\n this.label = 'Inloggen mislukt';\r\n this.message = 'Tweestapsverificatie vereist';\r\n } else {\r\n this.label = 'Onbevoegd';\r\n this.message = 'U bent niet bevoegd voor de gevraagde actie';\r\n }\r\n break;\r\n case 403:\r\n this.label = 'Toegang geweigerd';\r\n this.message = 'Onvoldoende rechten voor de gevraagde actie';\r\n break;\r\n case 404:\r\n this.label = 'Niet gevonden';\r\n this.message = 'De opgevraagde bron kon niet worden gevonden';\r\n break;\r\n case 415:\r\n this.label = 'Mediatype niet ondersteund';\r\n this.message = this.value.error;\r\n break;\r\n case 500: {\r\n this.label = this.value.error?.title ?? 'Fout bij afhandeling';\r\n const errorDetail = this.value.error?.exceptionLogCode;\r\n if (errorDetail && errorDetail.match(/[A-Z0-9]{6}/g)) {\r\n this.errorCode = `${errorDetail.slice(0, 2)}-${errorDetail.slice(2, 4)}-${errorDetail.slice(4)}`;\r\n } else {\r\n this.message = this.value.error?.detail;\r\n }\r\n break;\r\n }\r\n default:\r\n this.label = 'Onbekende fout';\r\n this.message = 'Status: ' + this.value.status;\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","@if (value) {\r\n <bdb-alert [icon]=\"icon\" [label]=\"label\" [class]=\"alertClass\">\r\n @switch (value.status) {\r\n @case (400) {\r\n @for (message of validationFailures(); track message) {\r\n <div>{{ message }}</div>\r\n }\r\n }\r\n @case (500) {\r\n @if (errorCode) {\r\n Foutcode voor technische ondersteuning: <strong>{{ errorCode }}</strong>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"displayMessage\"></ng-container>\r\n }\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"displayMessage\"></ng-container>\r\n }\r\n }\r\n @if (dismissable) {\r\n <button mat-icon-button class=\"error dismiss-button\" (click)=\"dismiss.emit()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </bdb-alert>\r\n}\r\n\r\n<ng-template #displayMessage>\r\n {{ message }}\r\n</ng-template>\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { BdbAlertErrorResponseComponent } from '../alert-error-response/bdb-alert-error-response.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'bdb-error-response-dialog',\r\n imports: [MatDialogModule, BdbAlertErrorResponseComponent, MatIconModule, MatButtonModule],\r\n templateUrl: './error-response-dialog.component.html',\r\n styleUrl: './error-response-dialog.component.scss',\r\n})\r\nexport class BdbErrorResponseDialogComponent {\r\n readonly data = inject<{ title: string; error: HttpErrorResponse }>(MAT_DIALOG_DATA);\r\n}\r\n","<h2 mat-dialog-title>{{ data.title }}</h2>\r\n<div mat-dialog-content>\r\n <bdb-alert-error-response [value]=\"data.error\"></bdb-alert-error-response>\r\n</div>\r\n<div mat-dialog-actions align=\"end\">\r\n <button mat-button type=\"button\" mat-dialog-close class=\"warn\"><mat-icon>close</mat-icon> Sluiten</button>\r\n</div>\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { BDB_OPTIONS } from '../../../bdb-options';\r\n\r\nexport abstract class BdbService {\r\n baseUrl: string;\r\n httpClient: HttpClient;\r\n\r\n constructor(areaName: string) {\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n this.baseUrl = `${bdbOptions.backendUrl}/${areaName}`;\r\n this.httpClient = inject(HttpClient);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { TokenResponse } from './token-reponse';\r\nimport { BdbService } from '../common/services/bdb-service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AccountService extends BdbService {\r\n constructor() {\r\n super('account');\r\n }\r\n\r\n login(value: { email: string; password: string }): Observable<TokenResponse> {\r\n return this.httpClient.post<TokenResponse>(`${this.baseUrl}/login`, value);\r\n }\r\n\r\n exchangeRefreshToken(value: { token: string; refreshToken: string }): Observable<TokenResponse> {\r\n return this.httpClient.post<TokenResponse>(`${this.baseUrl}/exchange-refresh-token`, value);\r\n }\r\n\r\n forgotPassword(value: { email: string }): Observable<boolean> {\r\n return this.httpClient.post<boolean>(`${this.baseUrl}/forgot-password`, value);\r\n }\r\n\r\n resetPassword(value: { email: string; token: string; password: string }): Observable<TokenResponse> {\r\n return this.httpClient.post<TokenResponse>(`${this.baseUrl}/reset-password`, value);\r\n }\r\n\r\n validateResetPasswordToken(value: { email: string; token: string }): Observable<boolean> {\r\n return this.httpClient.post<boolean>(`${this.baseUrl}/validate-reset-password-token`, value);\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, concatMap, filter, shareReplay, tap } from 'rxjs/operators';\r\nimport { BDB_OPTIONS } from '../../bdb-options';\r\nimport { BdbErrorResponseDialogComponent } from '../../common/error-response-dialog/error-response-dialog.component';\r\nimport { AccountInfo } from './account-info';\r\nimport { AccountService } from './account.service';\r\nimport { TokenResponse } from './token-reponse';\r\n\r\nconst tokenKey = 'access_token';\r\nconst refreshTokenKey = 'refresh_token';\r\n\r\nconst emailAddressClaimName = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress';\r\nconst roleClaimName = 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role';\r\nconst nameClaimName = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name';\r\nconst nameIdentifierClaimName = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier';\r\n\r\nconst defaultClaims = [\r\n 'AspNet.Identity.SecurityStamp',\r\n 'aud',\r\n 'exp',\r\n 'iss',\r\n roleClaimName,\r\n nameClaimName,\r\n nameIdentifierClaimName,\r\n emailAddressClaimName,\r\n];\r\n\r\nexport function getAuthorizationHeaderFromToken(token: string): string {\r\n return `Bearer ${token}`;\r\n}\r\n\r\nexport function getTokenFromAuthorizationHeader(header: string): string {\r\n return header.replace(/^(Bearer )/g, '');\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n token$: BehaviorSubject<string | null>;\r\n account$: BehaviorSubject<AccountInfo | null>;\r\n\r\n currentRefreshTokenRequest: Observable<string | null> | undefined;\r\n\r\n matDialog = inject(MatDialog);\r\n router = inject(Router);\r\n readonly bdbOptions = inject(BDB_OPTIONS);\r\n\r\n constructor(private accountService: AccountService) {\r\n const token = localStorage.getItem(tokenKey);\r\n this.token$ = new BehaviorSubject(token);\r\n const accountInfo = token === null ? null : this.getAccountInfoFromToken(token);\r\n this.account$ = new BehaviorSubject(accountInfo);\r\n }\r\n\r\n login(value: { email: string; password: string }): Observable<TokenResponse> {\r\n return this.accountService.login(value).pipe(\r\n tap({\r\n next: tokenResponse => this.processTokenResponse(tokenResponse),\r\n })\r\n );\r\n }\r\n\r\n logout(): void {\r\n this.token$.next(null);\r\n this.account$.next(null);\r\n localStorage.removeItem(tokenKey);\r\n localStorage.removeItem(refreshTokenKey);\r\n }\r\n\r\n refreshToken(expiredToken: string): Observable<string | null> {\r\n const currentToken = this.token$.getValue();\r\n\r\n if (expiredToken !== currentToken) {\r\n return this.token$.asObservable();\r\n }\r\n\r\n const refreshToken = localStorage.getItem(refreshTokenKey);\r\n\r\n if (!refreshToken) {\r\n throw new Error('Verversen login token mislukt');\r\n }\r\n\r\n if (this.currentRefreshTokenRequest === undefined) {\r\n this.currentRefreshTokenRequest = this.accountService\r\n .exchangeRefreshToken({ token: currentToken, refreshToken })\r\n .pipe(\r\n tap(() => (this.currentRefreshTokenRequest = undefined)),\r\n catchError((x: HttpErrorResponse) => {\r\n this.logout();\r\n this.matDialog\r\n .open(BdbErrorResponseDialogComponent, {\r\n data: { title: 'Authenticatie verversen mislukt. U wordt nu uitgelogd', error: x },\r\n })\r\n .afterClosed()\r\n .subscribe({\r\n next: () => this.router.navigate(['/' + this.bdbOptions.authOptions?.loginPath]),\r\n });\r\n return of(undefined);\r\n }),\r\n filter(x => x !== undefined),\r\n concatMap(x => {\r\n this.processTokenResponse(x);\r\n return this.token$;\r\n }),\r\n shareReplay(1)\r\n );\r\n }\r\n return this.currentRefreshTokenRequest;\r\n }\r\n\r\n resetPassword(value: { email: string; token: string; password: string }): Observable<TokenResponse> {\r\n return this.accountService.resetPassword(value).pipe(\r\n tap({\r\n next: tokenResponse => this.processTokenResponse(tokenResponse),\r\n })\r\n );\r\n }\r\n\r\n forgotPassword(value: { email: string }): Observable<boolean> {\r\n return this.accountService.forgotPassword(value);\r\n }\r\n\r\n validateResetPasswordToken(value: { email: string; token: string }): Observable<boolean> {\r\n return this.accountService.validateResetPasswordToken(value);\r\n }\r\n\r\n /* helper methods */\r\n\r\n private processTokenResponse(x: TokenResponse): void {\r\n if (!x || !x.token || !x.refreshToken) {\r\n this.logout();\r\n return;\r\n }\r\n\r\n this.token$.next(x.token);\r\n this.account$.next(this.getAccountInfoFromToken(x.token));\r\n localStorage.setItem(tokenKey, x.token);\r\n localStorage.setItem(refreshTokenKey, x.refreshToken);\r\n }\r\n\r\n private getAccountInfoFromToken(token: string): AccountInfo {\r\n const decodedJWT = JSON.parse(window.atob(token.split('.')[1]));\r\n let roles: string[] = [];\r\n const decodedRoles = decodedJWT[roleClaimName];\r\n if (decodedRoles) {\r\n if (Array.isArray(decodedRoles)) {\r\n roles = decodedRoles;\r\n } else {\r\n roles = [decodedRoles];\r\n }\r\n }\r\n\r\n const claims: Map<string, unknown> = new Map<string, unknown>();\r\n for (const [key, value] of Object.entries(decodedJWT)) {\r\n if (defaultClaims.indexOf(key) >= 0) {\r\n continue;\r\n }\r\n claims.set(key, value);\r\n }\r\n\r\n return {\r\n email: decodedJWT[nameClaimName],\r\n id: decodedJWT['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'],\r\n roles: roles,\r\n claims: claims,\r\n };\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\r\nimport { catchError, concatMap, filter, take, throwError } from 'rxjs';\r\nimport { AuthService, getAuthorizationHeaderFromToken, getTokenFromAuthorizationHeader } from './auth.service';\r\n\r\nconst TokenExpired = 'token-expired';\r\n\r\nexport const tokenExpiredInterceptor: HttpInterceptorFn = (req, next) => {\r\n const authService = inject(AuthService);\r\n\r\n return next(req).pipe(\r\n catchError(error => {\r\n if (!(error instanceof HttpErrorResponse) || error.status !== 401 || !error.headers.get(TokenExpired)) {\r\n return throwError(() => error);\r\n }\r\n\r\n const authorizationHeader = req.headers.get('Authorization');\r\n\r\n const expiredToken = getTokenFromAuthorizationHeader(authorizationHeader ?? '');\r\n\r\n return authService.refreshToken(expiredToken).pipe(\r\n filter(x => x !== null),\r\n take(1),\r\n concatMap(x =>\r\n next(\r\n req.clone({\r\n setHeaders: {\r\n Authorization: getAuthorizationHeaderFromToken(x ?? ''),\r\n },\r\n })\r\n )\r\n )\r\n );\r\n })\r\n );\r\n};\r\n","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n@Component({\r\n imports: [RouterOutlet],\r\n templateUrl: './auth-container.component.html',\r\n styleUrls: ['./auth-container.component.scss'],\r\n})\r\nexport class AuthContainerComponent {}\r\n","<router-outlet></router-outlet>\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { AuthService } from '../domain/auth/auth.service';\r\nimport { BDB_OPTIONS } from '../bdb-options';\r\n\r\nexport const loggedOutGuard: CanActivateFn = (_, state) => {\r\n const authService = inject(AuthService);\r\n const router = inject(Router);\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n const isLoggedIn = !!authService.account$.getValue();\r\n\r\n return isLoggedIn\r\n ? router.createUrlTree([`/${bdbOptions.authOptions?.logoutPath}`], {\r\n queryParams: { returnUrl: state.url },\r\n })\r\n : true;\r\n};\r\n","import { CanActivateFn, Router } from '@angular/router';\r\nimport { inject } from '@angular/core';\r\nimport { BDB_OPTIONS } from '../bdb-options';\r\nimport { AuthService } from '../domain/auth/auth.service';\r\n\r\nexport function roleGuard(...roles: string[]): CanActivateFn {\r\n return (_, state) => {\r\n const authService = inject(AuthService);\r\n const router = inject(Router);\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n const account = authService.account$.getValue();\r\n\r\n if (!account) {\r\n return router.createUrlTree([`/${bdbOptions.authOptions?.loginPath}`], {\r\n queryParams: { returnUrl: state.url },\r\n });\r\n }\r\n\r\n if (!roles.length) {\r\n return true;\r\n }\r\n\r\n const userRoles = account.roles;\r\n\r\n if (userRoles.some(x => roles.includes(x))) {\r\n return true;\r\n }\r\n\r\n return router.createUrlTree([`/${bdbOptions.authOptions?.accessDeniedPath}`], {\r\n queryParams: { returnUrl: state.url },\r\n });\r\n };\r\n}\r\n","import { ResolveFn, Router } from '@angular/router';\r\nimport { BDB_OPTIONS } from '../bdb-options';\r\nimport { inject } from '@angular/core';\r\nimport { ResetPasswordToken } from '../domain/auth/reset-password-token';\r\nimport { catchError, concatMap, map, of, tap } from 'rxjs';\r\nimport { AuthService } from '../domain/auth/auth.service';\r\n\r\nexport const resetPasswordResolver: ResolveFn<ResetPasswordToken> = route => {\r\n const authService = inject(AuthService);\r\n const router = inject(Router);\r\n const bdbOptions = inject(BDB_OPTIONS);\r\n const invalidTokenPath = bdbOptions.authOptions?.invalidTokenPath;\r\n\r\n const model: ResetPasswordToken = {\r\n token: route.queryParams['token'],\r\n email: route.queryParams['email'],\r\n };\r\n\r\n return of(model).pipe(\r\n tap(x => {\r\n if (!x.token || !x.email) {\r\n throw new Error('Could not obtain token');\r\n }\r\n }),\r\n concatMap(x => authService.validateResetPasswordToken(x)),\r\n tap(x => {\r\n if (!x) {\r\n throw new Error('Token is not valid');\r\n }\r\n }),\r\n catchError(() => router.navigate(['/', invalidTokenPath])),\r\n map(() => model)\r\n );\r\n};\r\n","import { HttpInterceptorFn } from '@angular/common/http';\r\nimport { AuthService, getAuthorizationHeaderFromToken } from './auth.service';\r\nimport { inject } from '@angular/core';\r\nimport { concatMap, take } from 'rxjs';\r\n\r\nexport const tokenInterceptor: HttpInterceptorFn = (req, next) => {\r\n const authService = inject(AuthService);\r\n\r\n return authService.token$.pipe(\r\n take(1),\r\n concatMap(x => {\r\n const request =\r\n x === null\r\n ? req\r\n : req.clone({\r\n setHeaders: {\r\n Authorization: getAuthorizationHeaderFromToken(x ?? ''),\r\n },\r\n });\r\n return next(request);\r\n })\r\n );\r\n};\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\nimport { BDB_OPTIONS, BdbOptionsBuilder, BdbOptionsConfigure } from './bdb-options';\r\nimport { provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport { tokenExpiredInterceptor } from './domain/auth/token-expired.interceptor';\r\nimport { Routes, provideRouter } from '@angular/router';\r\nimport { AuthContainerComponent } from './presentation/auth-container/auth-container.component';\r\nimport { loggedOutGuard } from './presentation/logged-out.guard';\r\nimport { roleGuard } from './presentation/role.guard';\r\nimport { resetPasswordResolver } from './presentation/reset-password.resolver';\r\nimport { tokenInterceptor } from './domain/auth/token.interceptor';\r\n\r\n/**\r\n * Configures BaDaBoom by providing necessary tokens.\r\n * Takes root routes and provides the router with these routes, appending routes if specified\r\n * @param {BdbOptionsConfigure} optionsConfigure\r\n * @param {Routes} routes\r\n * @return {EnvironmentProviders}\r\n */\r\nexport function provideBaDaBoom(optionsConfigure: BdbOptionsConfigure, routes: Routes): EnvironmentProviders {\r\n const options = new BdbOptionsBuilder(optionsConfigure).build();\r\n\r\n let authRoutes: Routes = [];\r\n\r\n if (options.authOptions?.addPresentation) {\r\n const authOptions = options.authOptions;\r\n\r\n authRoutes = [\r\n {\r\n path: '',\r\n component: AuthContainerComponent,\r\n children: [\r\n {\r\n path: authOptions.loginPath,\r\n canActivate: [loggedOutGuard],\r\n loadComponent: () =>\r\n import('./presentation/login-page/login-page.component').then(x => x.LoginPageComponent),\r\n },\r\n {\r\n path: authOptions.logoutPath,\r\n canActivate: [roleGuard()],\r\n loadComponent: () =>\r\n import('./presentation/logout-page/logout-page.component').then(x => x.LogoutPageComponent),\r\n },\r\n {\r\n path: authOptions.forgotPasswordPath,\r\n canActivate: [loggedOutGuard],\r\n loadComponent: () =>\r\n import('./presentation/forgot-password-page/forgot-password-page.component').then(\r\n x => x.ForgotPasswordPageComponent\r\n ),\r\n },\r\n {\r\n path: authOptions.resetPasswordPath,\r\n canActivate: [loggedOutGuard],\r\n resolve: [resetPasswordResolver],\r\n loadComponent: () =>\r\n import('./presentation/reset-password-page/reset-password-page.component').then(\r\n x => x.ResetPasswordPageComponent\r\n ),\r\n },\r\n {\r\n path: authOptions.accessDeniedPath,\r\n loadComponent: () =>\r\n import('./presentation/access-denied-page/access-denied-page.component').then(\r\n x => x.AccessDeniedPageComponent\r\n ),\r\n },\r\n {\r\n path: authOptions.invalidTokenPath,\r\n loadComponent: () =>\r\n import('./presentation/invalid-token-page/invalid-token-page.component').then(\r\n x => x.InvalidTokenPageComponent\r\n ),\r\n },\r\n ],\r\n },\r\n ];\r\n }\r\n\r\n return makeEnvironmentProviders([\r\n { provide: BDB_OPTIONS, useValue: options },\r\n provideHttpClient(withInterceptors([tokenInterceptor, tokenExpiredInterceptor])),\r\n provideRouter([...routes, ...authRoutes]),\r\n ]);\r\n}\r\n","import { DataSource } from '@angular/cdk/collections';\r\nimport { BdbEntityRead } from '../../domain/common/entities/bdb-entity-read';\r\nimport { BehaviorSubject, Observable, Subject, catchError, finalize, of } from 'rxjs';\r\nimport { BdbResponse } from '../../domain/common/bdb-response';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { BdbRequest } from '../../domain/common/bdb-request';\r\nimport { BdbServiceR } from '../../domain/common/services/bdb-service-r';\r\nimport { BdbEntity } from '../../domain/common/entities/bdb-entity';\r\n\r\nexport class BdbDataSource<TEntityRead extends BdbEntityRead> implements DataSource<TEntityRead> {\r\n public dataSubject = new BehaviorSubject<TEntityRead[]>([]);\r\n private responseSubject = new Subject<BdbResponse<TEntityRead>>();\r\n private loadingSubject = new BehaviorSubject<boolean>(false);\r\n private errorSubject = new BehaviorSubject<HttpErrorResponse | null>(null);\r\n\r\n public loading$ = this.loadingSubject.asObservable();\r\n public error$ = this.errorSubject.asObservable();\r\n public response$ = this.responseSubject.asObservable();\r\n\r\n public readonly request: BdbRequest;\r\n\r\n get data(): TEntityRead[] {\r\n return this.dataSubject.value;\r\n }\r\n\r\n constructor(\r\n private service: BdbServiceR<BdbEntity, TEntityRead>,\r\n initialRequest: BdbRequest = {}\r\n ) {\r\n this.request = initialRequest;\r\n }\r\n\r\n disconnect(): void {\r\n return;\r\n }\r\n\r\n connect(): Observable<TEntityRead[] | readonly TEntityRead[]> {\r\n return this.dataSubject.asObservable();\r\n }\r\n\r\n loadMethod(service: BdbServiceR<BdbEntity, TEntityRead>, request: BdbRequest): Observable<BdbResponse<TEntityRead>> {\r\n return service.read(request);\r\n }\r\n\r\n load(): void {\r\n this.loadingSubject.next(true);\r\n this.errorSubject.next(null);\r\n\r\n this.loadMethod(this.service, this.request)\r\n .pipe(\r\n catchError((err: HttpErrorResponse) => {\r\n this.errorSubject.next(err);\r\n return of({ page: 0, count: 0, rows: [], pageSize: 15 });\r\n }),\r\n finalize(() => this.loadingSubject.next(false))\r\n )\r\n .subscribe({\r\n next: (response: BdbResponse<TEntityRead>) => {\r\n this.dataSubject.next(response.rows);\r\n this.responseSubject.next(response);\r\n },\r\n });\r\n }\r\n}\r\n","export class LayoutError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { LayoutError } from './layout-error';\r\n\r\ntype FlexSpacing = {\r\n align: string;\r\n justify: string;\r\n};\r\n\r\nconst DEFAULT_FLEX_DIRECTION = 'row';\r\nconst DEFAULT_FLEX_GAP = '';\r\nconst DEFAULT_FLEX_SPACING: FlexSpacing = {\r\n justify: 'start',\r\n align: 'stretch',\r\n};\r\n\r\n@Directive({\r\n selector: '[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]',\r\n standalone: true,\r\n})\r\nexport class BdbFlexDirective implements OnInit {\r\n @Input() bdbFlex = '';\r\n @Input() bdbFlexDirection = '';\r\n @Input() bdbFlexGap = '';\r\n @Input() bdbFlexSpacing = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.element.nativeElement, 'display', 'flex');\r\n\r\n const bdbFlexInputs = this.bdbFlex.split(' ').filter(x => !!x);\r\n\r\n this.setDirection(bdbFlexInputs[0]);\r\n this.setGap(bdbFlexInputs[1]);\r\n this.setSpacing({\r\n justify: bdbFlexInputs[2],\r\n align: bdbFlexInputs[3],\r\n });\r\n }\r\n\r\n setDirection(bdbFlexInput?: string): void {\r\n const direction = this.validateDirection(this.getDirection(bdbFlexInput));\r\n this.renderer.setStyle(this.element.nativeElement, 'flex-direction', direction);\r\n }\r\n\r\n getDirection(bdbFlexInput?: string): string {\r\n const trimmedBdbFlexDirection = this.bdbFlexDirection.trim();\r\n\r\n if (trimmedBdbFlexDirection) {\r\n return trimmedBdbFlexDirection;\r\n }\r\n\r\n if (bdbFlexInput) {\r\n return bdbFlexInput;\r\n }\r\n\r\n return DEFAULT_FLEX_DIRECTION;\r\n }\r\n\r\n validateDirection(direction: string): string {\r\n switch (direction) {\r\n case 'row':\r\n return 'row';\r\n case 'col':\r\n return 'column';\r\n default:\r\n throw new LayoutError(`'${direction}' is not a valid value for flex direction`);\r\n }\r\n }\r\n\r\n setGap(bdbFlexInput?: string): void {\r\n const gap = this.validateGap(this.getGap(bdbFlexInput));\r\n this.renderer.setStyle(this.element.nativeElement, 'gap', gap);\r\n }\r\n\r\n getGap(bdbFlexInput?: string): string {\r\n const trimmedBdbFlexGap = this.bdbFlexGap.trim();\r\n\r\n if (trimmedBdbFlexGap) {\r\n return trimmedBdbFlexGap;\r\n }\r\n\r\n if (bdbFlexInput) {\r\n return bdbFlexInput;\r\n }\r\n\r\n return DEFAULT_FLEX_GAP;\r\n }\r\n\r\n validateGap(gap: string): string {\r\n return gap;\r\n }\r\n\r\n setSpacing(bdbFlexInput: Partial<FlexSpacing>): void {\r\n const spacing = this.validateSpacing(this.getSpacing(bdbFlexInput));\r\n this.renderer.setStyle(this.element.nativeElement, 'align-items', spacing.align);\r\n this.renderer.setStyle(this.element.nativeElement, 'justify-content', spacing.justify);\r\n }\r\n\r\n getSpacing(bdbFlexInput: Partial<FlexSpacing>): FlexSpacing {\r\n const splitBdbFlexSpacing = this.bdbFlexSpacing.split(' ').filter(x => !!x);\r\n\r\n if (splitBdbFlexSpacing.length === 2) {\r\n return {\r\n align: splitBdbFlexSpacing[0],\r\n justify: splitBdbFlexSpacing[1],\r\n };\r\n }\r\n\r\n if (bdbFlexInput.align && bdbFlexInput.justify) {\r\n return {\r\n align: bdbFlexInput.align,\r\n justify: bdbFlexInput.justify,\r\n };\r\n }\r\n\r\n return DEFAULT_FLEX_SPACING;\r\n }\r\n\r\n validateSpacing(spacing: FlexSpacing): FlexSpacing {\r\n return spacing;\r\n }\r\n}\r\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'bdb-query-input[dataSource]',\r\n imports: [CommonModule, ReactiveFormsModule, MatIconModule],\r\n templateUrl: './bdb-query-input.component.html',\r\n styleUrls: ['./bdb-query-input.component.scss'],\r\n})\r\nexport class BdbQueryInputComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {\r\n @HostBinding('class') class = 'bdb-query-input';\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n private _onDestroy = new Subject<void>();\r\n queryFormControl = new FormControl<string | undefined>(undefined, { nonNullable: true });\r\n\r\n ngOnInit(): void {\r\n this.queryFormControl.valueChanges\r\n .pipe(debounceTime(100), distinctUntilChanged(), takeUntil(this._onDestroy))\r\n .subscribe({\r\n next: x => {\r\n if (this.dataSource) {\r\n this.dataSource.request.query = x;\r\n this.dataSource.request.page = 0;\r\n this.dataSource.load();\r\n }\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n}\r\n","<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\n\r\n@Component({\r\n selector: 'bdb-paginator',\r\n imports: [MatPaginatorModule],\r\n templateUrl: './bdb-paginator.component.html',\r\n styleUrls: ['./bdb-paginator.component.scss'],\r\n})\r\nexport class BdbPaginatorComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n\r\n private _onDestroy = new Subject<void>();\r\n\r\n pageSize?: number;\r\n page?: number;\r\n length?: number;\r\n\r\n ngOnInit(): void {\r\n this.dataSource.response$.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: x => {\r\n this.pageSize = x.pageSize;\r\n this.page = x.page;\r\n this.length = x.count;\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n changePage(event: PageEvent): void {\r\n this.dataSource.request.page = event.pageIndex;\r\n this.dataSource.request.pageSize = event.pageSize;\r\n this.dataSource.load();\r\n }\r\n}\r\n","<mat-paginator\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"page\"\r\n [length]=\"length\"\r\n (page)=\"changePage($event)\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [hidePageSize]=\"true\">\r\n</mat-paginator>\r\n","import { Injector, Pipe, PipeTransform, Type } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'dynamicPipe',\r\n standalone: true,\r\n})\r\nexport class DynamicPipe implements PipeTransform {\r\n constructor(private injector: Injector) {}\r\n\r\n transform(value: unknown, requiredPipe: Type<PipeTransform>, pipeArgs: unknown): unknown {\r\n const injector = Injector.create({\r\n name: 'DynamicPipe',\r\n parent: this.injector,\r\n providers: [{ provide: requiredPipe }],\r\n });\r\n const pipe = injector.get(requiredPipe);\r\n return pipe.transform(value, pipeArgs);\r\n }\r\n}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'bdb-boolean-display',\r\n imports: [CommonModule, MatIconModule],\r\n templateUrl: './bdb-boolean-display.component.html',\r\n styleUrls: ['./bdb-boolean-display.component.scss'],\r\n})\r\nexport class BdbBooleanDisplayComponent {\r\n @HostBinding('class') class = 'bdb-boolean-display';\r\n @Input() value?: boolean | null;\r\n}\r\n","@if (value === false) {\r\n <mat-icon class=\"false\">clear</mat-icon>\r\n} @else if (value === true) {\r\n <mat-icon class=\"true\">check</mat-icon>\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[bdbCellDef]',\r\n standalone: true,\r\n})\r\nexport class BdbCellDirective {\r\n @Input()\r\n public bdbCellDef = '';\r\n\r\n constructor(public templateRef: TemplateRef<never>) {}\r\n}\r\n","export enum BdbColumnType {\r\n String = 'String',\r\n Number = 'Number',\r\n Percentage = 'Percentage',\r\n Currency = 'Currency',\r\n Date = 'Date',\r\n Boolean = 'Boolean',\r\n Enum = 'Enum',\r\n Custom = 'Custom',\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n TrackByFunction,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { Subject } from 'rxjs';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { BdbAlertErrorResponseComponent } from '../../../common/alert-error-response/bdb-alert-error-response.component';\r\nimport { DynamicPipe } from './dynamic.pipe';\r\nimport { BdbBooleanDisplayComponent } from '../../../common/boolean-display/bdb-boolean-display.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BdbEntity } from '../../../domain/common/entities/bdb-entity';\r\nimport { BdbColumn } from './bdb-column';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { BdbContextAction } from './bdb-context-action';\r\nimport { BdbCellDirective } from './bdb-cell.directive';\r\nimport { BdbColumnType } from './bdb-column-type';\r\nimport { BdbM3Palette } from '../../../common/bdb-palette';\r\n\r\n@Component({\r\n selector: 'bdb-table[dataSource]',\r\n imports: [\r\n CommonModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatSortModule,\r\n BdbAlertErrorResponseComponent,\r\n DynamicPipe,\r\n BdbBooleanDisplayComponent,\r\n MatMenuModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './bdb-table.component.html',\r\n styleUrls: ['./bdb-table.component.scss'],\r\n})\r\nexport class BdbTableComponent<TRead extends BdbEntity> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\r\n private readonly _onDestroy = new Subject<void>();\r\n\r\n @Input() columns: BdbColumn<TRead, unknown>[] = [];\r\n @Input() dataSource!: BdbDataSource<TRead>;\r\n @Input() autoLoad?: boolean = undefined;\r\n\r\n @Input() displayedColumns: string[] = [];\r\n @Input() contextActions: BdbContextAction<TRead>[] = [];\r\n\r\n @Input() selection?: SelectionModel<TRead>;\r\n @Input() selectOnRowClick = true;\r\n @Input() selectedRowClass = 'selected';\r\n\r\n @Input() isClickable = true;\r\n\r\n @Output() rowClick = new EventEmitter<TRead>();\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<TRead>; row: TRead }>();\r\n\r\n @ViewChild(MatMenuTrigger) contextMenu!: MatMenuTrigger;\r\n @ContentChildren(BdbCellDirective, { descendants: true }) cellTemplates: QueryList<BdbCellDirective> | undefined;\r\n\r\n error: HttpErrorResponse | undefined;\r\n columnType = BdbColumnType;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n @Input() rowColor?: (x: TRead) => BdbM3Palette;\r\n\r\n public trackById: TrackByFunction<BdbEntity> = (_: number, item: BdbEntity) => {\r\n return item.id;\r\n };\r\n\r\n ngOnInit(): void {\r\n if (this.autoLoad !== false) {\r\n this.load();\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.columns && !this.displayedColumns.length) {\r\n this.displayedColumns = this.columns.map(x => x.id);\r\n }\r\n if (this.selection?.isMultipleSelection() && !(this.displayedColumns[0] === 'selection')) {\r\n this.displayedColumns.unshift('selection');\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.setColumnTemplates();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n public load(): void {\r\n this.error = undefined;\r\n\r\n this.dataSource.load();\r\n }\r\n\r\n setColumnTemplates(): void {\r\n const templates = this.cellTemplates;\r\n if (templates == undefined || !this.cellTemplates?.length) {\r\n return;\r\n }\r\n if (this.columns && this.columns.length) {\r\n this.columns.forEach(x => {\r\n const tpl = templates.filter(y => y.bdbCellDef === x.id)[0];\r\n if (tpl) {\r\n x.template = tpl.templateRef;\r\n }\r\n });\r\n }\r\n }\r\n\r\n onRowClick(row: TRead): void {\r\n if (this.selection && this.selectOnRowClick) {\r\n this.selection.toggle(row);\r\n }\r\n this.rowClick.emit(row);\r\n }\r\n\r\n // SORT\r\n sortData(event: Sort): void {\r\n const column = this.columns.find(x => x.id === event.active);\r\n if (column) {\r\n this.dataSource.request.sortField = column.id;\r\n this.dataSource.request.sortDirection = event.direction;\r\n this.dataSource.load();\r\n }\r\n }\r\n\r\n // CONTEXT MENU\r\n onContextMenu(event: MouseEvent, row: TRead): void {\r\n event.preventDefault();\r\n if (this.contextActions && this.contextActions.length) {\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menuData = { row: row };\r\n if (this.contextMenu.menu) {\r\n this.contextMenu.menu.focusFirstItem('mouse');\r\n }\r\n this.contextMenu.openMenu();\r\n }\r\n }\r\n\r\n onContextMenuAction(action: BdbContextAction<TRead>, row: TRead): void {\r\n this.contextAction.emit({ action: action, row: row });\r\n }\r\n\r\n isAllSelected(): boolean {\r\n if (!this.selection) {\r\n return false;\r\n }\r\n return this.dataSource.data.every(x => this.selection?.isSelected(x));\r\n }\r\n\r\n anySelected(): boolean {\r\n if (!this.selection) {\r\n return false;\r\n }\r\n return this.dataSource.data.some(x => this.selection?.isSelected(x));\r\n }\r\n\r\n toggleAllRows(): void {\r\n if (!(this.selection && this.dataSource)) {\r\n return;\r\n }\r\n if (this.isAllSelected()) {\r\n this.selection.deselect(...this.dataSource.data);\r\n } else {\r\n this.selection.select(...this.dataSource.data);\r\n }\r\n }\r\n\r\n rowClass(row: TRead): { [klass: string]: unknown } | undefined {\r\n if (!(this.selection || this.rowColor)) {\r\n return undefined;\r\n }\r\n const ret: { [klass: string]: unknown } = {};\r\n if (this.selection) {\r\n ret[this.selectedRowClass] = this.selection.isSelected(row);\r\n }\r\n if (this.rowColor) {\r\n const palette = this.rowColor(row);\r\n if (palette) {\r\n ret['bdb-' + palette] = true;\r\n } else if (!this.selection) {\r\n return undefined;\r\n }\r\n }\r\n return ret;\r\n }\r\n}\r\n","<div class=\"bdb-table-container\">\r\n @if (dataSource) {\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (selection) {\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n color=\"primary\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (selection) {\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n color=\"accent\">\r\n </mat-checkbox>\r\n }\r\n </td>\r\n </ng-container>\r\n\r\n @for (column of columns; track column) {\r\n <ng-container [matColumnDef]=\"column.id\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n @if (dataSource && (dataSource.error$ | async)) {\r\n <bdb-alert-error-response [value]=\"dataSource.error$ | async\"> </bdb-alert-error-response>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n }\r\n </td>\r\n </tr>\r\n </table>\r\n }\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n @switch (column.type) {\r\n @case (columnType.String) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Number) {\r\n {{ column.field(row) | number: column.format }}\r\n }\r\n @case (columnType.Percentage) {\r\n {{ column.field(row) | percent: column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Currency) {\r\n {{ column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Date) {\r\n {{ column.field(row) | date: column.format }}\r\n }\r\n @case (columnType.Boolean) {\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n }\r\n @case (columnType.Enum) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Custom) {\r\n *?*\r\n }\r\n @default {\r\n {{ column.field(row) | json }}\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n @for (action of contextActions; track action) {\r\n @if (action.condition === undefined || action.condition(row)) {\r\n <button mat-menu-item (click)=\"onContextMenuAction(action, row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { BdbFlexDirective } from '../../../common/bdb-flex.directive';\r\nimport { BdbQueryInputComponent } from '../query-input/bdb-query-input.component';\r\nimport { BdbPaginatorComponent } from '../paginator/bdb-paginator.component';\r\nimport { BdbTableComponent } from '../table/bdb-table.component';\r\nimport { BdbEntity } from '../../../domain/common/entities/bdb-entity';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { BdbColumn } from '../table/bdb-column';\r\nimport { BdbContextAction } from '../table/bdb-context-action';\r\nimport { BdbM3Palette } from '../../../common/bdb-palette';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbCellDirective } from '../table/bdb-cell.directive';\r\n\r\n@Component({\r\n selector: 'bdb-full-table',\r\n imports: [\r\n CommonModule,\r\n BdbFlexDirective,\r\n MatToolbarModule,\r\n BdbQueryInputComponent,\r\n BdbPaginatorComponent,\r\n BdbTableComponent,\r\n BdbCellDirective,\r\n ],\r\n templateUrl: './bdb-full-table.component.html',\r\n styleUrl: './bdb-full-table.component.scss',\r\n})\r\nexport class BdbFullTableComponent<TEntityRead extends BdbEntity> {\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n @Input() columns: BdbColumn<TEntityRead, unknown>[] = [];\r\n @Input() displayedColumns: string[] = [];\r\n @Input() autoLoad?: boolean = undefined;\r\n\r\n @Input() selection?: SelectionModel<TEntityRead>;\r\n @Input() contextActions: BdbContextAction<TEntityRead>[] = [];\r\n @Input() rowColor?: (x: TEntityRead) => BdbM3Palette;\r\n @Input() showToolbar: boolean = true;\r\n\r\n @Output() rowClick = new EventEmitter<TEntityRead>();\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<TEntityRead>; row: TEntityRead }>();\r\n\r\n @ContentChildren(BdbCellDirective, { descendants: true }) cellTemplates: QueryList<BdbCellDirective> | undefined;\r\n}\r\n","@if (showToolbar) {\r\n <mat-toolbar>\r\n <div bdbFlex=\"row 8px start center\">\r\n <ng-content select=\"toolbar-item\"></ng-content>\r\n </div>\r\n <bdb-query-input [dataSource]=\"dataSource\"></bdb-query-input>\r\n </mat-toolbar>\r\n}\r\n<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [autoLoad]=\"autoLoad\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [rowColor]=\"rowColor\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"contextAction.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\">\r\n @for (cellTemplate of cellTemplates; track cellTemplate.bdbCellDef) {\r\n <ng-template bdbCellDef=\"{{ cellTemplate.bdbCellDef }}\" let-element>\r\n <ng-container *ngTemplateOutlet=\"cellTemplate.templateRef; context: { $implicit: element }\"></ng-container>\r\n </ng-template>\r\n }\r\n</bdb-table>\r\n<bdb-paginator [dataSource]=\"dataSource\"></bdb-paginator>\r\n","import { Component, inject, Input, OnInit } from '@angular/core';\r\nimport { ControlContainer, FormControl } from '@angular/forms';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\n\r\n@Component({ template: '', standalone: true })\r\nexport abstract class BdbSearchWrapperBaseComponent<TEntityRead extends BdbEntityRead> implements OnInit {\r\n @Input() controlName?: string;\r\n @Input() control?: FormControl<TEntityRead | null>;\r\n\r\n formControl!: FormControl<TEntityRead | null>;\r\n\r\n controlContainer = inject(ControlContainer);\r\n\r\n ngOnInit(): void {\r\n if (this.control) {\r\n this.formControl = this.control;\r\n return;\r\n }\r\n\r\n if (!this.controlName) {\r\n throw 'No FormControl or FormControlName provided';\r\n }\r\n\r\n const ctrl = this.controlContainer.control?.get(this.controlName);\r\n\r\n if (!ctrl) {\r\n throw `FormControl '${this.controlName}' not found`;\r\n }\r\n\r\n this.formControl = ctrl as FormControl<TEntityRead | null>;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n// Opzettelijk geen bdb prefix, aangezien dit een pure util is\r\n// Daartoe in eerste instantie ook niet beschikbaar gesteld in public api\r\n// Als hier wel reden toe is: heroverwegen bdb prefix toe te voegen\r\n\r\n@Pipe({\r\n name: 'function',\r\n standalone: true,\r\n})\r\nexport class FunctionPipe<T> implements PipeTransform {\r\n transform(value: T, fn: (x: T) => string): string {\r\n return fn(value);\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { AbstractControl, ControlContainer } from '@angular/forms';\r\n\r\nconst errorMessageMap = new Map([\r\n ['required', 'Verplicht'],\r\n ['email', 'Ongeldig e-mail'],\r\n ['phone', 'Ongeldig tel.nr'],\r\n ['requiredTrue', 'Verplicht'],\r\n ['pattern', 'Ongeldig'],\r\n]);\r\n\r\nfunction getErrorMessage(validationErrorKey: string, validationErrorValue: { [key: string]: unknown }): string {\r\n switch (validationErrorKey) {\r\n case 'minlength':\r\n return `Minimum lengte: ${validationErrorValue['requiredLength']}`;\r\n case 'maxlength':\r\n return `Maximum lengte: ${validationErrorValue['requiredLength']}`;\r\n case 'max':\r\n return `Max: ${validationErrorValue['max']}`;\r\n case 'min':\r\n return `Min: ${validationErrorValue['min']}`;\r\n case 'custom':\r\n return `${validationErrorValue}`;\r\n default:\r\n return errorMessageMap.get(validationErrorKey) ?? validationErrorKey;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[bdbFormError]',\r\n standalone: true,\r\n})\r\nexport class BdbFormErrorDirective implements OnInit {\r\n @Input() bdbFormError!: string | AbstractControl;\r\n\r\n control!: AbstractControl;\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2,\r\n private controlContainer: ControlContainer\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.bdbFormError) {\r\n throw new Error('No (name for) formcontrol provided');\r\n }\r\n\r\n if (typeof this.bdbFormError === 'string') {\r\n const ctrl = this.controlContainer.control?.get(this.bdbFormError);\r\n\r\n if (!ctrl) {\r\n throw new Error(`No formcontrol found for name '${this.bdbFormError}'`);\r\n }\r\n\r\n this.control = ctrl;\r\n } else {\r\n this.control = this.bdbFormError;\r\n }\r\n\r\n this.setError();\r\n\r\n this.control.statusChanges.subscribe({\r\n next: () => this.setError(),\r\n });\r\n }\r\n\r\n setError(): void {\r\n const validationErrors = this.control.errors;\r\n\r\n if (!validationErrors) {\r\n return;\r\n }\r\n\r\n const validationErrorKey = Object.keys(validationErrors)[0];\r\n\r\n const validationErrorValue = validationErrors[validationErrorKey];\r\n\r\n const errorMessage = getErrorMessage(validationErrorKey, validationErrorValue);\r\n\r\n this.renderer.setProperty(this.element.nativeElement, 'innerText', errorMessage);\r\n }\r\n}\r\n","import { CollectionViewer, ListRange } from '@angular/cdk/collections';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\r\nimport {\r\n MatAutocompleteModule,\r\n MatAutocompleteSelectedEvent,\r\n MatAutocompleteTrigger,\r\n} from '@angular/material/autocomplete';\r\nimport { MatButtonModule, MatIconButton } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, filter, Observable, Subject, takeUntil } from 'rxjs';\r\nimport { FunctionPipe } from '../../../common/function.pipe';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\nimport { BdbDataSource } from '../bdb-data-source';\r\nimport { BdbFormErrorDirective } from '../../../common/bdb-form-error.directive';\r\n\r\n@Component({\r\n selector: 'bdb-search',\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n MatAutocompleteModule,\r\n BdbFormErrorDirective,\r\n FunctionPipe,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './bdb-search.component.html',\r\n styleUrls: ['./bdb-search.component.scss'],\r\n})\r\nexport class BdbSearchComponent<TEntityRead extends BdbEntityRead>\r\n implements CollectionViewer, OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\r\n{\r\n @Input() dataSource!: BdbDataSource<TEntityRead>;\r\n @Input() displayFn!: (_: TEntityRead | string) => string;\r\n @Input() label = '';\r\n @Input() hint = '';\r\n @Input() placeholder = '';\r\n\r\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\r\n @ViewChild('clearButton') clearButton?: MatIconButton;\r\n @ViewChild(MatAutocompleteTrigger) autoCompleteTrigger?: MatAutocompleteTrigger;\r\n\r\n private readonly _onDestroy = new Subject<void>();\r\n\r\n viewChange = new BehaviorSubject<ListRange>({\r\n start: 0,\r\n end: Number.MAX_VALUE,\r\n });\r\n\r\n searchOptions?: Observable<TEntityRead[] | readonly TEntityRead[]>;\r\n\r\n searchCtrl = new FormControl<string | TEntityRead>('', {\r\n nonNullable: true,\r\n validators: [(): ValidationErrors | null => this.ngControl.errors],\r\n });\r\n\r\n inputTabIndex = 0;\r\n hasValue = false;\r\n isDisabled = false;\r\n\r\n onChange?: (_: TEntityRead | null) => void;\r\n onTouch?: () => void;\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n ngControl.valueAccessor = this;\r\n\r\n this.searchCtrl.valueChanges\r\n .pipe(\r\n takeUntil(this._onDestroy),\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n filter(x => typeof x === 'string')\r\n )\r\n .subscribe({\r\n next: x => {\r\n this.dataSource.request.query = x as string;\r\n this.dataSource.load();\r\n },\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.searchOptions = this.dataSource.connect();\r\n\r\n this.ngControl.valueChanges?.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: () => this.searchCtrl.updateValueAndValidity(),\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.autoCompleteTrigger?.panelClosingActions.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: x => {\r\n if (x === null) {\r\n this.searchCtrl.setValue('');\r\n this.searchInput?.nativeElement.blur();\r\n }\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n\r\n writeValue(obj: TEntityRead | null): void {\r\n if (!obj) {\r\n this.hasValue = false;\r\n this.inputTabIndex = 0;\r\n this.searchCtrl.setValue('');\r\n return;\r\n }\r\n\r\n this.searchCtrl.setValue(obj);\r\n this.inputTabIndex = -1;\r\n this.hasValue = true;\r\n }\r\n\r\n registerOnChange(fn: (_: TEntityRead | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouch = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.searchCtrl.disable() : this.searchCtrl.enable();\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n onFocus(): void {\r\n if (this.hasValue) {\r\n this.searchInput?.nativeElement.blur();\r\n this.autoCompleteTrigger?.closePanel();\r\n this.clearButton?.focus();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (!this.onTouch) {\r\n throw 'No onTouch callback registered';\r\n }\r\n\r\n this.onTouch();\r\n }\r\n\r\n selectOption(event: MatAutocompleteSelectedEvent): void {\r\n if (!this.onChange) {\r\n throw 'No onChange callback registered';\r\n }\r\n\r\n this.inputTabIndex = -1;\r\n this.hasValue = true;\r\n this.searchInput?.nativeElement.blur();\r\n\r\n const value = event.option.value as TEntityRead;\r\n this.onChange(value);\r\n }\r\n\r\n clear(): void {\r\n if (!this.onChange) {\r\n throw 'No onChange callback registered';\r\n }\r\n\r\n this.hasValue = false;\r\n this.inputTabIndex = 0;\r\n this.searchCtrl.setValue('');\r\n this.searchInput?.nativeElement.focus();\r\n\r\n this.onChange(null);\r\n }\r\n}\r\n","<div class=\"search-container\">\r\n @if (hasValue) {\r\n <div class=\"search-disabled-cover\">\r\n <button #clearButton mat-icon-button type=\"button\" [disabled]=\"isDisabled\" (click)=\"clear()\" color=\"danger\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <mat-form-field class=\"search-form-field\">\r\n <mat-label>{{ label }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n [formControl]=\"searchCtrl\"\r\n [matAutocomplete]=\"autoComplete\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n #searchInput\r\n [tabIndex]=\"inputTabIndex\"\r\n [placeholder]=\"placeholder\" />\r\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"selectOption($event)\" [displayWith]=\"displayFn\">\r\n @for (option of searchOptions | async; track option) {\r\n <mat-option [value]=\"option\">\r\n {{ option | function: displayFn }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n\r\n @if (!hasValue) {\r\n <mat-icon matSuffix [ngClass]=\"{ 'search-icon-disabled': isDisabled }\">search</mat-icon>\r\n }\r\n <mat-error [bdbFormError]=\"searchCtrl\"> </mat-error>\r\n <mat-hint>{{ hint }}</mat-hint>\r\n </mat-form-field>\r\n</div>\r\n","import {\r\n BdbBooleanColumnOptions,\r\n BdbColumnOptions,\r\n BdbCurrencyColumnOptions,\r\n BdbDateColumnOptions,\r\n BdbEnumColumnOptions,\r\n BdbNumberColumnOptions,\r\n BdbPercentageColumnOptions,\r\n BdbStringColumnOptions,\r\n} from './bdb-column-options';\r\nimport { BdbColumn } from './bdb-column';\r\nimport { BdbColumnType } from './bdb-column-type';\r\nimport { Injectable } from '@angular/core';\r\nimport { BdbEntityRead } from '../../../domain/common/entities/bdb-entity-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BdbColumnBuilder<TRead extends BdbEntityRead> {\r\n build(...columns: BdbColumn<TRead, unknown>[]): BdbColumn<TRead, unknown>[] {\r\n return columns;\r\n }\r\n\r\n string(\r\n field: (x: TRead) => string | undefined,\r\n title: string,\r\n options: BdbStringColumnOptions = {}\r\n ): BdbColumn<TRead, string | undefined> {\r\n const ret = this._buildCommonOptions(BdbColumnType.String, field, title, options);\r\n ret.pipe = options.pipe;\r\n return ret;\r\n }\r\n\r\n number(\r\n field: (x: TRead) => number | undefined,\r\n title: string,\r\n options: BdbNumberColumnOptions = {}\r\n ): BdbColumn<TRead, number | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Number, field, title, options);\r\n ret.pipe = options.pipe;\r\n ret.format = options.format;\r\n return ret;\r\n }\r\n\r\n percentage(\r\n field: (x: TRead) => number | undefined,\r\n title: string,\r\n options: BdbPercentageColumnOptions = {}\r\n ): BdbColumn<TRead, number | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Percentage, field, title, options);\r\n ret.digitsInfo = options.digitsInfo;\r\n ret.locale = options.locale;\r\n return ret;\r\n }\r\n\r\n currency(\r\n field: (x: TRead) => number | undefined,\r\n title: string,\r\n options: BdbCurrencyColumnOptions = {}\r\n ): BdbColumn<TRead, number | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Currency, field, title, options);\r\n ret.currencyCode = options.currencyCode;\r\n ret.display = options.display;\r\n ret.digitsInfo = options.digitsInfo;\r\n ret.locale = options.locale;\r\n return ret;\r\n }\r\n\r\n date(\r\n field: (x: TRead) => Date | undefined,\r\n title: string,\r\n options: BdbDateColumnOptions = {}\r\n ): BdbColumn<TRead, Date | undefined> {\r\n options.textAlign = options.textAlign ?? 'end';\r\n const ret = this._buildCommonOptions(BdbColumnType.Date, field, title, options);\r\n ret.format = options.format ?? 'short';\r\n if (ret.width === undefined) {\r\n switch (ret.format) {\r\n case 'short':\r\n ret.width = 144;\r\n break;\r\n case 'shortDate':\r\n ret.width = 96;\r\n break;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n boolean(\r\n field: (x: TRead) => boolean | undefined,\r\n title: string,\r\n options: BdbBooleanColumnOptions = {}\r\n ): BdbColumn<TRead, boolean | undefined> {\r\n const ret = this._buildCommonOptions(BdbColumnType.Boolean, field, title, options);\r\n ret.icon = options.icon ?? true;\r\n return ret;\r\n }\r\n\r\n enum<TEnum>(\r\n field: (x: TRead) => TEnum | undefined,\r\n title: string,\r\n options: BdbEnumColumnOptions = {}\r\n ): BdbColumn<TRead, TEnum | undefined> {\r\n const ret = this._buildCommonOptions(BdbColumnType.Enum, field, title, options);\r\n ret.pipe = options.pipe;\r\n return ret;\r\n }\r\n\r\n custom(id: string, title: string, options: BdbColumnOptions = {}): BdbColumn<TRead, unknown> {\r\n return {\r\n type: BdbColumnType.Custom,\r\n id: id,\r\n title: title,\r\n field: () => undefined,\r\n sortDisabled: options.sortDisabled ?? true,\r\n width: options.width,\r\n textAlign: options.textAlign,\r\n };\r\n }\r\n\r\n private _buildCommonOptions<TColumnType>(\r\n type: BdbColumnType,\r\n field: (x: TRead) => TColumnType,\r\n title: string,\r\n options: BdbColumnOptions | undefined = undefined\r\n ): BdbColumn<TRead, TColumnType> {\r\n const id =\r\n options?.id ??\r\n field\r\n .toString()\r\n .split('.')\r\n .slice(1)\r\n .map(x => x.replace(/(\\?|!)$/, ''))\r\n .join('.');\r\n return {\r\n type: type,\r\n id: id,\r\n title: title,\r\n field: field,\r\n sortDisabled: options?.sortDisabled,\r\n width: options?.width,\r\n textAlign: options?.textAlign,\r\n };\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbTableComponent } from '../../common/table/bdb-table.component';\r\nimport { ExceptionLogRead } from '../../../domain/entities/exception-log/exception-log-read';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\n\r\n@Component({\r\n selector: 'bdb-exception-log-table[dataSource]',\r\n imports: [CommonModule, BdbTableComponent],\r\n templateUrl: './exception-log-table.component.html',\r\n styleUrls: ['./exception-log-table.component.scss'],\r\n})\r\nexport class ExceptionLogTableComponent {\r\n @Input() dataSource!: BdbDataSource<ExceptionLogRead>;\r\n @Input() displayedColumns: string[] = [];\r\n @Output() rowClick = new EventEmitter<ExceptionLogRead>();\r\n\r\n columns: BdbColumn<ExceptionLogRead, unknown>[] = this.cb.build(this.cb.string(x => x.message, 'Message'));\r\n\r\n constructor(\r\n private cb: BdbColumnBuilder<ExceptionLogRead>,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute\r\n ) {}\r\n\r\n @Input() contextActions: BdbContextAction<ExceptionLogRead>[] = [\r\n {\r\n icon: 'search',\r\n color: 'primary',\r\n label: 'Details',\r\n identifier: 'details',\r\n },\r\n ];\r\n\r\n onRowClick(row: ExceptionLogRead): void {\r\n this.rowClick.emit(row);\r\n }\r\n\r\n onContextAction(event: { action: BdbContextAction<ExceptionLogRead>; row: ExceptionLogRead }): void {\r\n switch (event.action.identifier) {\r\n case 'details':\r\n this.router.navigate([event.row.id], { relativeTo: this.activatedRoute });\r\n break;\r\n }\r\n }\r\n}\r\n","<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n transform(bytes: number | undefined): string | undefined {\r\n if (bytes === undefined) {\r\n return undefined;\r\n }\r\n if (isNaN(bytes) || bytes === 0) return '0 Bytes';\r\n\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\r\n return `${parseFloat((bytes / Math.pow(1024, i)).toFixed(1))} ${sizes[i]}`;\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { YouTubePlayerModule } from '@angular/youtube-player';\r\n\r\n@Component({\r\n selector: 'bdb-youtube-player',\r\n imports: [YouTubePlayerModule],\r\n templateUrl: './youtube-player.component.html',\r\n styleUrl: './youtube-player.component.scss',\r\n})\r\nexport class BdbYoutubePlayerComponent implements AfterViewInit {\r\n //https://stackoverflow.com/a/72043964\r\n @ViewChild('youTubePlayer') youTubePlayer!: ElementRef<HTMLDivElement>;\r\n\r\n videoHeight: number | undefined = 100;\r\n videoWidth: number | undefined = 100;\r\n\r\n @Input() videoId?: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.onResize();\r\n window.addEventListener('resize', this.onResize.bind(this));\r\n }\r\n\r\n onResize(): void {\r\n // you can remove this line if you want to have wider video player than 1200px\r\n this.videoWidth = Math.min(this.youTubePlayer.nativeElement.clientWidth, 1200);\r\n // so you keep the ratio\r\n this.videoHeight = this.videoWidth * 0.6;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","<div #youTubePlayer class=\"bdb-youtube-player\">\r\n <youtube-player [width]=\"videoWidth\" [height]=\"videoHeight\" [videoId]=\"videoId\"></youtube-player>\r\n</div>\r\n","export enum MediaType {\r\n Image = 'Image',\r\n Video = 'Video',\r\n File = 'File',\r\n}\r\n\r\nexport const MediaTypeMap = new Map<MediaType, string>([\r\n [MediaType.Image, 'Afbeelding'],\r\n [MediaType.Video, 'Video'],\r\n [MediaType.File, 'Bestand'],\r\n]);\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MediaType } from '../../domain/enums/media-type';\r\n\r\n@Pipe({\r\n name: 'mediaTypeIcon',\r\n})\r\nexport class MediaTypeIconPipe implements PipeTransform {\r\n transform(value: MediaType | undefined): string | undefined {\r\n switch (value) {\r\n case MediaType.Image:\r\n return 'image';\r\n case MediaType.Video:\r\n return 'video_file';\r\n case MediaType.File:\r\n return 'docs';\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, HostBinding, inject, Input, OnChanges } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BDB_OPTIONS } from '../../../bdb-options';\r\nimport { FileSizePipe } from '../../../common/file-size.pipe';\r\nimport { BdbYoutubePlayerComponent } from '../../../common/youtube-player/youtube-player.component';\r\nimport { Media } from '../../../domain/entities/media/media';\r\nimport { MediaType } from '../../../domain/enums/media-type';\r\nimport { MediaTypeIconPipe } from '../media-type-icon.pipe';\r\n\r\n@Component({\r\n selector: 'bdb-media-display',\r\n imports: [\r\n MatButtonModule,\r\n MatIconModule,\r\n NgTemplateOutlet,\r\n BdbYoutubePlayerComponent,\r\n MediaTypeIconPipe,\r\n FileSizePipe,\r\n ],\r\n templateUrl: './media-display.component.html',\r\n styleUrls: ['./media-display.component.scss'],\r\n})\r\nexport class BdbMediaDisplayComponent implements OnChanges {\r\n @Input() media?: Media;\r\n @Input() mode: 'preview' | 'live' | 'details' = 'preview';\r\n @Input() overlayBehavior: 'hover' | 'always' = 'always';\r\n @Input() width?: number;\r\n @Input() height?: number;\r\n @Input() alt?: string;\r\n bdbOptions = inject(BDB_OPTIONS);\r\n\r\n @HostBinding('class') class = 'bdb-media-display';\r\n\r\n src?: string;\r\n\r\n mediaType = MediaType;\r\n hasError = false;\r\n noMediaUrl?: string;\r\n\r\n ngOnChanges(): void {\r\n this.src = this.getSource(this.media);\r\n this.hasError = false;\r\n this.noMediaUrl =\r\n this.bdbOptions.backendUrl + '/na.png' + `?width=${this.width ?? '256'}&height=${this.height ?? '256'}`;\r\n }\r\n\r\n getSource(media?: Media, download = false): string | undefined {\r\n if (!media) {\r\n return undefined;\r\n }\r\n\r\n const params = new URLSearchParams();\r\n if (this.width) {\r\n params.append('width', `${this.width}`);\r\n }\r\n if (this.height) {\r\n params.append('height', `${this.height}`);\r\n }\r\n\r\n switch (media.type) {\r\n case MediaType.File:\r\n if (media.fileName && this.getFileExtension(media.fileName) === 'pdf') {\r\n if (download) {\r\n return `${this.bdbOptions.mediaUrl}/${media.fileName}`;\r\n }\r\n const previewFileName = media.preview?.fileName;\r\n\r\n if (!previewFileName) {\r\n return undefined;\r\n }\r\n\r\n if (this.mode === 'live') {\r\n params.set('width', '512');\r\n params.delete('height');\r\n }\r\n\r\n return `${this.bdbOptions.mediaUrl}/${previewFileName}?${params.toString()}`;\r\n } else {\r\n return undefined;\r\n }\r\n\r\n case MediaType.Image:\r\n return `${this.bdbOptions.mediaUrl}/${media.fileName}?${params.toString()}`;\r\n case MediaType.Video:\r\n return `https://img.youtube.com/vi/${media.reference}/maxresdefault.jpg`;\r\n }\r\n }\r\n\r\n getDownloadUrl(): string | undefined {\r\n if (!this.media) {\r\n return undefined;\r\n }\r\n\r\n return `${this.bdbOptions.mediaUrl}/${this.media.fileName}`;\r\n }\r\n\r\n public getFileExtension(fileName: string): string | undefined {\r\n const parts = fileName.split('.');\r\n if (parts.length === 1 || parts.some(x => x === '')) {\r\n return undefined;\r\n }\r\n return parts.pop()?.toLocaleLowerCase();\r\n }\r\n}\r\n","@if (media) {\r\n @if (hasError) {\r\n <ng-container *ngTemplateOutlet=\"noMedia\"></ng-container>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"overlay\"></ng-container>\r\n @switch (media.type) {\r\n @case (mediaType.Video) {\r\n <ng-container *ngTemplateOutlet=\"video\"></ng-container>\r\n }\r\n @case (mediaType.File) {\r\n <ng-container *ngTemplateOutlet=\"file\"></ng-container>\r\n }\r\n @default {\r\n <img [src]=\"src\" [alt]=\"alt\" (error)=\"hasError = true\" />\r\n }\r\n }\r\n <ng-container *ngTemplateOutlet=\"underlay\"></ng-container>\r\n }\r\n}\r\n\r\n<ng-template #overlay>\r\n @if (media && mode === 'details') {\r\n <div class=\"overlay\" [class.on-hover]=\"overlayBehavior === 'hover'\">\r\n <div class=\"media-details\">\r\n <mat-icon>{{ media.type | mediaTypeIcon }}</mat-icon>\r\n <div>\r\n @switch (media.type) {\r\n @case (mediaType.Video) {\r\n {{ media.reference }}\r\n }\r\n @case (mediaType.File) {\r\n {{ media.originalFileName }}, {{ media.fileSize | fileSize }}\r\n }\r\n @case (mediaType.Image) {\r\n @if (media.fileName?.endsWith('.svg')) {\r\n SVG,\r\n } @else {\r\n {{ media.width }} x {{ media.height }} px,\r\n }\r\n {{ media.fileSize | fileSize }}\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #underlay>\r\n @if (media && mode === 'details') {\r\n <div class=\"underlay\"></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #video>\r\n @if (mode === 'live') {\r\n <bdb-youtube-player [videoId]=\"media?.reference\"></bdb-youtube-player>\r\n } @else {\r\n <div bdbFlex=\"col 0px center center\">\r\n <mat-icon>play_circle_outline</mat-icon>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noPreviewAvailable\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #file>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noPreviewAvailable\"></ng-container>\r\n }\r\n @if (mode === 'live') {\r\n <div class=\"file-overlay\">\r\n <a mat-fab aria-label=\"Download\" [href]=\"getSource(media, true)\" target=\"_blank\" download class=\"primary\">\r\n <mat-icon>save_alt</mat-icon>\r\n </a>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noPreviewAvailable>\r\n <div class=\"no-preview-available\">\r\n <em>Geen preview beschikbaar</em>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #noMedia>\r\n <svg version=\"1.1\" viewBox=\"0 0 180 180\" xmlns:svg=\"http://www.w3.org/2000/svg\">\r\n <g transform=\"translate(-2,-6)\">\r\n <rect style=\"fill: #9f9f9f\" width=\"90\" height=\"90\" x=\"-18\" y=\"85\" ry=\"8.4\" transform=\"rotate(-16.3)\" />\r\n <g transform=\"rotate(16.3,229,-1658.3)\">\r\n <rect\r\n ry=\"4.6\"\r\n y=\"1.6\"\r\n x=\"547\"\r\n height=\"110\"\r\n width=\"110\"\r\n style=\"fill: #a2a2a2; stroke: #ffffff; stroke-width: 5.4\" />\r\n <g\r\n style=\"stroke: #ffffff; stroke-width: 13; stroke-miterlimit: 4\"\r\n transform=\"matrix(0.17265471,0,0,0.17265471,512.49324,-6.3296456)\">\r\n <rect style=\"fill: #cccccc\" width=\"491\" height=\"449\" x=\"270\" y=\"107\" />\r\n <rect style=\"fill: #ffffff\" id=\"rect3342\" width=\"491\" height=\"209\" x=\"270\" y=\"107\" />\r\n <path\r\n style=\"fill: #cccccc\"\r\n d=\"m 300,317.36255 38.46147,-53.53818 60.53097,-45.16084 15.88277,18.57394 13.61285,-38.68356 8.20133,-2.98188 13.3106,-28.2093 180,179.99979\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; paint-order: stroke\"\r\n d=\"m 180,60 c 4.09311,16.474688 7.71219,33.067277 10.85156,49.75 2.38256,12.66097 4.48857,25.37408 6.31641,38.12695 l -22.06445,-7.16015 -46.11133,-29.41602 5.32422,46.42578 -1.61524,24.78711 10.05274,30.37695 73.18554,-11.75585 L 300,180 252.19922,102.56641 242.5,117.5 215.375,95.375 Z\"\r\n transform=\"translate(270,107.36227)\" />\r\n <path\r\n d=\"m 419.99999,347.36252 81.89918,-74.42959 18.50574,-9.68009 23.6512,-44.18894 25.94388,-21.70121 179.99999,179.99979\"\r\n style=\"fill: #cccccc; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\"\r\n d=\"m 569.99999,197.36269 35.9388,80.91289 v 30.11038 30.11038 l 22.45864,19.46652 c 6.52453,-6.45031 14.14893,-11.78526 22.44431,-15.70477 14.8245,-7.00447 31.33823,-9.35959 47.17057,-13.6217 6.42776,-1.73037 12.90672,-3.85419 18.21343,-7.87277 1.35174,-1.02362 2.61592,-2.16281 3.77424,-3.40107 h -30 l -40.52149,-40.55006 -29.85645,-48.91972 -10.25307,8.83886 z\" />\r\n <path\r\n style=\"fill: #ffffff\"\r\n d=\"m 419.99999,557.36227 c -0.41699,-9.60089 -8.81759,-17.60878 17.1252,-30.66806 31.8318,-16.02389 125.895,-35.88836 152.1537,-59.98434 19.42709,-17.82687 -70.4154,-37.66945 -55.0191,-59.07323 6.981,-9.70528 59.037,-19.96947 82.1463,-30.27386 21.90569,-9.76799 15.14129,-19.80328 31.4046,-29.97507 15.7092,-9.82558 68.3499,-19.77358 72.18929,-30.02516 -10.41359,10.52188 -68.83379,20.40327 -89.99999,30.00026 -22.3377,10.128 -21.4689,19.93018 -49.4313,29.48367 -30.1245,10.29239 -89.142,20.55268 -102.7077,30.51626 -28.4133,20.86858 46.863,42.59995 16.2024,59.99993 C 452.54309,490.92554 344.7219,510.65712 300,527.3626 c -30.9039,11.54369 -28.4079,17.74799 -30,29.99967\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MediaType, MediaTypeMap } from '../../domain/enums/media-type';\r\n\r\n@Pipe({\r\n name: 'mediaType',\r\n})\r\nexport class MediaTypePipe implements PipeTransform {\r\n transform(value: MediaType | undefined): string | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return MediaTypeMap.get(value) ?? '???';\r\n }\r\n}\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { Media } from '../../../domain/entities/media/media';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\nimport { MediaTypePipe } from '../media-type.pipe';\r\nimport { FileSizePipe } from '../../../common/file-size.pipe';\r\nimport { BdbFullTableComponent } from '../../common/full-table/bdb-full-table.component';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'bdb-media-full-table',\r\n imports: [BdbFullTableComponent, MatButtonModule],\r\n templateUrl: './media-full-table.component.html',\r\n styleUrl: './media-full-table.component.scss',\r\n})\r\nexport class MediaFullTableComponent {\r\n @Input() dataSource!: BdbDataSource<Media>;\r\n @Input() displayedColumns: string[] = [];\r\n @Input() selection?: SelectionModel<Media>;\r\n @Input() showToolbar = true;\r\n @Input() contextActions: BdbContextAction<Media>[] = [];\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<Media>; row: Media }>();\r\n @Output() rowClick = new EventEmitter<Media>();\r\n\r\n cb = inject(BdbColumnBuilder<Media>);\r\n\r\n columns: BdbColumn<Media, unknown>[] = this.cb.build(\r\n this.cb.enum(x => x.type, 'Type', { pipe: MediaTypePipe, width: 120 }),\r\n this.cb.string(x => x.fileName, 'Bestandsnaam'),\r\n this.cb.string(x => x.reference, 'Referentie', { width: 200 }),\r\n this.cb.number(x => x.fileSize, 'Bestandsgrootte', { pipe: FileSizePipe, width: 200 }),\r\n this.cb.number(x => x.height, 'Hoogte', { width: 200 }),\r\n this.cb.number(x => x.width, 'Breedte', { width: 200 })\r\n );\r\n}\r\n","<bdb-full-table\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [showToolbar]=\"showToolbar\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n <ng-content select=\"toolbar-item\" ngProjectAs=\"toolbar-item\"></ng-content>\r\n <ng-content></ng-content>\r\n</bdb-full-table>\r\n","import { Observable } from 'rxjs';\r\nimport { BdbRequest } from '../bdb-request';\r\nimport { BdbResponse } from '../bdb-response';\r\nimport { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbService } from './bdb-service';\r\n\r\nexport abstract class BdbServiceR<TEntity extends BdbEntity, TEntityRead extends BdbEntityRead> extends BdbService {\r\n read(request: BdbRequest): Observable<BdbResponse<TEntityRead>> {\r\n return this.httpClient.post<BdbResponse<TEntityRead>>(`${this.baseUrl}/read`, request);\r\n }\r\n\r\n get(id: number): Observable<TEntity> {\r\n return this.httpClient.get<TEntity>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbServiceR } from './bdb-service-r';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceRD<TEntity extends BdbEntity, TEntityRead extends BdbEntityRead> extends BdbServiceR<\r\n TEntity,\r\n TEntityRead\r\n> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BdbServiceRD } from '../../common/services/bdb-service-rd';\r\nimport { Media } from './media';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MediaService extends BdbServiceRD<Media, Media> {\r\n constructor() {\r\n super('media');\r\n }\r\n\r\n upload(file: File): Observable<Media> {\r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n return this.httpClient.post<Media>(`${this.baseUrl}/upload`, formData);\r\n }\r\n\r\n fromUrl(url: string): Observable<Media> {\r\n return this.httpClient.post<Media>(`${this.baseUrl}/from-url`, {\r\n url: url,\r\n });\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Directive, EventEmitter, HostBinding, HostListener, inject, Output } from '@angular/core';\r\nimport { Media } from '../../../domain/entities/media/media';\r\nimport { MediaService } from '../../../domain/entities/media/media.service';\r\n\r\nexport interface ImageFile {\r\n file: File;\r\n url: string;\r\n}\r\n\r\nenum DropClass {\r\n Default = 'drop-box', // Default color\r\n Over = 'drop-box hover', // Color to be used once the file is \"over\" the drop box\r\n}\r\n\r\n@Directive({\r\n selector: '[bdbMediaDrop]',\r\n standalone: true,\r\n})\r\nexport class MediaDropDirective {\r\n @Output() dropStart = new EventEmitter<unknown>();\r\n @Output() dropComplete = new EventEmitter<Media>();\r\n @Output() dropError = new EventEmitter<HttpErrorResponse>();\r\n private service = inject(MediaService);\r\n\r\n constructor() {}\r\n\r\n @HostBinding('class') hostClass = DropClass.Default;\r\n\r\n @HostListener('dragover', ['$event']) public dragOver(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer) {\r\n if (event.dataTransfer.types.includes('Files') || event.dataTransfer.types.includes('text/uri-list')) {\r\n // this is at least a file / URL\r\n this.hostClass = DropClass.Over;\r\n event.dataTransfer.dropEffect = 'copy';\r\n } else {\r\n // reject\r\n event.dataTransfer.dropEffect = 'none';\r\n }\r\n }\r\n }\r\n\r\n @HostListener('dragleave', ['$event']) public dragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.hostClass = DropClass.Default;\r\n }\r\n\r\n @HostListener('drop', ['$event']) public drop(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer) {\r\n this.hostClass = DropClass.Default;\r\n\r\n if (event.dataTransfer.types.includes('Files')) {\r\n this.dropStart.emit(event);\r\n for (let i = 0; i < event.dataTransfer.files.length; ++i) {\r\n const file = event.dataTransfer.files.item(i);\r\n if (file != null) {\r\n this.service.upload(file).subscribe({\r\n next: (x: Media) => {\r\n this.dropComplete.emit(x);\r\n },\r\n error: (x: HttpErrorResponse) => {\r\n this.dropError.emit(x);\r\n },\r\n });\r\n }\r\n }\r\n } else if (event.dataTransfer.types.includes('text/uri-list')) {\r\n this.dropStart.emit(event);\r\n\r\n let url = event.dataTransfer.getData('URL');\r\n if (!url) {\r\n url = event.dataTransfer.getData('Text');\r\n }\r\n this.service.fromUrl(url).subscribe({\r\n next: (x: Media) => this.dropComplete.emit(x),\r\n error: (x: HttpErrorResponse) => {\r\n this.dropError.emit(x);\r\n },\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, ElementRef, EventEmitter, HostBinding, inject, Input, Output, ViewChild } from '@angular/core';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressBar } from '@angular/material/progress-bar';\r\nimport { Media } from '../../../domain/entities/media/media';\r\nimport { MediaService } from '../../../domain/entities/media/media.service';\r\nimport { MediaDropDirective } from './media-drop.directive';\r\n\r\n@Component({\r\n selector: 'bdb-media-upload',\r\n imports: [MatIconModule, DragDropModule, MediaDropDirective, NgTemplateOutlet, MatRippleModule, MatProgressBar],\r\n templateUrl: './media-upload.component.html',\r\n styleUrls: ['./media-upload.component.scss'],\r\n})\r\nexport class BdbMediaUploadComponent {\r\n @HostBinding('class') class = 'bdb-media-upload';\r\n @ViewChild('inputFile', { static: false }) nativeInputFile?: ElementRef;\r\n\r\n private mediaService = inject(MediaService);\r\n\r\n @Input() accept: string =\r\n 'image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/webp,image/svg+xml,application/pdf,text/xml';\r\n\r\n @Output() uploadComplete = new EventEmitter<Media>();\r\n @Output() uploadError = new EventEmitter<HttpErrorResponse>();\r\n @Output() uploadStart = new EventEmitter<void>();\r\n\r\n private _pending = false;\r\n get pending() {\r\n return this._pending;\r\n }\r\n\r\n onNativeInputFileSelect(event: Event): void {\r\n var input = event.target as HTMLInputElement;\r\n const file = input?.files?.item(0);\r\n\r\n if (file) {\r\n this._pending = true;\r\n this.mediaService.upload(file).subscribe({\r\n next: (x: Media) => {\r\n this._pending = false;\r\n this.uploadComplete.emit(x);\r\n },\r\n error: (err: HttpErrorResponse) => {\r\n if (err) {\r\n this._pending = false;\r\n this.uploadError.emit(err);\r\n }\r\n },\r\n });\r\n }\r\n }\r\n\r\n selectFile(): void {\r\n if (this.nativeInputFile) {\r\n this.nativeInputFile.nativeElement.click();\r\n }\r\n }\r\n\r\n onDropStart(): void {\r\n this._pending = true;\r\n this.uploadStart.emit();\r\n }\r\n\r\n onDropError($event: HttpErrorResponse): void {\r\n this._pending = false;\r\n this.uploadError.emit($event);\r\n }\r\n\r\n onDropComplete($event: Media): void {\r\n this._pending = false;\r\n this.uploadComplete.emit($event);\r\n }\r\n}\r\n","<div\r\n class=\"drop-box\"\r\n bdbMediaDrop\r\n matRipple\r\n (dropComplete)=\"onDropComplete($event)\"\r\n (dropError)=\"onDropError($event)\"\r\n (dropStart)=\"onDropStart()\"\r\n (click)=\"selectFile()\">\r\n <ng-content>\r\n <ng-container *ngTemplateOutlet=\"uploadIcon\"></ng-container>\r\n </ng-content>\r\n</div>\r\n<input type=\"file\" [accept]=\"accept\" (change)=\"onNativeInputFileSelect($event)\" #inputFile hidden />\r\n\r\n@if (pending) {\r\n <div class=\"overlay\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n}\r\n\r\n<ng-template #uploadIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\">\r\n <path\r\n d=\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\" />\r\n </svg>\r\n</ng-template>\r\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, HostBinding, Input, OnDestroy, Optional, Self } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl, Validators } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Subject } from 'rxjs';\r\nimport { BdbAlertErrorResponseComponent } from '../../../common/alert-error-response/bdb-alert-error-response.component';\r\nimport { Media } from '../../../domain/entities/media/media';\r\nimport { MediaType } from '../../../domain/enums/media-type';\r\nimport { BdbMediaDisplayComponent } from '../media-display/media-display.component';\r\nimport { BdbMediaUploadComponent } from '../media-upload/media-upload.component';\r\n\r\n@Component({\r\n selector: 'bdb-media-input',\r\n imports: [\r\n CommonModule,\r\n BdbMediaUploadComponent,\r\n BdbMediaDisplayComponent,\r\n MatIconModule,\r\n MatButtonModule,\r\n BdbAlertErrorResponseComponent,\r\n ],\r\n templateUrl: './media-input.component.html',\r\n styleUrls: ['./media-input.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: BdbMediaInputComponent }],\r\n})\r\nexport class BdbMediaInputComponent implements ControlValueAccessor, MatFormFieldControl<Media | undefined>, OnDestroy {\r\n @HostBinding('class') class = 'bdb-media-input';\r\n\r\n @Input() clearOnDragOver = false;\r\n\r\n mediaType = MediaType;\r\n //MatFormFieldControl stateChanges\r\n stateChanges = new Subject<void>();\r\n\r\n private _value?: Media | undefined = undefined;\r\n touched: boolean = false;\r\n\r\n set value(value: Media | undefined) {\r\n this._value = value;\r\n this.stateChanges.next();\r\n }\r\n get value(): Media | undefined {\r\n return this._value;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n }\r\n\r\n //MatFormFieldControl id\r\n static nextId = 0;\r\n @HostBinding() id = `bdb-media-input-${BdbMediaInputComponent.nextId++}`;\r\n\r\n //MatFormFieldControl placeholder\r\n // @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(plh) {\r\n this._placeholder = plh;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n error?: HttpErrorResponse;\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n // Replace the provider from above with this.\r\n console.log(this.id);\r\n if (this.ngControl != null) {\r\n // const test = (this.ngControl.control as FormControl<Media | undefined>) != null;\r\n // Setting the value accessor directly (instead of using\r\n // the providers) to avoid running into a circular import.\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n const test = (this.ngControl.control as FormControl<Media | undefined>) != null;\r\n }\r\n\r\n focused = false;\r\n\r\n onFocusIn(event: FocusEvent) {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent) {\r\n if (true) {\r\n // this.touched = true;\r\n this.focused = false;\r\n this.onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n //MatFormFieldControl empty\r\n get empty() {\r\n return !this.value;\r\n }\r\n\r\n //MatFormFieldControl shouldLabelFloat\r\n shouldLabelFloat = true;\r\n\r\n //MatFormFieldControl required\r\n @Input()\r\n get required() {\r\n return this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n // set required(req: boolean) {\r\n // this._required = coerceBooleanProperty(req);\r\n // this.stateChanges.next();\r\n // }\r\n\r\n // private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: BooleanInput) {\r\n this._disabled = coerceBooleanProperty(value);\r\n // this._disabled ? this.parts.disable() : this.parts.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n get errorState(): boolean {\r\n // return true;\r\n const control = this.ngControl?.control;\r\n if (!control) {\r\n return false;\r\n }\r\n\r\n return control.invalid && this.touched;\r\n }\r\n\r\n controlType = 'bdb-media-input';\r\n // autofilled?: boolean | undefined;\r\n @Input('aria-describedby') userAriaDescribedBy?: string;\r\n\r\n // disableAutomaticLabeling?: boolean | undefined;\r\n setDescribedByIds(ids: string[]) {\r\n //const controlElement = this._elementRef.nativeElement.querySelector('.example-tel-input-container')!;\r\n //controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n if ((event.target as Element).tagName.toLowerCase() != 'input') {\r\n //this._elementRef.nativeElement.querySelector('input').focus();\r\n }\r\n }\r\n\r\n isDisabled = false;\r\n onChange: any = () => {};\r\n onTouched: any = () => {};\r\n writeValue(value: Media | undefined): void {\r\n this.value = value;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n onUploadComplete($event: Media) {\r\n this.touched = true;\r\n this.value = $event;\r\n this.onChange($event);\r\n }\r\n\r\n clear() {\r\n this.value = undefined;\r\n this.onChange(undefined);\r\n this.touched = true;\r\n }\r\n}\r\n","<div>\r\n @if (value) {\r\n <button mat-mini-fab class=\"error\" (click)=\"clear()\"><mat-icon>clear</mat-icon></button>\r\n <bdb-media-display\r\n [media]=\"value\"\r\n [mode]=\"'details'\"\r\n detailsOverlay=\"always\"\r\n (dragover)=\"clearOnDragOver ? clear() : null\" />\r\n } @else {\r\n @if (error) {\r\n <bdb-alert-error-response\r\n [value]=\"error\"\r\n [dismissable]=\"true\"\r\n (dismiss)=\"error = undefined\"\r\n (dragover)=\"error = undefined\" />\r\n } @else {\r\n <bdb-media-upload (uploadComplete)=\"onUploadComplete($event)\" (uploadError)=\"error = $event\">\r\n <ng-content>\r\n <ng-container *ngTemplateOutlet=\"uploadIcon\"></ng-container>\r\n </ng-content>\r\n </bdb-media-upload>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #uploadIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\">\r\n <path\r\n d=\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\" />\r\n </svg>\r\n</ng-template>\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbTableComponent } from '../../common/table/bdb-table.component';\r\nimport { MediaTypePipe } from '../media-type.pipe';\r\nimport { FileSizePipe } from '../../../common/file-size.pipe';\r\nimport { Media } from '../../../domain/entities/media/media';\r\n\r\n@Component({\r\n selector: 'bdb-media-table',\r\n imports: [CommonModule, BdbTableComponent],\r\n templateUrl: './media-table.component.html',\r\n styleUrls: ['./media-table.component.scss'],\r\n})\r\nexport class MediaTableComponent {\r\n @Input() dataSource!: BdbDataSource<Media>;\r\n @Input() displayedColumns: string[] = [];\r\n @Input() contextActions: BdbContextAction<Media>[] = [];\r\n @Output() contextAction = new EventEmitter<{ action: BdbContextAction<Media>; row: Media }>();\r\n @Output() rowClick = new EventEmitter<Media>();\r\n\r\n cb = inject(BdbColumnBuilder<Media>);\r\n\r\n columns: BdbColumn<Media, unknown>[] = this.cb.build(\r\n this.cb.enum(x => x.type, 'Type', { pipe: MediaTypePipe, width: 120 }),\r\n this.cb.string(x => x.fileName, 'Bestandsnaam'),\r\n this.cb.string(x => x.reference, 'Referentie', { width: 200 }),\r\n this.cb.number(x => x.fileSize, 'Bestandsgrootte', { pipe: FileSizePipe, width: 200 }),\r\n this.cb.number(x => x.height, 'Hoogte', { width: 200 }),\r\n this.cb.number(x => x.width, 'Breedte', { width: 200 })\r\n );\r\n}\r\n","<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n</bdb-table>\r\n","export enum TaskLogOutcome {\r\n Noop = 'Noop',\r\n Success = 'Success',\r\n Info = 'Info',\r\n Warning = 'Warning',\r\n Error = 'Error',\r\n}\r\n\r\nexport const TaskLogOutcomeMap = new Map<TaskLogOutcome, string>([\r\n [TaskLogOutcome.Noop, 'Noop'],\r\n [TaskLogOutcome.Success, 'Succes'],\r\n [TaskLogOutcome.Info, 'Info'],\r\n [TaskLogOutcome.Warning, 'Waarschuwing'],\r\n [TaskLogOutcome.Error, 'Foutmelding'],\r\n]);\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TaskLogOutcome, TaskLogOutcomeMap } from '../../domain/enums/task-log-outcome';\r\n\r\n@Pipe({\r\n name: 'taskLogOutcome',\r\n standalone: true,\r\n})\r\nexport class TaskLogOutcomePipe implements PipeTransform {\r\n transform(value: TaskLogOutcome | undefined): string | undefined {\r\n if (!value) {\r\n return undefined;\r\n }\r\n return TaskLogOutcomeMap.get(value) ?? '???';\r\n }\r\n}\r\n","export enum TaskLogStatus {\r\n New = 'New',\r\n Running = 'Running',\r\n Waiting = 'Waiting',\r\n Completed = 'Completed',\r\n}\r\n\r\nexport const TaskLogStatusMap = new Map<TaskLogStatus, string>([\r\n [TaskLogStatus.New, 'Nieuw'],\r\n [TaskLogStatus.Running, 'Lopend'],\r\n [TaskLogStatus.Waiting, 'Wachten'],\r\n [TaskLogStatus.Completed, 'Afgerond'],\r\n]);\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TaskLogStatus, TaskLogStatusMap } from '../../domain/enums/task-log-status';\r\n\r\n@Pipe({\r\n name: 'taskLogStatus',\r\n standalone: true,\r\n})\r\nexport class TaskLogStatusPipe implements PipeTransform {\r\n transform(value: TaskLogStatus | undefined): string | undefined {\r\n if (!value) {\r\n return undefined;\r\n }\r\n return TaskLogStatusMap.get(value) ?? '???';\r\n }\r\n}\r\n","export enum TaskLogParameterType {\r\n String = 'String',\r\n Int = 'Int',\r\n Decimal = 'Decimal',\r\n Bool = 'Bool',\r\n}\r\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\r\nimport { TaskLogParameter } from '../../domain/entities/task-log-parameter/task-log-parameter';\r\nimport { TaskLogParameterType } from '../../domain/enums/task-log-parameter-type';\r\n\r\n@Pipe({\r\n name: 'taskLogParameterValue',\r\n standalone: true,\r\n})\r\nexport class TaskLogParameterValuePipe implements PipeTransform {\r\n constructor(@Inject(LOCALE_ID) private locale: string) {}\r\n\r\n transform(value: TaskLogParameter): string {\r\n switch (value.type) {\r\n case TaskLogParameterType.String:\r\n return value.stringValue ?? '';\r\n case TaskLogParameterType.Int:\r\n return !value.intValue\r\n ? ''\r\n : value.intValue.toLocaleString(this.locale, {\r\n minimumIntegerDigits: 1,\r\n });\r\n case TaskLogParameterType.Decimal:\r\n return !value.decimalValue\r\n ? ''\r\n : value.decimalValue.toLocaleString(this.locale, {\r\n minimumIntegerDigits: 1,\r\n maximumFractionDigits: 6,\r\n });\r\n case TaskLogParameterType.Bool:\r\n switch (value.boolValue) {\r\n case true:\r\n return 'Ja';\r\n case false:\r\n return 'Nee';\r\n default:\r\n return '';\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbDataSource } from '../../common/bdb-data-source';\r\nimport { UserRead } from '../../../domain/entities/user/user-read';\r\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\r\nimport { BdbColumnBuilder } from '../../common/table/bdb-column-builder';\r\nimport { BdbContextAction } from '../../common/table/bdb-context-action';\r\nimport { BdbTableComponent } from '../../common/table/bdb-table.component';\r\nimport { BdbColumn } from '../../common/table/bdb-column';\r\nimport { BdbCellDirective } from '../../common/table/bdb-cell.directive';\r\n\r\n@Component({\r\n selector: 'bdb-user-table[dataSource]',\r\n imports: [CommonModule, BdbTableComponent, MatDialogModule, BdbCellDirective],\r\n templateUrl: './user-table.component.html',\r\n styleUrls: ['./user-table.component.scss'],\r\n})\r\nexport class UserTableComponent {\r\n @Input() dataSource!: BdbDataSource<UserRead>;\r\n @Input() displayedColumns: string[] = [];\r\n @Output() rowClick = new EventEmitter<UserRead>();\r\n\r\n columns: BdbColumn<UserRead, unknown>[] = this.cb.build(\r\n this.cb.number(x => x.id, 'ID', { width: 75 }),\r\n this.cb.string(x => x.email, 'E-mail', { width: 250 }),\r\n this.cb.custom('roles', 'Rollen')\r\n );\r\n\r\n constructor(\r\n private matDialog: MatDialog,\r\n private cb: BdbColumnBuilder<UserRead>\r\n ) {}\r\n\r\n @Input() contextActions: BdbContextAction<UserRead>[] = [\r\n {\r\n icon: 'search',\r\n color: 'primary',\r\n label: 'Details',\r\n identifier: 'details',\r\n },\r\n { icon: 'edit', color: 'primary', label: 'Wijzigen', identifier: 'edit' },\r\n {\r\n icon: 'delete',\r\n color: 'warn',\r\n label: 'Verwijderen',\r\n identifier: 'delete',\r\n },\r\n ];\r\n\r\n onRowClick(user: UserRead): void {\r\n this.rowClick.emit(user);\r\n }\r\n\r\n onContextAction(event: { action: BdbContextAction<UserRead>; row: UserRead }): void {\r\n // switch (event.action.identifier) {\r\n // case 'delete':\r\n // this.matDialog\r\n // .open(UserDeleteDialogComponent, { data: event.row })\r\n // .afterClosed()\r\n // .pipe(filter(x => !!x))\r\n // .subscribe(() => this.dataSource.load());\r\n // break;\r\n // case 'edit':\r\n // this.matDialog\r\n // .open(UserUpdateDialogComponent, { data: event.row })\r\n // .afterClosed()\r\n // .pipe(filter(x => !!x))\r\n // .subscribe(() => this.dataSource.load());\r\n // break;\r\n // }\r\n }\r\n}\r\n","<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[bdbFlexChild]',\r\n standalone: true,\r\n})\r\nexport class BdbFlexChildDirective implements OnInit {\r\n @Input() bdbFlexChild = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.element.nativeElement, 'flex', this.bdbFlexChild);\r\n }\r\n}\r\n","export class LinkedList<T> implements Iterable<T> {\r\n head?: Node<T>;\r\n tail?: Node<T>;\r\n length = 0;\r\n\r\n constructor(data: T[] = []) {\r\n data.forEach(x => this.push(x));\r\n }\r\n\r\n [Symbol.iterator](): Iterator<T> {\r\n let node = this.head;\r\n return {\r\n next(): IteratorResult<T> {\r\n if (!node) {\r\n return { done: true, value: undefined };\r\n }\r\n\r\n const value = node.value;\r\n\r\n node = node.next;\r\n\r\n return { done: false, value: value };\r\n },\r\n };\r\n }\r\n\r\n push(value: T): void {\r\n const newNode = new Node(value);\r\n\r\n if (!this.tail) {\r\n this.head = newNode;\r\n } else {\r\n this.tail.next = newNode;\r\n newNode.previous = this.tail;\r\n }\r\n\r\n this.tail = newNode;\r\n this.length++;\r\n }\r\n\r\n pop(): T | undefined {\r\n if (!this.tail) {\r\n return undefined;\r\n }\r\n\r\n const value = this.tail.value;\r\n\r\n if (!this.tail.previous) {\r\n this.head = undefined;\r\n this.tail = undefined;\r\n } else {\r\n this.tail = this.tail.previous;\r\n this.tail.next = undefined;\r\n }\r\n\r\n this.length--;\r\n return value;\r\n }\r\n}\r\n\r\nexport class Node<T> {\r\n value: T;\r\n previous?: Node<T>;\r\n next?: Node<T>;\r\n\r\n constructor(value: T) {\r\n this.value = value;\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { LinkedList } from './linked-list';\r\n\r\n@Directive({\r\n selector: '[bdbGridChild], [bdbGridColumn], [bdbGridRow]',\r\n standalone: true,\r\n})\r\nexport class BdbGridChildDirective implements OnInit {\r\n @Input() bdbGridChild = '';\r\n @Input() bdbGridRow = '';\r\n @Input() bdbGridColumn = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n const axes = this.splitAxes();\r\n\r\n let column = axes[0];\r\n let row = axes[1];\r\n\r\n if (this.bdbGridColumn) {\r\n column = this.bdbGridColumn;\r\n }\r\n\r\n if (this.bdbGridRow) {\r\n row = this.bdbGridRow;\r\n }\r\n\r\n if (column) {\r\n this.renderer.setStyle(this.element.nativeElement, 'grid-column', column);\r\n }\r\n\r\n if (row) {\r\n this.renderer.setStyle(this.element.nativeElement, 'grid-row', row);\r\n }\r\n }\r\n\r\n splitAxes(): string[] {\r\n const input = this.bdbGridChild.split(' ').filter(x => !!x);\r\n\r\n if (!input.length) {\r\n return [];\r\n }\r\n\r\n let sourceList = new LinkedList(input);\r\n let targetList = new LinkedList<string>();\r\n let node = sourceList.head;\r\n\r\n while (node) {\r\n if (node.value === 'span' && node.next) {\r\n targetList.push(`span ${node.next.value}`);\r\n node = node.next;\r\n } else {\r\n targetList.push(node.value);\r\n }\r\n node = node.next;\r\n }\r\n\r\n sourceList = targetList;\r\n targetList = new LinkedList<string>();\r\n node = sourceList.head;\r\n\r\n while (node) {\r\n if (node.next && node.next.value === '/' && node.next.next) {\r\n targetList.push(`${node.value} / ${node.next.next.value}`);\r\n node = node.next.next;\r\n } else {\r\n targetList.push(node.value);\r\n }\r\n node = node.next;\r\n }\r\n\r\n if (targetList.length !== 2 || !targetList.head || !targetList.tail) {\r\n return [];\r\n }\r\n\r\n return [targetList.head.value, targetList.tail.value];\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { LinkedList } from './linked-list';\r\n\r\ntype BdbGridInput = {\r\n gap?: string;\r\n columns?: BdbGridAxisInput;\r\n rows?: BdbGridAxisInput;\r\n};\r\n\r\ntype BdbGridAxisInput = {\r\n type: 'template' | 'auto';\r\n input: string;\r\n};\r\n\r\n@Directive({\r\n selector: '[bdbGrid], [bdbGridColumns], [bdbGridRows], [bdbGridGap]',\r\n standalone: true,\r\n})\r\nexport class BdbGridDirective implements OnInit {\r\n @Input() bdbGrid = '';\r\n @Input() bdbGridColumns = '';\r\n @Input() bdbGridRows = '';\r\n @Input() bdbGridGap = '';\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.element.nativeElement, 'display', 'grid');\r\n\r\n const inputs = this.parseBdbGridInput();\r\n\r\n const gap = !this.bdbGridGap ? inputs.gap : this.bdbGridGap;\r\n\r\n if (gap) {\r\n this.renderer.setStyle(this.element.nativeElement, 'gap', gap);\r\n }\r\n\r\n this.setAxis('columns', inputs.columns);\r\n this.setAxis('rows', inputs.rows);\r\n }\r\n\r\n parseBdbGridInput(): BdbGridInput {\r\n const result: BdbGridInput = {};\r\n\r\n const input = this.bdbGrid.split(' ').filter(x => !!x);\r\n\r\n const linkedList = new LinkedList(input);\r\n\r\n let node = linkedList.head;\r\n\r\n if (!node) {\r\n return result;\r\n }\r\n\r\n if (node.value !== 'template' && node.value !== 'auto') {\r\n result.gap = node.value;\r\n node = node.next;\r\n }\r\n\r\n if (!node) {\r\n return result;\r\n }\r\n\r\n const columns: BdbGridAxisInput = {\r\n type: node.value === 'auto' ? 'auto' : 'template',\r\n input: '',\r\n };\r\n\r\n node = node.next;\r\n const columnsInput = [];\r\n\r\n while (node) {\r\n if (node.value === 'auto' || node.value === 'template') {\r\n break;\r\n }\r\n columnsInput.push(node.value);\r\n node = node.next;\r\n }\r\n\r\n columns.input = columnsInput.join(' ');\r\n result.columns = columns;\r\n\r\n if (!node) {\r\n return result;\r\n }\r\n\r\n const rows: BdbGridAxisInput = {\r\n type: node.value === 'auto' ? 'auto' : 'template',\r\n input: '',\r\n };\r\n\r\n node = node.next;\r\n const rowsInput = [];\r\n\r\n while (node) {\r\n rowsInput.push(node.value);\r\n node = node.next;\r\n }\r\n\r\n rows.input = rowsInput.join(' ');\r\n result.rows = rows;\r\n\r\n return result;\r\n }\r\n\r\n setAxis(axis: 'columns' | 'rows', gridInput?: BdbGridAxisInput): void {\r\n let result = gridInput;\r\n\r\n const axisInput = axis === 'columns' ? this.bdbGridColumns : this.bdbGridRows;\r\n\r\n if (axisInput) {\r\n let input = axisInput.split(' ').filter(x => !!x);\r\n const type = input[0] === 'auto' ? 'auto' : 'template';\r\n if (input[0] === 'auto' || input[0] === 'template') {\r\n input = input.slice(1);\r\n }\r\n result = {\r\n type: type,\r\n input: input.join(' '),\r\n };\r\n }\r\n\r\n if (result) {\r\n const selector = result.type === 'auto' ? `grid-auto-${axis}` : `grid-template-${axis}`;\r\n this.renderer.setStyle(this.element.nativeElement, selector, result.input);\r\n }\r\n }\r\n}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'bdb-collapse-row',\r\n imports: [MatIconModule],\r\n templateUrl: './bdb-collapse-row.component.html',\r\n styleUrl: './bdb-collapse-row.component.scss',\r\n})\r\nexport class BdbCollapseRowComponent {\r\n @Input() collapsed = false;\r\n @Input() canCollapse = true;\r\n @HostBinding('class') class = 'bdb-collapse-row';\r\n @HostBinding('class.collapsed')\r\n public get isCollapsed(): boolean {\r\n return this.collapsed;\r\n }\r\n}\r\n","<div class=\"left\">\r\n <ng-content select=\"left\"></ng-content>\r\n</div>\r\n<div class=\"gap\">\r\n <div class=\"indicator\" (click)=\"collapsed = canCollapse && !collapsed\">\r\n <div class=\"top\"></div>\r\n <div class=\"middle\">\r\n <mat-icon>{{ collapsed ? 'left_panel_open' : 'left_panel_close' }}</mat-icon>\r\n </div>\r\n <div class=\"bottom\"></div>\r\n </div>\r\n</div>\r\n<div class=\"right\">\r\n <ng-content select=\"right\"></ng-content>\r\n</div>\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'bdb-field',\r\n imports: [CommonModule],\r\n templateUrl: './bdb-field.component.html',\r\n styleUrls: ['./bdb-field.component.scss'],\r\n})\r\nexport class BdbFieldComponent {\r\n @HostBinding() class = 'bdb-field';\r\n @Input() label = '';\r\n}\r\n","<div class=\"field-label\">{{ label }}</div>\r\n<ng-content></ng-content>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'bdbPlainNumber',\r\n standalone: true,\r\n})\r\nexport class PlainNumberPipe implements PipeTransform {\r\n transform(value: number | undefined): string | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return '' + value;\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbServiceR } from './bdb-service-r';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCR<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n> extends BdbServiceR<TEntity, TEntityRead> {\r\n create(createModel: TEntityCreate): Observable<number> {\r\n return this.httpClient.post<number>(this.baseUrl, createModel);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbServiceCR } from './bdb-service-cr';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCRD<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n> extends BdbServiceCR<TEntity, TEntityRead, TEntityCreate> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceCR } from './bdb-service-cr';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCRU<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceCR<TEntity, TEntityRead, TEntityCreate> {\r\n update(updateModel: TEntityUpdate): Observable<never> {\r\n return this.httpClient.put<never>(this.baseUrl, updateModel);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceCRU } from './bdb-service-cru';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceCRUD<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityCreate,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceCRU<TEntity, TEntityRead, TEntityCreate, TEntityUpdate> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceR } from './bdb-service-r';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceRU<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceR<TEntity, TEntityRead> {\r\n update(updateModel: TEntityUpdate): Observable<TEntity> {\r\n return this.httpClient.put<TEntity>(this.baseUrl, updateModel);\r\n }\r\n}\r\n","import { BdbEntity } from '../entities/bdb-entity';\r\nimport { BdbEntityRead } from '../entities/bdb-entity-read';\r\nimport { BdbEntityUpdate } from '../entities/bdb-entity-update';\r\nimport { BdbServiceRU } from './bdb-service-ru';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport abstract class BdbServiceRUD<\r\n TEntity extends BdbEntity,\r\n TEntityRead extends BdbEntityRead,\r\n TEntityUpdate extends BdbEntityUpdate,\r\n> extends BdbServiceRU<TEntity, TEntityRead, TEntityUpdate> {\r\n delete(id: number): Observable<never> {\r\n return this.httpClient.delete<never>(`${this.baseUrl}/${id}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceR } from '../../common/services/bdb-service-r';\r\nimport { ExceptionLog } from './exception-log';\r\nimport { ExceptionLogRead } from './exception-log-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExceptionLogService extends BdbServiceR<ExceptionLog, ExceptionLogRead> {\r\n constructor() {\r\n super('exception-log');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceR } from '../../common/services/bdb-service-r';\r\nimport { Role } from './role';\r\nimport { RoleRead } from './role-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoleService extends BdbServiceR<Role, RoleRead> {\r\n constructor() {\r\n super('role');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceCR } from '../../common/services/bdb-service-cr';\r\nimport { TaskLog } from './task-log';\r\nimport { TaskLogRead } from './task-log-read';\r\nimport { TaskLogCreate } from './task-log-create';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogService extends BdbServiceCR<TaskLog, TaskLogRead, TaskLogCreate> {\r\n constructor() {\r\n super('task-log');\r\n }\r\n\r\n start(id: number): Observable<void> {\r\n return this.httpClient.post<void>(`${this.baseUrl}/start`, { id });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceR } from '../../common/services/bdb-service-r';\r\nimport { TaskLogParameter } from './task-log-parameter';\r\nimport { TaskLogParameterRead } from './task-log-parameter-read';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogParameterService extends BdbServiceR<TaskLogParameter, TaskLogParameterRead> {\r\n constructor() {\r\n super('task-log-parameter');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceCRUD } from '../../common/services/bdb-service-crud';\r\nimport { TaskLogSchedule } from './task-log-schedule';\r\nimport { TaskLogScheduleRead } from './task-log-schedule-read';\r\nimport { TaskLogScheduleCreate } from './task-log-schedule-create';\r\nimport { TaskLogScheduleUpdate } from './task-log-schedule-update';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogScheduleService extends BdbServiceCRUD<\r\n TaskLogSchedule,\r\n TaskLogScheduleRead,\r\n TaskLogScheduleCreate,\r\n TaskLogScheduleUpdate\r\n> {\r\n constructor() {\r\n super('task-log-schedule');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { User } from './user';\r\nimport { UserRead } from './user-read';\r\nimport { BdbServiceCRUD } from '../../common/services/bdb-service-crud';\r\nimport { UserUpdate } from './user-update';\r\nimport { UserCreate } from './user-create';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserService extends BdbServiceCRUD<User, UserRead, UserCreate, UserUpdate> {\r\n constructor() {\r\n super('user');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BdbServiceCRD } from '../../common/services/bdb-service-crd';\r\nimport { UserRole } from './user-role';\r\nimport { UserRoleRead } from './user-role-read';\r\nimport { UserRoleCreate } from './user-role-create';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserRoleService extends BdbServiceCRD<UserRole, UserRoleRead, UserRoleCreate> {\r\n constructor() {\r\n super('user-role');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BdbService } from '../common/services/bdb-service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogSchedulerService extends BdbService {\r\n constructor() {\r\n super('task-log-scheduler');\r\n }\r\n\r\n public isRunning(): Observable<boolean> {\r\n return this.httpClient.get<boolean>(`${this.baseUrl}/is-running`);\r\n }\r\n\r\n public startScheduler(): Observable<void> {\r\n return this.httpClient.get<void>(`${this.baseUrl}/start`);\r\n }\r\n\r\n public stopScheduler(): Observable<void> {\r\n return this.httpClient.get<void>(`${this.baseUrl}/stop`);\r\n }\r\n}\r\n","import { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { map, shareReplay, tap } from 'rxjs/operators';\r\nimport { BdbService } from '../common/services/bdb-service';\r\nimport { TaskLogType } from './task-log-type';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TaskLogTypeService extends BdbService {\r\n TaskLogTypes = new BehaviorSubject<TaskLogType[]>([]);\r\n getAllObservable: Observable<TaskLogType[]> | null = null;\r\n\r\n constructor() {\r\n super('task-log-type');\r\n this.load();\r\n }\r\n\r\n public load(): void {\r\n this.getAll().subscribe({\r\n next: x => this.TaskLogTypes.next(x),\r\n });\r\n }\r\n\r\n private getAll(): Observable<TaskLogType[]> {\r\n if (this.getAllObservable) {\r\n return this.getAllObservable;\r\n }\r\n this.getAllObservable = this.httpClient.get<TaskLogType[]>(this.baseUrl).pipe(\r\n shareReplay(1),\r\n tap(() => (this.getAllObservable = null))\r\n );\r\n return this.getAllObservable;\r\n }\r\n\r\n public get(identifier: string): Observable<TaskLogType | null> {\r\n if (this.getAllObservable) {\r\n return this.getAllObservable.pipe(map(x => x.filter(y => y.identifier === identifier)[0]));\r\n }\r\n const types = this.TaskLogTypes.getValue();\r\n if (types && types.length) {\r\n return of(types.filter(x => x.identifier === identifier)[0]);\r\n }\r\n return of(null);\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { BdbAlertComponent } from '../../common/alert/bdb-alert.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterLink } from '@angular/router';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { BdbFlexDirective } from '../../common/bdb-flex.directive';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'bdb-access-denied-page',\r\n imports: [\r\n CommonModule,\r\n MatCardModule,\r\n BdbAlertComponent,\r\n MatButtonModule,\r\n RouterLink,\r\n MatIconModule,\r\n BdbFlexDirective,\r\n ],\r\n templateUrl: './access-denied-page.component.html',\r\n styleUrls: ['./access-denied-page.component.scss'],\r\n})\r\nexport class AccessDeniedPageComponent implements OnInit, OnDestroy {\r\n private readonly _onDestroy = new Subject<void>();\r\n\r\n loginRoutePath?: string;\r\n logoutRoutePath?: string;\r\n\r\n isLoggedIn = true;\r\n\r\n constructor(\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions,\r\n private authService: AuthService\r\n ) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n this.logoutRoutePath = bdbOptions.authOptions?.logoutPath;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.authService.account$.pipe(takeUntil(this._onDestroy)).subscribe({\r\n next: x => (this.isLoggedIn = x !== null),\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy.next();\r\n this._onDestroy.complete();\r\n }\r\n}\r\n","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Toegang geweigerd</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert color=\"danger\" label=\"Geen toegang\" icon=\"block\">\r\n U heeft onvoldoende rechten voor de gevraagde toepassing\r\n </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n @if (isLoggedIn) {\r\n <a [routerLink]=\"['/', logoutRoutePath]\" mat-button>Uitloggen</a>\r\n } @else {\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button>Inloggen</a>\r\n }\r\n </mat-card-actions>\r\n</mat-card>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { RouterLink } from '@angular/router';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { BdbAlertComponent } from '../../common/alert/bdb-alert.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\n\r\n@Component({\r\n selector: 'bdb-forgot-password-page',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatCardModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n RouterLink,\r\n BdbAlertErrorResponseComponent,\r\n BdbAlertComponent,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './forgot-password-page.component.html',\r\n styleUrls: ['./forgot-password-page.component.scss'],\r\n})\r\nexport class ForgotPasswordPageComponent {\r\n loginRoutePath?: string;\r\n\r\n emailCtrl = new FormControl('', { validators: [Validators.required, Validators.email], nonNullable: true });\r\n\r\n isComplete = false;\r\n isPending = false;\r\n\r\n error?: HttpErrorResponse;\r\n\r\n forgotPasswordForm = new FormGroup({\r\n email: this.emailCtrl,\r\n });\r\n\r\n constructor(\r\n private authService: AuthService,\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions\r\n ) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n }\r\n\r\n forgotPassword(): void {\r\n if (this.isPending || !this.forgotPasswordForm.valid) {\r\n return;\r\n }\r\n this.isPending = true;\r\n this.error = undefined;\r\n const formValue = this.forgotPasswordForm.getRawValue();\r\n this.forgotPasswordForm.disable();\r\n\r\n this.authService.forgotPassword(formValue).subscribe({\r\n next: () => {\r\n this.isComplete = true;\r\n this.isPending = false;\r\n this.forgotPasswordForm.enable();\r\n },\r\n error: e => {\r\n this.error = e;\r\n this.isPending = false;\r\n this.forgotPasswordForm.enable();\r\n },\r\n });\r\n }\r\n}\r\n","@if (!isComplete) {\r\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"forgotPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord vergeten</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"forgot-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>E-mailadres</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"forgot-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>lock_reset</mat-icon>\r\n <span>Herstel wachtwoord</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n </form>\r\n} @else {\r\n <bdb-alert color=\"success\" label=\"Wachtwoord herstel gestart\"> Controleer uw e-mail voor instructies </bdb-alert>\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { BdbAlertComponent } from '../../common/alert/bdb-alert.component';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterLink } from '@angular/router';\r\nimport { BdbFlexDirective } from '../../common/bdb-flex.directive';\r\n\r\n@Component({\r\n selector: 'bdb-invalid-token-page',\r\n imports: [CommonModule, MatCardModule, BdbAlertComponent, MatButtonModule, RouterLink, BdbFlexDirective],\r\n templateUrl: './invalid-token-page.component.html',\r\n styleUrls: ['./invalid-token-page.component.scss'],\r\n})\r\nexport class InvalidTokenPageComponent {\r\n loginRoutePath?: string;\r\n\r\n constructor(@Inject(BDB_OPTIONS) bdbOptions: BdbOptions) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n }\r\n}\r\n","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Ongeldig token</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert color=\"warn\" label=\"Verlopen\" icon=\"block\"> Uw wachtwoord herstel link is niet (meer) geldig </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button>Inloggen</a>\r\n </mat-card-actions>\r\n</mat-card>\r\n","import { Inject, Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { BdbFlexDirective } from '../../common/bdb-flex.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BdbFormErrorDirective } from '../../common/bdb-form-error.directive';\r\nimport { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';\r\n\r\n@Component({\r\n selector: 'bdb-login-page',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n RouterLink,\r\n MatCardModule,\r\n BdbAlertErrorResponseComponent,\r\n BdbFlexDirective,\r\n BdbFormErrorDirective,\r\n ],\r\n templateUrl: './login-page.component.html',\r\n styleUrls: ['./login-page.component.scss'],\r\n})\r\nexport class LoginPageComponent implements OnInit {\r\n forgotPasswordRoutePath?: string;\r\n\r\n emailCtrl = new FormControl('', {\r\n validators: [Validators.required, Validators.email],\r\n nonNullable: true,\r\n });\r\n passwordCtrl = new FormControl('', { validators: [Validators.required], nonNullable: true });\r\n\r\n error?: HttpErrorResponse;\r\n\r\n postLoginUrl = '/';\r\n\r\n isPending = false;\r\n\r\n loginForm = new FormGroup({\r\n email: this.emailCtrl,\r\n password: this.passwordCtrl,\r\n });\r\n\r\n constructor(\r\n private router: Router,\r\n private authService: AuthService,\r\n private route: ActivatedRoute,\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions\r\n ) {\r\n this.forgotPasswordRoutePath = bdbOptions.authOptions?.forgotPasswordPath;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.route.queryParams.subscribe({\r\n next: x => (this.postLoginUrl = x['returnUrl'] ?? '/'),\r\n });\r\n }\r\n\r\n login(): void {\r\n this.loginForm.markAllAsTouched();\r\n\r\n if (this.isPending || !this.loginForm.valid) {\r\n return;\r\n }\r\n\r\n this.isPending = true;\r\n this.error = undefined;\r\n const formValue = this.loginForm.getRawValue();\r\n this.loginForm.disable();\r\n\r\n this.authService.login(formValue).subscribe({\r\n next: () => {\r\n this.isPending = false;\r\n this.loginForm.enable();\r\n this.router.navigate([this.postLoginUrl]);\r\n },\r\n error: e => {\r\n this.error = e;\r\n this.isPending = false;\r\n this.loginForm.enable();\r\n },\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Inloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content bdbFlex=\"col\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-form-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <mat-error bdbFormError=\"email\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Wachtwoord</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" />\r\n <mat-error bdbFormError=\"password\"></mat-error>\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 8px end center\">\r\n <a mat-button [routerLink]=\"['/', forgotPasswordRoutePath]\">\r\n <mat-icon>contact_support</mat-icon>\r\n <span>Wachtwoord vergeten</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>login</mat-icon>\r\n <span>Inloggen</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\n\r\n@Component({\r\n selector: 'bdb-logout-page',\r\n imports: [MatCardModule, MatButtonModule, MatIconModule, RouterLink],\r\n templateUrl: './logout-page.component.html',\r\n styleUrls: ['./logout-page.component.scss'],\r\n})\r\nexport class LogoutPageComponent {\r\n constructor(\r\n private router: Router,\r\n private authService: AuthService,\r\n @Inject(BDB_OPTIONS) private bdbOptions: BdbOptions\r\n ) {}\r\n\r\n logout(): void {\r\n this.authService.logout();\r\n this.router.navigate(['/', this.bdbOptions.authOptions?.loginPath]);\r\n }\r\n}\r\n","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Uitloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"logout-page-card-content\"> Weet u zeker dat u wilt uitloggen? </mat-card-content>\r\n <mat-card-actions class=\"logout-page-card-actions\">\r\n <a mat-button routerLink=\"/\">\r\n <mat-icon>arrow_back</mat-icon>\r\n <span>Blijf ingelogd</span>\r\n </a>\r\n <button (click)=\"logout()\" mat-flat-button color=\"primary\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log uit</span>\r\n </button></mat-card-actions\r\n >\r\n</mat-card>\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ResetPasswordToken } from '../../domain/auth/reset-password-token';\r\nimport { AuthService } from '../../domain/auth/auth.service';\r\nimport { BDB_OPTIONS, BdbOptions } from '../../bdb-options';\r\nimport { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';\r\n\r\nexport function equalValueValidator(otherControl: AbstractControl): ValidatorFn {\r\n return (thisControl: AbstractControl): ValidationErrors | null => {\r\n const otherValue = otherControl.value;\r\n const thisValue = thisControl.value;\r\n return otherValue === thisValue ? null : { custom: 'Komt niet overeen' };\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'bdb-reset-password-page',\r\n imports: [\r\n ReactiveFormsModule,\r\n MatCardModule,\r\n BdbAlertErrorResponseComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n RouterLink,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './reset-password-page.component.html',\r\n styleUrls: ['./reset-password-page.component.scss'],\r\n})\r\nexport class ResetPasswordPageComponent implements OnInit {\r\n loginRoutePath?: string;\r\n\r\n isPending = false;\r\n\r\n error?: HttpErrorResponse;\r\n\r\n passwordCtrl = new FormControl('', {\r\n validators: [\r\n Validators.required,\r\n Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*()])[A-Za-z0-9!@#$%^&*()]{6,}$'),\r\n ],\r\n nonNullable: true,\r\n });\r\n confirmPasswordCtrl = new FormControl('', {\r\n validators: [Validators.required, equalValueValidator(this.passwordCtrl)],\r\n nonNullable: true,\r\n });\r\n\r\n resetPasswordForm = new FormGroup({\r\n email: new FormControl('', { validators: [Validators.required, Validators.email], nonNullable: true }),\r\n token: new FormControl('', { validators: [Validators.required], nonNullable: true }),\r\n password: this.passwordCtrl,\r\n confirmPassword: this.confirmPasswordCtrl,\r\n });\r\n\r\n resetPasswordToken?: ResetPasswordToken;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n @Inject(BDB_OPTIONS) bdbOptions: BdbOptions\r\n ) {\r\n this.loginRoutePath = bdbOptions.authOptions?.loginPath;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.activatedRoute.data.subscribe({\r\n next: x => {\r\n this.resetPasswordToken = x['resetPasswordToken'];\r\n if (this.resetPasswordToken) {\r\n this.resetPasswordForm.patchValue(this.resetPasswordToken);\r\n }\r\n },\r\n });\r\n }\r\n\r\n resetPassword(): void {\r\n if (this.isPending || !this.resetPasswordForm.valid) {\r\n return;\r\n }\r\n this.isPending = true;\r\n this.error = undefined;\r\n\r\n const formValue = this.resetPasswordForm.getRawValue();\r\n this.resetPasswordForm.disable();\r\n\r\n this.authService.resetPassword(formValue).subscribe({\r\n next: () => {\r\n this.isPending = false;\r\n this.resetPasswordForm.enable();\r\n this.router.navigate(['/']);\r\n },\r\n error: e => {\r\n this.error = e;\r\n this.isPending = false;\r\n this.resetPasswordForm.enable();\r\n },\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord herstellen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"reset-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <p>{{ resetPasswordToken?.email }}</p>\r\n\r\n <mat-form-field>\r\n <mat-label>Nieuw wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"passwordCtrl\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Bevestig wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"confirmPasswordCtrl\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"reset-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>sync_lock</mat-icon>\r\n <span>Stel wachtwoord in</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n</form>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1.AccountService","catchError","filter","concatMap","tap","i1","i6","i5","i1.BdbColumnBuilder","i4","i2.BdbColumnBuilder","map","i1.AuthService","i7","i8"],"mappings":"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"}
|