spiderly 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"spiderly.mjs","sources":["../../../projects/spiderly/src/lib/services/app-initializer.ts","../../../projects/spiderly/src/lib/services/config-base.service.ts","../../../projects/spiderly/src/lib/interceptors/jwt.interceptor.ts","../../../projects/spiderly/src/lib/services/spiderly-message.service.ts","../../../projects/spiderly/src/lib/interceptors/unauthorized.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/http-loading.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/json-parser.interceptor.ts","../../../projects/spiderly/src/lib/entities/base-entity.ts","../../../projects/spiderly/src/lib/entities/security-entities.ts","../../../projects/spiderly/src/lib/entities/init-company-auth-dialog-details.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/services/auth-base.service.ts","../../../projects/spiderly/src/lib/handlers/spiderly-error-handler.ts","../../../projects/spiderly/src/lib/modules/core.module.ts","../../../projects/spiderly/src/lib/modules/primeng.module.ts","../../../projects/spiderly/src/lib/services/spiderly-transloco-loader.ts","../../../projects/spiderly/src/lib/modules/spiderly-transloco.module.ts","../../../projects/spiderly/src/lib/components/spiderly-form-control/spiderly-form-control.ts","../../../projects/spiderly/src/lib/services/helper-functions.ts","../../../projects/spiderly/src/lib/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/validator-abstract.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.ts","../../../projects/spiderly/src/lib/components/base-form/base-form copy.ts","../../../projects/spiderly/src/lib/entities/init-top-bar-data.ts","../../../projects/spiderly/src/lib/services/app-layout-base.service.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.html","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.html","../../../projects/spiderly/src/lib/controls/base-control.ts","../../../projects/spiderly/src/lib/components/required/required.component.ts","../../../projects/spiderly/src/lib/components/required/required.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panels.module.ts","../../../projects/spiderly/src/lib/controls/base-dropdown-control.ts","../../../projects/spiderly/src/lib/controls/base-autocomplete-control.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.html","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.html","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.html","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.html","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.html","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.html","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.html","../../../projects/spiderly/src/lib/controls/spiderly-colorpick/spiderly-colorpick.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-colorpick/spiderly-colorpick.component.html","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.html","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.html","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.html","../../../projects/spiderly/src/lib/controls/spiderly-controls.module.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.html","../../../projects/spiderly/src/lib/components/auth/partials/registration-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/registration-verification.component.html","../../../projects/spiderly/src/lib/components/auth/registration/registration.component.ts","../../../projects/spiderly/src/lib/components/auth/registration/registration.component.html","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.html","../../../projects/spiderly/src/lib/components/auth/login/login.component.ts","../../../projects/spiderly/src/lib/components/auth/login/login.component.html","../../../projects/spiderly/src/lib/components/auth/auth.module.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.html","../../../projects/spiderly/src/lib/entities/is-authorized-for-save-event.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.html","../../../projects/spiderly/src/lib/components/footer/footer.component.ts","../../../projects/spiderly/src/lib/components/footer/footer.component.html","../../../projects/spiderly/src/lib/components/index-card/index-card.component.ts","../../../projects/spiderly/src/lib/components/index-card/index-card.component.html","../../../projects/spiderly/src/lib/components/info-card/info-card.component.ts","../../../projects/spiderly/src/lib/components/info-card/info-card.component.html","../../../projects/spiderly/src/lib/components/not-found/not-found.component.ts","../../../projects/spiderly/src/lib/components/not-found/not-found.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.html","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.ts","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.html","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.service.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.html","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.html","../../../projects/spiderly/src/lib/components/layout/layout-base.component.ts","../../../projects/spiderly/src/lib/entities/codebook.ts","../../../projects/spiderly/src/lib/entities/last-menu-icon-index-clicked.ts","../../../projects/spiderly/src/lib/entities/lazy-load-selected-ids-result.ts","../../../projects/spiderly/src/lib/entities/menuchangeevent.ts","../../../projects/spiderly/src/lib/entities/mime-type.ts","../../../projects/spiderly/src/lib/entities/namebook.ts","../../../projects/spiderly/src/lib/entities/primeng-option.ts","../../../projects/spiderly/src/lib/entities/simple-save-result.ts","../../../projects/spiderly/src/lib/entities/spiderly-button.ts","../../../projects/spiderly/src/lib/entities/table-filter.ts","../../../projects/spiderly/src/lib/entities/table-filter-context.ts","../../../projects/spiderly/src/lib/entities/table-filter-sort-meta.ts","../../../projects/spiderly/src/lib/entities/table-response.ts","../../../projects/spiderly/src/lib/enums/security-enums.ts","../../../projects/spiderly/src/lib/enums/verification-type-codes.ts","../../../projects/spiderly/src/lib/guards/auth.guard.ts","../../../projects/spiderly/src/lib/guards/not-auth.guard.ts","../../../projects/spiderly/src/lib/handlers/spiderly-transloco-fallback-strategy.ts","../../../projects/spiderly/src/public-api.ts","../../../projects/spiderly/src/spiderly.ts"],"sourcesContent":["import { Observable } from 'rxjs';\r\nimport { AuthBaseService } from './auth-base.service';\r\nimport { AuthResult } from '../entities/security-entities';\r\n\r\nexport function authInitializer(authService: AuthBaseService): () => Observable<AuthResult> {\r\n return () => {\r\n return authService.refreshToken();\r\n };\r\n}","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigBaseService\r\n{\r\n production = false;\r\n apiUrl: string;\r\n frontendUrl = 'http://localhost:4200';\r\n googleClientId: string;\r\n companyName = 'Company Name';\r\n primaryColor = '#111b2c';\r\n \r\n googleAuth = true;\r\n usersCanRegister = true;\r\n\r\n /* URLs */\r\n loginSlug = 'login';\r\n\r\n /* Local storage */\r\n accessTokenKey = 'access_token';\r\n refreshTokenKey = 'refresh_token';\r\n browserIdKey = 'browser_id';\r\n\r\n httpOptions = {};\r\n httpSkipSpinnerOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\r\n params: new HttpParams().set('X-Skip-Spinner', 'true')\r\n };\r\n\r\n constructor(\r\n ) {\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n const accessToken = localStorage.getItem('access_token');\r\n const isApiUrl = request.url.startsWith(this.config.apiUrl);\r\n if (accessToken && isApiUrl) {\r\n request = request.clone({\r\n setHeaders: { Authorization: `Bearer ${accessToken}` },\r\n });\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SpiderlyMessageService { // TODO FT: nece da prikaze poruku ako je neki angular error koji se dogodi tek nakon api poziva\r\n constructor(\r\n private messageService: MessageService, \r\n private translocoService: TranslocoService,\r\n private ngZone: NgZone\r\n ) {\r\n \r\n }\r\n\r\n successMessage(detail: string, title: string = this.translocoService.translate('SuccessfulAction')) {\r\n this.messageService.add({\r\n severity: 'success',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }\r\n\r\n warningMessage(detail: string, title?: string, sticky?: boolean){\r\n this.messageService.add({\r\n severity: 'warn',\r\n summary: title ?? this.translocoService.translate('Warning'),\r\n detail: detail,\r\n life: 10000,\r\n sticky: sticky\r\n });\r\n }\r\n\r\n warningMessageWithTimeout(detail: string, title: string = this.translocoService.translate('Warning')){\r\n setTimeout(() => {\r\n this.messageService.add({\r\n severity: 'warn',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }, 100);\r\n }\r\n\r\n errorMessage(detail: string, title: string = this.translocoService.translate('Error')){\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }\r\n\r\n infoMessage(detail: string, title?: string, sticky?: boolean){\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: title ?? this.translocoService.translate('Info'),\r\n detail: detail,\r\n life: 10000,\r\n sticky: sticky,\r\n });\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UnauthorizedInterceptor implements HttpInterceptor {\r\n constructor(\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n private config: ConfigBaseService,\r\n ) {}\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(\r\n catchError((err) => {\r\n return this.handleAuthError(err, request);\r\n })\r\n );\r\n }\r\n\r\n private handleAuthError(err: HttpErrorResponse, request: HttpRequest<any>): Observable<any> {\r\n\r\n if (!this.config.production) {\r\n console.error(err);\r\n }\r\n\r\n let errorResponse = err.error;\r\n\r\n if (request.responseType != 'json')\r\n errorResponse= JSON.parse(err.error);\r\n\r\n if (err.status == 0) {\r\n this.messageService.warningMessageWithTimeout( // FT: Had problem when the server is shut down, and try to refresh token, warning message didn't appear\r\n this.translocoService.translate('ServerLostConnectionDetails'),\r\n this.translocoService.translate('ServerLostConnectionTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 403) {\r\n this.messageService.warningMessage(\r\n this.translocoService.translate('PermissionErrorDetails'),\r\n this.translocoService.translate('PermissionErrorTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 404) {\r\n this.messageService.warningMessage(\r\n this.translocoService.translate('NotFoundDetails'),\r\n this.translocoService.translate('NotFoundTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 400 || err.status == 401) {\r\n this.messageService.warningMessage(\r\n errorResponse.message ?? this.translocoService.translate('BadRequestDetails'),\r\n this.translocoService.translate('Warning'),\r\n );\r\n\r\n if(err.status == 401) {\r\n // this.authService.logout();\r\n }\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 419) { // FT: We don't want to show error message to the user, we just log him out.\r\n return of(err.message);\r\n } \r\n else {\r\n this.messageService.errorMessage(\r\n errorResponse.message,\r\n this.translocoService.translate('UnexpectedErrorTitle'),\r\n );\r\n\r\n return of(err.message);\r\n }\r\n\r\n return throwError(err);\r\n }\r\n\r\n}\r\n","import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { Observable, finalize } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpLoadingInterceptor implements HttpInterceptor {\r\n constructor(private spinner: NgxSpinnerService) {}\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n const skipSpinner = request.params.has('X-Skip-Spinner'); // FT: Using this for multiautocomplete, autocomplete, dropdown, table etc...\r\n\r\n if (!skipSpinner)\r\n this.spinner.show();\r\n\r\n return next.handle(request).pipe(\r\n finalize(() => {\r\n if (!skipSpinner)\r\n this.spinner.hide();\r\n })\r\n ) as Observable<HttpEvent<any>>;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpResponse } from '@angular/common/http';\r\nimport { Observable, tap } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonHttpInterceptor implements HttpInterceptor {\r\n private dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\r\n\r\n constructor() { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request)\r\n .pipe(\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.convertDates(event.body);\r\n }\r\n }\r\n ));\r\n }\r\n\r\n private convertDates(\r\n object: unknown,\r\n parent?: Record<string, unknown> | unknown[],\r\n key?: number | string,\r\n ) {\r\n if (object === null) return;\r\n\r\n if (typeof object === 'string') {\r\n if (this.dateRegex.test(object)) {\r\n /**\r\n * @see https://stackoverflow.com/a/54733846/1306679\r\n */\r\n\r\n parent[key] = new Date(object);\r\n }\r\n } else if (Array.isArray(object)) {\r\n for (let i = 0; i < object.length; i++)\r\n this.convertDates(object[i], object, i);\r\n } else {\r\n for (const key of Object.keys(object as Record<string, unknown>)) {\r\n this.convertDates(\r\n (object as Record<string, unknown>)[key],\r\n object as Record<string, unknown>,\r\n key,\r\n );\r\n }\r\n }\r\n }\r\n\r\n}","export class BaseEntity {\r\n\r\n public pipedProperties?: PipedProperty[];\r\n public typeName?: string;\r\n\r\n constructor(typeName: string) {\r\n this.pipedProperties = [];\r\n this.typeName = typeName;\r\n }\r\n}\r\n\r\nexport class PipedProperty {\r\n pipe: PropertyPipes;\r\n control: string;\r\n\r\n constructor(p: PropertyPipes, c: string) {\r\n this.pipe = p;\r\n this.control = c;\r\n }\r\n}\r\n\r\nexport enum PropertyPipes {\r\n IntegerPipe,\r\n DecimalPipe\r\n}","import { BaseEntity } from \"./base-entity\";\r\nimport { TableFilter } from \"./table-filter\";\r\nimport { TableFilterContext } from \"./table-filter-context\";\r\nimport { TableFilterSortMeta } from \"./table-filter-sort-meta\";\r\nimport { MimeTypes } from \"./mime-type\";\r\nimport { RegistrationVerificationResultStatusCodes } from \"../enums/security-enums\";\r\nimport { Namebook } from \"./namebook\";\r\n\r\n\r\nexport class User extends BaseEntity\r\n{\r\n id?: number;\r\n\temail?: string;\r\n\r\n constructor(\r\n {\r\n id,\r\n\t\temail,\r\n }:{\r\n id?: number;\r\n\t\temail?: string;\r\n } = {}\r\n ) {\r\n super('User'); \r\n\r\n this.id = id;\r\n\t\tthis.email = email;\r\n }\r\n}\r\n\r\nexport class JwtAuthResult extends BaseEntity\r\n{\r\n userId?: number;\r\n\tuserEmail?: string;\r\n\taccessToken?: string;\r\n\ttoken?: RefreshToken;\r\n\r\n constructor(\r\n {\r\n userId,\r\n\t\tuserEmail,\r\n\t\taccessToken,\r\n\t\ttoken\r\n }:{\r\n userId?: number;\r\n\t\tuserEmail?: string;\r\n\t\taccessToken?: string;\r\n\t\ttoken?: RefreshToken; \r\n } = {}\r\n ) {\r\n super('JwtAuthResult'); \r\n\r\n this.userId = userId;\r\n\t\tthis.userEmail = userEmail;\r\n\t\tthis.accessToken = accessToken;\r\n\t\tthis.token = token;\r\n }\r\n}\r\n\r\n\r\nexport class RolePermission extends BaseEntity\r\n{\r\n roleDisplayName?: string;\r\n\troleId?: number;\r\n\tpermissionDisplayName?: string;\r\n\tpermissionId?: number;\r\n\r\n constructor(\r\n {\r\n roleDisplayName,\r\n\t\troleId,\r\n\t\tpermissionDisplayName,\r\n\t\tpermissionId\r\n }:{\r\n roleDisplayName?: string;\r\n\t\troleId?: number;\r\n\t\tpermissionDisplayName?: string;\r\n\t\tpermissionId?: number; \r\n } = {}\r\n ) {\r\n super('RolePermission'); \r\n\r\n this.roleDisplayName = roleDisplayName;\r\n\t\tthis.roleId = roleId;\r\n\t\tthis.permissionDisplayName = permissionDisplayName;\r\n\t\tthis.permissionId = permissionId;\r\n }\r\n}\r\n\r\n\r\nexport class RolePermissionSaveBody extends BaseEntity\r\n{\r\n rolePermissionDTO?: RolePermission;\r\n\r\n constructor(\r\n {\r\n rolePermissionDTO\r\n }:{\r\n rolePermissionDTO?: RolePermission; \r\n } = {}\r\n ) {\r\n super('RolePermissionSaveBody'); \r\n\r\n this.rolePermissionDTO = rolePermissionDTO;\r\n }\r\n}\r\n\r\n\r\nexport class AuthResult extends BaseEntity\r\n{\r\n userId?: number;\r\n\temail?: string;\r\n\taccessToken?: string;\r\n\trefreshToken?: string;\r\n\r\n constructor(\r\n {\r\n userId,\r\n\t\temail,\r\n\t\taccessToken,\r\n\t\trefreshToken\r\n }:{\r\n userId?: number;\r\n\t\temail?: string;\r\n\t\taccessToken?: string;\r\n\t\trefreshToken?: string; \r\n } = {}\r\n ) {\r\n super('AuthResult'); \r\n\r\n this.userId = userId;\r\n\t\tthis.email = email;\r\n\t\tthis.accessToken = accessToken;\r\n\t\tthis.refreshToken = refreshToken;\r\n }\r\n}\r\n\r\n\r\nexport class VerificationTokenRequest extends BaseEntity\r\n{\r\n verificationCode?: string;\r\n\tbrowserId?: string;\r\n\temail?: string;\r\n\r\n constructor(\r\n {\r\n verificationCode,\r\n\t\tbrowserId,\r\n\t\temail\r\n }:{\r\n verificationCode?: string;\r\n\t\tbrowserId?: string;\r\n\t\temail?: string; \r\n } = {}\r\n ) {\r\n super('VerificationTokenRequest'); \r\n\r\n this.verificationCode = verificationCode;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.email = email;\r\n }\r\n}\r\n\r\n\r\nexport class RegistrationVerificationResult extends BaseEntity\r\n{\r\n status?: RegistrationVerificationResultStatusCodes;\r\n\tmessage?: string;\r\n\r\n constructor(\r\n {\r\n status,\r\n\t\tmessage\r\n }:{\r\n status?: RegistrationVerificationResultStatusCodes;\r\n\t\tmessage?: string; \r\n } = {}\r\n ) {\r\n super('RegistrationVerificationResult'); \r\n\r\n this.status = status;\r\n\t\tthis.message = message;\r\n }\r\n}\r\n\r\n\r\nexport class RegistrationVerificationToken extends BaseEntity\r\n{\r\n email?: string;\r\n\tbrowserId?: string;\r\n\texpireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tbrowserId,\r\n\t\texpireAt\r\n }:{\r\n email?: string;\r\n\t\tbrowserId?: string;\r\n\t\texpireAt?: Date; \r\n } = {}\r\n ) {\r\n super('RegistrationVerificationToken'); \r\n\r\n this.email = email;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.expireAt = expireAt;\r\n }\r\n}\r\n\r\n\r\nexport class ExternalProvider extends BaseEntity\r\n{\r\n idToken?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n idToken,\r\n\t\tbrowserId\r\n }:{\r\n idToken?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('ExternalProvider'); \r\n\r\n this.idToken = idToken;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class UserRole extends BaseEntity\r\n{\r\n roleId?: number;\r\n\tuserId?: number;\r\n\r\n constructor(\r\n {\r\n roleId,\r\n\t\tuserId\r\n }:{\r\n roleId?: number;\r\n\t\tuserId?: number; \r\n } = {}\r\n ) {\r\n super('UserRole'); \r\n\r\n this.roleId = roleId;\r\n\t\tthis.userId = userId;\r\n }\r\n}\r\n\r\n\r\nexport class UserRoleSaveBody extends BaseEntity\r\n{\r\n userRoleDTO?: UserRole;\r\n\r\n constructor(\r\n {\r\n userRoleDTO\r\n }:{\r\n userRoleDTO?: UserRole; \r\n } = {}\r\n ) {\r\n super('UserRoleSaveBody'); \r\n\r\n this.userRoleDTO = userRoleDTO;\r\n }\r\n}\r\n\r\n\r\nexport class LoginVerificationToken extends BaseEntity\r\n{\r\n email?: string;\r\n\tuserId?: number;\r\n\tbrowserId?: string;\r\n\texpireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tuserId,\r\n\t\tbrowserId,\r\n\t\texpireAt\r\n }:{\r\n email?: string;\r\n\t\tuserId?: number;\r\n\t\tbrowserId?: string;\r\n\t\texpireAt?: Date; \r\n } = {}\r\n ) {\r\n super('LoginVerificationToken'); \r\n\r\n this.email = email;\r\n\t\tthis.userId = userId;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.expireAt = expireAt;\r\n }\r\n}\r\n\r\n\r\nexport class Login extends BaseEntity\r\n{\r\n email?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tbrowserId\r\n }:{\r\n email?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('Login'); \r\n\r\n this.email = email;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class RefreshTokenRequest extends BaseEntity\r\n{\r\n refreshToken?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n refreshToken,\r\n\t\tbrowserId\r\n }:{\r\n refreshToken?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('RefreshTokenRequest'); \r\n\r\n this.refreshToken = refreshToken;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class Registration extends BaseEntity\r\n{\r\n email?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tbrowserId\r\n }:{\r\n email?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('Registration'); \r\n\r\n this.email = email;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class Role extends BaseEntity\r\n{\r\n name?: string;\r\n\tdescription?: string;\r\n\tversion?: number;\r\n\tid?: number;\r\n\tcreatedAt?: Date;\r\n\tmodifiedAt?: Date;\r\n\r\n constructor(\r\n {\r\n name,\r\n\t\tdescription,\r\n\t\tversion,\r\n\t\tid,\r\n\t\tcreatedAt,\r\n\t\tmodifiedAt\r\n }:{\r\n name?: string;\r\n\t\tdescription?: string;\r\n\t\tversion?: number;\r\n\t\tid?: number;\r\n\t\tcreatedAt?: Date;\r\n\t\tmodifiedAt?: Date; \r\n } = {}\r\n ) {\r\n super('Role'); \r\n\r\n this.name = name;\r\n\t\tthis.description = description;\r\n\t\tthis.version = version;\r\n\t\tthis.id = id;\r\n\t\tthis.createdAt = createdAt;\r\n\t\tthis.modifiedAt = modifiedAt;\r\n }\r\n}\r\n\r\n\r\nexport class RoleMainUIForm extends BaseEntity\r\n{\r\n roleDTO?: Role;\r\n\tusersNamebookDTOList?: Namebook[];\r\n\tpermissionsNamebookDTOList?: Namebook[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n usersNamebookDTOList,\r\n permissionsNamebookDTOList\r\n }:{\r\n roleDTO?: Role;\r\n usersNamebookDTOList?: Namebook[];\r\n permissionsNamebookDTOList?: Namebook[]; \r\n } = {}\r\n ) {\r\n super('RoleMainUIForm'); \r\n\r\n this.roleDTO = roleDTO;\r\n this.usersNamebookDTOList = usersNamebookDTOList;\r\n this.permissionsNamebookDTOList = permissionsNamebookDTOList;\r\n }\r\n}\r\n\r\nexport class RoleSaveBody extends BaseEntity\r\n{\r\n roleDTO?: Role;\r\n\tselectedPermissionsIds?: number[];\r\n\tselectedUsersIds?: number[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n\t\tselectedPermissionsIds,\r\n\t\tselectedUsersIds\r\n }:{\r\n roleDTO?: Role;\r\n\t\tselectedPermissionsIds?: number[];\r\n\t\tselectedUsersIds?: number[]; \r\n } = {}\r\n ) {\r\n super('RoleSaveBody'); \r\n\r\n this.roleDTO = roleDTO;\r\n\t\tthis.selectedPermissionsIds = selectedPermissionsIds;\r\n\t\tthis.selectedUsersIds = selectedUsersIds;\r\n }\r\n}\r\n\r\n\r\nexport class RefreshToken extends BaseEntity\r\n{\r\n email?: string;\r\n\tipAddress?: string;\r\n\tbrowserId?: string;\r\n\ttokenString?: string;\r\n\texpireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tipAddress,\r\n\t\tbrowserId,\r\n\t\ttokenString,\r\n\t\texpireAt\r\n }:{\r\n email?: string;\r\n\t\tipAddress?: string;\r\n\t\tbrowserId?: string;\r\n\t\ttokenString?: string;\r\n\t\texpireAt?: Date; \r\n } = {}\r\n ) {\r\n super('RefreshToken'); \r\n\r\n this.email = email;\r\n\t\tthis.ipAddress = ipAddress;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.tokenString = tokenString;\r\n\t\tthis.expireAt = expireAt;\r\n }\r\n}\r\n\r\n\r\nexport class Permission extends BaseEntity\r\n{\r\n name?: string;\r\n\tnameLatin?: string;\r\n\tdescription?: string;\r\n\tdescriptionLatin?: string;\r\n\tcode?: string;\r\n\tid?: number;\r\n\r\n constructor(\r\n {\r\n name,\r\n\t\tnameLatin,\r\n\t\tdescription,\r\n\t\tdescriptionLatin,\r\n\t\tcode,\r\n\t\tid\r\n }:{\r\n name?: string;\r\n\t\tnameLatin?: string;\r\n\t\tdescription?: string;\r\n\t\tdescriptionLatin?: string;\r\n\t\tcode?: string;\r\n\t\tid?: number; \r\n } = {}\r\n ) {\r\n super('Permission'); \r\n\r\n this.name = name;\r\n\t\tthis.nameLatin = nameLatin;\r\n\t\tthis.description = description;\r\n\t\tthis.descriptionLatin = descriptionLatin;\r\n\t\tthis.code = code;\r\n\t\tthis.id = id;\r\n }\r\n}\r\n\r\n\r\nexport class PermissionSaveBody extends BaseEntity\r\n{\r\n permissionDTO?: Permission;\r\n\r\n constructor(\r\n {\r\n permissionDTO\r\n }:{\r\n permissionDTO?: Permission; \r\n } = {}\r\n ) {\r\n super('PermissionSaveBody'); \r\n\r\n this.permissionDTO = permissionDTO;\r\n }\r\n}\r\n\r\n","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class InitCompanyAuthDialogDetails extends BaseEntity\r\n{\r\n image?: string;\r\n companyName?: string;\r\n \r\n constructor(\r\n {\r\n image,\r\n companyName,\r\n }:{\r\n image?: string;\r\n companyName?: string;\r\n } = {}\r\n ) {\r\n super('InitCompanyAuthDialogDetails');\r\n\r\n this.image = image;\r\n this.companyName = companyName;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Namebook } from '../entities/namebook';\r\nimport { TableFilter } from '../entities/table-filter';\r\nimport { Login, Registration, RegistrationVerificationResult, RefreshTokenRequest, AuthResult, Role, User, ExternalProvider, VerificationTokenRequest, RoleSaveBody, RoleMainUIForm } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { TableResponse } from '../entities/table-response';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n\r\n constructor(\r\n protected http: HttpClient,\r\n protected config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n //#region Authentication\r\n\r\n register = (request: VerificationTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/Register`, request, this.config.httpOptions);\r\n }\r\n\r\n sendRegistrationVerificationEmail = (registrationDTO: Registration): Observable<RegistrationVerificationResult> => { \r\n return this.http.post<RegistrationVerificationResult>(`${this.config.apiUrl}/Security/SendRegistrationVerificationEmail`, registrationDTO, this.config.httpOptions);\r\n }\r\n \r\n login = (request: VerificationTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/Login`, request, this.config.httpOptions);\r\n }\r\n\r\n loginExternal = (externalProviderDTO: ExternalProvider): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/LoginExternal`, externalProviderDTO, this.config.httpOptions);\r\n }\r\n\r\n sendLoginVerificationEmail = (loginDTO: Login): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/SendLoginVerificationEmail`, loginDTO, this.config.httpOptions);\r\n }\r\n\r\n\r\n logout = (browserId: string): Observable<any> => { \r\n return this.http.get<any>(`${this.config.apiUrl}/Security/Logout?browserId=${browserId}`);\r\n }\r\n\r\n refreshToken = (request: RefreshTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/RefreshToken`, request, this.config.httpOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region User\r\n\r\n getCurrentUser = (): Observable<User> => { \r\n return this.http.get<User>(`${this.config.apiUrl}/Security/GetCurrentUser`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getCurrentUserPermissionCodes = (): Observable<string[]> => { \r\n return this.http.get<string[]>(`${this.config.apiUrl}/Security/GetCurrentUserPermissionCodes`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Role\r\n\r\n getRoleTableData = (dto: TableFilter): Observable<TableResponse> => { \r\n return this.http.post<TableResponse>(`${this.config.apiUrl}/Security/GetRoleTableData`, dto, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n exportRoleTableDataToExcel = (dto: TableFilter): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/ExportRoleTableDataToExcel`, dto, this.config.httpOptions);\r\n }\r\n\r\n deleteRole = (id: number): Observable<any> => { \r\n return this.http.delete<any>(`${this.config.apiUrl}/Security/DeleteRole?id=${id}`);\r\n }\r\n\r\n getRoleMainUIFormDTO = (id: number): Observable<RoleMainUIForm> => {\r\n return this.http.get<RoleMainUIForm>(`${this.config.apiUrl}/Security/GetRoleMainUIFormDTO?id=${id}`);\r\n }\r\n\r\n getRole = (id: number): Observable<Role> => {\r\n return this.http.get<Role>(`${this.config.apiUrl}/Security/GetRole?id=${id}`);\r\n }\r\n\r\n saveRole = (dto: RoleSaveBody): Observable<Role> => { \r\n return this.http.put<Role>(`${this.config.apiUrl}/Security/SaveRole`, dto, this.config.httpOptions);\r\n }\r\n\r\n getUsersNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getPermissionsDropdownListForRole = (): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsDropdownListForRole`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getPermissionsNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getUsersAutocompleteListForRole = (limit: number, query: string): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersAutocompleteListForRole?limit=${limit}&query=${query}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Notification\r\n\r\n getUnreadNotificationsCountForCurrentUser = (): Observable<number> => { \r\n return this.http.get<number>(`${this.config.apiUrl}/Notification/GetUnreadNotificationsCountForCurrentUser`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, firstValueFrom, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { map, tap, delay, finalize } from 'rxjs/operators';\r\nimport { SocialUser, SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { ExternalProvider, Login, VerificationTokenRequest, AuthResult, Registration, RegistrationVerificationResult, RefreshTokenRequest, User } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { ApiSecurityService } from './api.service.security';\r\nimport { InitCompanyAuthDialogDetails } from '../entities/init-company-auth-dialog-details';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthBaseService implements OnDestroy {\r\n private readonly apiUrl = this.config.apiUrl;\r\n private timer?: Subscription;\r\n\r\n protected _currentUserPermissionCodes = new BehaviorSubject<string[] | null>(undefined);\r\n currentUserPermissionCodes$ = this._currentUserPermissionCodes.asObservable();\r\n\r\n protected _user = new BehaviorSubject<User | null>(undefined);\r\n user$ = this._user.asObservable();\r\n\r\n // Google auth\r\n private authChangeSub = new Subject<boolean>();\r\n private extAuthChangeSub = new Subject<SocialUser>();\r\n public authChanged = this.authChangeSub.asObservable();\r\n public extAuthChanged = this.extAuthChangeSub.asObservable();\r\n \r\n constructor(\r\n protected router: Router,\r\n protected http: HttpClient,\r\n protected externalAuthService: SocialAuthService,\r\n protected apiService: ApiSecurityService,\r\n protected config: ConfigBaseService,\r\n ) {\r\n window.addEventListener('storage', this.storageEventListener);\r\n\r\n // Google auth\r\n this.externalAuthService.authState.subscribe((user) => {\r\n const externalAuth: ExternalProvider = {\r\n // provider: user.provider,\r\n idToken: user.idToken\r\n }\r\n this.loginExternal(externalAuth).subscribe(() => {\r\n this.navigateToDashboard();\r\n });\r\n this.extAuthChangeSub.next(user);\r\n });\r\n }\r\n\r\n private storageEventListener = (event: StorageEvent) => {\r\n if (event.storageArea === localStorage) {\r\n if (event.key === 'logout-event') {\r\n this.stopTokenTimer();\r\n this._user.next(null);\r\n\r\n this._currentUserPermissionCodes.next(null);\r\n }\r\n if (event.key === 'login-event') {\r\n this.stopTokenTimer();\r\n\r\n this.apiService.getCurrentUser().subscribe((user: User) => {\r\n this._user.next({\r\n id: user.id,\r\n email: user.email\r\n });\r\n\r\n this.setCurrentUserPermissionCodes().subscribe();\r\n });\r\n }\r\n }\r\n }\r\n\r\n sendLoginVerificationEmail(body: Login): Observable<any> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n return this.apiService.sendLoginVerificationEmail(body);\r\n }\r\n\r\n login(body: VerificationTokenRequest): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/Login`, body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n loginExternal(body: ExternalProvider): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/LoginExternal`, body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n sendRegistrationVerificationEmail(body: Registration): Observable<RegistrationVerificationResult> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n return this.apiService.sendRegistrationVerificationEmail(body);\r\n }\r\n \r\n register(body: VerificationTokenRequest): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.apiService.register(body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n handleLoginResult(loginResultObservable: Observable<AuthResult>){\r\n return loginResultObservable.pipe(\r\n map(async (loginResult: AuthResult) => {\r\n this.setLocalStorage(loginResult);\r\n this._user.next({\r\n id: loginResult.userId,\r\n email: loginResult.email,\r\n });\r\n this.startTokenTimer();\r\n this.setCurrentUserPermissionCodes().subscribe()\r\n return loginResult;\r\n })\r\n );\r\n }\r\n\r\n logout() {\r\n const browserId = this.getBrowserId();\r\n this.http\r\n .get(`${this.apiUrl}/Security/Logout?browserId=${browserId}`)\r\n .pipe(\r\n finalize(() => {\r\n this.clearLocalStorage();\r\n this._user.next(null);\r\n this.onAfterLogout();\r\n this.stopTokenTimer();\r\n this.router.navigate([this.config.loginSlug]);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n onAfterLogout = () => {\r\n this._currentUserPermissionCodes.next(null);\r\n }\r\n\r\n refreshToken(): Observable<AuthResult> {\r\n let refreshToken = localStorage.getItem(this.config.refreshTokenKey);\r\n\r\n if (!refreshToken) {\r\n this.clearLocalStorage();\r\n return of(null);\r\n }\r\n\r\n const browserId = this.getBrowserId();\r\n let body: RefreshTokenRequest = new RefreshTokenRequest();\r\n body.browserId = browserId;\r\n body.refreshToken = refreshToken;\r\n \r\n return this.http\r\n .post<AuthResult>(`${this.apiUrl}/Security/RefreshToken`, body, this.config.httpSkipSpinnerOptions)\r\n .pipe(\r\n map((loginResult) => {\r\n this._user.next({\r\n id: loginResult.userId,\r\n email: loginResult.email\r\n });\r\n \r\n this.setLocalStorage(loginResult);\r\n this.startTokenTimer();\r\n this.onAfterRefreshToken();\r\n \r\n return loginResult;\r\n })\r\n );\r\n }\r\n\r\n onAfterRefreshToken = () => {\r\n this.setCurrentUserPermissionCodes().subscribe(); // FT: Needs to be after setting local storage\r\n }\r\n\r\n setLocalStorage(loginResult: AuthResult) {\r\n localStorage.setItem(this.config.accessTokenKey, loginResult.accessToken);\r\n localStorage.setItem(this.config.refreshTokenKey, loginResult.refreshToken);\r\n localStorage.setItem('login-event', 'login' + Math.random());\r\n }\r\n\r\n clearLocalStorage() {\r\n localStorage.removeItem(this.config.accessTokenKey);\r\n localStorage.removeItem(this.config.refreshTokenKey);\r\n localStorage.setItem('logout-event', 'logout' + Math.random());\r\n }\r\n\r\n getBrowserId(): string {\r\n let browserId = localStorage.getItem(this.config.browserIdKey); // FT: We don't need to remove this from the local storage ever, only if the user manuely deletes it, we will handle it\r\n if (!browserId) {\r\n browserId = crypto.randomUUID();\r\n localStorage.setItem(this.config.browserIdKey, browserId);\r\n }\r\n return browserId;\r\n }\r\n\r\n isAccessTokenExpired(): Observable<boolean> {\r\n const expired = this.getTokenRemainingTime() < 5000;\r\n \r\n return of(expired);\r\n }\r\n\r\n getTokenRemainingTime(): number {\r\n const accessToken = this.getAccessToken();\r\n\r\n if (!accessToken) {\r\n return 0;\r\n }\r\n\r\n const jwtToken = JSON.parse(atob(accessToken.split('.')[1]));\r\n const expires = new Date(jwtToken.exp * 1000);\r\n \r\n return expires.getTime() - Date.now();\r\n }\r\n\r\n getAccessToken(): string {\r\n return localStorage.getItem(this.config.accessTokenKey);\r\n }\r\n\r\n private startTokenTimer() {\r\n const timeout = this.getTokenRemainingTime();\r\n this.timer = of(true)\r\n .pipe(\r\n delay(timeout),\r\n tap({\r\n next: () => this.refreshToken().subscribe(),\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private stopTokenTimer() {\r\n this.timer?.unsubscribe();\r\n }\r\n\r\n navigateToDashboard(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n logoutGoogle = () => {\r\n this.externalAuthService.signOut();\r\n }\r\n\r\n initCompanyAuthDialogDetails = (): Observable<InitCompanyAuthDialogDetails> => {\r\n return of(\r\n new InitCompanyAuthDialogDetails ({\r\n image: `assets/images/logo/logo.svg`, \r\n companyName: this.config.companyName,\r\n })\r\n );\r\n }\r\n\r\n setCurrentUserPermissionCodes(): Observable<string[]> {\r\n return this.apiService.getCurrentUserPermissionCodes().pipe(\r\n map(permissionCodes => {\r\n this._currentUserPermissionCodes.next(permissionCodes);\r\n return permissionCodes;\r\n }\r\n ));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('storage', this.storageEventListener.bind(this));\r\n this.onAfterNgOnDestroy();\r\n }\r\n\r\n onAfterNgOnDestroy = () => {};\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { ErrorHandler, Injectable } from '@angular/core';\r\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpiderlyErrorHandler implements ErrorHandler {\r\n constructor(\r\n private messageService: SpiderlyMessageService, \r\n private translocoService: TranslocoService, \r\n private config: ConfigBaseService,\r\n ) {\r\n\r\n }\r\n\r\n handleError(error: any): void {\r\n if(this.config.production == false){\r\n console.error(error);\r\n }\r\n\r\n if(error instanceof HttpErrorResponse == false){\r\n this.messageService.errorMessage(\r\n this.translocoService.translate('UnexpectedErrorDetails'),\r\n this.translocoService.translate('UnexpectedErrorTitle'),\r\n );\r\n }\r\n\r\n }\r\n}\r\n","import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, APP_INITIALIZER, Optional, SkipSelf, ErrorHandler } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { authInitializer } from '../services/app-initializer';\r\nimport { JwtInterceptor } from '../interceptors/jwt.interceptor';\r\nimport { UnauthorizedInterceptor } from '../interceptors/unauthorized.interceptor';\r\nimport { HttpLoadingInterceptor } from '../interceptors/http-loading.interceptor';\r\nimport { JsonHttpInterceptor } from '../interceptors/json-parser.interceptor';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\nimport { SpiderlyErrorHandler } from '../handlers/spiderly-error-handler';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n HttpClientModule,\r\n BrowserAnimationsModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n ],\r\n providers: [\r\n MessageService,\r\n ConfirmationService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: authInitializer,\r\n multi: true,\r\n deps: [AuthBaseService],\r\n },\r\n { \r\n provide: HTTP_INTERCEPTORS,\r\n useClass: JwtInterceptor,\r\n multi: true \r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: UnauthorizedInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: HttpLoadingInterceptor,\r\n multi: true,\r\n },\r\n { \r\n provide: HTTP_INTERCEPTORS,\r\n useClass: JsonHttpInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useClass: SpiderlyErrorHandler,\r\n },\r\n ],\r\n exports: [\r\n BrowserModule,\r\n CommonModule,\r\n HttpClientModule,\r\n BrowserAnimationsModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n ] \r\n})\r\nexport class CoreModule {\r\n constructor(@Optional() @SkipSelf() core: CoreModule) {\r\n if (core) {\r\n throw new Error('Core Module can only be imported to AppModule.');\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { AvatarGroupModule } from 'primeng/avatargroup';\r\nimport { ProgressBarModule } from 'primeng/progressbar';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { EditorModule } from 'primeng/editor';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { CardModule } from 'primeng/card';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { DataViewModule } from 'primeng/dataview';\r\n\r\n@NgModule({\r\n imports: [\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n DropdownModule,\r\n TooltipModule,\r\n InputSwitchModule,\r\n DialogModule,\r\n CalendarModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n PasswordModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n SidebarModule,\r\n BadgeModule,\r\n RadioButtonModule,\r\n RippleModule,\r\n PanelModule,\r\n AutoCompleteModule,\r\n AvatarModule,\r\n AvatarGroupModule,\r\n ProgressBarModule,\r\n DividerModule,\r\n InputNumberModule,\r\n OverlayPanelModule,\r\n MenuModule,\r\n PaginatorModule,\r\n EditorModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n TimelineModule,\r\n CardModule,\r\n ColorPickerModule,\r\n FileUploadModule,\r\n DataViewModule,\r\n ],\r\n exports: [\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n DropdownModule,\r\n TooltipModule,\r\n InputSwitchModule,\r\n DialogModule,\r\n CalendarModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n PasswordModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n SidebarModule,\r\n BadgeModule,\r\n RadioButtonModule,\r\n RippleModule,\r\n PanelModule,\r\n AutoCompleteModule,\r\n AvatarModule,\r\n AvatarGroupModule,\r\n ProgressBarModule,\r\n DividerModule,\r\n InputNumberModule,\r\n OverlayPanelModule,\r\n MenuModule,\r\n PaginatorModule,\r\n EditorModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n TimelineModule,\r\n CardModule,\r\n ColorPickerModule,\r\n FileUploadModule,\r\n DataViewModule\r\n ],\r\n declarations: [],\r\n providers: [\r\n DialogService,\r\n ],\r\n})\r\nexport class PrimengModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslocoLoader } from '@jsverse/transloco';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({ \r\n providedIn: 'root' \r\n})\r\nexport class SpiderlyTranslocoLoader implements TranslocoLoader {\r\n constructor(private http: HttpClient) {}\r\n\r\n getTranslation(lang: string) {\r\n return this.http.get(`./assets/i18n/${lang}.json`);\r\n }\r\n\r\n}","import { provideTransloco, provideTranslocoLoader, TranslocoModule } from '@jsverse/transloco';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { SpiderlyTranslocoLoader } from '../services/spiderly-transloco-loader';\r\nimport { provideTranslocoPreloadLangs } from '@jsverse/transloco-preload-langs';\r\n\r\n@NgModule({\r\n imports: [TranslocoModule],\r\n exports: [TranslocoModule],\r\n})\r\nexport class SpiderlyTranslocoModule {\r\n\r\n static forRoot(): ModuleWithProviders<SpiderlyTranslocoModule> {\r\n return {\r\n ngModule: SpiderlyTranslocoModule,\r\n providers: [\r\n provideTranslocoPreloadLangs(['sr-Latn-RS']),\r\n provideTransloco({\r\n config: {\r\n availableLangs: [\r\n 'sr-Latn-RS', 'sr-Latn-RS.generated', \r\n 'en', 'en.generated',\r\n ],\r\n defaultLang: 'sr-Latn-RS',\r\n fallbackLang: [\r\n 'sr-Latn-RS.generated',\r\n ],\r\n missingHandler: {\r\n useFallbackTranslation: true,\r\n logMissingKey: false,\r\n },\r\n reRenderOnLangChange: true,\r\n },\r\n loader: SpiderlyTranslocoLoader\r\n }),\r\n ],\r\n };\r\n }\r\n\r\n}","import { FormArray, FormControl, FormControlOptions, FormControlState, FormGroup, ValidatorFn } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\n\r\nexport interface SpiderlyValidatorFn extends ValidatorFn {\r\n hasNotEmptyRule?: boolean;\r\n}\r\n\r\n// FT: It's made like generic type because of <number>, <string> etc. not to put class like User.\r\nexport class SpiderlyFormControl<T = any> extends FormControl<T> {\r\n public label: string;\r\n public labelForDisplay: string;\r\n public required: boolean;\r\n private _spiderValidator: SpiderlyValidatorFn | null;\r\n\r\n constructor(value: any, opts: FormControlOptions=null, required:boolean=false) {\r\n opts = opts ?? {updateOn: 'blur'};\r\n super(value, opts);\r\n this.required = required;\r\n }\r\n\r\n override getRawValue(): T { // FT: Doing this because .value gets only not disabled values\r\n return super.getRawValue() as T;\r\n }\r\n\r\n public override get validator(): SpiderlyValidatorFn | null {\r\n return this._spiderValidator;\r\n }\r\n\r\n public override set validator(validator: SpiderlyValidatorFn | null) {\r\n this._spiderValidator = validator;\r\n this.setValidators(validator); \r\n }\r\n}\r\n\r\nexport class SpiderlyFormGroup<TValue = any> extends FormGroup {\r\n declare controls: { [P in keyof TValue]: SpiderlyFormControl<TValue[P]> };\r\n\r\n constructor(controls: { [P in keyof TValue]: SpiderlyFormControl<TValue[P]> }) {\r\n super(controls);\r\n }\r\n\r\n override getRawValue(): TValue { // FT: Doing this because .value gets only not disabled values\r\n return super.getRawValue() as TValue;\r\n }\r\n\r\n public name?: string; // FT: Using for nested form groups\r\n public mainDTOName?: string;\r\n public saveObservableMethod?: (saveBody: any) => Observable<any>;\r\n public initSaveBody?: () => BaseEntity = () => null;\r\n public controlNamesFromHtml?: string[] = [];\r\n}\r\n\r\nexport class SpiderlyFormArray<TValue = any> extends FormArray {\r\n override value: TValue[]; // FT: There is no getRawValue in FormArray\r\n public required: boolean;\r\n public modelConstructor: TValue;\r\n public translationKey: string;\r\n public controlNamesFromHtml?: string[] = [];\r\n}","import { Action, Column } from \"../components/spiderly-data-table/spiderly-data-table.component\";\r\nimport { HttpResponse } from \"@angular/common/http\";\r\nimport { BaseEntity } from \"../entities/base-entity\";\r\nimport { SpiderlyFormGroup } from \"../components/spiderly-form-control/spiderly-form-control\";\r\nimport { map, Observable } from 'rxjs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { TableFilter } from \"../entities/table-filter\";\r\nimport { Namebook } from \"../entities/namebook\";\r\nimport { Codebook } from \"../entities/codebook\";\r\nimport { PrimengOption } from \"../entities/primeng-option\";\r\nimport { SpiderlyTab } from \"../components/spiderly-panels/panel-header/panel-header.component\";\r\n\r\n// Helper function for PrecisionScale validation (to be added in the TypeScript output):\r\nexport function validatePrecisionScale(value: any, precision: number, scale: number, ignoreTrailingZeros: boolean): boolean {\r\n if (typeof value !== 'number') return false;\r\n const [integerPart, decimalPart] = value.toString().split('.');\r\n if (integerPart.length > precision - scale) return false;\r\n if (decimalPart && decimalPart.length > scale) return false;\r\n if (!ignoreTrailingZeros && decimalPart && decimalPart.replace(/0+$/, '').length > scale) return false;\r\n return true;\r\n}\r\n\r\nexport function getMimeTypeForFileName(fileName: string): string {\r\n const mimeTypes: { [key: string]: string } = {\r\n '.jpg': 'image/jpeg',\r\n '.jpeg': 'image/jpeg',\r\n '.png': 'image/png',\r\n '.webp': 'image/webp',\r\n '.gif': 'image/gif',\r\n '.pdf': 'application/pdf',\r\n '.txt': 'text/plain',\r\n '.html': 'text/html',\r\n '.css': 'text/css',\r\n '.js': 'application/javascript',\r\n '.json': 'application/json',\r\n '.csv': 'text/csv',\r\n '.xml': 'application/xml',\r\n '.zip': 'application/zip',\r\n '.mp4': 'video/mp4',\r\n '.mp3': 'audio/mpeg',\r\n '.wav': 'audio/wav',\r\n '.avi': 'video/x-msvideo',\r\n '.doc': 'application/msword',\r\n '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n '.xls': 'application/vnd.ms-excel',\r\n '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n // Add more as needed\r\n };\r\n\r\n const extension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();\r\n return mimeTypes[extension] || 'application/octet-stream'; // 'application/octet-stream' is a generic binary type\r\n}\r\n\r\nexport function adjustColor(color: string, percent: number): string {\r\n if (!/^#([0-9A-F]{3}){1,2}$/i.test(color)) {\r\n console.error('Invalid hex color format');\r\n }\r\n\r\n let r: number, g: number, b: number;\r\n if (color.length === 7) {\r\n r = parseInt(color.slice(1, 3), 16);\r\n g = parseInt(color.slice(3, 5), 16);\r\n b = parseInt(color.slice(5, 7), 16);\r\n } else {\r\n r = parseInt(color[1] + color[1], 16);\r\n g = parseInt(color[2] + color[2], 16);\r\n b = parseInt(color[3] + color[3], 16);\r\n }\r\n\r\n const adjust = (value: number, percent: number): number => {\r\n const amount = (percent / 100) * 255;\r\n const newValue = Math.min(Math.max(value + amount, 0), 255);\r\n return Math.round(newValue);\r\n };\r\n\r\n r = adjust(r, percent);\r\n g = adjust(g, percent);\r\n b = adjust(b, percent);\r\n\r\n const toHex = (value: number): string => {\r\n const hex = value.toString(16).padStart(2, '0');\r\n return hex;\r\n };\r\n\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\r\n}\r\n\r\nexport function getHtmlImgDisplayString64(base64String: string){\r\n if (base64String == null)\r\n return null;\r\n\r\n const [header, base64Content] = base64String.split(';base64,');\r\n const fileName = header.split('=')[1];\r\n const mimeType = getMimeTypeForFileName(fileName);\r\n return `data:${mimeType};base64, ${base64Content}`;\r\n}\r\n\r\nexport function nameof<TObject>(obj: TObject, key: keyof TObject): string;\r\nexport function nameof<TObject>(key: keyof TObject): string;\r\nexport function nameof(key1: any, key2?: any): any {\r\n return key2 ?? key1;\r\n}\r\nexport function nameOf<TObject extends {name:S}, S extends string>(funcOrClass: TObject): S {\r\n return funcOrClass.name;\r\n}\r\n\r\nexport function getParentUrl(currentUrl: string){\r\n const urlSegments = currentUrl.split('/');\r\n urlSegments.pop();\r\n const parentUrl = urlSegments.join('/');\r\n return parentUrl;\r\n}\r\n\r\nexport function capitalizeFirstLetter(inputString: string): string {\r\n return inputString.charAt(0).toUpperCase() + inputString.slice(1);\r\n }\r\n\r\n // export function getMonth(number: number): string {\r\n // const months: string[] = [\r\n // \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n // \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n // ];\r\n \r\n // if (number < 1 || number > 12) {\r\n // throw new Error(\"Invalid month number. It should be between 1 and 12.\");\r\n // }\r\n \r\n // return months[number - 1];\r\n // }\r\n\r\n export function getMonth(numberOfTheMonth: number): string {\r\n const meseci: string[] = [\r\n \"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\",\r\n \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\r\n ];\r\n \r\n if (numberOfTheMonth < 1 || numberOfTheMonth > 12) {\r\n console.error(\"Nevažeći broj meseca. Broj treba biti između 1 i 12.\");\r\n }\r\n \r\n return meseci[numberOfTheMonth - 1];\r\n }\r\n\r\n export function singleOrDefault <T>(array: T[], predicate: (item: T) => boolean): T | undefined {\r\n const filtered = array.filter(predicate);\r\n if (filtered.length > 1) {\r\n throw new Error(\"Sequence contains more than one matching element.\");\r\n }\r\n return filtered[0];\r\n };\r\n\r\n export function pushAction(cols: Column[], action: Action){\r\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\r\n if (actionsColumn) {\r\n actionsColumn.actions = [...actionsColumn.actions, action];\r\n }\r\n }\r\n\r\n export function deleteAction(cols: Column[], actionField: string): void {\r\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\r\n\r\n if (actionsColumn && actionsColumn.actions) {\r\n const index = actionsColumn.actions.findIndex(a => a.field === actionField);\r\n if (index !== -1) {\r\n actionsColumn.actions.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n export function getFileNameFromContentDisposition(\r\n resp: HttpResponse<Blob>,\r\n defaultName: string\r\n ): string {\r\n let fileName;\r\n if (resp && resp.headers && resp.headers.get('Content-Disposition')) {\r\n let val = resp.headers.get('Content-Disposition');\r\n let start = val.indexOf('filename=');\r\n if (start != -1) {\r\n let end = val.indexOf(';', start);\r\n fileName =\r\n end != -1 ? val.substring(start + 9, end) : val.substring(start + 9);\r\n fileName = fileName.split('\"').join('');\r\n }\r\n }\r\n return fileName ?? defaultName;\r\n }\r\n\r\n export const getControl = <T extends BaseEntity>(formControlName: string & keyof T, formGroup: SpiderlyFormGroup<T>) => {\r\n if (formGroup == null)\r\n return null; // FT: When we initialized form group again this will happen\r\n \r\n if(formGroup.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n formGroup.controlNamesFromHtml.push(formControlName);\r\n \r\n let formControl = formGroup.controls[formControlName];\r\n if (formControl == null) {\r\n console.error(`FT: The property ${formControlName} in the form group ${formGroup.getRawValue().typeName} doesn't exist`);\r\n return null;\r\n }\r\n \r\n return formControl;\r\n }\r\n\r\n export function toCommaSeparatedString<T>(input: T[]): string {\r\n const stringList = input.map(item => (item?.toString() ?? ''));\r\n\r\n if (stringList.length > 1) {\r\n return `${stringList.slice(0, -1).join(', ')} and ${stringList[stringList.length - 1]}`;\r\n } else {\r\n return stringList[0] ?? '';\r\n }\r\n }\r\n\r\n export function isImageFileType(mimeType: string): boolean {\r\n if (mimeType.startsWith('image/')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n export function isExcelFileType(mimeType: string): boolean {\r\n if (mimeType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n mimeType === 'application/vnd.ms-excel'\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n export function exportListToExcel(exportTableDataToExcelObservableMethod: (tableFilter: TableFilter) => Observable<any>, tableFilter: TableFilter) {\r\n exportTableDataToExcelObservableMethod(tableFilter).subscribe(res => {\r\n let fileName = getFileNameFromContentDisposition(res, \"ExcelExport.xlsx\");\r\n FileSaver.saveAs(res.body, decodeURIComponent(fileName));\r\n });\r\n }\r\n\r\n export function getPrimengDropdownNamebookOptions(getDropdownListObservable: (parentEntityId?: number) => Observable<Namebook[]>, parentEntityId?: number): Observable<PrimengOption[]>{\r\n return getDropdownListObservable(parentEntityId ?? 0).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.id }));\r\n })\r\n );\r\n }\r\n\r\n export function getPrimengDropdownCodebookOptions(getDropdownListObservable: () => Observable<Codebook[]>): Observable<PrimengOption[]>{\r\n return getDropdownListObservable().pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.code }));\r\n })\r\n );\r\n }\r\n\r\n export function getPrimengAutocompleteNamebookOptions(getAutocompleteListObservable: (limit: number, query: string, parentEntityId?: number) => Observable<Namebook[]>, limit: number, query: string, parentEntityId?: number): Observable<PrimengOption[]>{\r\n return getAutocompleteListObservable(limit, query, parentEntityId ?? 0).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.id }));\r\n })\r\n );\r\n }\r\n\r\n export function getPrimengAutocompleteCodebookOptions(getAutocompleteListObservable: (limit: number, query: string) => Observable<Codebook[]>, limit: number, query: string): Observable<PrimengOption[]>{\r\n return getAutocompleteListObservable(limit, query).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.code }));\r\n })\r\n );\r\n }\r\n\r\n export const isNullOrEmpty = (input: string) => {\r\n if(input == null || input === ''){\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n export const selectedTab = (tabs: SpiderlyTab[]): number => {\r\n const tab = singleOrDefault(tabs, x => x.isSelected);\r\n\r\n if (tab) {\r\n return tab.id;\r\n }\r\n else{\r\n return null;\r\n }\r\n }","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class TranslateLabelsAbstractService {\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n abstract translate (name: string): string;\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyValidatorFn } from \"../components/spiderly-form-control/spiderly-form-control\";\r\nimport { ValidationErrors } from \"@angular/forms\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class ValidatorAbstractService {\r\n\r\n constructor(\r\n protected translocoService: TranslocoService\r\n ) {\r\n }\r\n\r\n abstract setValidator (formControl: SpiderlyFormControl, className: string): SpiderlyValidatorFn;\r\n\r\n isArrayEmpty = (control: SpiderlyFormControl): SpiderlyValidatorFn => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control.value;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n return validator;\r\n }\r\n\r\n notEmpty = (control: SpiderlyFormControl): void => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control.value;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value !== '';\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n control.validator = validator;\r\n control.updateValueAndValidity();\r\n }\r\n \r\n isFormArrayEmpty = (control: SpiderlyFormArray): SpiderlyValidatorFn => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n return validator;\r\n }\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable } from '@angular/core';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../components/spiderly-form-control/spiderly-form-control';\r\nimport { BaseEntity } from '../entities/base-entity';\r\nimport { TranslateLabelsAbstractService } from './translate-labels-abstract.service';\r\nimport { ValidatorAbstractService } from './validator-abstract.service';\r\nimport { SpiderlyMessageService } from './spiderly-message.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BaseFormService {\r\n constructor(\r\n private translateLabelsService: TranslateLabelsAbstractService,\r\n private validatorService: ValidatorAbstractService,\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService\r\n ) {}\r\n\r\n addFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n parentFormGroup: SpiderlyFormGroup, \r\n modelConstructor: any, \r\n propertyNameInSaveBody: string,\r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n if (modelConstructor == null)\r\n return null;\r\n\r\n if (formGroup == null)\r\n console.error('FT: You need to instantiate the form group.')\r\n\r\n this.initFormGroup(formGroup, modelConstructor, updateOnChangeControls);\r\n parentFormGroup.setControl(propertyNameInSaveBody, formGroup); // FT: Use setControl because it will update formGroup if it already exists\r\n\r\n return formGroup;\r\n }\r\n\r\n initFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n modelConstructor: T & BaseEntity, \r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n if (formGroup == null)\r\n console.error('FT: You need to instantiate the form group.')\r\n\r\n Object.keys(modelConstructor).forEach((formControlName) => {\r\n let formControl: SpiderlyFormControl;\r\n \r\n const formControlValue = modelConstructor[formControlName];\r\n \r\n if (updateOnChangeControls?.includes(formControlName as keyof T) ||\r\n (formControlName.endsWith('Id') && formControlName.length > 2)\r\n ){\r\n formControl = new SpiderlyFormControl(formControlValue, { updateOn: 'change' });\r\n }\r\n else{\r\n formControl = new SpiderlyFormControl(formControlValue, { updateOn: 'blur' });\r\n }\r\n\r\n formControl.label = formControlName;\r\n formControl.labelForDisplay = this.getTranslatedLabel(formControlName);\r\n\r\n formGroup.setControl(formControlName, formControl); // FT: Use setControl because it will update formControl if it already exists\r\n\r\n this.validatorService.setValidator(formControl, modelConstructor.typeName);\r\n });\r\n\r\n return formGroup;\r\n }\r\n\r\n getTranslatedLabel(formControlName: string): string {\r\n if (formControlName.endsWith('Id') && formControlName.length > 2) {\r\n formControlName = formControlName.substring(0, formControlName.length - 2);\r\n } \r\n else if (formControlName.endsWith('DisplayName')) {\r\n formControlName = formControlName.replace('DisplayName', '');\r\n } \r\n\r\n return this.translateLabelsService.translate(formControlName);\r\n }\r\n\r\n getFormArrayGroups<T>(formArray: SpiderlyFormArray<T>): SpiderlyFormGroup<T>[]{\r\n return formArray.controls as SpiderlyFormGroup<T>[]\r\n }\r\n\r\n addNewFormGroupToFormArray<T>(\r\n formArray: SpiderlyFormArray<T>, \r\n modelConstructor: T & BaseEntity,\r\n index: number,\r\n ) : SpiderlyFormGroup {\r\n let helperFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, modelConstructor);\r\n \r\n if (index == null) {\r\n formArray.push(helperFormGroup);\r\n }else{\r\n formArray.insert(index, helperFormGroup);\r\n }\r\n\r\n return helperFormGroup;\r\n }\r\n\r\n initFormArray<T>(\r\n parentFormGroup: SpiderlyFormGroup, \r\n modelList: (T & BaseEntity)[], \r\n modelConstructor: T & BaseEntity, \r\n formArraySaveBodyName: string, \r\n formArrayTranslationKey: string, \r\n required: boolean = false)\r\n {\r\n if (modelList == null)\r\n return null;\r\n\r\n let formArray = new SpiderlyFormArray<T>([]);\r\n formArray.required = required;\r\n formArray.modelConstructor = modelConstructor;\r\n formArray.translationKey = formArrayTranslationKey;\r\n\r\n modelList.forEach(model => {\r\n Object.assign(modelConstructor, model);\r\n let helperFormGroup: SpiderlyFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, formArray.modelConstructor);\r\n formArray.push(helperFormGroup);\r\n });\r\n\r\n parentFormGroup.setControl(formArraySaveBodyName, formArray); // FT: Use setControl because it will update formArray if it already exists\r\n\r\n return formArray;\r\n }\r\n\r\n disableAllFormControls<T>(formArray: SpiderlyFormArray<T>){\r\n formArray.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\r\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\r\n segmentationItemFormGroup.controls[key].disable();\r\n });\r\n });\r\n }\r\n\r\n enableAllFormControls<T>(formArray: SpiderlyFormArray<T>){\r\n formArray.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\r\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\r\n segmentationItemFormGroup.controls[key].enable();\r\n });\r\n });\r\n }\r\n\r\n //#region Helpers\r\n\r\n // FT: If you want to call single method\r\n checkFormGroupValidity = <T>(formGroup: SpiderlyFormGroup<T>): boolean => {\r\n if (formGroup.invalid) {\r\n Object.keys(formGroup.controls).forEach(key => {\r\n formGroup.controls[key].markAsDirty(); // this.formGroup.markAsDirty(); // FT: For some reason this doesnt work\r\n });\r\n\r\n this.showInvalidFieldsMessage();\r\n\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n\r\n showInvalidFieldsMessage = () => {\r\n this.messageService.warningMessage(\r\n this.translocoService.translate('YouHaveSomeInvalidFieldsDescription'),\r\n this.translocoService.translate('YouHaveSomeInvalidFieldsTitle'), \r\n );\r\n }\r\n\r\n generateNewNegativeId<T extends BaseEntity>(formArray: SpiderlyFormArray<T>){\r\n return -formArray.getRawValue().filter(x => x.id < 0).length - 1;\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import { BaseFormService } from './../../services/base-form.service';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { getControl, getParentUrl } from '../../services/helper-functions';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { LastMenuIconIndexClicked } from '../../entities/last-menu-icon-index-clicked';\r\n\r\n@Component({\r\n selector: 'base-form',\r\n template: '',\r\n styles: [],\r\n})\r\nexport class BaseFormCopy implements OnInit { \r\n formGroup: SpiderlyFormGroup = new SpiderlyFormGroup({});\r\n saveBody: any;\r\n successfulSaveToastDescription: string = this.translocoService.translate('SuccessfulSaveToastDescription');\r\n loading: boolean = true;\r\n\r\n private modelDiffer: KeyValueDiffer<string, any>;\r\n\r\n constructor(\r\n protected differs: KeyValueDiffers, \r\n protected http: HttpClient, \r\n protected messageService: SpiderlyMessageService, \r\n protected changeDetectorRef: ChangeDetectorRef,\r\n protected router: Router, \r\n protected route: ActivatedRoute,\r\n protected translocoService: TranslocoService,\r\n protected baseFormService: BaseFormService,\r\n ) {\r\n }\r\n\r\n ngOnInit(){\r\n }\r\n\r\n //#region Model\r\n\r\n initFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n parentFormGroup: SpiderlyFormGroup, \r\n modelConstructor: any, \r\n propertyNameInSaveBody: string,\r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n return this.baseFormService.addFormGroup(\r\n formGroup, parentFormGroup, modelConstructor, propertyNameInSaveBody, updateOnChangeControls\r\n );\r\n }\r\n\r\n createFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n modelConstructor: T & BaseEntity, \r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n return this.baseFormService.initFormGroup(\r\n formGroup, modelConstructor, updateOnChangeControls\r\n );\r\n }\r\n\r\n control = <T extends BaseEntity>(formControlName: string & keyof T, formGroup: SpiderlyFormGroup<T>) => {\r\n return getControl(formControlName, formGroup);\r\n }\r\n\r\n onSave = (reroute: boolean = true) => {\r\n this.saveBody = this.formGroup.initSaveBody();\r\n this.onBeforeSave(this.saveBody);\r\n\r\n this.saveBody = this.saveBody ?? this.formGroup.getRawValue();\r\n\r\n let isValid: boolean = this.areFormGroupsFromParentFormGroupValid();\r\n let isFormArrayValid: boolean = this.areFormArraysValid();\r\n\r\n if(isValid && isFormArrayValid){\r\n this.formGroup.saveObservableMethod(this.saveBody).subscribe(res => {\r\n this.messageService.successMessage(this.successfulSaveToastDescription);\r\n\r\n Object.keys(res).forEach((key) => {\r\n const formControl = this.formGroup.get(key);\r\n \r\n if (formControl) {\r\n if (formControl instanceof SpiderlyFormArray) {\r\n const formArray = formControl as SpiderlyFormArray;\r\n if (res[key].length !== 0) {\r\n formArray.clear();\r\n }\r\n else{\r\n // FT: This is okay because when we have M2M association with additional fields, we will not give back the list because we are not checking version on the server.\r\n // console.error(`You returned empty array for control: ${formArray.translationKey}.`);\r\n }\r\n\r\n res[key].forEach((model: any) => {\r\n if (typeof model === 'object' && model !== null) {\r\n Object.assign(formArray.modelConstructor, model);\r\n let helperFormGroup = new SpiderlyFormGroup({});\r\n this.baseFormService.initFormGroup(helperFormGroup, formArray.modelConstructor)\r\n formArray.push(helperFormGroup);\r\n } else {\r\n console.error('Can not add primitive form control inside form array.');\r\n }\r\n });\r\n\r\n } else {\r\n formControl.patchValue(res[key]);\r\n }\r\n }else{\r\n // FT: It's okay to do this.\r\n // console.error('You returned something that is not in the save DTO.');\r\n }\r\n });\r\n\r\n if (reroute) {\r\n const savedObjectId = (res as any)[this.formGroup.mainDTOName]?.id;\r\n this.rerouteToSavedObject(savedObjectId); // You always need to have id, because of id == 0 and version change\r\n }\r\n \r\n this.onAfterSave();\r\n });\r\n \r\n this.onAfterSaveRequest();\r\n }else{\r\n this.baseFormService.showInvalidFieldsMessage();\r\n }\r\n }\r\n\r\n rerouteToSavedObject = (rerouteId: number | string): void => {\r\n if(rerouteId == null){\r\n // console.error('You do not have rerouteId in your DTO.')\r\n const currentUrl = this.router.url;\r\n const parentUrl: string = getParentUrl(currentUrl);\r\n this.router.navigateByUrl(parentUrl);\r\n return;\r\n }\r\n \r\n const segments = this.router.url.split('/');\r\n segments[segments.length - 1] = rerouteId.toString();\r\n\r\n const newUrl = segments.join('/');\r\n this.router.navigateByUrl(newUrl);\r\n }\r\n\r\n onBeforeSave = (saveBody?: any) => {}\r\n onAfterSave = () => {}\r\n onAfterSaveRequest = () => {}\r\n\r\n areFormGroupsFromParentFormGroupValid(): boolean {\r\n if(this.formGroup.controls == null)\r\n return true;\r\n\r\n let invalid: boolean = false;\r\n\r\n Object.keys(this.formGroup.controls).forEach(key => {\r\n const formGroupOrControl = this.formGroup.controls[key];\r\n\r\n if (formGroupOrControl instanceof SpiderlyFormGroup){\r\n Object.keys(formGroupOrControl.controls).forEach(key => {\r\n const formControl = formGroupOrControl.controls[key] as SpiderlyFormControl; // this.formArray.markAsDirty(); // FT: For some reason this doesnt work\r\n\r\n if (formGroupOrControl.controlNamesFromHtml.includes(formControl.label) && formControl.invalid) {\r\n formControl.markAsDirty();\r\n invalid = true;\r\n }\r\n });\r\n }\r\n else if (formGroupOrControl instanceof SpiderlyFormControl){\r\n if (formGroupOrControl.invalid) {\r\n formGroupOrControl.markAsDirty();\r\n invalid = true;\r\n }\r\n }\r\n\r\n });\r\n\r\n if (invalid) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Model List\r\n \r\n getFormArrayControlByIndex<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, index: number, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl {\r\n if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n formArray.controlNamesFromHtml.push(formControlName);\r\n\r\n let filteredFormGroups: SpiderlyFormGroup<T>[];\r\n\r\n if (filter) {\r\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\r\n }\r\n else{\r\n return (formArray.controls[index] as SpiderlyFormGroup<T>).controls[formControlName] as SpiderlyFormControl;\r\n }\r\n\r\n return filteredFormGroups[index]?.controls[formControlName] as SpiderlyFormControl; // FT: Don't change this. It's always possible that change detection occurs before something.\r\n }\r\n\r\n getFormArrayControls<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl[] {\r\n if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n formArray.controlNamesFromHtml.push(formControlName);\r\n\r\n let filteredFormGroups: SpiderlyFormGroup<T>[];\r\n\r\n if (filter) {\r\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\r\n }\r\n else{\r\n return (formArray.controls as SpiderlyFormGroup<T>[]).map(x => x.controls[formControlName] as SpiderlyFormControl);\r\n }\r\n\r\n return filteredFormGroups.map(x => x.controls[formControlName] as SpiderlyFormControl);\r\n }\r\n\r\n getFormArrayGroups<T>(formArray: SpiderlyFormArray<T>): SpiderlyFormGroup<T>[]{\r\n return this.baseFormService.getFormArrayGroups(formArray);\r\n }\r\n\r\n addNewFormGroupToFormArray<T>(\r\n formArray: SpiderlyFormArray<T>, \r\n modelConstructor: T & BaseEntity,\r\n index: number,\r\n ) : SpiderlyFormGroup {\r\n return this.baseFormService.addNewFormGroupToFormArray(formArray, modelConstructor, index)\r\n }\r\n\r\n initFormArray<T>(\r\n parentFormGroup: SpiderlyFormGroup, \r\n modelList: (T & BaseEntity)[], \r\n modelConstructor: T & BaseEntity, \r\n formArraySaveBodyName: string, \r\n formArrayTranslationKey: string, \r\n required: boolean = false)\r\n {\r\n return this.baseFormService.initFormArray<T>(\r\n parentFormGroup, modelList, modelConstructor, formArraySaveBodyName, formArrayTranslationKey, required\r\n );\r\n }\r\n\r\n removeFormControlFromTheFormArray(formArray: SpiderlyFormArray, index: number) {\r\n if(index == null)\r\n throw new Error('Can not pass null index.');\r\n\r\n formArray.removeAt(index);\r\n }\r\n\r\n removeFormControlsFromTheFormArray(formArray: SpiderlyFormArray, indexes: number[]) {\r\n // Sort indexes in descending order to avoid index shifts when removing controls\r\n const sortedIndexes = indexes.sort((a, b) => b - a);\r\n\r\n sortedIndexes.forEach(index => {\r\n if (index >= 0 && index < formArray.length) {\r\n formArray.removeAt(index);\r\n }\r\n });\r\n }\r\n\r\n areFormArraysValid(): boolean {\r\n if(this.formGroup.controls == null)\r\n return true;\r\n\r\n let invalid: boolean = false;\r\n\r\n Object.keys(this.formGroup.controls).forEach(key => {\r\n const formArray = this.formGroup.controls[key] as unknown as SpiderlyFormArray;\r\n \r\n if (formArray instanceof SpiderlyFormArray){\r\n (formArray.controls as SpiderlyFormGroup[]).forEach(formGroup => {\r\n Object.keys(formGroup.controls).forEach(key => {\r\n const formControl = formGroup.controls[key] as SpiderlyFormControl; // this.formArray.markAsDirty(); // FT: For some reason this doesn't work\r\n\r\n if (\r\n (formGroup.controlNamesFromHtml.includes(formControl.label) || formArray.controlNamesFromHtml.includes(formControl.label)) && \r\n formControl.invalid\r\n ) {\r\n formControl.markAsDirty();\r\n invalid = true;\r\n }\r\n });\r\n });\r\n\r\n if (formArray.required == true && formArray.length == 0) {\r\n invalid = true;\r\n this.messageService.warningMessage(this.translocoService.translate('ListCanNotBeEmpty'));\r\n }\r\n }\r\n });\r\n\r\n if (invalid) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n onBeforeSaveList(){}\r\n onAfterSaveList(){}\r\n onAfterSaveListRequest(){}\r\n\r\n // FT: Sending LastMenuIconIndexClicked class because of reference type\r\n getCrudMenuForOrderedData = (\r\n formArray: SpiderlyFormArray, \r\n modelConstructor: BaseEntity, \r\n lastMenuIconIndexClicked: LastMenuIconIndexClicked, \r\n adjustFormArrayManually: boolean = false\r\n ): MenuItem[] => {\r\n let crudMenuForOrderedData: MenuItem[] = [\r\n {label: this.translocoService.translate('Remove'), icon: 'pi pi-minus', command: () => {\r\n this.onBeforeRemove(formArray, modelConstructor, lastMenuIconIndexClicked.index);\r\n if (adjustFormArrayManually === false) {\r\n this.removeFormControlFromTheFormArray(formArray, lastMenuIconIndexClicked.index);\r\n }\r\n }},\r\n {label: this.translocoService.translate('AddAbove'), icon: 'pi pi-arrow-up', command: () => {\r\n this.onBeforeAddAbove(formArray, modelConstructor, lastMenuIconIndexClicked.index);\r\n if (adjustFormArrayManually === false) {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n formArray, modelConstructor, lastMenuIconIndexClicked.index\r\n );\r\n }\r\n }},\r\n {label: this.translocoService.translate('AddBelow'), icon: 'pi pi-arrow-down', command: () => {\r\n this.onBeforeAddBelow(formArray, modelConstructor, lastMenuIconIndexClicked.index);\r\n if (adjustFormArrayManually === false) {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n formArray, modelConstructor, lastMenuIconIndexClicked.index + 1\r\n );\r\n }\r\n }},\r\n ];\r\n\r\n return crudMenuForOrderedData;\r\n }\r\n\r\n onBeforeRemove = (formArray: SpiderlyFormArray, modelConstructor: any, lastMenuIconIndexClicked: number) => {}\r\n\r\n onBeforeAddAbove = (formArray: SpiderlyFormArray, modelConstructor: any, lastMenuIconIndexClicked: number) => {}\r\n\r\n onBeforeAddBelow = (formArray: SpiderlyFormArray, modelConstructor: any, lastMenuIconIndexClicked: number) => {}\r\n\r\n //#endregion\r\n\r\n}\r\n","import { BaseEntity } from \"./base-entity\";\r\nimport { User } from \"./security-entities\";\r\n\r\nexport class InitTopBarData extends BaseEntity\r\n{\r\n companyName?: string;\r\n userProfilePath?: string;\r\n unreadNotificationsCount?: number;\r\n showProfileIcon?: boolean;\r\n currentUser?: User;\r\n \r\n constructor(\r\n {\r\n companyName,\r\n userProfilePath,\r\n unreadNotificationsCount,\r\n showProfileIcon,\r\n currentUser,\r\n }:{\r\n companyName?: string,\r\n userProfilePath?: string,\r\n unreadNotificationsCount?: number,\r\n showProfileIcon?: boolean,\r\n currentUser?: User,\r\n } = {}\r\n ) {\r\n super('InitTopBarData');\r\n\r\n this.companyName = companyName;\r\n this.userProfilePath = userProfilePath;\r\n this.unreadNotificationsCount = unreadNotificationsCount;\r\n this.showProfileIcon = showProfileIcon;\r\n this.currentUser = currentUser;\r\n }\r\n}","import { AuthBaseService } from './auth-base.service';\r\nimport { ApiSecurityService } from './api.service.security';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, delay, lastValueFrom, map, Observable, of, Subject, Subscription, withLatestFrom } from 'rxjs';\r\nimport { InitTopBarData } from '../entities/init-top-bar-data';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { PrimengOption } from '../entities/primeng-option';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\n\r\nexport interface AppConfig {\r\n inputStyle: string;\r\n colorScheme: string; \r\n theme: string;\r\n ripple: boolean;\r\n menuMode: string;\r\n scale: number;\r\n color: string;\r\n}\r\n\r\ninterface LayoutState {\r\n staticMenuDesktopInactive: boolean;\r\n overlayMenuActive: boolean;\r\n profileSidebarVisible: boolean;\r\n profileDropdownSidebarVisible:boolean;\r\n configSidebarVisible: boolean;\r\n staticMenuMobileActive: boolean;\r\n menuHoverActive: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LayoutBaseService implements OnDestroy {\r\n userSubscription: Subscription;\r\n\r\n protected _unreadNotificationsNumber = new BehaviorSubject<number | null>(null);\r\n unreadNotificationsCount$ = this._unreadNotificationsNumber.asObservable();\r\n\r\n layoutConfig: AppConfig = {\r\n ripple: false,\r\n inputStyle: 'outlined',\r\n menuMode: 'static',\r\n colorScheme: 'light',\r\n theme: 'lara-light-indigo',\r\n scale: 14,\r\n color: `var(--primary-color)`,\r\n };\r\n\r\n state: LayoutState = {\r\n staticMenuDesktopInactive: false,\r\n overlayMenuActive: false,\r\n profileSidebarVisible: false,\r\n profileDropdownSidebarVisible: false,\r\n configSidebarVisible: false,\r\n staticMenuMobileActive: false,\r\n menuHoverActive: false\r\n };\r\n\r\n private configUpdate = new Subject<AppConfig>();\r\n\r\n private overlayOpen = new Subject<any>();\r\n\r\n configUpdate$ = this.configUpdate.asObservable();\r\n\r\n overlayOpen$ = this.overlayOpen.asObservable();\r\n\r\n constructor(\r\n protected apiService: ApiSecurityService,\r\n protected config: ConfigBaseService,\r\n protected authService: AuthBaseService\r\n ) {\r\n }\r\n\r\n initUnreadNotificationsCountForCurrentUser = () => {\r\n this.initUnreadNotificationsCountForCurrentUserObservable().pipe(\r\n delay(1), // FT HACK: Adding delay so both additionalObservable and user emits single null value when logout\r\n withLatestFrom(this.authService.user$) // Triggers when unread notifications change\r\n ).subscribe(([additionalObservable, user]) => {\r\n if (user != null && additionalObservable !== undefined) {\r\n this.setUnreadNotificationsCountForCurrentUser().subscribe();\r\n }\r\n });\r\n }\r\n\r\n initUnreadNotificationsCountForCurrentUserObservable = (): Observable<any> => {\r\n return this.authService.user$;\r\n }\r\n\r\n setUnreadNotificationsCountForCurrentUser = (): Observable<any> => {\r\n return this.apiService.getUnreadNotificationsCountForCurrentUser().pipe(\r\n map((unreadNotificationsCount) => {\r\n this._unreadNotificationsNumber.next(unreadNotificationsCount);\r\n })\r\n );\r\n }\r\n\r\n onMenuToggle() {\r\n if (this.isOverlay()) {\r\n this.state.overlayMenuActive = !this.state.overlayMenuActive;\r\n if (this.state.overlayMenuActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n if (this.isDesktop()) {\r\n this.state.staticMenuDesktopInactive = !this.state.staticMenuDesktopInactive;\r\n }\r\n else {\r\n this.state.staticMenuMobileActive = !this.state.staticMenuMobileActive;\r\n\r\n if (this.state.staticMenuMobileActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n }\r\n\r\n showProfileSidebar() {\r\n this.state.profileSidebarVisible = !this.state.profileSidebarVisible;\r\n if (this.state.profileSidebarVisible) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n showProfileDropdownSidebar() {\r\n this.state.profileDropdownSidebarVisible = !this.state.profileDropdownSidebarVisible;\r\n if (this.state.profileDropdownSidebarVisible) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n showConfigSidebar() {\r\n this.state.configSidebarVisible = true;\r\n }\r\n\r\n isOverlay() {\r\n return this.layoutConfig.menuMode === 'overlay';\r\n }\r\n\r\n isDesktop() {\r\n return window.innerWidth > 991;\r\n }\r\n\r\n isMobile() {\r\n return !this.isDesktop();\r\n }\r\n\r\n onConfigUpdate() {\r\n this.configUpdate.next(this.layoutConfig);\r\n }\r\n \r\n //#region Top Bar\r\n\r\n initTopBarData = (): Observable<InitTopBarData> => {\r\n return combineLatest([this.authService.user$, this.unreadNotificationsCount$]).pipe(\r\n map(([currentUser, unreadNotificationsCount]) => {\r\n return new InitTopBarData({\r\n companyName: this.config.companyName,\r\n userProfilePath: `/administration/users/${currentUser?.id}`,\r\n unreadNotificationsCount: unreadNotificationsCount,\r\n showProfileIcon: true,\r\n currentUser: currentUser,\r\n });\r\n })\r\n );\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Side Bar\r\n\r\n searchPartners = (event: AutoCompleteCompleteEvent): Observable<PrimengOption[]> => {\r\n return of();\r\n }\r\n\r\n partnersAutocompleteButtonClick = (selectedPartner: PrimengOption) => {}\r\n\r\n //#endregion\r\n\r\n ngOnDestroy(): void {\r\n if (this.userSubscription) {\r\n this.userSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\nimport { Subject, Subscription, throttleTime } from \"rxjs\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MenuItem } from \"primeng/api\";\r\n\r\n@Component({\r\n selector: 'spiderly-button-base',\r\n template: ``,\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyButtonBaseComponent {\r\n @Input() icon: string;\r\n @Input() label: string;\r\n @Input() outlined: boolean = false;\r\n @Input() rounded: boolean = false;\r\n @Input() styleClass: string;\r\n @Input() routerLink: string;\r\n @Input() style: { [klass: string]: any; };\r\n @Input() class: string;\r\n @Input() severity: 'success' | 'info' | 'warning' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined;\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onClick = new EventEmitter<Event>();\r\n private clickSubject = new Subject<Event>(); // Internal subject to handle click events.\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private router: Router\r\n ) {\r\n \r\n }\r\n\r\n ngOnInit(){\r\n this.subscription = this.clickSubject\r\n .pipe(throttleTime(500))\r\n .subscribe((event: Event) => this.onClick.emit(event));\r\n }\r\n\r\n handleClick = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.routerLink !== undefined) {\r\n this.router.navigate([this.routerLink]);\r\n }\r\n else{\r\n this.clickSubject.next(event);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\nimport { Subject, Subscription, throttleTime } from \"rxjs\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\r\n\r\n@Component({\r\n selector: 'spiderly-button',\r\n templateUrl: './spiderly-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyButtonComponent extends SpiderlyButtonBaseComponent {\r\n\r\n // constructor() {\r\n // super();\r\n \r\n // }\r\n\r\n}","<p-button \r\n(onClick)=\"handleClick($event)\" \r\n[label]=\"label\" \r\n[icon]=\"icon\" \r\n[outlined]=\"outlined\" \r\n[styleClass]=\"styleClass\" \r\n[severity]=\"severity\" \r\n[rounded]=\"rounded\"\r\n[style]=\"style\"\r\n[class]=\"class\"\r\n[disabled]=\"disabled\"\r\n>\r\n <ng-content></ng-content>\r\n</p-button>","import { Component, EventEmitter, Output } from \"@angular/core\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\r\n\r\n@Component({\r\n selector: 'google-button',\r\n templateUrl: './google-button.component.html',\r\n styles: [],\r\n imports: [\r\n ButtonModule,\r\n TranslocoDirective,\r\n SpiderlyButtonComponent\r\n ],\r\n standalone: true,\r\n})\r\nexport class GoogleButtonComponent { // Custom styling of the google button - https://medium.com/simform-engineering/implement-custom-google-sign-in-using-angular-16-9c93aeff6252\r\n // @Output() onClick: EventEmitter<any> = new EventEmitter();\r\n @Output() loginWithGoogle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor() {}\r\n\r\n createFakeGoogleWrapper = () => {\r\n const googleLoginWrapper = document.createElement('div');\r\n googleLoginWrapper.style.display = 'none';\r\n googleLoginWrapper.classList.add('custom-google-button');\r\n document.body.appendChild(googleLoginWrapper);\r\n window.google.accounts.id.renderButton(googleLoginWrapper, {\r\n type: 'icon',\r\n width: '200',\r\n });\r\n \r\n const googleLoginWrapperButton = googleLoginWrapper.querySelector(\r\n 'div[role=button]'\r\n ) as HTMLElement;\r\n \r\n return {\r\n click: () => {\r\n googleLoginWrapperButton?.click();\r\n },\r\n };\r\n };\r\n\r\n handleGoogleLogin() {\r\n this.loginWithGoogle.emit(this.createFakeGoogleWrapper());\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n google: any;\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <spiderly-button (onClick)=\"handleGoogleLogin()\" [label]=\"t('ContinueWithGoogle')\" [outlined]=\"true\" [style]=\"{width: '100%'}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0.98em\" height=\"1em\" viewBox=\"0 0 256 262\"><path fill=\"#4285f4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"/><path fill=\"#34a853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"/><path fill=\"#fbbc05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z\"/><path fill=\"#eb4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"/></svg>\r\n </spiderly-button>\r\n</ng-container>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { GoogleButtonComponent } from \"../../spiderly-buttons/google-button/google-button.component\";\r\nimport { ConfigBaseService } from \"../../../services/config-base.service\";\r\nimport { AuthBaseService } from \"../../../services/auth-base.service\";\r\n\r\n@Component({\r\n selector: 'auth',\r\n templateUrl: './auth.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n GoogleButtonComponent,\r\n TranslocoDirective,\r\n ],\r\n standalone: true,\r\n})\r\nexport class AuthComponent {\r\n private initCompanyAuthDialogDetailsSubscription: Subscription | null = null;\r\n\r\n @Output() onCompanyNameChange: EventEmitter<string> = new EventEmitter();\r\n @Input() showGoogleAuth: boolean = true;\r\n\r\n hasGoogleAuth: boolean = this.config.googleAuth;\r\n companyName: string;\r\n image: string;\r\n \r\n constructor(\r\n private config: ConfigBaseService,\r\n private authService: AuthBaseService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n this.initCompanyDetails();\r\n }\r\n\r\n initCompanyDetails() {\r\n this.initCompanyAuthDialogDetailsSubscription = this.authService.initCompanyAuthDialogDetails().subscribe(initCompanyAuthDialogDetails => {\r\n if (initCompanyAuthDialogDetails != null) {\r\n this.image = initCompanyAuthDialogDetails.image;\r\n this.companyName = initCompanyAuthDialogDetails.companyName;\r\n this.onCompanyNameChange.next(this.companyName);\r\n }\r\n })\r\n }\r\n\r\n onGoogleSignIn(googleWrapper: any){\r\n googleWrapper.click();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.initCompanyAuthDialogDetailsSubscription) {\r\n this.initCompanyAuthDialogDetailsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\" style=\"margin-bottom: 38px;\">\r\n <img *ngIf=\"image != null\" [src]=\"image\" alt=\"{{companyName}} Logo\" height=\"60\">\r\n <i *ngIf=\"image == null\" class=\"pi pi-spin pi-spinner primary-color\" style=\"font-size: 2rem\"></i>\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n \r\n <div *ngIf=\"hasGoogleAuth && showGoogleAuth\">\r\n <div style=\"display: flex; align-items: center; gap: 7px; justify-content: center; margin-bottom: 16px;\">\r\n <div class=\"separator\"></div>\r\n <div>{{t('or')}}</div>\r\n <div class=\"separator\"></div>\r\n </div>\r\n <div>\r\n <!-- https://code-maze.com/how-to-sign-in-with-google-angular-aspnet-webapi/ -->\r\n <google-button (loginWithGoogle)=\"onGoogleSignIn($event)\"></google-button> \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>","import {\r\n Component, Input,\r\n } from '@angular/core';\r\nimport { SpiderlyFormControl } from '../components/spiderly-form-control/spiderly-form-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n \r\n @Component({\r\n selector: 'base-control',\r\n template: '',\r\n styles: [],\r\n })\r\n export class BaseControl {\r\n @Input() control: SpiderlyFormControl; // FT: if you name it formControl: https://stackoverflow.com/a/54755671/21209982\r\n @Input() disabled: boolean = false;\r\n @Input() showLabel: boolean = true;\r\n @Input() label: string = null; // NgModel/Want custom translation\r\n @Input() controlValid: boolean = true; // NgModel\r\n @Input() placeholder: string = '';\r\n @Input() showTooltip: boolean = false;\r\n @Input() tooltipText: string = null;\r\n @Input() tooltipIcon: string = 'pi pi-info-circle';\r\n errorMessageTooltipEvent: 'hover' | 'focus';\r\n \r\n constructor(\r\n protected translocoService: TranslocoService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n if(this.control != null && this.disabled == true)\r\n this.control.disable();\r\n\r\n // TODO FT: Delete if you don't need\r\n // if(this.control?.validator?.hasNotEmptyRule == true) // FT HACK: Be carefull with this name, if you change it in generator you need to change it here also\r\n // this.control.required = true;\r\n\r\n this.errorMessageTooltipEvent = window.innerWidth > 1000 ? 'hover' : 'focus'\r\n }\r\n\r\n ngAfterViewInit(){\r\n\r\n }\r\n\r\n getTranslatedLabel(): string{\r\n return this.label ?? this.control.labelForDisplay;\r\n }\r\n\r\n getValidationErrrorMessages(){\r\n if(this.control?.errors && this.control?.dirty){\r\n // FT: it should always be one error message for single form control, \r\n // also i don't need to reassign it to null because it will be shown only when control.valid == false\r\n return this.control.errors['_'];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n }","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'required',\r\n templateUrl: './required.component.html',\r\n styles: [],\r\n standalone: true,\r\n})\r\nexport class RequiredComponent {\r\n\r\n constructor() {}\r\n\r\n}","<span style=\"color: red; margin-left: 4px;\">*</span>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-textbox',\r\n templateUrl: './spiderly-textbox.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyTextboxComponent extends BaseControl implements OnInit {\r\n @Input() showButton: boolean = false;\r\n @Input() buttonIcon: string;\r\n @Output() onButtonClick = new EventEmitter();\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n \r\n buttonClick() {\r\n this.onButtonClick.next(null);\r\n }\r\n \r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\">\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"pi {{buttonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-body',\r\n templateUrl: './panel-body.component.html',\r\n styles: []\r\n})\r\nexport class PanelBodyComponent implements OnInit {\r\n @Input() normalBottomPadding: boolean = false; // FT: By default we set to false, when the grid is inside the body.\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<!-- FT: this is selector, not the class -->\r\n<div class=\"panel-body\"\r\n [ngClass]=\"{\r\n 'non-grid-panel-bottom-padding': normalBottomPadding, \r\n }\">\r\n <!-- 'card': true, -->\r\n <ng-content></ng-content>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-footer',\r\n templateUrl: './panel-footer.component.html',\r\n styleUrl: './panel-footer.component.scss'\r\n})\r\nexport class PanelFooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<div class=\"spiderly-panel-footer\">\r\n <div class=\"buttons-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n <span class=\"p-text-secondary\">\r\n <ng-content select=\"[footerRight]\"></ng-content>\r\n </span>\r\n</div>","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-header',\r\n templateUrl: './panel-header.component.html',\r\n styles: [`\r\n .p-panel-icons-end {\r\n font-size: 50px;\r\n }\r\n `]\r\n})\r\nexport class PanelHeaderComponent implements OnInit {\r\n @Input() title: string;\r\n @Input() showBigTitle: boolean;\r\n @Input() showIcon: boolean = true;\r\n @Input() icon: string;\r\n @Input() index: number;\r\n @Input() tabs: SpiderlyTab[];\r\n\r\n constructor(\r\n private translocoService: TranslocoService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.title == null)\r\n this.title = this.translocoService.translate('Details');\r\n\r\n if (this.showIcon === true && this.icon == null)\r\n this.icon = 'pi pi-file-edit';\r\n }\r\n\r\n setTabIsSelected(tab: SpiderlyTab){\r\n this.tabs.forEach(t => {\r\n t.isSelected = false;\r\n });\r\n\r\n tab.isSelected = true;\r\n }\r\n}\r\n\r\nexport class SpiderlyTab\r\n{\r\n label?: string;\r\n id?: number;\r\n icon?: string;\r\n isSelected?: boolean;\r\n \r\n constructor(\r\n {\r\n label,\r\n id,\r\n icon,\r\n isSelected,\r\n }:{\r\n label?: string;\r\n id?: number;\r\n icon?: string;\r\n isSelected?: boolean;\r\n } = {}\r\n ) {\r\n this.label = label;\r\n this.id = id;\r\n this.icon = icon;\r\n this.isSelected = isSelected;\r\n }\r\n\r\n}","<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\r\n @if (tabs == null) {\r\n <div style=\"display: flex; align-items: center; gap: 14px;\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 19px' : 'font-size: 16px;'\"></i> \r\n <h2 [style]=\"(showBigTitle ? 'font-size: 16px;' : '')\" class=\"remove-h-css\">{{title}}</h2>\r\n </div>\r\n }\r\n @else {\r\n @for (tab of tabs; track $index) {\r\n <div (click)=\"setTabIsSelected(tab)\"\r\n [style]=\"{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '14px',\r\n cursor: 'pointer',\r\n fontWeight: tab.isSelected ? '700' : 'normal'\r\n }\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{tab.icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 19px' : 'font-size: 16px;'\"></i> \r\n <div [style]=\"showBigTitle ? 'font-size: 16px' : ''\">{{tab.label}}</div>\r\n </div>\r\n }\r\n }\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Menu } from 'primeng/menu';\r\n\r\n@Component({\r\n selector: 'spiderly-panel',\r\n templateUrl: './spiderly-panel.component.html',\r\n})\r\nexport class SpiderlyPanelComponent implements OnInit {\r\n @Input() isFirstMultiplePanel: boolean = false;\r\n @Input() isMiddleMultiplePanel: boolean = false;\r\n @Input() isLastMultiplePanel: boolean = false;\r\n @Input() toggleable: boolean = false;\r\n @Input() collapsed: boolean = false;\r\n @Input() crudMenu: MenuItem[];\r\n @Input() showCrudMenu: boolean = true;\r\n @Input() showRemoveIcon: boolean = false;\r\n @Input() index: number;\r\n @Input() showPanelHeader: boolean = true;\r\n\r\n @Output() onMenuIconClick: EventEmitter<number> = new EventEmitter();\r\n @Output() onRemoveIconClick: EventEmitter<null> = new EventEmitter();\r\n\r\n @ViewChild('menu') menu: Menu;\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n menuItemClick(index: number, event){\r\n this.menu.toggle(event);\r\n this.onMenuIconClick.next(index);\r\n }\r\n\r\n removeItemClick(){\r\n this.onRemoveIconClick.next(null);\r\n }\r\n\r\n}","<p-panel \r\n[showHeader]=\"showPanelHeader\"\r\n[ngClass]=\"{\r\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-first': isFirstMultiplePanel,\r\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-middle': isMiddleMultiplePanel,\r\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-last': isLastMultiplePanel,\r\n 'panel-border': !isFirstMultiplePanel,\r\n 'spiderly-panel': true,\r\n}\"\r\n[toggleable]=\"toggleable\"\r\n[collapsed]=\"toggleable && collapsed\"\r\nexpandIcon=\"pi pi-chevron-up\"\r\ncollapseIcon=\"pi pi-chevron-down\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <ng-content select=\"panel-header\"></ng-content>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"icons\">\r\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\r\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\r\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n </div>\r\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\r\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"panel-body-wrapper\">\r\n <ng-content select=\"panel-body\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"panel-footer\"></ng-content>\r\n\r\n</p-panel>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spiderly-card',\r\n templateUrl: './spiderly-card.component.html',\r\n styles: []\r\n})\r\nexport class SpiderlyCardComponent implements OnInit {\r\n @Input() icon: string = 'pi pi-file-edit';\r\n @Input() title: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<div class=\"card responsive-card-padding\">\r\n <div style=\"display: flex; align-items: center; margin-bottom: 14px; gap: 12px;\">\r\n <i style=\"font-size: 20px;\" class=\"{{icon}} primary-color\"></i>\r\n <h5 style=\"margin: 0;\">{{title}}</h5>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PanelBodyComponent } from './panel-body/panel-body.component';\r\nimport { PanelFooterComponent } from './panel-footer/panel-footer.component';\r\nimport { PanelHeaderComponent } from './panel-header/panel-header.component';\r\nimport { SpiderlyPanelComponent } from './spiderly-panel/spiderly-panel.component';\r\nimport { SpiderlyCardComponent } from './spiderly-card/spiderly-card.component';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n ],\r\n exports: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n SpiderlyCardComponent\r\n ],\r\n declarations: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n SpiderlyCardComponent\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyPanelsModule {}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n } from '@angular/core';\r\nimport { BaseControl } from './base-control';\r\nimport { PrimengOption } from '../entities/primeng-option';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n @Component({\r\n selector: 'base-dropdown-control',\r\n template: '',\r\n styles: [],\r\n })\r\n export class BaseDropdownControl extends BaseControl {\r\n @Input() options: PrimengOption[];\r\n @Input() showAddon: boolean = false;\r\n @Input() addonIcon: string = 'pi pi-ellipsis-h';\r\n @Input() override placeholder: string = this.translocoService.translate('SelectFromTheList');\r\n @Output() onButtonClick: EventEmitter<null> = new EventEmitter();\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) {\r\n super(translocoService);\r\n }\r\n\r\n dropdownMarkAsDirty(){\r\n this.control.markAsDirty();\r\n }\r\n\r\n addonClick(){\r\n this.onButtonClick.next(null);\r\n }\r\n }","import {\r\n Component,\r\n EventEmitter,\r\n Output,\r\n } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { BaseDropdownControl } from './base-dropdown-control';\r\n\r\n @Component({\r\n selector: 'base-autocomplete-control',\r\n template: '',\r\n styles: [],\r\n })\r\n export class BaseAutocompleteControl extends BaseDropdownControl {\r\n @Output() onTextInput: EventEmitter<AutoCompleteCompleteEvent> = new EventEmitter();\r\n }","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-multiautocomplete',\r\n templateUrl: './spiderly-multiautocomplete.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n CommonModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n // @Input() required: boolean = true; // TODO FT: delete if you don't need through whole app\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent){\r\n this.onTextInput.next(event);\r\n }\r\n\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\">\r\n <p-autoComplete \r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [multiple]=\"true\" \r\n [dropdown]=\"false\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n [completeOnFocus]=\"true\"\r\n dropdownIcon=\"pi pi-plus\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n <span *ngIf=\"showAddon\" (click)=\"addonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"pi {{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-password',\r\n templateUrl: './spiderly-password.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyPasswordComponent extends BaseControl implements OnInit {\r\n @Input() showPasswordStrength: boolean = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-password\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control?.label\"\r\n [toggleMask]=\"true\"\r\n [feedback]=\"showPasswordStrength\"\r\n (onBlur)=\"control?.markAsDirty()\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n </div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-checkbox',\r\n templateUrl: './spiderly-checkbox.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyCheckboxComponent extends BaseControl implements OnInit {\r\n @Input() fakeLabel = true;\r\n @Input() initializeToFalse = false;\r\n @Input() inlineLabel = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n if (this.initializeToFalse == true)\r\n this.control.setValue(false);\r\n\r\n super.ngOnInit();\r\n }\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\" style=\"margin-top: 0.5rem;\">\r\n <p-checkbox\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [formControl]=\"control\"\r\n [label]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n />\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { BaseDropdownControl } from '../base-dropdown-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-multiselect',\r\n templateUrl: './spiderly-multiselect.component.html',\r\n styles: [\r\n ],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyMultiSelectComponent extends BaseDropdownControl implements OnInit {\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <span class=\"p-fluid\">\r\n <p-multiSelect\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\r\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\r\n we need to use this and dropdown control only on the client -->\r\n </span>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-textarea',\r\n templateUrl: './spiderly-textarea.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyTextareaComponent extends BaseControl implements OnInit {\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <textarea\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputTextarea\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [autoResize]=\"true\"\r\n [class]=\"control.disabled ? 'disabled' : ''\"\r\n ></textarea>\r\n </div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-number',\r\n templateUrl: './spiderly-number.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyNumberComponent extends BaseControl implements OnInit {\r\n @Input() prefix: string;\r\n @Input() showButtons: boolean = true;\r\n @Input() decimal: boolean;\r\n @Input() maxFractionDigits: number = 0;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n \r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"showLabel\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-inputNumber\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n [prefix]=\"prefix\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [showButtons]=\"showButtons\"\r\n buttonLayout=\"horizontal\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n />\r\n </div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { BaseDropdownControl } from '../base-dropdown-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { DropdownChangeEvent } from 'primeng/dropdown';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-dropdown',\r\n templateUrl: './spiderly-dropdown.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n CommonModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyDropdownComponent extends BaseDropdownControl implements OnInit {\r\n @Output() onChange: EventEmitter<DropdownChangeEvent> = new EventEmitter();\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n change(event: DropdownChangeEvent){\r\n this.onChange.next(event);\r\n }\r\n\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n\r\n <!-- FT: Dropdown doesn't support tooltip event, but it can only has not empty validation, so for now it's okay to not show validation message on dropdown ever -->\r\n <div class=\"p-inputgroup p-fluid\">\r\n <p-dropdown\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [style]=\"{'width':'100%'}\"\r\n appendTo=\"body\"\r\n />\r\n <span *ngIf=\"showAddon\" (click)=\"addonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"pi {{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n \r\n</div>","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { Editor } from 'primeng/editor';\r\nimport { Tooltip } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-editor',\r\n templateUrl: './spiderly-editor.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyEditorComponent extends BaseControl implements OnInit {\r\n @ViewChild(Editor) editor: Editor;\r\n @ViewChild(Tooltip) tooltip: Tooltip;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n onClick(){\r\n let editableArea: HTMLElement = this.editor.el.nativeElement.querySelector('.ql-editor');\r\n \r\n editableArea.onblur = () => {\r\n this.control.markAsDirty();\r\n this.tooltip.deactivate();\r\n };\r\n\r\n editableArea.onfocus = () => {\r\n if (this.errorMessageTooltipEvent == 'focus' ) {\r\n this.tooltip.activate();\r\n }\r\n };\r\n\r\n editableArea.onmouseover = () => {\r\n if (this.errorMessageTooltipEvent == 'hover' ) {\r\n this.tooltip.activate();\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n\r\n <!-- Disable doesn't work on this control -->\r\n <p-editor\r\n *ngIf=\"control\"\r\n [formControl]=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [readonly]=\"control.disabled\"\r\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\r\n [id]=\"control.label\"\r\n [placeholder]=\"placeholder\"\r\n (click)=\"onClick()\"\r\n [style]=\"{ height: '320px' }\"\r\n ></p-editor>\r\n\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-colorpick',\r\n templateUrl: './spiderly-colorpick.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyColorpickComponent extends BaseControl implements OnInit {\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.control.valueChanges.subscribe((value) => {\r\n this.control.setValue(value, { emitEvent: false }); // FT: Preventing infinite loop\r\n });\r\n\r\n if (this.control.value == null)\r\n this.placeholder = this.translocoService.translate('SelectAColor');\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div style=\"display: flex; gap: 10px;\">\r\n <div class=\"p-inputgroup p-fluid\">\r\n <!-- <span class=\"p-inputgroup-addon\">\r\n #\r\n </span> -->\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [style]=\"{'width':'100%', 'position': 'relative'}\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n />\r\n </div>\r\n <p-colorPicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n appendTo=\"body\"\r\n ></p-colorPicker>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileSelectEvent } from 'primeng/fileupload';\r\nimport { getMimeTypeForFileName, isExcelFileType, isImageFileType } from '../../services/helper-functions';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyButtonComponent } from '../../components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\n\r\n@Component({\r\n selector: 'spiderly-file',\r\n templateUrl: './spiderly-file.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective\r\n ]\r\n})\r\nexport class SpiderlyFileComponent extends BaseControl implements OnInit {\r\n @Output() onFileSelected = new EventEmitter<SpiderlyFileSelectEvent>();\r\n @Output() onFileRemoved = new EventEmitter<null>();\r\n @Input() objectId: number;\r\n @Input() fileData: string;\r\n @Input() acceptedFileTypes: Array<'image/*' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/vnd.ms-excel' | '.xlsx' | '.xls'> = ['image/*'];\r\n @Input() required: boolean; // FT: It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl.\r\n @Input() multiple: boolean = false;\r\n \r\n acceptedFileTypesCommaSeparated: string;\r\n @Input() files: File[] = [];\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n if (this.control?.value != null && this.fileData != null) {\r\n const file = this.base64ToFile(this.fileData);\r\n this.files.push(file);\r\n }\r\n\r\n this.acceptedFileTypesCommaSeparated = this.acceptedFileTypes.join(',');\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n filesSelected(event: FileSelectEvent){\r\n const file = event.files[0];\r\n\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, `${this.objectId}-${file.name}`);\r\n \r\n this.onFileSelected.next(new SpiderlyFileSelectEvent({file: file, formData: formData}));\r\n }\r\n\r\n choose(event, chooseCallback){\r\n chooseCallback();\r\n }\r\n \r\n fileRemoved(removeFileCallback, index: number){\r\n removeFileCallback(index);\r\n this.control?.setValue(null);\r\n this.onFileRemoved.next(null);\r\n }\r\n\r\n // FT: Put inside global functions if you need it\r\n base64ToFile(base64String: string){\r\n const [header, base64Content] = base64String.split(';base64,');\r\n const fileName = header.split('=')[1];\r\n const mimeType = getMimeTypeForFileName(fileName);\r\n\r\n const byteCharacters = atob(base64Content);\r\n const byteNumbers = new Uint8Array(byteCharacters.length);\r\n\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n\r\n const blob = new Blob([byteNumbers], { type: mimeType });\r\n const file = new File([blob], fileName, { type: mimeType });\r\n\r\n return file;\r\n }\r\n\r\n isImageFileType(mimeType: string): boolean {\r\n return isImageFileType(mimeType);\r\n }\r\n\r\n isExcelFileType(mimeType: string): boolean {\r\n return isExcelFileType(mimeType);\r\n }\r\n\r\n}\r\n\r\nexport class SpiderlyFileSelectEvent extends BaseEntity\r\n{\r\n file?: File;\r\n formData?: FormData;\r\n\r\n constructor(\r\n {\r\n file,\r\n formData,\r\n }:{\r\n file?: File;\r\n formData?: FormData;\r\n } = {}\r\n ) {\r\n super('SpiderlyFileSelectEvent'); \r\n\r\n this.file = file;\r\n this.formData = formData;\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- FT: It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\r\n <required *ngIf=\"control?.required || required\"></required>\r\n </div>\r\n\r\n <p-fileUpload \r\n [files]=\"files\" \r\n [disabled]=\"disabled\" \r\n [name]=\"control?.label ?? label\" \r\n [multiple]=\"multiple\" \r\n [accept]=\"acceptedFileTypesCommaSeparated\" \r\n [maxFileSize]=\"1000000\" \r\n (onSelect)=\"filesSelected($event)\"\r\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\r\n >\r\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\r\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\r\n <div class=\"flex gap-2\">\r\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\r\n <!-- <p-button (onClick)=\"clearCallback()\" icon=\"pi pi-times\" [rounded]=\"true\" [outlined]=\"true\" severity=\"danger\" [disabled]=\"!files || files.length === 0\" /> -->\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\r\n <div *ngIf=\"files?.length > 0\">\r\n <div class=\"flex justify-content-center p-0 gap-5\">\r\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\r\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\r\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\r\n </div>\r\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\r\n <div class=\"excel-details\">\r\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\"> </ng-template>\r\n <ng-template pTemplate=\"empty\">\r\n <div class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400\"></i>\r\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </div>\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-calendar',\r\n templateUrl: './spiderly-calendar.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyCalendarComponent extends BaseControl implements OnInit {\r\n @Input() showTime: boolean = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n setDate(event:Date) { \r\n \r\n }\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n <p-calendar\r\n *ngIf=\"control\"\r\n [style]=\"{'width':'100%'}\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n dateFormat=\"dd.mm.yy.\"\r\n iconDisplay=\"input\" \r\n [showIcon]=\"true\" \r\n [showTime]=\"showTime\"\r\n (onSelect)=\"setDate($event)\"\r\n />\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-autocomplete',\r\n templateUrl: './spiderly-autocomplete.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n // @Input() required: boolean = true; // TODO FT: delete if you don't need through whole app\r\n @Input() appendTo: any = 'body';\r\n @Input() showClear: boolean = true;\r\n @Input() emptyMessage: string;\r\n @Input() displayName: string; // FT: Added because when we initialize the object options are null\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n\r\n if (this.options == null && this.control.value != null) {\r\n this.options = [\r\n { label: this.displayName, value: this.control.value }\r\n ];\r\n }\r\n\r\n if (this.emptyMessage == null) {\r\n this.emptyMessage = this.translocoService.translate('EmptyMessage');\r\n }\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent){\r\n this.onTextInput.next(event);\r\n }\r\n\r\n select(event){\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n \r\n <div class=\"p-inputgroup p-fluid\">\r\n <p-autoComplete\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n [completeOnFocus]=\"true\"\r\n [style]=\"{'width':'100%', 'position' : 'relative'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n />\r\n <span *ngIf=\"showAddon\" (click)=\"addonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"{{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</ng-container>","import { Component, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { getParentUrl } from \"../../../services/helper-functions\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\r\n\r\n@Component({\r\n selector: 'return-button',\r\n templateUrl: './return-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyReturnButtonComponent {\r\n @Input() navigateUrl: string;\r\n\r\n constructor(private router: Router) {}\r\n\r\n onReturn(){\r\n if(this.navigateUrl == undefined){\r\n const currentUrl = this.router.url;\r\n const parentUrl: string = getParentUrl(currentUrl);\r\n this.router.navigateByUrl(parentUrl);\r\n }\r\n else{\r\n this.router.navigate([this.navigateUrl]);\r\n }\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <spiderly-button (onClick)=\"onReturn()\" [label]=\"t('Return')\" icon=\"pi pi-undo\" [outlined]=\"true\"></spiderly-button>\r\n</ng-container>","import { NgModule } from '@angular/core';\r\nimport { SpiderlyPanelsModule } from '../components/spiderly-panels/spiderly-panels.module';\r\nimport { SpiderlyMultiAutocompleteComponent } from './spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nimport { SpiderlyPasswordComponent } from './spiderly-password/spiderly-password.component';\r\nimport { SpiderlyTextboxComponent } from './spiderly-textbox/spiderly-textbox.component';\r\nimport { SpiderlyCheckboxComponent } from './spiderly-checkbox/spiderly-checkbox.component';\r\nimport { SpiderlyMultiSelectComponent } from './spiderly-multiselect/spiderly-multiselect.component';\r\nimport { SpiderlyTextareaComponent } from './spiderly-textarea/spiderly-textarea.component';\r\nimport { SpiderlyNumberComponent } from './spiderly-number/spiderly-number.component';\r\nimport { SpiderlyDropdownComponent } from './spiderly-dropdown/spiderly-dropdown.component';\r\nimport { SpiderlyEditorComponent } from './spiderly-editor/spiderly-editor.component';\r\nimport { SpiderlyColorpickComponent } from './spiderly-colorpick/spiderly-colorpick.component';\r\nimport { SpiderlyFileComponent } from './spiderly-file/spiderly-file.component';\r\nimport { SpiderlyCalendarComponent } from './spiderly-calendar/spiderly-calendar.component';\r\nimport { SpiderlyAutocompleteComponent } from './spiderly-autocomplete/spiderly-autocomplete.component';\r\nimport { SpiderlyButtonComponent } from '../components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { SpiderlyReturnButtonComponent } from '../components/spiderly-buttons/return-button/return-button.component';\r\n\r\n@NgModule({\r\n imports: [\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyCheckboxComponent,\r\n SpiderlyCalendarComponent,\r\n SpiderlyReturnButtonComponent,\r\n SpiderlyButtonComponent,\r\n SpiderlyPanelsModule,\r\n SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorpickComponent,\r\n SpiderlyFileComponent,\r\n ],\r\n exports: [\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyCheckboxComponent,\r\n SpiderlyCalendarComponent,\r\n SpiderlyReturnButtonComponent,\r\n SpiderlyButtonComponent,\r\n SpiderlyPanelsModule,\r\n SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorpickComponent,\r\n SpiderlyFileComponent\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyControlsModule {}","import { ChangeDetectorRef, Component, EventEmitter, Input, KeyValueDiffers, OnInit, Output } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { VerificationTokenRequest } from '../../../entities/security-entities';\r\nimport { PrimengModule } from '../../../modules/primeng.module';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\n\r\n@Component({\r\n selector: 'verification-wrapper',\r\n templateUrl: './verification-wrapper.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpiderlyControlsModule,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class VerificationWrapperComponent extends BaseFormCopy implements OnInit {\r\n verificationTokenRequestFormGroup = new SpiderlyFormGroup<VerificationTokenRequest>({});\r\n\r\n @Input() email: string;\r\n @Output() onResendVerificationToken: EventEmitter<any> = new EventEmitter();\r\n @Output() onCodeSubmit: EventEmitter<string> = new EventEmitter();\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n ) { \r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initVerificationTokenRequestFormGroup(new VerificationTokenRequest({email: this.email}));\r\n }\r\n\r\n initVerificationTokenRequestFormGroup(model: VerificationTokenRequest){\r\n this.initFormGroup(this.verificationTokenRequestFormGroup, this.formGroup, model, model.typeName, []);\r\n }\r\n\r\n codeSubmit(){\r\n let isValid: boolean = this.baseFormService.checkFormGroupValidity(this.verificationTokenRequestFormGroup);\r\n \r\n if(isValid){\r\n this.onCodeSubmit.next(this.verificationTokenRequestFormGroup.controls.verificationCode.getRawValue());\r\n }\r\n }\r\n\r\n resendVerificationToken(){\r\n this.onResendVerificationToken.next(null);\r\n }\r\n\r\n}\r\n\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"header\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('verificationCode', verificationTokenRequestFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { VerificationWrapperComponent } from './verification-wrapper.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\n\r\n@Component({\r\n selector: 'registration-verification',\r\n templateUrl: './registration-verification.component.html',\r\n standalone: true,\r\n imports: [\r\n VerificationWrapperComponent\r\n ]\r\n})\r\nexport class RegistrationVerificationComponent implements OnInit {\r\n @Input() email: string;\r\n\r\n constructor(\r\n private authService: AuthBaseService, \r\n private messageService: SpiderlyMessageService, \r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n\r\n resendVerificationToken(){\r\n this.authService.sendRegistrationVerificationEmail({email: this.email}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullySentVerificationCode'));\r\n });\r\n }\r\n\r\n onCodeSubmit(event: string){\r\n this.authService.register({email: this.email, verificationCode: event}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('YouHaveSuccessfullyVerifiedYourAccount'));\r\n this.authService.navigateToDashboard();\r\n });\r\n }\r\n\r\n}\r\n\r\n","<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\r\n","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { Registration } from '../../../entities/security-entities';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\n\r\n@Component({\r\n selector: 'app-registration',\r\n templateUrl: './registration.component.html',\r\n})\r\nexport class RegistrationComponent extends BaseFormCopy implements OnInit {\r\n registrationFormGroup = new SpiderlyFormGroup<Registration>({});\r\n\r\n companyName: string;\r\n showEmailSentDialog: boolean = false;\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService, \r\n ) {\r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initRegistrationFormGroup(new Registration({}));\r\n }\r\n \r\n initRegistrationFormGroup(model: Registration){\r\n this.initFormGroup(this.registrationFormGroup, this.formGroup, model, model.typeName, []);\r\n }\r\n\r\n companyNameChange(companyName: string){\r\n this.companyName = companyName;\r\n }\r\n\r\n sendRegistrationVerificationEmail() {\r\n let isFormGroupValid: boolean = this.baseFormService.checkFormGroupValidity(this.registrationFormGroup);\r\n\r\n if (isFormGroupValid == false) \r\n return;\r\n\r\n // const returnUrl = this.route.snapshot.queryParams['returnUrl'] || '';\r\n this.authService.sendRegistrationVerificationEmail(this.registrationFormGroup.getRawValue()).subscribe(() => {\r\n this.showEmailSentDialog = true;\r\n });\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (registrationFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\r\n <spiderly-textbox [control]=\"control('email', registrationFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div class=\"mb-4 gap-5\">\r\n <div class=\"text-center\" style=\"font-size: smaller;\">\r\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\r\n </div>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('AgreeAndJoin')\" (onClick)=\"sendRegistrationVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button [label]=\"t('AlreadyHasAccount', {companyName: companyName})\" routerLink=\"/login\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <registration-verification [email]=\"registrationFormGroup.controls.email.getRawValue()\"></registration-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { VerificationWrapperComponent } from './verification-wrapper.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\n\r\n@Component({\r\n selector: 'login-verification',\r\n templateUrl: './login-verification.component.html',\r\n standalone: true,\r\n imports: [\r\n VerificationWrapperComponent\r\n ]\r\n})\r\nexport class LoginVerificationComponent implements OnInit {\r\n @Input() email: string;\r\n @Input() userId: number;\r\n\r\n constructor(\r\n private authService: AuthBaseService, \r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n \r\n resendVerificationToken(){\r\n this.authService.sendLoginVerificationEmail({email: this.email}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullySentVerificationCode'));\r\n });\r\n }\r\n\r\n onCodeSubmit(event: string){\r\n this.authService.login({email: this.email, verificationCode: event}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('YouHaveSuccessfullyVerifiedYourAccount'));\r\n this.authService.navigateToDashboard();\r\n });\r\n }\r\n}\r\n\r\n","<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\r\n\r\n","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { Login } from '../../../entities/security-entities';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n})\r\nexport class LoginComponent extends BaseFormCopy implements OnInit {\r\n loginFormGroup = new SpiderlyFormGroup<Login>({});\r\n\r\n companyName: string;\r\n showEmailSentDialog: boolean = false;\r\n usersCanRegister: boolean = this.config.usersCanRegister;\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n private authService: AuthBaseService, \r\n private config: ConfigBaseService\r\n ) { \r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initLoginFormGroup(new Login({}));\r\n }\r\n \r\n initLoginFormGroup(model: Login){\r\n this.initFormGroup(this.loginFormGroup, this.formGroup, model, model.typeName, []);\r\n }\r\n\r\n companyNameChange(companyName: string){\r\n this.companyName = companyName;\r\n }\r\n\r\n sendLoginVerificationEmail() {\r\n let isFormGroupValid: boolean = this.baseFormService.checkFormGroupValidity(this.loginFormGroup);\r\n \r\n if (isFormGroupValid == false) \r\n return;\r\n\r\n this.authService.sendLoginVerificationEmail(this.loginFormGroup.getRawValue()).subscribe(()=>{\r\n this.showEmailSentDialog = true;\r\n });\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (loginFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0; margin-bottom: 32px;\">\r\n <spiderly-textbox [control]=\"control('email', loginFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button *ngIf=\"usersCanRegister\" [label]=\"t('NewToJoinNow', {companyName: companyName})\" routerLink=\"/registration\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { RegistrationComponent } from './registration/registration.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { AuthComponent } from './partials/auth.component';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { LoginVerificationComponent } from './partials/login-verification.component';\r\nimport { RegistrationVerificationComponent } from './partials/registration-verification.component';\r\n\r\nconst routes: Routes = [\r\n { \r\n path: 'registration', \r\n component: RegistrationComponent\r\n },\r\n { \r\n path: 'login', \r\n component: LoginComponent\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(routes),\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AuthComponent,\r\n PrimengModule,\r\n SpiderlyControlsModule,\r\n LoginVerificationComponent,\r\n RegistrationVerificationComponent,\r\n TranslocoDirective,\r\n ],\r\n declarations: [\r\n RegistrationComponent,\r\n LoginComponent,\r\n ]\r\n})\r\nexport class AuthModule { }\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n@Component({\r\n selector: 'card-skeleton',\r\n templateUrl: './card-skeleton.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [SkeletonModule]\r\n})\r\nexport class CardSkeletonComponent {\r\n @Input() height: number = 400;\r\n titleHeight: number = 23;\r\n dataHeight: number;\r\n padding: number = 21;\r\n titleMarginBottom: number = 14;\r\n titleMarginTop: number = 4;\r\n\r\n ngOnInit(){\r\n this.dataHeight = this.height - (this.titleHeight + this.padding * 2 + this.titleMarginBottom + this.titleMarginTop)\r\n }\r\n}","<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\r\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\r\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\r\n </div>\r\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\r\n <p-skeleton width=\"100%\" height=\"100%\"/>\r\n </div>\r\n</div>","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class IsAuthorizedForSaveEvent extends BaseEntity\r\n{\r\n isAuthorizedForSave?: boolean;\r\n currentUserPermissionCodes?: string[];\r\n\r\n constructor(\r\n {\r\n isAuthorizedForSave,\r\n currentUserPermissionCodes,\r\n }:{\r\n isAuthorizedForSave?: boolean;\r\n currentUserPermissionCodes?: string[];\r\n } = {}\r\n ) {\r\n super('IsAuthorizedForSaveEvent'); \r\n\r\n this.isAuthorizedForSave = isAuthorizedForSave;\r\n this.currentUserPermissionCodes = currentUserPermissionCodes;\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { combineLatest, forkJoin, map, Observable, of, Subscription } from 'rxjs';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { CardSkeletonComponent } from '../card-skeleton/card-skeleton.component';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { LastMenuIconIndexClicked } from '../../entities/last-menu-icon-index-clicked';\r\nimport { Role, RoleSaveBody } from '../../entities/security-entities';\r\nimport { SpiderlyButton } from '../../entities/spiderly-button';\r\nimport { getControl, getPrimengAutocompleteNamebookOptions, getPrimengDropdownNamebookOptions, nameof } from '../../services/helper-functions';\r\nimport { BaseFormService } from '../../services/base-form.service';\r\nimport { ApiSecurityService } from '../../services/api.service.security';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { IsAuthorizedForSaveEvent } from '../../entities/is-authorized-for-save-event';\r\nimport { AuthBaseService } from '../../services/auth-base.service';\r\nimport { SpiderlyTextboxComponent } from '../../controls/spiderly-textbox/spiderly-textbox.component';\r\nimport { SpiderlyTextareaComponent } from '../../controls/spiderly-textarea/spiderly-textarea.component';\r\nimport { SpiderlyMultiAutocompleteComponent } from '../../controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nimport { SpiderlyMultiSelectComponent } from '../../controls/spiderly-multiselect/spiderly-multiselect.component';\r\nimport { SpiderlyPanelsModule } from '../spiderly-panels/spiderly-panels.module';\r\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { SpiderlyReturnButtonComponent } from '../spiderly-buttons/return-button/return-button.component';\r\n\r\n@Component({\r\n selector: 'role-base-details',\r\n templateUrl: 'role-base-details.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule, \r\n FormsModule,\r\n ReactiveFormsModule,\r\n PrimengModule,\r\n // SpiderlyControlsModule,\r\n TranslocoDirective,\r\n CardSkeletonComponent,\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyPanelsModule,\r\n SpiderlyButtonComponent,\r\n SpiderlyReturnButtonComponent\r\n ]\r\n})\r\nexport class RoleBaseDetailsComponent {\r\n @Output() onSave = new EventEmitter<void>();\r\n @Output() onRoleFormGroupInitFinish = new EventEmitter<void>();\r\n @Input() getCrudMenuForOrderedData: (formArray: SpiderlyFormArray, modelConstructor: BaseEntity, lastMenuIconIndexClicked: LastMenuIconIndexClicked, adjustFormArrayManually: boolean) => MenuItem[];\r\n @Input() formGroup: SpiderlyFormGroup;\r\n @Input() roleFormGroup: SpiderlyFormGroup<Role>;\r\n @Input() additionalButtons: SpiderlyButton[] = [];\r\n\r\n authorizationForSaveSubscription: Subscription;\r\n @Input() authorizedForSaveObservable: () => Observable<boolean> = () => of(false);\r\n isAuthorizedForSave: boolean = false;\r\n @Output() onIsAuthorizedForSaveChange = new EventEmitter<IsAuthorizedForSaveEvent>(); \r\n \r\n modelId: number;\r\n loading: boolean = true;\r\n roleSaveBodyName: string = nameof<RoleSaveBody>('roleDTO');\r\n\r\n usersForRoleOptions: PrimengOption[];\r\n permissionsForRoleOptions: PrimengOption[];\r\n\r\n selectedUsersForRole = new SpiderlyFormControl<PrimengOption[]>(null, {updateOn: 'change'});\r\n selectedPermissionsForRole = new SpiderlyFormControl<number[]>(null, {updateOn: 'change'});\r\n\r\n constructor(\r\n private apiService: ApiSecurityService,\r\n private route: ActivatedRoute,\r\n private baseFormService: BaseFormService,\r\n private authService: AuthBaseService\r\n ) {}\r\n\r\n ngOnInit(){\r\n this.formGroup.initSaveBody = () => { \r\n let saveBody = new RoleSaveBody();\r\n saveBody.roleDTO = this.roleFormGroup.getRawValue();\r\n\r\n saveBody.selectedPermissionsIds = this.selectedPermissionsForRole.getRawValue();\r\n saveBody.selectedUsersIds = this.selectedUsersForRole.getRawValue()?.map(n => n.value);\r\n\r\n return saveBody;\r\n }\r\n\r\n this.formGroup.saveObservableMethod = this.apiService.saveRole;\r\n this.formGroup.mainDTOName = this.roleSaveBodyName;\r\n\r\n this.route.params.subscribe(async (params) => {\r\n this.modelId = params['id'];\r\n\r\n getPrimengDropdownNamebookOptions(this.apiService.getPermissionsDropdownListForRole).subscribe(po => {\r\n this.permissionsForRoleOptions = po;\r\n });\r\n\r\n if(this.modelId > 0){\r\n forkJoin({\r\n mainUIFormDTO: this.apiService.getRoleMainUIFormDTO(this.modelId)\r\n })\r\n .subscribe(({ mainUIFormDTO }) => {\r\n this.initRoleFormGroup(new Role(mainUIFormDTO.roleDTO));\r\n\r\n this.selectedPermissionsForRole.setValue(\r\n mainUIFormDTO.permissionsNamebookDTOList.map(n => { return n.id })\r\n );\r\n this.selectedUsersForRole.setValue(\r\n mainUIFormDTO.usersNamebookDTOList.map(n => ({ label: n.displayName, value: n.id }))\r\n );\r\n\r\n this.authorizationForSaveSubscription = this.handleAuthorizationForSave().subscribe();\r\n this.loading = false;\r\n });\r\n }\r\n else{\r\n this.initRoleFormGroup(new Role({id: 0}));\r\n\r\n this.authorizationForSaveSubscription = this.handleAuthorizationForSave().subscribe();\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n initRoleFormGroup(role: Role) {\r\n this.baseFormService.addFormGroup<Role>(\r\n this.roleFormGroup, \r\n this.formGroup, \r\n role, \r\n this.roleSaveBodyName,\r\n []\r\n );\r\n this.roleFormGroup.mainDTOName = this.roleSaveBodyName;\r\n this.onRoleFormGroupInitFinish.next();\r\n }\r\n \r\n handleAuthorizationForSave = () => {\r\n return combineLatest([this.authService.currentUserPermissionCodes$, this.authorizedForSaveObservable()]).pipe(\r\n map(([currentUserPermissionCodes, isAuthorizedForSave]) => {\r\n if (currentUserPermissionCodes != null && isAuthorizedForSave != null) {\r\n this.isAuthorizedForSave =\r\n (currentUserPermissionCodes.includes('InsertRole') && this.modelId <= 0) || \r\n (currentUserPermissionCodes.includes('UpdateRole') && this.modelId > 0) ||\r\n isAuthorizedForSave;\r\n\r\n if (this.isAuthorizedForSave) { \r\n this.roleFormGroup.controls.name.enable();\r\n this.roleFormGroup.controls.description.enable();\r\n this.selectedUsersForRole.enable();\r\n this.selectedPermissionsForRole.enable();\r\n }\r\n else{\r\n this.roleFormGroup.controls.name.disable();\r\n this.roleFormGroup.controls.description.disable();\r\n this.selectedUsersForRole.disable();\r\n this.selectedPermissionsForRole.disable();\r\n }\r\n\r\n this.onIsAuthorizedForSaveChange.next(new IsAuthorizedForSaveEvent({\r\n isAuthorizedForSave: this.isAuthorizedForSave, \r\n currentUserPermissionCodes: currentUserPermissionCodes\r\n })); \r\n }\r\n })\r\n );\r\n }\r\n\r\n searchUsersForRole(event: AutoCompleteCompleteEvent) {\r\n getPrimengAutocompleteNamebookOptions(this.apiService.getUsersAutocompleteListForRole, 50, event?.query ?? '').subscribe(po => {\r\n this.usersForRoleOptions = po;\r\n });\r\n }\r\n\r\n control(formControlName: string, formGroup: SpiderlyFormGroup){\r\n return getControl(formControlName, formGroup);\r\n }\r\n\r\n getFormArrayGroups<T>(formArray: SpiderlyFormArray): SpiderlyFormGroup<T>[]{\r\n return this.baseFormService.getFormArrayGroups<T>(formArray);\r\n }\r\n\r\n save(){\r\n this.onSave.next();\r\n }\r\n\r\n ngOnDestroy(){\r\n if (this.authorizationForSaveSubscription) {\r\n this.authorizationForSaveSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('name', roleFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"control('description', roleFormGroup)\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"selectedUsersForRole\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"selectedPermissionsForRole\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>","import { Component } from '@angular/core';\r\nimport { ConfigBaseService } from '../../services/config-base.service'\r\n\r\n@Component({\r\n selector: 'footer',\r\n templateUrl: './footer.component.html',\r\n standalone: true\r\n})\r\nexport class FooterComponent {\r\n companyName: string = this.config.companyName;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\r\n}\r\n","<div class=\"layout-footer\">\r\n <span class=\"font-medium ml-2\">{{companyName}}</span>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'index-card',\r\n templateUrl: './index-card.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n SpiderlyPanelsModule\r\n]\r\n})\r\nexport class IndexCardComponent {\r\n @Input() last: boolean;\r\n @Input() index: number;\r\n @Input() header: string = '';\r\n @Input() description: string;\r\n @Input() showRemoveIcon: boolean;\r\n @Input() showCrudMenu: boolean = true;\r\n\r\n @Input() crudMenu: MenuItem[];\r\n\r\n @Output() onMenuIconClick = new EventEmitter<number>();\r\n @Output() onRemoveIconClick = new EventEmitter<null>();\r\n \r\n constructor(\r\n protected formBuilder: FormBuilder,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n // console.log(this.last);\r\n }\r\n\r\n menuIconClick(index: number){\r\n this.onMenuIconClick.next(index);\r\n }\r\n\r\n removeIconClick(){\r\n this.onRemoveIconClick.next(null);\r\n }\r\n\r\n}","<div [ngClass]=\"{\r\n\t'last-child-zero-margin': last,\r\n 'card-margin-bottom': true,\r\n\t}\">\r\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\r\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\r\n\t\t\r\n\t\t<panel-body>\r\n\t\t\t<ng-content>\r\n\t\t\t\t<!-- Custom things below description -->\r\n\t\t\t</ng-content>\r\n\t\t</panel-body>\r\n\t\t\r\n\t</spiderly-panel>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'info-card',\r\n templateUrl: './info-card.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n SpiderlyPanelsModule\r\n]\r\n})\r\nexport class InfoCardComponent {\r\n @Input() public header: string = '';\r\n @Input() public description: string;\r\n \r\n constructor(\r\n protected formBuilder: FormBuilder,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n }\r\n\r\n}","<div class=\"card responsive-card-padding\" style=\"background-color: var(--primary-lighter-color); position: relative; overflow: hidden;\">\r\n <!-- TODO FT: Translate -->\r\n <div style=\"display: flex; align-items: center; gap: 21px; position: relative; z-index: 2;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 26px; color: var(--primary-color);\"></i>\r\n <div>\r\n <div class=\"header\" style=\"color:var(--primary-color); font-weight: 600; text-align: left;\">\r\n {{header}}\r\n </div>\r\n <div style=\"color:var(--primary-color); text-align: left; margin-top: 8px;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-overflow-icon\" style=\"position: absolute; overflow: hidden; right: 8px; top: -25px; z-index: 1;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 270px;\"></i>\r\n </div>\r\n </div>","import { Component } from '@angular/core';\r\nimport { ConfigBaseService } from '../../services/config-base.service';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'not-found',\r\n templateUrl: './not-found.component.html',\r\n standalone: true,\r\n imports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class NotFoundComponent { \r\n companyName = this.config.companyName;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\r\n}","<div class=\"surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden\">\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n <img src=\"assets/primeng/images/logo-dark.svg\" alt=\"{{companyName}} Logo\" class=\"mb-5 w-6rem flex-shrink-0\">\r\n <div style=\"border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(33, 150, 243, 0.4) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center\" style=\"border-radius:53px\">\r\n <span class=\"text-blue-500 font-bold text-3xl\">404</span>\r\n <h1 class=\"text-900 font-bold text-3xl lg:text-5xl mb-2\">Not Found</h1>\r\n <div class=\"text-600 mb-5\">Requested resource is not available.</div>\r\n <a [routerLink]=\"['/']\" class=\"w-full flex align-items-center py-5 border-300 border-bottom-1\">\r\n <span class=\"flex justify-content-center align-items-center bg-cyan-400 border-round\" style=\"height:3.5rem; width:3.5rem;\">\r\n <i class=\"text-50 pi pi-fw pi-table text-2xl\"></i>\r\n </span>\r\n <span class=\"ml-4 flex flex-column\">\r\n <span class=\"text-900 lg:text-xl font-medium mb-0 block\">Frequently Asked Questions</span>\r\n <span class=\"text-600 lg:text-xl\">Need help find answers here.</span>\r\n </span>\r\n </a>\r\n <a [routerLink]=\"['/']\" class=\"w-full flex align-items-center py-5 border-300 border-bottom-1\">\r\n <span class=\"flex justify-content-center align-items-center bg-orange-400 border-round\" style=\"height:3.5rem; width:3.5rem;\">\r\n <i class=\"pi pi-fw pi-question-circle text-50 text-2xl\"></i>\r\n </span>\r\n <span class=\"ml-4 flex flex-column\">\r\n <span class=\"text-900 lg:text-xl font-medium mb-0\">Solution Center</span>\r\n <span class=\"text-600 lg:text-xl\">Discover solutions.</span>\r\n </span>\r\n </a>\r\n <a [routerLink]=\"['/']\" class=\"w-full flex align-items-center mb-5 py-5 border-300 border-bottom-1\">\r\n <span class=\"flex justify-content-center align-items-center bg-indigo-400 border-round\" style=\"height:3.5rem; width:3.5rem;\">\r\n <i class=\"pi pi-fw pi-unlock text-50 text-2xl\"></i>\r\n </span>\r\n <span class=\"ml-4 flex flex-column\">\r\n <span class=\"text-900 lg:text-xl font-medium mb-0\">Permission Manager</span>\r\n <span class=\"text-600 lg:text-xl\">Manage users permissions.</span>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\n\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\r\n\r\n@Component({\r\n selector: 'spiderly-split-button',\r\n templateUrl: './spiderly-split-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {\r\n @Input() dropdownItems: MenuItem[];\r\n\r\n\r\n\r\n}","<p-splitButton\r\n(onClick)=\"handleClick($event)\" \r\n[label]=\"label\" \r\n[icon]=\"icon\" \r\n[outlined]=\"outlined\" \r\n[styleClass]=\"styleClass\" \r\n[severity]=\"severity\" \r\n[rounded]=\"rounded\"\r\n[style]=\"style\"\r\n[class]=\"class\"\r\n[disabled]=\"disabled\"\r\n[model]=\"dropdownItems\"\r\n>\r\n <ng-content></ng-content>\r\n</p-splitButton>","import { ConfirmationService } from 'primeng/api';\r\nimport { Component } from \"@angular/core\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\n\r\n@Component({\r\n selector: 'spiderly-delete-confirmation',\r\n templateUrl: './spiderly-delete-confirmation.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n PrimengModule,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n ],\r\n providers: [\r\n ConfirmationService\r\n ]\r\n})\r\nexport class SpiderlyDeleteConfirmationComponent {\r\n\r\n constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) {}\r\n\r\n accept(){\r\n this.config.data.deleteItemFromTableObservableMethod(this.config.data.id).subscribe({\r\n next: () => {\r\n this.ref.close(true); // deleted succesfully\r\n },\r\n error: () => {\r\n this.ref.close(false); // not deleted succesfully\r\n },\r\n });\r\n }\r\n\r\n reject(){\r\n this.ref.close(false);\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <p-confirmDialog \r\n #cd \r\n ></p-confirmDialog>\r\n <div\r\n class=\"border-bottom-1 surface-border text-lg\"\r\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\r\n >\r\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\r\n <p>{{t('PleaseConfirmToProceed')}}</p>\r\n </div>\r\n \r\n <div style=\"display: flex; gap: 5px; justify-content: right; margin-top: 28px;\">\r\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancle')\" severity=\"secondary\"></spiderly-button>\r\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\r\n </div>\r\n</ng-container>\r\n","import { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { Table, TableFilterEvent, TableLazyLoadEvent } from 'primeng/table';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { SpiderlyDeleteConfirmationComponent } from '../spiderly-delete-dialog/spiderly-delete-confirmation.component';\r\nimport { CommonModule, formatDate } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { firstValueFrom, Observable } from 'rxjs';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { SpiderlyFormControl } from '../spiderly-form-control/spiderly-form-control';\r\nimport { TableResponse } from '../../entities/table-response';\r\nimport { LazyLoadSelectedIdsResult } from '../../entities/lazy-load-selected-ids-result';\r\nimport { exportListToExcel } from '../../services/helper-functions';\r\nimport { TableFilter } from '../../entities/table-filter';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-data-table',\r\n templateUrl: './spiderly-data-table.component.html',\r\n styleUrl: 'spiderly-data-table.component.scss',\r\n styles: [`\r\n \t:host {\r\n\t\t ::ng-deep {\r\n\t\t .remove-button-border-focus:focus, \r\n .remove-button-border-focus:enabled:focus {\r\n box-shadow: none;\r\n -webkit-box-shadow: none;\r\n -moz-box-shadow: none;\r\n background-color: var(--gray-200);\r\n\t\t }\r\n\t\t }\r\n\t }\r\n `],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n PrimengModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyDataTableComponent implements OnInit {\r\n @ViewChild('dt') table: Table;\r\n @Input() tableTitle: string;\r\n @Input() tableIcon: string = 'pi pi-list';\r\n @Input() items: any[]; // FT: Pass only when hasLazyLoad === false\r\n @Input() rows: number = 10;\r\n @Input() cols: Column[];\r\n @Input() showPaginator: boolean = true; // FT: Pass only when hasLazyLoad === false\r\n @Input() showCardWrapper: boolean = true;\r\n @Input() readonly: boolean = false;\r\n totalRecords: number;\r\n @Output() onTotalRecordsChange: EventEmitter<number> = new EventEmitter();;\r\n \r\n @Input() getTableDataObservableMethod: (tableFilter: TableFilter) => Observable<TableResponse>;\r\n @Input() exportTableDataToExcelObservableMethod: (tableFilter: TableFilter) => Observable<any>;\r\n @Input() deleteItemFromTableObservableMethod: (rowId: number) => Observable<any>;\r\n\r\n lastLazyLoadEvent: TableLazyLoadEvent;\r\n loading: boolean = true;\r\n \r\n @Input() newlySelectedItems: number[] = [];\r\n fakeSelectedItems: number[] = []; // FT: Only for showing checkboxes, we will not send this to the backend\r\n currentPageSelectedItemsFromDb: number[] = []; // FT: Made so we can add only newly selected items to the newlySelectedItems\r\n @Input() unselectedItems: number[] = [];\r\n @Input() selectionMode: 'single' | 'multiple' | undefined | null;\r\n @Output() onLazyLoad: EventEmitter<TableFilter> = new EventEmitter();\r\n rowsSelectedNumber: number = 0;\r\n isAllSelected: boolean = null;\r\n fakeIsAllSelected: boolean = false; // FT: Only for showing checkboxes, we will not send this to the backend\r\n isFirstTimeLazyLoad: boolean = true;\r\n @Output() onIsAllSelectedChange: EventEmitter<AllClickEvent> = new EventEmitter();\r\n @Input() selectedLazyLoadObservableMethod: (tableFilter: TableFilter) => Observable<LazyLoadSelectedIdsResult>;\r\n @Input() additionalFilterIdLong: number;\r\n \r\n matchModeDateOptions: SelectItem[] = [];\r\n matchModeNumberOptions: SelectItem[] = [];\r\n @Input() showAddButton: boolean = true; \r\n @Input() showExportToExcelButton: boolean = true;\r\n @Input() showReloadTableButton: boolean = false;\r\n\r\n deleteRef: DynamicDialogRef;\r\n\r\n // Client side table\r\n // @Input() formArrayItems: any[]; // FT: Pass this only if you have some additional logic for showing data\r\n @Input() getFormArrayItems: (additionalIndexes?: any) => any[];\r\n @Input() hasLazyLoad: boolean = true; \r\n selectedItemIds: number[] = []; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getAlreadySelectedItemIds: (additionalIndexes?: any) => number[]; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n selectedItems: any[] = []; // FT: Pass only when hasLazyLoad === false\r\n @Input() getAlreadySelectedItems: (additionalIndexes?: any) => any[]; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getFormControl: (formControlName: string, index: number, additionalIndexes?: any) => SpiderlyFormControl;\r\n @Input() additionalIndexes: any;\r\n @Output() onRowSelect: EventEmitter<RowClickEvent> = new EventEmitter();\r\n @Output() onRowUnselect: EventEmitter<RowClickEvent> = new EventEmitter();\r\n\r\n constructor(\r\n private router: Router,\r\n private dialogService: DialogService,\r\n private route: ActivatedRoute,\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n @Inject(LOCALE_ID) private locale: string\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.matchModeDateOptions = [\r\n { label: this.translocoService.translate('OnDate'), value: 'equals' },\r\n { label: this.translocoService.translate('DatesBefore'), value: 'dateBefore' },\r\n { label: this.translocoService.translate('DatesAfter'), value: 'dateAfter' },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: 'equals' },\r\n { label: this.translocoService.translate('MoreThan'), value: 'gte' },\r\n { label: this.translocoService.translate('LessThan'), value: 'lte' },\r\n ];\r\n\r\n if (this.hasLazyLoad === false) {\r\n this.clientLoad();\r\n }\r\n }\r\n \r\n lazyLoad(event: TableLazyLoadEvent) {\r\n this.lastLazyLoadEvent = event;\r\n\r\n let tableFilter: TableFilter = event as unknown as TableFilter;\r\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getTableDataObservableMethod(tableFilter).subscribe({\r\n next: async (res) => { \r\n this.items = res.data;\r\n this.totalRecords = res.totalRecords;\r\n this.onTotalRecordsChange.next(res.totalRecords);\r\n \r\n if (this.selectedLazyLoadObservableMethod != null) {\r\n let selectedRowsMethodResult: LazyLoadSelectedIdsResult = await firstValueFrom(this.selectedLazyLoadObservableMethod(tableFilter));\r\n \r\n this.currentPageSelectedItemsFromDb = [...selectedRowsMethodResult.selectedIds];\r\n\r\n if (this.isFirstTimeLazyLoad == true) {\r\n this.rowsSelectedNumber = selectedRowsMethodResult.totalRecordsSelected;\r\n this.setFakeIsAllSelected();\r\n this.isFirstTimeLazyLoad = false;\r\n }\r\n \r\n if (this.isAllSelected == true) {\r\n let idsToInsert = [...this.items.map(x => x.id)];\r\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\r\n this.fakeSelectedItems = [...idsToInsert]; // FT: Only for showing checkboxes, we will not send this to the backend\r\n }\r\n else if (this.isAllSelected == false) {\r\n this.fakeSelectedItems = [...this.newlySelectedItems]; // FT: Only for showing checkboxes, we will not send this to the backend\r\n }\r\n else if (this.isAllSelected == null) {\r\n let idsToInsert = [...selectedRowsMethodResult.selectedIds, ...this.newlySelectedItems];\r\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\r\n this.fakeSelectedItems = [...idsToInsert];\r\n }\r\n }\r\n\r\n this.loading = false;\r\n },\r\n error: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n clientLoad(){\r\n this.loading = false;\r\n\r\n this.loadFormArrayItems();\r\n this.totalRecords = this.items.length;\r\n this.onTotalRecordsChange.next(this.items.length);\r\n\r\n if (this.getAlreadySelectedItemIds) {\r\n this.selectedItemIds = this.getAlreadySelectedItemIds(this.additionalIndexes);\r\n }\r\n if (this.getAlreadySelectedItems) {\r\n this.selectedItems = this.getAlreadySelectedItems(this.additionalIndexes);\r\n }\r\n this.rowsSelectedNumber = this.selectedItemIds.length;\r\n this.setFakeIsAllSelected();\r\n }\r\n\r\n private clientFilterCount = 0;\r\n\r\n filter(event: TableFilterEvent){\r\n if (this.hasLazyLoad && this.selectionMode === 'multiple')\r\n this.selectAll(false); // FT: We need to do it like this because: totalRecords: 1 -> selectedRecords from earlyer selection 2 -> unselect current -> all checkbox is set to true\r\n\r\n if (this.hasLazyLoad === false && this.selectionMode === 'multiple') {\r\n if (this.clientFilterCount === 0) {\r\n this.loadFormArrayItems();\r\n this.clientFilterCount++;\r\n }else{\r\n this.clientFilterCount--;\r\n }\r\n }\r\n }\r\n\r\n private loadFormArrayItems(){\r\n this.items = this.getFormArrayItems(this.additionalIndexes);\r\n this.items.forEach((item, index) => {\r\n item.index = index;\r\n });\r\n }\r\n \r\n getColHeaderWidth(filterType: string) {\r\n switch (filterType) {\r\n case 'text':\r\n return 'min-width: 12rem;';\r\n case 'date':\r\n return 'min-width: 10rem;';\r\n case 'multiselect':\r\n return 'min-width: 12rem;';\r\n case 'boolean':\r\n return 'min-width: 8rem;';\r\n case 'numeric':\r\n return 'min-width: 12rem;';\r\n default:\r\n return 'width: 0rem;'; // fitting content of the row like this\r\n }\r\n }\r\n\r\n getColMatchModeOptions(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return null;\r\n case 'date':\r\n return this.matchModeDateOptions;\r\n case 'multiselect':\r\n return null;\r\n case 'boolean':\r\n return null;\r\n case 'numeric':\r\n return this.matchModeNumberOptions;\r\n default:\r\n return null;\r\n }\r\n }\r\n \r\n getColMatchMode(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return 'contains';\r\n case 'date':\r\n return null;\r\n case 'multiselect':\r\n return 'in';\r\n case 'boolean':\r\n return 'equals';\r\n case 'numeric':\r\n return null;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n isDropOrMulti(filterType: string){\r\n if (filterType == 'dropdown' || filterType == 'multiselect') {\r\n return true;\r\n } \r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n navigateToDetails(rowId: number){\r\n this.router.navigate([rowId], {relativeTo: this.route});\r\n }\r\n\r\n deleteObject(rowId: number){\r\n this.deleteRef = this.dialogService.open(SpiderlyDeleteConfirmationComponent, \r\n { \r\n header: this.translocoService.translate('AreYouSure'),\r\n width: '400px',\r\n data:{ deleteItemFromTableObservableMethod: this.deleteItemFromTableObservableMethod, id: rowId, } \r\n });\r\n\r\n this.deleteRef.onClose.subscribe((deletedSuccessfully: boolean)=>{\r\n if(deletedSuccessfully === true){\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullyDeletedMessage'));\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n reload(){\r\n this.loading = true;\r\n this.items = null;\r\n this.lazyLoad(this.lastLazyLoadEvent);\r\n }\r\n\r\n showActions(): boolean {\r\n return this.cols.some(x => x.actions?.length > 0);\r\n }\r\n\r\n getStyleForBodyColumn(col: Column<any>) {\r\n switch(col.filterType){\r\n case 'numeric':\r\n return 'text-align: right;';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getClassForAction(action: Action): string{\r\n switch(action.field){\r\n case 'Details':\r\n return 'pi pi-pencil text-lg cursor-pointer primary-color';\r\n case 'Delete':\r\n return 'pi pi-trash text-lg text-red-500 cursor-pointer';\r\n default:\r\n return `${action.icon} ${action.style} text-lg cursor-pointer`;\r\n }\r\n }\r\n\r\n getMethodForAction(action: Action, rowData: any){\r\n switch(action.field){\r\n case 'Details':\r\n return this.navigateToDetails(rowData.id);\r\n case 'Delete':\r\n return this.deleteObject(rowData.id);\r\n default:\r\n return action.onClick(rowData.id);\r\n }\r\n }\r\n\r\n getRowData(rowData: any, col: Column): string{\r\n switch (col.filterType) {\r\n case 'text':\r\n return rowData[col.field];\r\n case 'date':\r\n if (rowData[col.field] == null)\r\n return null;\r\n \r\n if (col.showTime)\r\n return formatDate(rowData[col.field], 'dd.MM.yyyy. HH:mm', this.locale);\r\n else\r\n return formatDate(rowData[col.field], 'dd.MM.yyyy.', this.locale);\r\n case 'multiselect':\r\n return rowData[col.field];\r\n case 'boolean':\r\n return rowData[col.field] == true ? this.translocoService.translate('Yes') : this.translocoService.translate('No');\r\n case 'numeric':\r\n // TODO FT: make decimal pipe\r\n return rowData[col.field];\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n colTrackByFn(index, item){\r\n return item.field;\r\n }\r\n\r\n actionTrackByFn(index, item: Action){\r\n return `${index}${item.field}`\r\n }\r\n\r\n exportListToExcel() {\r\n let tableFilter: TableFilter = this.lastLazyLoadEvent as unknown as TableFilter;\r\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n exportListToExcel(this.exportTableDataToExcelObservableMethod, tableFilter);\r\n }\r\n\r\n clear(table: Table) {\r\n table.clear();\r\n }\r\n\r\n //#region Selection\r\n\r\n setFakeIsAllSelected(){\r\n if(this.rowsSelectedNumber == this.totalRecords)\r\n this.fakeIsAllSelected = true;\r\n else\r\n this.fakeIsAllSelected = false;\r\n }\r\n\r\n selectAll(checked: boolean){\r\n this.unselectedItems.length = 0;\r\n this.newlySelectedItems.length = 0;\r\n\r\n if (checked == true) {\r\n this.isAllSelected = true;\r\n this.fakeIsAllSelected = true;\r\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: true, additionalIndexes: this.additionalIndexes}));\r\n this.rowsSelectedNumber = this.totalRecords;\r\n this.fakeSelectedItems = [...this.items.map(x => x.id)];\r\n this.selectedItemIds = [...this.items.map(x => x.id)]\r\n }\r\n else{\r\n this.isAllSelected = false;\r\n this.fakeIsAllSelected = false;\r\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: false, additionalIndexes: this.additionalIndexes}));\r\n this.rowsSelectedNumber = 0;\r\n this.fakeSelectedItems = [];\r\n this.selectedItemIds = [];\r\n }\r\n }\r\n\r\n selectRow(id: number, index: number) {\r\n if (this.isRowSelected(id)) {\r\n this.rowUnselect(id);\r\n this.onRowUnselect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\r\n } else {\r\n this.rowSelect(id);\r\n this.onRowSelect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\r\n }\r\n }\r\n\r\n isRowSelected(id: number){\r\n if (this.hasLazyLoad){\r\n return this.fakeSelectedItems.find(x => x === id) != undefined;\r\n }\r\n else {\r\n return this.selectedItemIds.find(x => x === id) != undefined;\r\n }\r\n }\r\n\r\n rowSelect(id: number){\r\n if (this.isAllSelected == false || this.currentPageSelectedItemsFromDb.includes(id) == false) {\r\n this.newlySelectedItems.push(id);\r\n }\r\n\r\n if (this.hasLazyLoad){\r\n this.fakeSelectedItems.push(id);\r\n }\r\n else {\r\n this.selectedItemIds.push(id);\r\n }\r\n \r\n this.rowsSelectedNumber++;\r\n\r\n const index = this.unselectedItems.indexOf(id);\r\n if (index !== -1) {\r\n this.unselectedItems.splice(index, 1); // FT: Splice is mutating the array\r\n }\r\n\r\n this.setFakeIsAllSelected();\r\n }\r\n \r\n rowUnselect(id: number) {\r\n if (this.isAllSelected == true || this.currentPageSelectedItemsFromDb.includes(id) == true) {\r\n this.unselectedItems.push(id);\r\n }\r\n\r\n this.rowsSelectedNumber--;\r\n\r\n const index = this.newlySelectedItems.indexOf(id);\r\n const fakeIndex = this.fakeSelectedItems.indexOf(id);\r\n const nonLazyLoadIndex = this.selectedItemIds.indexOf(id);\r\n\r\n if (index !== -1) {\r\n this.newlySelectedItems.splice(index, 1); // FT: Splice is mutating the array\r\n }\r\n if (fakeIndex !== -1) {\r\n this.fakeSelectedItems.splice(fakeIndex, 1); // FT: Splice is mutating the array\r\n }\r\n if (nonLazyLoadIndex !== -1) {\r\n this.selectedItemIds.splice(nonLazyLoadIndex, 1); // FT: Splice is mutating the array\r\n }\r\n\r\n this.setFakeIsAllSelected();\r\n }\r\n //#endregion\r\n\r\n //#region Client side table\r\n\r\n // FT: Can do it with Id also, because we are never adding the new record in the table at the same page.\r\n getFormArrayControlByIndex(formControlName: string, index: number): SpiderlyFormControl{\r\n if (this.getFormControl) {\r\n return this.getFormControl(formControlName, index, this.additionalIndexes);\r\n }\r\n else{\r\n return null;\r\n }\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\nexport class Action {\r\n name?: string;\r\n field?: string;\r\n icon?: string;\r\n style?: string;\r\n onClick?: (id: number) => void;\r\n\r\n constructor(\r\n {\r\n name,\r\n field,\r\n icon,\r\n style,\r\n onClick,\r\n }:{\r\n name?: string;\r\n field?: string;\r\n icon?: string;\r\n style?: string;\r\n onClick?: () => void;\r\n } = {}\r\n ) {\r\n this.name = name;\r\n this.field = field;\r\n this.icon = icon;\r\n this.style = style;\r\n this.onClick = onClick;\r\n }\r\n}\r\n\r\nexport class Column<T = any> {\r\n name: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // FT: Made specificaly for multiautocomplete, maybe for something more in the future\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';\r\n filterPlaceholder?: string;\r\n showMatchModes?: boolean;\r\n showAddButton?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n actions?: Action[];\r\n editable?: boolean;\r\n showTime?: boolean;\r\n\r\n constructor(\r\n {\r\n name,\r\n field,\r\n filterField,\r\n filterType,\r\n filterPlaceholder,\r\n showMatchModes,\r\n showAddButton,\r\n dropdownOrMultiselectValues,\r\n actions,\r\n editable,\r\n showTime,\r\n }:{\r\n name?: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // FT: Made specificaly for multiautocomplete, maybe for something more in the future;\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';\r\n filterPlaceholder?: string;\r\n showMatchModes?: boolean;\r\n showAddButton?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n actions?: Action[];\r\n editable?: boolean;\r\n showTime?: boolean;\r\n } = {}\r\n ) {\r\n this.name = name;\r\n this.field = field;\r\n this.filterField = filterField;\r\n this.filterType = filterType;\r\n this.filterPlaceholder = filterPlaceholder;\r\n this.showMatchModes = showMatchModes;\r\n this.showAddButton = showAddButton;\r\n this.dropdownOrMultiselectValues = dropdownOrMultiselectValues;\r\n this.actions = actions;\r\n this.editable = editable;\r\n this.showTime = showTime;\r\n }\r\n}\r\n\r\nexport class RowClickEvent {\r\n index?: number;\r\n id?: number;\r\n additionalIndexes?: any;\r\n\r\n constructor(\r\n {\r\n index, \r\n id, \r\n additionalIndexes\r\n }:{\r\n index?: number; \r\n id?: number; \r\n additionalIndexes?: any;\r\n } = {}\r\n ) {\r\n this.index = index;\r\n this.id = id;\r\n this.additionalIndexes = additionalIndexes;\r\n }\r\n}\r\n\r\nexport class AllClickEvent {\r\n checked?: boolean;\r\n additionalIndexes?: any;\r\n\r\n constructor(\r\n {\r\n checked, \r\n additionalIndexes\r\n }:{\r\n checked?: boolean; \r\n additionalIndexes?: any;\r\n } = {}\r\n ) {\r\n this.checked = checked;\r\n this.additionalIndexes = additionalIndexes;\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" styleClass=\"p-datatable-gridlines\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}} text-2xl primary-color\"></i>\r\n <h5 style=\"margin: 0px;\">{{tableTitle}}</h5>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <!-- <p-sortIcon field=\"\"></p-sortIcon> -->\r\n <!-- <p-columnFilter type=\"date\" field=\"date\" display=\"menu\"></p-columnFilter> -->\r\n <p-columnFilter *ngIf=\"col.filterType != null\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-container *ngIf=\"isDropOrMulti(col.filterType)\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"value\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData.id, rowData.index)\" [ngModel]=\"isRowSelected(rowData.id)\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [pTooltip]=\"getRowData(rowData, col)\" [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n {{getRowData(rowData, col)}}\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { MenuChangeEvent } from '../../../entities/menuchangeevent';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SidebarMenuService {\r\n private menuSource = new Subject<MenuChangeEvent>();\r\n private resetSource = new Subject();\r\n\r\n menuSource$ = this.menuSource.asObservable();\r\n resetSource$ = this.resetSource.asObservable();\r\n\r\n onMenuStateChange(event: MenuChangeEvent) {\r\n this.menuSource.next(event);\r\n }\r\n\r\n reset() {\r\n this.resetSource.next(true);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { SidebarMenuService } from './sidebar-menu.service';\r\nimport { SpiderlyMenuItem } from './sidebar-menu.component';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { SpiderlyFormControl } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { PrimengOption } from '../../../entities/primeng-option';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ApiSecurityService } from '../../../services/api.service.security';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PrimengModule } from '../../../modules/primeng.module';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[menuitem]',\r\n templateUrl: './menuitem.component.html',\r\n animations: [\r\n trigger('children', [\r\n state('collapsed', style({\r\n height: '0'\r\n })),\r\n state('expanded', style({\r\n height: '*'\r\n })),\r\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\r\n ])\r\n ],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n ]\r\n})\r\nexport class MenuitemComponent implements OnInit, OnDestroy {\r\n\r\n @Input() item: SpiderlyMenuItem;\r\n\r\n @Input() index!: number;\r\n\r\n @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;\r\n\r\n @Input() parentKey!: string;\r\n\r\n active = false;\r\n\r\n private menuSourceSubscription: Subscription;\r\n\r\n private menuResetSubscription: Subscription;\r\n\r\n private permissionSubscription: Subscription | null = null;\r\n\r\n key: string = \"\";\r\n\r\n selectedPartner: SpiderlyFormControl = new SpiderlyFormControl<string>(null, { updateOn: 'change' });\r\n\r\n partnerOptions: PrimengOption[];\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private cd: ChangeDetectorRef, \r\n public router: Router, \r\n private menuService: SidebarMenuService, \r\n private authService: AuthBaseService,\r\n private apiService: ApiSecurityService,\r\n private config: ConfigBaseService\r\n ) {\r\n this.menuSourceSubscription = this.menuService.menuSource$.subscribe(value => {\r\n Promise.resolve(null).then(() => {\r\n if (value.routeEvent) {\r\n this.active = (value.key === this.key || value.key.startsWith(this.key + '-')) ? true : false;\r\n }\r\n else {\r\n if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {\r\n this.active = false;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {\r\n this.active = false;\r\n });\r\n\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(params => {\r\n if (this.item.routerLink) {\r\n this.updateActiveStateFromRoute();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\r\n \r\n if (this.item.routerLink) {\r\n this.updateActiveStateFromRoute();\r\n }\r\n\r\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\r\n if (this.item && typeof this.item.hasPermission === 'function') {\r\n this.item.visible = this.item.hasPermission(currentUserPermissionCodes);\r\n }\r\n });\r\n }\r\n\r\n updateActiveStateFromRoute() {\r\n let activeRoute = this.router.isActive(this.item.routerLink[0], { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' });\r\n\r\n if (activeRoute) {\r\n this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });\r\n }\r\n }\r\n\r\n itemClick(event: Event) {\r\n // avoid processing disabled items\r\n if (this.item.disabled || event === null) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n // execute command\r\n if (this.item.command) {\r\n this.item.command({ originalEvent: event, item: this.item });\r\n }\r\n\r\n // toggle active state\r\n if (this.item.items) {\r\n this.active = !this.active;\r\n }\r\n \r\n this.menuService.onMenuStateChange({ key: this.key });\r\n }\r\n\r\n get submenuAnimation() {\r\n return this.root ? 'expanded' : (this.active ? 'expanded' : 'collapsed');\r\n }\r\n\r\n @HostBinding('class.active-menuitem') \r\n get activeClass() {\r\n return this.active && !this.root;\r\n }\r\n\r\n //#region FT HACK: Partner\r\n\r\n searchPartners(event: AutoCompleteCompleteEvent) {\r\n this.layoutService.searchPartners(event).subscribe(po => {\r\n this.partnerOptions = po; \r\n })\r\n }\r\n\r\n partnersAutocompleteButtonClick = async () => {\r\n this.layoutService.partnersAutocompleteButtonClick(this.selectedPartner);\r\n }\r\n\r\n //#endregion\r\n\r\n ngOnDestroy() {\r\n if (this.menuSourceSubscription) {\r\n this.menuSourceSubscription.unsubscribe();\r\n }\r\n\r\n if (this.menuResetSubscription) {\r\n this.menuResetSubscription.unsubscribe();\r\n }\r\n\r\n if (this.permissionSubscription) {\r\n this.permissionSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\r\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\r\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\r\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\r\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\r\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\r\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n\r\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\r\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\r\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\r\n </ng-template>\r\n </ul>\r\n\r\n <!-- FT: Delete this in the future iterations, make link to partner in /partners page -->\r\n <spiderly-autocomplete\r\n *ngIf=\"item.showPartnerDialog\"\r\n [control]=\"selectedPartner\"\r\n [options]=\"partnerOptions\"\r\n (onTextInput)=\"searchPartners($event)\"\r\n label=\"\"\r\n [placeholder]=\"t('SelectThePartner')\"\r\n [showAddon]=\"true\"\r\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\r\n addonIcon=\"pi pi-check\"\r\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\r\n class=\"mobile-stay-open\"\r\n ></spiderly-autocomplete>\r\n \r\n</ng-container>","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Input, OnInit } from '@angular/core';\r\nimport { Component } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { MenuitemComponent } from './menuitem.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface SpiderlyMenuItem extends MenuItem{\r\n hasPermission?: (permissionCodes: string[]) => boolean;\r\n showPartnerDialog?: boolean; \r\n}\r\n\r\n@Component({\r\n selector: 'sidebar-menu', // FT: Don't chane selector to 'menu', because other style will apply to it\r\n templateUrl: './sidebar-menu.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MenuitemComponent\r\n ]\r\n})\r\nexport class SidebarMenuComponent implements OnInit {\r\n @Input() menu: SpiderlyMenuItem[];\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService,\r\n private translocoService: TranslocoService,\r\n private config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n}\r\n","<ul class=\"layout-menu\">\r\n <ng-container *ngFor=\"let item of menu; let i = index;\">\r\n <li menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\r\n <li *ngIf=\"item.separator\" class=\"gray-separator\" style=\"margin-top: 11px;\"></li>\r\n </ng-container>\r\n</ul>\r\n","import { Component, ElementRef, Input } from '@angular/core';\r\nimport { SidebarMenuComponent, SpiderlyMenuItem } from './sidebar-menu.component';\r\n\r\n@Component({\r\n selector: 'sidebar',\r\n templateUrl: './sidebar.component.html',\r\n standalone: true,\r\n imports: [\r\n SidebarMenuComponent\r\n ]\r\n})\r\nexport class AppSidebarComponent {\r\n @Input() menu: SpiderlyMenuItem[];\r\n\r\n constructor(public el: ElementRef) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n}\r\n\r\n"," <sidebar-menu [menu]=\"menu\"></sidebar-menu>\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { ApiSecurityService } from '../../../services/api.service.security';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { User } from '../../../entities/security-entities';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PrimengModule } from '../../../modules/primeng.module';\r\n\r\ninterface SpiderlyMenuItem {\r\n label?: string;\r\n icon?: string;\r\n showSeparator?: boolean;\r\n onClick?: () => void;\r\n showNotificationBadge?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'topbar',\r\n templateUrl: './topbar.component.html',\r\n styles: [\r\n ],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule\r\n ]\r\n})\r\nexport class AppTopBarComponent implements OnDestroy {\r\n private initTopBarSubscription: Subscription | null = null;\r\n\r\n currentUser: User;\r\n userProfilePath: string;\r\n unreadNotificationsCount: number;\r\n menuItems: SpiderlyMenuItem[] = [];\r\n avatarLabel: string;\r\n companyName: string;\r\n showProfileIcon: boolean = false;\r\n\r\n notificationMenuItem: SpiderlyMenuItem = \r\n {\r\n label: this.translocoService.translate('Notifications'),\r\n icon: 'pi-bell',\r\n showNotificationBadge: true,\r\n onClick: () => {\r\n this.router.navigateByUrl(`/notifications`);\r\n },\r\n };\r\n\r\n @ViewChild('menubutton') menuButton!: ElementRef;\r\n\r\n @ViewChild('topbarmenu') menu!: ElementRef;\r\n\r\n @ViewChild('topbarprofiledropdownmenubutton') topbarProfileDropdownMenuButton!: ElementRef;\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService, \r\n private apiService: ApiSecurityService,\r\n protected router: Router,\r\n private translocoService: TranslocoService,\r\n private config: ConfigBaseService\r\n ) { \r\n }\r\n\r\n async ngOnInit(){\r\n this.menuItems = [\r\n {\r\n label: this.translocoService.translate('YourProfile'),\r\n icon: 'pi-user',\r\n showSeparator: true,\r\n onClick: () => {\r\n this.routeToUserPage();\r\n }\r\n },\r\n this.notificationMenuItem,\r\n // {\r\n // label: this.translocoService.translate('Settings'),\r\n // icon: 'pi-cog',\r\n // onClick: () => {\r\n // this.router.navigateByUrl(`/administration/users`);\r\n // }\r\n // },\r\n {\r\n label: this.translocoService.translate('Logout'),\r\n icon: 'pi-sign-out',\r\n showSeparator: true,\r\n onClick: () => {\r\n this.authService.logout();\r\n }\r\n }\r\n ];\r\n\r\n this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n this.layoutService.state.profileDropdownSidebarVisible = false;\r\n });\r\n\r\n this.onAfterNgOnInit();\r\n }\r\n\r\n onAfterNgOnInit = () => {\r\n this.initTopBarSubscription = this.layoutService.initTopBarData().subscribe(initTopBarData => {\r\n this.userProfilePath = initTopBarData.userProfilePath;\r\n this.companyName = initTopBarData.companyName;\r\n this.unreadNotificationsCount = initTopBarData.unreadNotificationsCount;\r\n this.notificationMenuItem.showNotificationBadge = initTopBarData.unreadNotificationsCount > 0;\r\n this.showProfileIcon = initTopBarData.showProfileIcon;\r\n this.currentUser = initTopBarData.currentUser;\r\n this.avatarLabel = initTopBarData.currentUser?.email.charAt(0).toLocaleUpperCase();\r\n });\r\n }\r\n\r\n onDocumentClick(event: any) {\r\n if (\r\n !this.menu.nativeElement.contains(event.target) \r\n ) {\r\n if (this.layoutService.state.profileDropdownSidebarVisible == true) {\r\n this.layoutService.state.profileDropdownSidebarVisible = false;\r\n }\r\n }\r\n }\r\n\r\n routeToUserPage(){\r\n this.router.navigateByUrl(this.userProfilePath);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.initTopBarSubscription) {\r\n this.initTopBarSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}","<div class=\"layout-topbar\">\r\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\r\n <span>{{companyName?.toLocaleUpperCase()}}</span>\r\n </a>\r\n\r\n <button\r\n #menubutton\r\n class=\"p-link layout-menu-button layout-topbar-button\"\r\n (click)=\"layoutService.onMenuToggle()\"\r\n >\r\n <i class=\"pi pi-bars\"></i>\r\n </button>\r\n\r\n <div\r\n #topbarmenu\r\n class=\"profile-button\"\r\n >\r\n <div\r\n #topbarprofiledropdownmenubutton\r\n (click)=\"layoutService.showProfileDropdownSidebar()\"\r\n >\r\n <p-avatar\r\n *ngIf=\"showProfileIcon\"\r\n [label]=\"avatarLabel\"\r\n [style]=\"{ 'background-color': 'var(--primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\r\n pBadge \r\n [badgeStyleClass]=\"'p-badge-danger'\"\r\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\r\n [value]=\"unreadNotificationsCount\"\r\n />\r\n </div>\r\n <div\r\n #topbarprofiledropdownmenu\r\n (document:click)=\"onDocumentClick($event)\"\r\n >\r\n <div *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" style=\"width: 280px; position: absolute; right: 26px; top: 60px; padding: 15px;\" class=\"card\">\r\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\r\n <p-avatar\r\n [label]=\"avatarLabel\"\r\n size=\"xlarge\"\r\n [style]=\"{ 'background-color': 'var(--primary-color)', 'color': '#fff', 'cursor': 'pointer' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div>{{currentUser?.email}}</div>\r\n </div>\r\n <div style=\"margin-top: 15px;\">\r\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\r\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\r\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 5px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}} primary-color\" \r\n style=\"font-size: 16px; position: relative;\"\r\n >\r\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\r\n </i>\r\n <div> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n ","import { Component, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AppSidebarComponent } from './sidebar/sidebar.component';\r\nimport { AppTopBarComponent } from './topbar/topbar.component';\r\nimport { LayoutBaseService } from '../../services/app-layout-base.service';\r\n\r\n@Component({\r\n selector: 'layout-base',\r\n template: '',\r\n standalone: true\r\n})\r\nexport class LayoutBaseComponent implements OnDestroy {\r\n\r\n overlayMenuOpenSubscription: Subscription;\r\n\r\n menuOutsideClickListener: any;\r\n\r\n profileMenuOutsideClickListener: any;\r\n\r\n @ViewChild(AppSidebarComponent) appSidebar!: AppSidebarComponent;\r\n\r\n @ViewChild(AppTopBarComponent) appTopbar!: AppTopBarComponent;\r\n\r\n constructor(\r\n protected layoutService: LayoutBaseService, \r\n protected renderer: Renderer2, \r\n protected router: Router,\r\n ) {\r\n this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n if (!this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\r\n const isOutsideClicked = !(\r\n this.appSidebar.el.nativeElement.isSameNode(event.target) || \r\n this.appSidebar.el.nativeElement.contains(event.target) ||\r\n this.appTopbar.menuButton.nativeElement.isSameNode(event.target) || \r\n this.appTopbar.menuButton.nativeElement.contains(event.target) ||\r\n (event.target.closest('.p-autocomplete-items')) ||\r\n (event.target.closest('.p-autocomplete-clear-icon'))\r\n );\r\n \r\n if (isOutsideClicked) {\r\n this.hideMenu();\r\n }\r\n });\r\n }\r\n\r\n if (!this.profileMenuOutsideClickListener) {\r\n this.profileMenuOutsideClickListener = this.renderer.listen('document', 'click', event => {\r\n const isOutsideClicked = !(this.appTopbar.menu.nativeElement.isSameNode(event.target) || this.appTopbar.menu.nativeElement.contains(event.target));\r\n\r\n if (isOutsideClicked) {\r\n this.hideProfileMenu();\r\n }\r\n });\r\n }\r\n\r\n if (this.layoutService.state.staticMenuMobileActive) {\r\n this.blockBodyScroll();\r\n }\r\n });\r\n\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this.hideMenu();\r\n this.hideProfileMenu();\r\n });\r\n }\r\n\r\n hideMenu() {\r\n this.layoutService.state.overlayMenuActive = false;\r\n this.layoutService.state.staticMenuMobileActive = false;\r\n this.layoutService.state.menuHoverActive = false;\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n this.menuOutsideClickListener = null;\r\n }\r\n this.unblockBodyScroll();\r\n }\r\n\r\n hideProfileMenu() {\r\n this.layoutService.state.profileSidebarVisible = false;\r\n if (this.profileMenuOutsideClickListener) {\r\n this.profileMenuOutsideClickListener();\r\n this.profileMenuOutsideClickListener = null;\r\n }\r\n }\r\n\r\n blockBodyScroll(): void {\r\n if (document.body.classList) {\r\n document.body.classList.add('blocked-scroll');\r\n }\r\n else {\r\n document.body.className += ' blocked-scroll';\r\n }\r\n }\r\n\r\n unblockBodyScroll(): void {\r\n if (document.body.classList) {\r\n document.body.classList.remove('blocked-scroll');\r\n }\r\n else {\r\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' +\r\n 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n }\r\n }\r\n\r\n get containerClass() {\r\n return {\r\n 'layout-theme-light': this.layoutService.layoutConfig.colorScheme === 'light',\r\n 'layout-theme-dark': this.layoutService.layoutConfig.colorScheme === 'dark',\r\n 'layout-overlay': this.layoutService.layoutConfig.menuMode === 'overlay',\r\n 'layout-static': this.layoutService.layoutConfig.menuMode === 'static',\r\n 'layout-static-inactive': this.layoutService.state.staticMenuDesktopInactive && this.layoutService.layoutConfig.menuMode === 'static',\r\n 'layout-overlay-active': this.layoutService.state.overlayMenuActive,\r\n 'layout-mobile-active': this.layoutService.state.staticMenuMobileActive,\r\n 'p-input-filled': this.layoutService.layoutConfig.inputStyle === 'filled',\r\n 'p-ripple-disabled': !this.layoutService.layoutConfig.ripple\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.overlayMenuOpenSubscription) {\r\n this.overlayMenuOpenSubscription.unsubscribe();\r\n }\r\n\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n }\r\n\r\n this.onAfterNgDestroy();\r\n }\r\n\r\n onAfterNgDestroy = () => {}\r\n \r\n}\r\n\r\n","import { BaseEntity } from \"./base-entity\";\r\n\r\n// FT HACK: Fake class, because of api imports\r\nexport class Codebook extends BaseEntity\r\n{\r\n code?: string;\r\n displayName?: string;\r\n \r\n constructor(\r\n {\r\n code,\r\n displayName,\r\n }:{\r\n code?: string;\r\n displayName?: string;\r\n } = {}\r\n ) {\r\n super('Namebook');\r\n\r\n this.code = code;\r\n this.displayName = displayName;\r\n }\r\n}","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class LastMenuIconIndexClicked extends BaseEntity\r\n{\r\n index?: number;\r\n\r\n constructor(\r\n {\r\n index,\r\n }:{\r\n index?: number;\r\n } = {}\r\n ) {\r\n super('LastMenuIconIndexClicked'); \r\n\r\n this.index = index;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class LazyLoadSelectedIdsResult extends BaseEntity\r\n{\r\n selectedIds?: number[] = []; // FT: Only for showing checkboxes, we will not send this to the backend\r\n totalRecordsSelected?: number = 0;\r\n\r\n constructor(\r\n {\r\n selectedIds,\r\n totalRecordsSelected,\r\n }:{\r\n selectedIds?: number[];\r\n totalRecordsSelected?: number;\r\n } = {}\r\n ) {\r\n super('LazyLoadSelectedIdsResult');\r\n\r\n this.selectedIds = selectedIds;\r\n this.totalRecordsSelected = totalRecordsSelected;\r\n }\r\n}","export class MenuChangeEvent {\r\n key: string;\r\n routeEvent?: boolean;\r\n}","export class MimeTypes {\r\n private constructor(public readonly value: string) {}\r\n\r\n static Pdf = new MimeTypes(\"application/pdf\");\r\n static Zip = new MimeTypes(\"application/zip\");\r\n\r\n static Jpeg = new MimeTypes(\"image/jpeg\");\r\n static Png = new MimeTypes(\"image/png\");\r\n static Svg = new MimeTypes(\"image/svg\");\r\n static Webp = new MimeTypes(\"image/webp\");\r\n\r\n toString() {\r\n return this.value;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class Namebook extends BaseEntity\r\n{\r\n id?: number;\r\n displayName?: string;\r\n \r\n constructor(\r\n {\r\n id,\r\n displayName,\r\n }:{\r\n id?: number;\r\n displayName?: string;\r\n } = {}\r\n ) {\r\n super('Namebook');\r\n\r\n this.id = id;\r\n this.displayName = displayName;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class PrimengOption extends BaseEntity\r\n{\r\n label?: string;\r\n value?: any;\r\n \r\n constructor(\r\n {\r\n label,\r\n value,\r\n }:{\r\n label?: string;\r\n value?: any;\r\n } = {}\r\n ) {\r\n super('PrimengOption');\r\n\r\n this.label = label;\r\n this.value = value;\r\n }\r\n\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\n// FT HACK: Fake class, because of api imports\r\nexport class SimpleSaveResult extends BaseEntity\r\n{\r\n id?: string;\r\n \r\n constructor(\r\n {\r\n id,\r\n }:{\r\n id?: string;\r\n } = {}\r\n ) {\r\n super('SimpleSaveResult');\r\n\r\n this.id = id;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class SpiderlyButton extends BaseEntity\r\n{\r\n label?: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n \r\n constructor(\r\n {\r\n label,\r\n icon,\r\n disabled,\r\n onClick,\r\n }:{\r\n label?: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n } = {}\r\n ) {\r\n super('SpiderlyButton');\r\n\r\n this.label = label;\r\n this.icon = icon;\r\n this.disabled = disabled;\r\n this.onClick = onClick;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\nimport { TableFilterContext } from \"../entities/table-filter-context\";\r\nimport { TableFilterSortMeta } from \"../entities/table-filter-sort-meta\";\r\n\r\nexport class TableFilter extends BaseEntity\r\n{\r\n filters?: Map<string, TableFilterContext[]>;\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: TableFilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n \r\n constructor(\r\n {\r\n filters,\r\n first,\r\n rows,\r\n sortField,\r\n sortOrder,\r\n multiSortMeta,\r\n additionalFilterIdInt,\r\n additionalFilterIdLong,\r\n }:{\r\n filters?: Map<string, TableFilterContext[]>;\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: TableFilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n } = {}\r\n ) {\r\n super('TableFilter');\r\n\r\n this.filters = filters;\r\n this.first = first;\r\n this.rows = rows;\r\n this.sortField = sortField;\r\n this.sortOrder = sortOrder;\r\n this.multiSortMeta = multiSortMeta;\r\n this.additionalFilterIdInt = additionalFilterIdInt;\r\n this.additionalFilterIdLong = additionalFilterIdLong;\r\n }\r\n}","export class TableFilterContext\r\n{\r\n Value: any;\r\n MatchMode: string;\r\n Operator: string;\r\n}","export class TableFilterSortMeta\r\n{\r\n Field: string;\r\n Order: number;\r\n}","export class TableResponse<T = any> {\r\n data?: T[];\r\n totalRecords: number;\r\n}\r\n ","export enum LoginVerificationResultStatusCodes\r\n{\r\n \r\n}\r\n\r\nexport enum RegistrationVerificationResultStatusCodes\r\n{\r\n UserDoesNotExistAndDoesNotHaveValidToken = 0,\r\n\tUserWithoutPasswordExists = 1,\r\n\tUserWithPasswordExists = 2,\r\n\tUnexpectedError = 3,\r\n}\r\n\r\nexport enum SecurityPermissionCodes\r\n{\r\n\tReadUser = \"ReadUser\",\r\n\tUpdateUser = \"UpdateUser\",\r\n\tInsertUser = \"InsertUser\",\r\n\tDeleteUser = \"DeleteUser\",\r\n\tReadRole = \"ReadRole\",\r\n\tUpdateRole = \"UpdateRole\",\r\n\tInsertRole = \"InsertRole\",\r\n\tDeleteRole = \"DeleteRole\",\r\n\tReadPermission = \"ReadPermission\",\r\n\tUpdatePermission = \"UpdatePermission\",\r\n\tInsertPermission = \"InsertPermission\",\r\n\tDeletePermission = \"DeletePermission\",\r\n}\r\n","export enum VerificationTypeCodes\r\n{\r\n Login = 0,\r\n\tRegistration = 1,\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthBaseService, \r\n private router: Router,\r\n private config: ConfigBaseService\r\n ) {\r\n\r\n }\r\n\r\n canActivate(): Observable<boolean> {\r\n return this.checkAuth();\r\n }\r\n\r\n private checkAuth(): Observable<boolean> {\r\n return this.authService.user$.pipe(\r\n map((user) => {\r\n if (user) {\r\n return true;\r\n } else {\r\n // const returnUrl = this.router.getCurrentNavigation()?.extractedUrl.toString() || '/';\r\n // this.router.navigate(['login'], {\r\n // queryParams: { returnUrl },\r\n // });\r\n this.router.navigate([this.config.loginSlug]);\r\n return false;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NotAuthGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthBaseService, \r\n ) {\r\n\r\n }\r\n\r\n canActivate(): Observable<boolean> {\r\n return this.checkAuth();\r\n }\r\n\r\n private checkAuth(): Observable<boolean> {\r\n return this.authService.user$.pipe(\r\n map((user) => {\r\n if (user) {\r\n this.authService.navigateToDashboard(); // FT: If there is a user and he went to the login page, push him to the dashboard i try to load partner.\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslocoFallbackStrategy, TranslocoService } from '@jsverse/transloco';\r\n\r\nimport { HashMap, TranslocoMissingHandler, TranslocoMissingHandlerData } from \"@jsverse/transloco\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpiderlyTranslocoFallbackStrategy implements TranslocoFallbackStrategy {\r\n getNextLangs(failedLang: string): string[] {\r\n return ['sr-Latn-RS.generated'];\r\n }\r\n\r\n}\r\n\r\nexport class SpiderlyTranslocoMissingHandler implements TranslocoMissingHandler {\r\n constructor(private translocoService: TranslocoService) {\r\n \r\n }\r\n\r\n handle(key: string, data: TranslocoMissingHandlerData, params?: HashMap) {\r\n return this.translocoService.translate(key, params, `${this.translocoService.getActiveLang()}.generated`);\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of spiderly\r\n */\r\n\r\nexport * from './lib/modules/core.module';\r\nexport * from './lib/modules/primeng.module';\r\nexport * from './lib/modules/spiderly-transloco.module';\r\nexport * from './lib/components/auth/auth.module';\r\n\r\nexport * from './lib/controls/spiderly-autocomplete/spiderly-autocomplete.component';\r\nexport * from './lib/controls/spiderly-calendar/spiderly-calendar.component';\r\nexport * from './lib/controls/spiderly-checkbox/spiderly-checkbox.component';\r\nexport * from './lib/controls/spiderly-colorpick/spiderly-colorpick.component';\r\nexport * from './lib/controls/spiderly-dropdown/spiderly-dropdown.component';\r\nexport * from './lib/controls/spiderly-editor/spiderly-editor.component';\r\nexport * from './lib/controls/spiderly-file/spiderly-file.component';\r\nexport * from './lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nexport * from './lib/controls/spiderly-multiselect/spiderly-multiselect.component';\r\nexport * from './lib/controls/spiderly-number/spiderly-number.component';\r\nexport * from './lib/controls/spiderly-password/spiderly-password.component';\r\nexport * from './lib/controls/spiderly-textarea/spiderly-textarea.component';\r\nexport * from './lib/controls/spiderly-textbox/spiderly-textbox.component';\r\nexport * from './lib/controls/base-control';\r\nexport * from './lib/controls/base-autocomplete-control';\r\nexport * from './lib/controls/base-dropdown-control';\r\nexport * from './lib/controls/spiderly-controls.module';\r\n\r\nexport * from './lib/components/base-details/role-base-details.component'\r\nexport * from './lib/components/base-form/base-form copy';\r\nexport * from './lib/components/card-skeleton/card-skeleton.component';\r\nexport * from './lib/components/auth/partials/login-verification.component';\r\nexport * from './lib/components/auth/partials/registration-verification.component';\r\nexport * from './lib/components/auth/partials/verification-wrapper.component';\r\nexport * from './lib/components/footer/footer.component';\r\nexport * from './lib/components/spiderly-buttons/google-button/google-button.component';\r\nexport * from './lib/components/index-card/index-card.component';\r\nexport * from './lib/components/info-card/info-card.component';\r\nexport * from './lib/components/not-found/not-found.component';\r\nexport * from './lib/components/required/required.component';\r\nexport * from './lib/components/spiderly-buttons/return-button/return-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base';\r\nexport * from './lib/components/spiderly-data-table/spiderly-data-table.component';\r\nexport * from './lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component';\r\nexport * from './lib/components/spiderly-form-control/spiderly-form-control';\r\nexport * from './lib/components/spiderly-panels/panel-body/panel-body.component';\r\nexport * from './lib/components/spiderly-panels/panel-footer/panel-footer.component';\r\nexport * from './lib/components/spiderly-panels/panel-header/panel-header.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-card/spiderly-card.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-panels.module';\r\nexport * from './lib/components/layout/sidebar/sidebar-menu.component';\r\nexport * from './lib/components/layout/sidebar/menuitem.component';\r\nexport * from './lib/components/layout/sidebar/sidebar.component';\r\nexport * from './lib/components/layout/topbar/topbar.component';\r\nexport * from './lib/components/layout/layout-base.component';\r\n\r\nexport * from './lib/entities/base-entity';\r\nexport * from './lib/entities/codebook';\r\nexport * from './lib/entities/last-menu-icon-index-clicked';\r\nexport * from './lib/entities/lazy-load-selected-ids-result';\r\nexport * from './lib/entities/menuchangeevent';\r\nexport * from './lib/entities/mime-type';\r\nexport * from './lib/entities/namebook';\r\nexport * from './lib/entities/primeng-option';\r\nexport * from './lib/entities/security-entities';\r\nexport * from './lib/entities/simple-save-result';\r\nexport * from './lib/entities/spiderly-button';\r\nexport * from './lib/entities/table-filter';\r\nexport * from './lib/entities/table-filter-context';\r\nexport * from './lib/entities/table-filter-sort-meta';\r\nexport * from './lib/entities/table-response';\r\nexport * from './lib/entities/init-company-auth-dialog-details';\r\nexport * from './lib/entities/init-top-bar-data';\r\nexport * from './lib/entities/is-authorized-for-save-event';\r\n\r\nexport * from './lib/enums/security-enums';\r\nexport * from './lib/enums/verification-type-codes';\r\n\r\nexport * from './lib/guards/auth.guard';\r\nexport * from './lib/guards/not-auth.guard';\r\n\r\nexport * from './lib/handlers/spiderly-error-handler';\r\nexport * from './lib/handlers/spiderly-transloco-fallback-strategy';\r\n\r\nexport * from './lib/interceptors/http-loading.interceptor';\r\nexport * from './lib/interceptors/json-parser.interceptor';\r\nexport * from './lib/interceptors/jwt.interceptor';\r\nexport * from './lib/interceptors/unauthorized.interceptor';\r\n\r\nexport * from './lib/services/api.service.security';\r\nexport * from './lib/services/app-initializer';\r\nexport * from './lib/services/auth-base.service';\r\nexport * from './lib/services/base-form.service';\r\nexport * from './lib/services/config-base.service';\r\nexport * from './lib/services/helper-functions';\r\nexport * from './lib/services/spiderly-message.service';\r\nexport * from './lib/services/spiderly-transloco-loader';\r\nexport * from './lib/services/translate-labels-abstract.service';\r\nexport * from './lib/services/validator-abstract.service';\r\nexport * from './lib/services/app-layout-base.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigBaseService","i2","i1.SpiderlyMessageService","i3.ConfigBaseService","i1","i2.ConfigBaseService","finalize","tap","i3","i4.ApiSecurityService","i5.ConfigBaseService","map","i1.TranslateLabelsAbstractService","i2.ValidatorAbstractService","i3.SpiderlyMessageService","i4","i2.SpiderlyMessageService","i5.BaseFormService","delay","i1.ApiSecurityService","i3.AuthBaseService","i2.AuthBaseService","i5","i6","i7","i1.AuthBaseService","i6.LayoutBaseService","i7.AuthBaseService","i8","i9.AuthComponent","i10.SpiderlyTextboxComponent","i11.SpiderlyButtonComponent","i12.RegistrationVerificationComponent","i6.AuthBaseService","i7.ConfigBaseService","i9","i10.AuthComponent","i11.SpiderlyTextboxComponent","i12.SpiderlyButtonComponent","i13.LoginVerificationComponent","i3.BaseFormService","i4.AuthBaseService","i7.PanelHeaderComponent","i8.PanelBodyComponent","i9.PanelFooterComponent","i10.SpiderlyPanelComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","i10","i11","i12","i13.SpiderlyButtonComponent","i14.SpiderlyNumberComponent","i1.LayoutBaseService","i3.SidebarMenuService","i5.ApiSecurityService","i6.ConfigBaseService","i9.SpiderlyAutocompleteComponent","i4.ConfigBaseService","filter","i3.ApiSecurityService"],"mappings":"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"}
1
+ {"version":3,"file":"spiderly.mjs","sources":["../../../projects/spiderly/src/lib/services/app-initializer.ts","../../../projects/spiderly/src/lib/services/config-base.service.ts","../../../projects/spiderly/src/lib/interceptors/jwt.interceptor.ts","../../../projects/spiderly/src/lib/services/spiderly-message.service.ts","../../../projects/spiderly/src/lib/interceptors/unauthorized.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/http-loading.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/json-parser.interceptor.ts","../../../projects/spiderly/src/lib/entities/base-entity.ts","../../../projects/spiderly/src/lib/entities/security-entities.ts","../../../projects/spiderly/src/lib/entities/init-company-auth-dialog-details.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/services/auth-base.service.ts","../../../projects/spiderly/src/lib/handlers/spiderly-error-handler.ts","../../../projects/spiderly/src/lib/modules/core.module.ts","../../../projects/spiderly/src/lib/modules/primeng.module.ts","../../../projects/spiderly/src/lib/services/spiderly-transloco-loader.ts","../../../projects/spiderly/src/lib/modules/spiderly-transloco.module.ts","../../../projects/spiderly/src/lib/components/spiderly-form-control/spiderly-form-control.ts","../../../projects/spiderly/src/lib/services/helper-functions.ts","../../../projects/spiderly/src/lib/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/validator-abstract.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.ts","../../../projects/spiderly/src/lib/components/base-form/base-form copy.ts","../../../projects/spiderly/src/lib/entities/init-top-bar-data.ts","../../../projects/spiderly/src/lib/services/app-layout-base.service.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.html","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.html","../../../projects/spiderly/src/lib/controls/base-control.ts","../../../projects/spiderly/src/lib/components/required/required.component.ts","../../../projects/spiderly/src/lib/components/required/required.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panels.module.ts","../../../projects/spiderly/src/lib/controls/base-dropdown-control.ts","../../../projects/spiderly/src/lib/controls/base-autocomplete-control.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.html","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.html","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.html","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.html","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.html","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.html","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.html","../../../projects/spiderly/src/lib/controls/spiderly-colorpick/spiderly-colorpick.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-colorpick/spiderly-colorpick.component.html","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.html","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.html","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.html","../../../projects/spiderly/src/lib/controls/spiderly-controls.module.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.html","../../../projects/spiderly/src/lib/components/auth/partials/registration-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/registration-verification.component.html","../../../projects/spiderly/src/lib/components/auth/registration/registration.component.ts","../../../projects/spiderly/src/lib/components/auth/registration/registration.component.html","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.html","../../../projects/spiderly/src/lib/components/auth/login/login.component.ts","../../../projects/spiderly/src/lib/components/auth/login/login.component.html","../../../projects/spiderly/src/lib/components/auth/auth.module.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.html","../../../projects/spiderly/src/lib/entities/is-authorized-for-save-event.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.html","../../../projects/spiderly/src/lib/components/footer/footer.component.ts","../../../projects/spiderly/src/lib/components/footer/footer.component.html","../../../projects/spiderly/src/lib/components/index-card/index-card.component.ts","../../../projects/spiderly/src/lib/components/index-card/index-card.component.html","../../../projects/spiderly/src/lib/components/info-card/info-card.component.ts","../../../projects/spiderly/src/lib/components/info-card/info-card.component.html","../../../projects/spiderly/src/lib/components/not-found/not-found.component.ts","../../../projects/spiderly/src/lib/components/not-found/not-found.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.html","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.ts","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.html","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.service.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.html","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.html","../../../projects/spiderly/src/lib/components/layout/layout-base.component.ts","../../../projects/spiderly/src/lib/entities/codebook.ts","../../../projects/spiderly/src/lib/entities/last-menu-icon-index-clicked.ts","../../../projects/spiderly/src/lib/entities/lazy-load-selected-ids-result.ts","../../../projects/spiderly/src/lib/entities/menuchangeevent.ts","../../../projects/spiderly/src/lib/entities/mime-type.ts","../../../projects/spiderly/src/lib/entities/namebook.ts","../../../projects/spiderly/src/lib/entities/primeng-option.ts","../../../projects/spiderly/src/lib/entities/simple-save-result.ts","../../../projects/spiderly/src/lib/entities/spiderly-button.ts","../../../projects/spiderly/src/lib/entities/table-filter.ts","../../../projects/spiderly/src/lib/entities/table-filter-context.ts","../../../projects/spiderly/src/lib/entities/table-filter-sort-meta.ts","../../../projects/spiderly/src/lib/entities/table-response.ts","../../../projects/spiderly/src/lib/enums/security-enums.ts","../../../projects/spiderly/src/lib/enums/verification-type-codes.ts","../../../projects/spiderly/src/lib/guards/auth.guard.ts","../../../projects/spiderly/src/lib/guards/not-auth.guard.ts","../../../projects/spiderly/src/lib/handlers/spiderly-transloco-fallback-strategy.ts","../../../projects/spiderly/src/public-api.ts","../../../projects/spiderly/src/spiderly.ts"],"sourcesContent":["import { Observable } from 'rxjs';\r\nimport { AuthBaseService } from './auth-base.service';\r\nimport { AuthResult } from '../entities/security-entities';\r\n\r\nexport function authInitializer(authService: AuthBaseService): () => Observable<AuthResult> {\r\n return () => {\r\n return authService.refreshToken();\r\n };\r\n}","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigBaseService\r\n{\r\n production = false;\r\n apiUrl: string;\r\n frontendUrl = 'http://localhost:4200';\r\n googleClientId: string;\r\n companyName = 'Company Name';\r\n primaryColor = '#111b2c';\r\n \r\n googleAuth = true;\r\n usersCanRegister = true;\r\n\r\n /* URLs */\r\n loginSlug = 'login';\r\n\r\n /* Local storage */\r\n accessTokenKey = 'access_token';\r\n refreshTokenKey = 'refresh_token';\r\n browserIdKey = 'browser_id';\r\n\r\n httpOptions = {};\r\n httpSkipSpinnerOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\r\n params: new HttpParams().set('X-Skip-Spinner', 'true')\r\n };\r\n\r\n constructor(\r\n ) {\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n const accessToken = localStorage.getItem('access_token');\r\n const isApiUrl = request.url.startsWith(this.config.apiUrl);\r\n if (accessToken && isApiUrl) {\r\n request = request.clone({\r\n setHeaders: { Authorization: `Bearer ${accessToken}` },\r\n });\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SpiderlyMessageService { // TODO FT: nece da prikaze poruku ako je neki angular error koji se dogodi tek nakon api poziva\r\n constructor(\r\n private messageService: MessageService, \r\n private translocoService: TranslocoService,\r\n private ngZone: NgZone\r\n ) {\r\n \r\n }\r\n\r\n successMessage(detail: string, title: string = this.translocoService.translate('SuccessfulAction')) {\r\n this.messageService.add({\r\n severity: 'success',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }\r\n\r\n warningMessage(detail: string, title?: string, sticky?: boolean){\r\n this.messageService.add({\r\n severity: 'warn',\r\n summary: title ?? this.translocoService.translate('Warning'),\r\n detail: detail,\r\n life: 10000,\r\n sticky: sticky\r\n });\r\n }\r\n\r\n warningMessageWithTimeout(detail: string, title: string = this.translocoService.translate('Warning')){\r\n setTimeout(() => {\r\n this.messageService.add({\r\n severity: 'warn',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }, 100);\r\n }\r\n\r\n errorMessage(detail: string, title: string = this.translocoService.translate('Error')){\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }\r\n\r\n infoMessage(detail: string, title?: string, sticky?: boolean){\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: title ?? this.translocoService.translate('Info'),\r\n detail: detail,\r\n life: 10000,\r\n sticky: sticky,\r\n });\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UnauthorizedInterceptor implements HttpInterceptor {\r\n constructor(\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n private config: ConfigBaseService,\r\n ) {}\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(\r\n catchError((err) => {\r\n return this.handleAuthError(err, request);\r\n })\r\n );\r\n }\r\n\r\n private handleAuthError(err: HttpErrorResponse, request: HttpRequest<any>): Observable<any> {\r\n\r\n if (!this.config.production) {\r\n console.error(err);\r\n }\r\n\r\n let errorResponse = err.error;\r\n\r\n if (request.responseType != 'json')\r\n errorResponse= JSON.parse(err.error);\r\n\r\n if (err.status == 0) {\r\n this.messageService.warningMessageWithTimeout( // FT: Had problem when the server is shut down, and try to refresh token, warning message didn't appear\r\n this.translocoService.translate('ServerLostConnectionDetails'),\r\n this.translocoService.translate('ServerLostConnectionTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 403) {\r\n this.messageService.warningMessage(\r\n this.translocoService.translate('PermissionErrorDetails'),\r\n this.translocoService.translate('PermissionErrorTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 404) {\r\n this.messageService.warningMessage(\r\n this.translocoService.translate('NotFoundDetails'),\r\n this.translocoService.translate('NotFoundTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 400 || err.status == 401) {\r\n this.messageService.warningMessage(\r\n errorResponse.message ?? this.translocoService.translate('BadRequestDetails'),\r\n this.translocoService.translate('Warning'),\r\n );\r\n\r\n if(err.status == 401) {\r\n // this.authService.logout();\r\n }\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 419) { // FT: We don't want to show error message to the user, we just log him out.\r\n return of(err.message);\r\n } \r\n else {\r\n this.messageService.errorMessage(\r\n errorResponse.message,\r\n this.translocoService.translate('UnexpectedErrorTitle'),\r\n );\r\n\r\n return of(err.message);\r\n }\r\n\r\n return throwError(err);\r\n }\r\n\r\n}\r\n","import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { Observable, finalize } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpLoadingInterceptor implements HttpInterceptor {\r\n constructor(private spinner: NgxSpinnerService) {}\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n const skipSpinner = request.params.has('X-Skip-Spinner'); // FT: Using this for multiautocomplete, autocomplete, dropdown, table etc...\r\n\r\n if (!skipSpinner)\r\n this.spinner.show();\r\n\r\n return next.handle(request).pipe(\r\n finalize(() => {\r\n if (!skipSpinner)\r\n this.spinner.hide();\r\n })\r\n ) as Observable<HttpEvent<any>>;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpResponse } from '@angular/common/http';\r\nimport { Observable, tap } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonHttpInterceptor implements HttpInterceptor {\r\n private dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\r\n\r\n constructor() { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request)\r\n .pipe(\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.convertDates(event.body);\r\n }\r\n }\r\n ));\r\n }\r\n\r\n private convertDates(\r\n object: unknown,\r\n parent?: Record<string, unknown> | unknown[],\r\n key?: number | string,\r\n ) {\r\n if (object === null) return;\r\n\r\n if (typeof object === 'string') {\r\n if (this.dateRegex.test(object)) {\r\n /**\r\n * @see https://stackoverflow.com/a/54733846/1306679\r\n */\r\n\r\n parent[key] = new Date(object);\r\n }\r\n } else if (Array.isArray(object)) {\r\n for (let i = 0; i < object.length; i++)\r\n this.convertDates(object[i], object, i);\r\n } else {\r\n for (const key of Object.keys(object as Record<string, unknown>)) {\r\n this.convertDates(\r\n (object as Record<string, unknown>)[key],\r\n object as Record<string, unknown>,\r\n key,\r\n );\r\n }\r\n }\r\n }\r\n\r\n}","export class BaseEntity {\r\n\r\n public pipedProperties?: PipedProperty[];\r\n public typeName?: string;\r\n\r\n constructor(typeName: string) {\r\n this.pipedProperties = [];\r\n this.typeName = typeName;\r\n }\r\n}\r\n\r\nexport class PipedProperty {\r\n pipe: PropertyPipes;\r\n control: string;\r\n\r\n constructor(p: PropertyPipes, c: string) {\r\n this.pipe = p;\r\n this.control = c;\r\n }\r\n}\r\n\r\nexport enum PropertyPipes {\r\n IntegerPipe,\r\n DecimalPipe\r\n}","import { BaseEntity } from \"./base-entity\";\r\nimport { TableFilter } from \"./table-filter\";\r\nimport { TableFilterContext } from \"./table-filter-context\";\r\nimport { TableFilterSortMeta } from \"./table-filter-sort-meta\";\r\nimport { MimeTypes } from \"./mime-type\";\r\nimport { RegistrationVerificationResultStatusCodes } from \"../enums/security-enums\";\r\nimport { Namebook } from \"./namebook\";\r\n\r\n\r\nexport class User extends BaseEntity\r\n{\r\n id?: number;\r\n\temail?: string;\r\n\r\n constructor(\r\n {\r\n id,\r\n\t\temail,\r\n }:{\r\n id?: number;\r\n\t\temail?: string;\r\n } = {}\r\n ) {\r\n super('User'); \r\n\r\n this.id = id;\r\n\t\tthis.email = email;\r\n }\r\n}\r\n\r\nexport class JwtAuthResult extends BaseEntity\r\n{\r\n userId?: number;\r\n\tuserEmail?: string;\r\n\taccessToken?: string;\r\n\ttoken?: RefreshToken;\r\n\r\n constructor(\r\n {\r\n userId,\r\n\t\tuserEmail,\r\n\t\taccessToken,\r\n\t\ttoken\r\n }:{\r\n userId?: number;\r\n\t\tuserEmail?: string;\r\n\t\taccessToken?: string;\r\n\t\ttoken?: RefreshToken; \r\n } = {}\r\n ) {\r\n super('JwtAuthResult'); \r\n\r\n this.userId = userId;\r\n\t\tthis.userEmail = userEmail;\r\n\t\tthis.accessToken = accessToken;\r\n\t\tthis.token = token;\r\n }\r\n}\r\n\r\n\r\nexport class RolePermission extends BaseEntity\r\n{\r\n roleDisplayName?: string;\r\n\troleId?: number;\r\n\tpermissionDisplayName?: string;\r\n\tpermissionId?: number;\r\n\r\n constructor(\r\n {\r\n roleDisplayName,\r\n\t\troleId,\r\n\t\tpermissionDisplayName,\r\n\t\tpermissionId\r\n }:{\r\n roleDisplayName?: string;\r\n\t\troleId?: number;\r\n\t\tpermissionDisplayName?: string;\r\n\t\tpermissionId?: number; \r\n } = {}\r\n ) {\r\n super('RolePermission'); \r\n\r\n this.roleDisplayName = roleDisplayName;\r\n\t\tthis.roleId = roleId;\r\n\t\tthis.permissionDisplayName = permissionDisplayName;\r\n\t\tthis.permissionId = permissionId;\r\n }\r\n}\r\n\r\n\r\nexport class RolePermissionSaveBody extends BaseEntity\r\n{\r\n rolePermissionDTO?: RolePermission;\r\n\r\n constructor(\r\n {\r\n rolePermissionDTO\r\n }:{\r\n rolePermissionDTO?: RolePermission; \r\n } = {}\r\n ) {\r\n super('RolePermissionSaveBody'); \r\n\r\n this.rolePermissionDTO = rolePermissionDTO;\r\n }\r\n}\r\n\r\n\r\nexport class AuthResult extends BaseEntity\r\n{\r\n userId?: number;\r\n\temail?: string;\r\n\taccessToken?: string;\r\n\trefreshToken?: string;\r\n\r\n constructor(\r\n {\r\n userId,\r\n\t\temail,\r\n\t\taccessToken,\r\n\t\trefreshToken\r\n }:{\r\n userId?: number;\r\n\t\temail?: string;\r\n\t\taccessToken?: string;\r\n\t\trefreshToken?: string; \r\n } = {}\r\n ) {\r\n super('AuthResult'); \r\n\r\n this.userId = userId;\r\n\t\tthis.email = email;\r\n\t\tthis.accessToken = accessToken;\r\n\t\tthis.refreshToken = refreshToken;\r\n }\r\n}\r\n\r\n\r\nexport class VerificationTokenRequest extends BaseEntity\r\n{\r\n verificationCode?: string;\r\n\tbrowserId?: string;\r\n\temail?: string;\r\n\r\n constructor(\r\n {\r\n verificationCode,\r\n\t\tbrowserId,\r\n\t\temail\r\n }:{\r\n verificationCode?: string;\r\n\t\tbrowserId?: string;\r\n\t\temail?: string; \r\n } = {}\r\n ) {\r\n super('VerificationTokenRequest'); \r\n\r\n this.verificationCode = verificationCode;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.email = email;\r\n }\r\n}\r\n\r\n\r\nexport class RegistrationVerificationResult extends BaseEntity\r\n{\r\n status?: RegistrationVerificationResultStatusCodes;\r\n\tmessage?: string;\r\n\r\n constructor(\r\n {\r\n status,\r\n\t\tmessage\r\n }:{\r\n status?: RegistrationVerificationResultStatusCodes;\r\n\t\tmessage?: string; \r\n } = {}\r\n ) {\r\n super('RegistrationVerificationResult'); \r\n\r\n this.status = status;\r\n\t\tthis.message = message;\r\n }\r\n}\r\n\r\n\r\nexport class RegistrationVerificationToken extends BaseEntity\r\n{\r\n email?: string;\r\n\tbrowserId?: string;\r\n\texpireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tbrowserId,\r\n\t\texpireAt\r\n }:{\r\n email?: string;\r\n\t\tbrowserId?: string;\r\n\t\texpireAt?: Date; \r\n } = {}\r\n ) {\r\n super('RegistrationVerificationToken'); \r\n\r\n this.email = email;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.expireAt = expireAt;\r\n }\r\n}\r\n\r\n\r\nexport class ExternalProvider extends BaseEntity\r\n{\r\n idToken?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n idToken,\r\n\t\tbrowserId\r\n }:{\r\n idToken?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('ExternalProvider'); \r\n\r\n this.idToken = idToken;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class UserRole extends BaseEntity\r\n{\r\n roleId?: number;\r\n\tuserId?: number;\r\n\r\n constructor(\r\n {\r\n roleId,\r\n\t\tuserId\r\n }:{\r\n roleId?: number;\r\n\t\tuserId?: number; \r\n } = {}\r\n ) {\r\n super('UserRole'); \r\n\r\n this.roleId = roleId;\r\n\t\tthis.userId = userId;\r\n }\r\n}\r\n\r\n\r\nexport class UserRoleSaveBody extends BaseEntity\r\n{\r\n userRoleDTO?: UserRole;\r\n\r\n constructor(\r\n {\r\n userRoleDTO\r\n }:{\r\n userRoleDTO?: UserRole; \r\n } = {}\r\n ) {\r\n super('UserRoleSaveBody'); \r\n\r\n this.userRoleDTO = userRoleDTO;\r\n }\r\n}\r\n\r\n\r\nexport class LoginVerificationToken extends BaseEntity\r\n{\r\n email?: string;\r\n\tuserId?: number;\r\n\tbrowserId?: string;\r\n\texpireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tuserId,\r\n\t\tbrowserId,\r\n\t\texpireAt\r\n }:{\r\n email?: string;\r\n\t\tuserId?: number;\r\n\t\tbrowserId?: string;\r\n\t\texpireAt?: Date; \r\n } = {}\r\n ) {\r\n super('LoginVerificationToken'); \r\n\r\n this.email = email;\r\n\t\tthis.userId = userId;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.expireAt = expireAt;\r\n }\r\n}\r\n\r\n\r\nexport class Login extends BaseEntity\r\n{\r\n email?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tbrowserId\r\n }:{\r\n email?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('Login'); \r\n\r\n this.email = email;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class RefreshTokenRequest extends BaseEntity\r\n{\r\n refreshToken?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n refreshToken,\r\n\t\tbrowserId\r\n }:{\r\n refreshToken?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('RefreshTokenRequest'); \r\n\r\n this.refreshToken = refreshToken;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class Registration extends BaseEntity\r\n{\r\n email?: string;\r\n\tbrowserId?: string;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tbrowserId\r\n }:{\r\n email?: string;\r\n\t\tbrowserId?: string; \r\n } = {}\r\n ) {\r\n super('Registration'); \r\n\r\n this.email = email;\r\n\t\tthis.browserId = browserId;\r\n }\r\n}\r\n\r\n\r\nexport class Role extends BaseEntity\r\n{\r\n name?: string;\r\n\tdescription?: string;\r\n\tversion?: number;\r\n\tid?: number;\r\n\tcreatedAt?: Date;\r\n\tmodifiedAt?: Date;\r\n\r\n constructor(\r\n {\r\n name,\r\n\t\tdescription,\r\n\t\tversion,\r\n\t\tid,\r\n\t\tcreatedAt,\r\n\t\tmodifiedAt\r\n }:{\r\n name?: string;\r\n\t\tdescription?: string;\r\n\t\tversion?: number;\r\n\t\tid?: number;\r\n\t\tcreatedAt?: Date;\r\n\t\tmodifiedAt?: Date; \r\n } = {}\r\n ) {\r\n super('Role'); \r\n\r\n this.name = name;\r\n\t\tthis.description = description;\r\n\t\tthis.version = version;\r\n\t\tthis.id = id;\r\n\t\tthis.createdAt = createdAt;\r\n\t\tthis.modifiedAt = modifiedAt;\r\n }\r\n}\r\n\r\n\r\nexport class RoleMainUIForm extends BaseEntity\r\n{\r\n roleDTO?: Role;\r\n\tusersNamebookDTOList?: Namebook[];\r\n\tpermissionsNamebookDTOList?: Namebook[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n usersNamebookDTOList,\r\n permissionsNamebookDTOList\r\n }:{\r\n roleDTO?: Role;\r\n usersNamebookDTOList?: Namebook[];\r\n permissionsNamebookDTOList?: Namebook[]; \r\n } = {}\r\n ) {\r\n super('RoleMainUIForm'); \r\n\r\n this.roleDTO = roleDTO;\r\n this.usersNamebookDTOList = usersNamebookDTOList;\r\n this.permissionsNamebookDTOList = permissionsNamebookDTOList;\r\n }\r\n}\r\n\r\nexport class RoleSaveBody extends BaseEntity\r\n{\r\n roleDTO?: Role;\r\n\tselectedPermissionsIds?: number[];\r\n\tselectedUsersIds?: number[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n\t\tselectedPermissionsIds,\r\n\t\tselectedUsersIds\r\n }:{\r\n roleDTO?: Role;\r\n\t\tselectedPermissionsIds?: number[];\r\n\t\tselectedUsersIds?: number[]; \r\n } = {}\r\n ) {\r\n super('RoleSaveBody'); \r\n\r\n this.roleDTO = roleDTO;\r\n\t\tthis.selectedPermissionsIds = selectedPermissionsIds;\r\n\t\tthis.selectedUsersIds = selectedUsersIds;\r\n }\r\n}\r\n\r\n\r\nexport class RefreshToken extends BaseEntity\r\n{\r\n email?: string;\r\n\tipAddress?: string;\r\n\tbrowserId?: string;\r\n\ttokenString?: string;\r\n\texpireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n\t\tipAddress,\r\n\t\tbrowserId,\r\n\t\ttokenString,\r\n\t\texpireAt\r\n }:{\r\n email?: string;\r\n\t\tipAddress?: string;\r\n\t\tbrowserId?: string;\r\n\t\ttokenString?: string;\r\n\t\texpireAt?: Date; \r\n } = {}\r\n ) {\r\n super('RefreshToken'); \r\n\r\n this.email = email;\r\n\t\tthis.ipAddress = ipAddress;\r\n\t\tthis.browserId = browserId;\r\n\t\tthis.tokenString = tokenString;\r\n\t\tthis.expireAt = expireAt;\r\n }\r\n}\r\n\r\n\r\nexport class Permission extends BaseEntity\r\n{\r\n name?: string;\r\n\tnameLatin?: string;\r\n\tdescription?: string;\r\n\tdescriptionLatin?: string;\r\n\tcode?: string;\r\n\tid?: number;\r\n\r\n constructor(\r\n {\r\n name,\r\n\t\tnameLatin,\r\n\t\tdescription,\r\n\t\tdescriptionLatin,\r\n\t\tcode,\r\n\t\tid\r\n }:{\r\n name?: string;\r\n\t\tnameLatin?: string;\r\n\t\tdescription?: string;\r\n\t\tdescriptionLatin?: string;\r\n\t\tcode?: string;\r\n\t\tid?: number; \r\n } = {}\r\n ) {\r\n super('Permission'); \r\n\r\n this.name = name;\r\n\t\tthis.nameLatin = nameLatin;\r\n\t\tthis.description = description;\r\n\t\tthis.descriptionLatin = descriptionLatin;\r\n\t\tthis.code = code;\r\n\t\tthis.id = id;\r\n }\r\n}\r\n\r\n\r\nexport class PermissionSaveBody extends BaseEntity\r\n{\r\n permissionDTO?: Permission;\r\n\r\n constructor(\r\n {\r\n permissionDTO\r\n }:{\r\n permissionDTO?: Permission; \r\n } = {}\r\n ) {\r\n super('PermissionSaveBody'); \r\n\r\n this.permissionDTO = permissionDTO;\r\n }\r\n}\r\n\r\n","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class InitCompanyAuthDialogDetails extends BaseEntity\r\n{\r\n image?: string;\r\n companyName?: string;\r\n \r\n constructor(\r\n {\r\n image,\r\n companyName,\r\n }:{\r\n image?: string;\r\n companyName?: string;\r\n } = {}\r\n ) {\r\n super('InitCompanyAuthDialogDetails');\r\n\r\n this.image = image;\r\n this.companyName = companyName;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Namebook } from '../entities/namebook';\r\nimport { TableFilter } from '../entities/table-filter';\r\nimport { Login, Registration, RegistrationVerificationResult, RefreshTokenRequest, AuthResult, Role, User, ExternalProvider, VerificationTokenRequest, RoleSaveBody, RoleMainUIForm } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { TableResponse } from '../entities/table-response';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n\r\n constructor(\r\n protected http: HttpClient,\r\n protected config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n //#region Authentication\r\n\r\n register = (request: VerificationTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/Register`, request, this.config.httpOptions);\r\n }\r\n\r\n sendRegistrationVerificationEmail = (registrationDTO: Registration): Observable<RegistrationVerificationResult> => { \r\n return this.http.post<RegistrationVerificationResult>(`${this.config.apiUrl}/Security/SendRegistrationVerificationEmail`, registrationDTO, this.config.httpOptions);\r\n }\r\n \r\n login = (request: VerificationTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/Login`, request, this.config.httpOptions);\r\n }\r\n\r\n loginExternal = (externalProviderDTO: ExternalProvider): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/LoginExternal`, externalProviderDTO, this.config.httpOptions);\r\n }\r\n\r\n sendLoginVerificationEmail = (loginDTO: Login): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/SendLoginVerificationEmail`, loginDTO, this.config.httpOptions);\r\n }\r\n\r\n\r\n logout = (browserId: string): Observable<any> => { \r\n return this.http.get<any>(`${this.config.apiUrl}/Security/Logout?browserId=${browserId}`);\r\n }\r\n\r\n refreshToken = (request: RefreshTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/RefreshToken`, request, this.config.httpOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region User\r\n\r\n getCurrentUser = (): Observable<User> => { \r\n return this.http.get<User>(`${this.config.apiUrl}/Security/GetCurrentUser`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getCurrentUserPermissionCodes = (): Observable<string[]> => { \r\n return this.http.get<string[]>(`${this.config.apiUrl}/Security/GetCurrentUserPermissionCodes`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Role\r\n\r\n getRoleTableData = (dto: TableFilter): Observable<TableResponse> => { \r\n return this.http.post<TableResponse>(`${this.config.apiUrl}/Security/GetRoleTableData`, dto, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n exportRoleTableDataToExcel = (dto: TableFilter): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/ExportRoleTableDataToExcel`, dto, this.config.httpOptions);\r\n }\r\n\r\n deleteRole = (id: number): Observable<any> => { \r\n return this.http.delete<any>(`${this.config.apiUrl}/Security/DeleteRole?id=${id}`);\r\n }\r\n\r\n getRoleMainUIFormDTO = (id: number): Observable<RoleMainUIForm> => {\r\n return this.http.get<RoleMainUIForm>(`${this.config.apiUrl}/Security/GetRoleMainUIFormDTO?id=${id}`);\r\n }\r\n\r\n getRole = (id: number): Observable<Role> => {\r\n return this.http.get<Role>(`${this.config.apiUrl}/Security/GetRole?id=${id}`);\r\n }\r\n\r\n saveRole = (dto: RoleSaveBody): Observable<Role> => { \r\n return this.http.put<Role>(`${this.config.apiUrl}/Security/SaveRole`, dto, this.config.httpOptions);\r\n }\r\n\r\n getUsersNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getPermissionsDropdownListForRole = (): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsDropdownListForRole`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getPermissionsNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getUsersAutocompleteListForRole = (limit: number, query: string): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersAutocompleteListForRole?limit=${limit}&query=${query}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Notification\r\n\r\n getUnreadNotificationsCountForCurrentUser = (): Observable<number> => { \r\n return this.http.get<number>(`${this.config.apiUrl}/Notification/GetUnreadNotificationsCountForCurrentUser`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, firstValueFrom, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { map, tap, delay, finalize } from 'rxjs/operators';\r\nimport { SocialUser, SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { ExternalProvider, Login, VerificationTokenRequest, AuthResult, Registration, RegistrationVerificationResult, RefreshTokenRequest, User } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { ApiSecurityService } from './api.service.security';\r\nimport { InitCompanyAuthDialogDetails } from '../entities/init-company-auth-dialog-details';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthBaseService implements OnDestroy {\r\n private readonly apiUrl = this.config.apiUrl;\r\n private timer?: Subscription;\r\n\r\n protected _currentUserPermissionCodes = new BehaviorSubject<string[] | null>(undefined);\r\n currentUserPermissionCodes$ = this._currentUserPermissionCodes.asObservable();\r\n\r\n protected _user = new BehaviorSubject<User | null>(undefined);\r\n user$ = this._user.asObservable();\r\n\r\n // Google auth\r\n private authChangeSub = new Subject<boolean>();\r\n private extAuthChangeSub = new Subject<SocialUser>();\r\n public authChanged = this.authChangeSub.asObservable();\r\n public extAuthChanged = this.extAuthChangeSub.asObservable();\r\n \r\n constructor(\r\n protected router: Router,\r\n protected http: HttpClient,\r\n protected externalAuthService: SocialAuthService,\r\n protected apiService: ApiSecurityService,\r\n protected config: ConfigBaseService,\r\n ) {\r\n window.addEventListener('storage', this.storageEventListener);\r\n\r\n // Google auth\r\n this.externalAuthService.authState.subscribe((user) => {\r\n const externalAuth: ExternalProvider = {\r\n // provider: user.provider,\r\n idToken: user.idToken\r\n }\r\n this.loginExternal(externalAuth).subscribe(() => {\r\n this.navigateToDashboard();\r\n });\r\n this.extAuthChangeSub.next(user);\r\n });\r\n }\r\n\r\n private storageEventListener = (event: StorageEvent) => {\r\n if (event.storageArea === localStorage) {\r\n if (event.key === 'logout-event') {\r\n this.stopTokenTimer();\r\n this._user.next(null);\r\n\r\n this._currentUserPermissionCodes.next(null);\r\n }\r\n if (event.key === 'login-event') {\r\n this.stopTokenTimer();\r\n\r\n this.apiService.getCurrentUser().subscribe((user: User) => {\r\n this._user.next({\r\n id: user.id,\r\n email: user.email\r\n });\r\n\r\n this.setCurrentUserPermissionCodes().subscribe();\r\n });\r\n }\r\n }\r\n }\r\n\r\n sendLoginVerificationEmail(body: Login): Observable<any> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n return this.apiService.sendLoginVerificationEmail(body);\r\n }\r\n\r\n login(body: VerificationTokenRequest): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/Login`, body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n loginExternal(body: ExternalProvider): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/LoginExternal`, body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n sendRegistrationVerificationEmail(body: Registration): Observable<RegistrationVerificationResult> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n return this.apiService.sendRegistrationVerificationEmail(body);\r\n }\r\n \r\n register(body: VerificationTokenRequest): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.apiService.register(body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n handleLoginResult(loginResultObservable: Observable<AuthResult>){\r\n return loginResultObservable.pipe(\r\n map(async (loginResult: AuthResult) => {\r\n this.setLocalStorage(loginResult);\r\n this._user.next({\r\n id: loginResult.userId,\r\n email: loginResult.email,\r\n });\r\n this.startTokenTimer();\r\n this.setCurrentUserPermissionCodes().subscribe()\r\n return loginResult;\r\n })\r\n );\r\n }\r\n\r\n logout() {\r\n const browserId = this.getBrowserId();\r\n this.http\r\n .get(`${this.apiUrl}/Security/Logout?browserId=${browserId}`)\r\n .pipe(\r\n finalize(() => {\r\n this.clearLocalStorage();\r\n this._user.next(null);\r\n this.onAfterLogout();\r\n this.stopTokenTimer();\r\n this.router.navigate([this.config.loginSlug]);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n onAfterLogout = () => {\r\n this._currentUserPermissionCodes.next(null);\r\n }\r\n\r\n refreshToken(): Observable<AuthResult> {\r\n let refreshToken = localStorage.getItem(this.config.refreshTokenKey);\r\n\r\n if (!refreshToken) {\r\n this.clearLocalStorage();\r\n return of(null);\r\n }\r\n\r\n const browserId = this.getBrowserId();\r\n let body: RefreshTokenRequest = new RefreshTokenRequest();\r\n body.browserId = browserId;\r\n body.refreshToken = refreshToken;\r\n \r\n return this.http\r\n .post<AuthResult>(`${this.apiUrl}/Security/RefreshToken`, body, this.config.httpSkipSpinnerOptions)\r\n .pipe(\r\n map((loginResult) => {\r\n this._user.next({\r\n id: loginResult.userId,\r\n email: loginResult.email\r\n });\r\n \r\n this.setLocalStorage(loginResult);\r\n this.startTokenTimer();\r\n this.onAfterRefreshToken();\r\n \r\n return loginResult;\r\n })\r\n );\r\n }\r\n\r\n onAfterRefreshToken = () => {\r\n this.setCurrentUserPermissionCodes().subscribe(); // FT: Needs to be after setting local storage\r\n }\r\n\r\n setLocalStorage(loginResult: AuthResult) {\r\n localStorage.setItem(this.config.accessTokenKey, loginResult.accessToken);\r\n localStorage.setItem(this.config.refreshTokenKey, loginResult.refreshToken);\r\n localStorage.setItem('login-event', 'login' + Math.random());\r\n }\r\n\r\n clearLocalStorage() {\r\n localStorage.removeItem(this.config.accessTokenKey);\r\n localStorage.removeItem(this.config.refreshTokenKey);\r\n localStorage.setItem('logout-event', 'logout' + Math.random());\r\n }\r\n\r\n getBrowserId(): string {\r\n let browserId = localStorage.getItem(this.config.browserIdKey); // FT: We don't need to remove this from the local storage ever, only if the user manuely deletes it, we will handle it\r\n if (!browserId) {\r\n browserId = crypto.randomUUID();\r\n localStorage.setItem(this.config.browserIdKey, browserId);\r\n }\r\n return browserId;\r\n }\r\n\r\n isAccessTokenExpired(): Observable<boolean> {\r\n const expired = this.getTokenRemainingTime() < 5000;\r\n \r\n return of(expired);\r\n }\r\n\r\n getTokenRemainingTime(): number {\r\n const accessToken = this.getAccessToken();\r\n\r\n if (!accessToken) {\r\n return 0;\r\n }\r\n\r\n const jwtToken = JSON.parse(atob(accessToken.split('.')[1]));\r\n const expires = new Date(jwtToken.exp * 1000);\r\n \r\n return expires.getTime() - Date.now();\r\n }\r\n\r\n getAccessToken(): string {\r\n return localStorage.getItem(this.config.accessTokenKey);\r\n }\r\n\r\n private startTokenTimer() {\r\n const timeout = this.getTokenRemainingTime();\r\n this.timer = of(true)\r\n .pipe(\r\n delay(timeout),\r\n tap({\r\n next: () => this.refreshToken().subscribe(),\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private stopTokenTimer() {\r\n this.timer?.unsubscribe();\r\n }\r\n\r\n navigateToDashboard(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n logoutGoogle = () => {\r\n this.externalAuthService.signOut();\r\n }\r\n\r\n initCompanyAuthDialogDetails = (): Observable<InitCompanyAuthDialogDetails> => {\r\n return of(\r\n new InitCompanyAuthDialogDetails ({\r\n image: `assets/images/logo/logo.svg`, \r\n companyName: this.config.companyName,\r\n })\r\n );\r\n }\r\n\r\n setCurrentUserPermissionCodes(): Observable<string[]> {\r\n return this.apiService.getCurrentUserPermissionCodes().pipe(\r\n map(permissionCodes => {\r\n this._currentUserPermissionCodes.next(permissionCodes);\r\n return permissionCodes;\r\n }\r\n ));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('storage', this.storageEventListener.bind(this));\r\n this.onAfterNgOnDestroy();\r\n }\r\n\r\n onAfterNgOnDestroy = () => {};\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { ErrorHandler, Injectable } from '@angular/core';\r\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpiderlyErrorHandler implements ErrorHandler {\r\n constructor(\r\n private messageService: SpiderlyMessageService, \r\n private translocoService: TranslocoService, \r\n private config: ConfigBaseService,\r\n ) {\r\n\r\n }\r\n\r\n handleError(error: any): void {\r\n if(this.config.production == false){\r\n console.error(error);\r\n }\r\n\r\n if(error instanceof HttpErrorResponse == false){\r\n this.messageService.errorMessage(\r\n this.translocoService.translate('UnexpectedErrorDetails'),\r\n this.translocoService.translate('UnexpectedErrorTitle'),\r\n );\r\n }\r\n\r\n }\r\n}\r\n","import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, APP_INITIALIZER, Optional, SkipSelf, ErrorHandler } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { authInitializer } from '../services/app-initializer';\r\nimport { JwtInterceptor } from '../interceptors/jwt.interceptor';\r\nimport { UnauthorizedInterceptor } from '../interceptors/unauthorized.interceptor';\r\nimport { HttpLoadingInterceptor } from '../interceptors/http-loading.interceptor';\r\nimport { JsonHttpInterceptor } from '../interceptors/json-parser.interceptor';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\nimport { SpiderlyErrorHandler } from '../handlers/spiderly-error-handler';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n HttpClientModule,\r\n BrowserAnimationsModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n ],\r\n providers: [\r\n MessageService,\r\n ConfirmationService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: authInitializer,\r\n multi: true,\r\n deps: [AuthBaseService],\r\n },\r\n { \r\n provide: HTTP_INTERCEPTORS,\r\n useClass: JwtInterceptor,\r\n multi: true \r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: UnauthorizedInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: HttpLoadingInterceptor,\r\n multi: true,\r\n },\r\n { \r\n provide: HTTP_INTERCEPTORS,\r\n useClass: JsonHttpInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useClass: SpiderlyErrorHandler,\r\n },\r\n ],\r\n exports: [\r\n BrowserModule,\r\n CommonModule,\r\n HttpClientModule,\r\n BrowserAnimationsModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n ] \r\n})\r\nexport class CoreModule {\r\n constructor(@Optional() @SkipSelf() core: CoreModule) {\r\n if (core) {\r\n throw new Error('Core Module can only be imported to AppModule.');\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { AvatarGroupModule } from 'primeng/avatargroup';\r\nimport { ProgressBarModule } from 'primeng/progressbar';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { EditorModule } from 'primeng/editor';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { CardModule } from 'primeng/card';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { DataViewModule } from 'primeng/dataview';\r\n\r\n@NgModule({\r\n imports: [\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n DropdownModule,\r\n TooltipModule,\r\n InputSwitchModule,\r\n DialogModule,\r\n CalendarModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n PasswordModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n SidebarModule,\r\n BadgeModule,\r\n RadioButtonModule,\r\n RippleModule,\r\n PanelModule,\r\n AutoCompleteModule,\r\n AvatarModule,\r\n AvatarGroupModule,\r\n ProgressBarModule,\r\n DividerModule,\r\n InputNumberModule,\r\n OverlayPanelModule,\r\n MenuModule,\r\n PaginatorModule,\r\n EditorModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n TimelineModule,\r\n CardModule,\r\n ColorPickerModule,\r\n FileUploadModule,\r\n DataViewModule,\r\n ],\r\n exports: [\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n DropdownModule,\r\n TooltipModule,\r\n InputSwitchModule,\r\n DialogModule,\r\n CalendarModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n PasswordModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n SidebarModule,\r\n BadgeModule,\r\n RadioButtonModule,\r\n RippleModule,\r\n PanelModule,\r\n AutoCompleteModule,\r\n AvatarModule,\r\n AvatarGroupModule,\r\n ProgressBarModule,\r\n DividerModule,\r\n InputNumberModule,\r\n OverlayPanelModule,\r\n MenuModule,\r\n PaginatorModule,\r\n EditorModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n TimelineModule,\r\n CardModule,\r\n ColorPickerModule,\r\n FileUploadModule,\r\n DataViewModule\r\n ],\r\n declarations: [],\r\n providers: [\r\n DialogService,\r\n ],\r\n})\r\nexport class PrimengModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslocoLoader } from '@jsverse/transloco';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({ \r\n providedIn: 'root' \r\n})\r\nexport class SpiderlyTranslocoLoader implements TranslocoLoader {\r\n constructor(private http: HttpClient) {}\r\n\r\n getTranslation(lang: string) {\r\n return this.http.get(`./assets/i18n/${lang}.json`);\r\n }\r\n\r\n}","import { provideTransloco, provideTranslocoLoader, TranslocoModule } from '@jsverse/transloco';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { SpiderlyTranslocoLoader } from '../services/spiderly-transloco-loader';\r\nimport { provideTranslocoPreloadLangs } from '@jsverse/transloco-preload-langs';\r\n\r\n@NgModule({\r\n imports: [TranslocoModule],\r\n exports: [TranslocoModule],\r\n})\r\nexport class SpiderlyTranslocoModule {\r\n\r\n static forRoot(): ModuleWithProviders<SpiderlyTranslocoModule> {\r\n return {\r\n ngModule: SpiderlyTranslocoModule,\r\n providers: [\r\n provideTranslocoPreloadLangs(['sr-Latn-RS']),\r\n provideTransloco({\r\n config: {\r\n availableLangs: [\r\n 'sr-Latn-RS', 'sr-Latn-RS.generated', \r\n 'en', 'en.generated',\r\n ],\r\n defaultLang: 'sr-Latn-RS',\r\n fallbackLang: [\r\n 'sr-Latn-RS.generated',\r\n ],\r\n missingHandler: {\r\n useFallbackTranslation: true,\r\n logMissingKey: false,\r\n },\r\n reRenderOnLangChange: true,\r\n },\r\n loader: SpiderlyTranslocoLoader\r\n }),\r\n ],\r\n };\r\n }\r\n\r\n}","import { FormArray, FormControl, FormControlOptions, FormControlState, FormGroup, ValidatorFn } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\n\r\nexport interface SpiderlyValidatorFn extends ValidatorFn {\r\n hasNotEmptyRule?: boolean;\r\n}\r\n\r\n// FT: It's made like generic type because of <number>, <string> etc. not to put class like User.\r\nexport class SpiderlyFormControl<T = any> extends FormControl<T> {\r\n public label: string;\r\n public labelForDisplay: string;\r\n public required: boolean;\r\n private _spiderlyValidator: SpiderlyValidatorFn | null;\r\n\r\n constructor(value: any, opts: FormControlOptions=null, required:boolean=false) {\r\n opts = opts ?? {updateOn: 'blur'};\r\n super(value, opts);\r\n this.required = required;\r\n }\r\n\r\n override getRawValue(): T { // FT: Doing this because .value gets only not disabled values\r\n return super.getRawValue() as T;\r\n }\r\n\r\n public override get validator(): SpiderlyValidatorFn | null {\r\n return this._spiderlyValidator;\r\n }\r\n\r\n public override set validator(validator: SpiderlyValidatorFn | null) {\r\n this._spiderlyValidator = validator;\r\n this.setValidators(validator); \r\n }\r\n}\r\n\r\nexport class SpiderlyFormGroup<TValue = any> extends FormGroup {\r\n declare controls: { [P in keyof TValue]: SpiderlyFormControl<TValue[P]> };\r\n\r\n constructor(controls: { [P in keyof TValue]: SpiderlyFormControl<TValue[P]> }) {\r\n super(controls);\r\n }\r\n\r\n override getRawValue(): TValue { // FT: Doing this because .value gets only not disabled values\r\n return super.getRawValue() as TValue;\r\n }\r\n\r\n public name?: string; // FT: Using for nested form groups\r\n public mainDTOName?: string;\r\n public saveObservableMethod?: (saveBody: any) => Observable<any>;\r\n public initSaveBody?: () => BaseEntity = () => null;\r\n public controlNamesFromHtml?: string[] = [];\r\n}\r\n\r\nexport class SpiderlyFormArray<TValue = any> extends FormArray {\r\n override value: TValue[]; // FT: There is no getRawValue in FormArray\r\n public required: boolean;\r\n public modelConstructor: TValue;\r\n public translationKey: string;\r\n public controlNamesFromHtml?: string[] = [];\r\n}","import { Action, Column } from \"../components/spiderly-data-table/spiderly-data-table.component\";\r\nimport { HttpResponse } from \"@angular/common/http\";\r\nimport { BaseEntity } from \"../entities/base-entity\";\r\nimport { SpiderlyFormGroup } from \"../components/spiderly-form-control/spiderly-form-control\";\r\nimport { map, Observable } from 'rxjs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { TableFilter } from \"../entities/table-filter\";\r\nimport { Namebook } from \"../entities/namebook\";\r\nimport { Codebook } from \"../entities/codebook\";\r\nimport { PrimengOption } from \"../entities/primeng-option\";\r\nimport { SpiderlyTab } from \"../components/spiderly-panels/panel-header/panel-header.component\";\r\n\r\n// Helper function for PrecisionScale validation (to be added in the TypeScript output):\r\nexport function validatePrecisionScale(value: any, precision: number, scale: number, ignoreTrailingZeros: boolean): boolean {\r\n if (typeof value !== 'number') return false;\r\n const [integerPart, decimalPart] = value.toString().split('.');\r\n if (integerPart.length > precision - scale) return false;\r\n if (decimalPart && decimalPart.length > scale) return false;\r\n if (!ignoreTrailingZeros && decimalPart && decimalPart.replace(/0+$/, '').length > scale) return false;\r\n return true;\r\n}\r\n\r\nexport function getMimeTypeForFileName(fileName: string): string {\r\n const mimeTypes: { [key: string]: string } = {\r\n '.jpg': 'image/jpeg',\r\n '.jpeg': 'image/jpeg',\r\n '.png': 'image/png',\r\n '.webp': 'image/webp',\r\n '.gif': 'image/gif',\r\n '.pdf': 'application/pdf',\r\n '.txt': 'text/plain',\r\n '.html': 'text/html',\r\n '.css': 'text/css',\r\n '.js': 'application/javascript',\r\n '.json': 'application/json',\r\n '.csv': 'text/csv',\r\n '.xml': 'application/xml',\r\n '.zip': 'application/zip',\r\n '.mp4': 'video/mp4',\r\n '.mp3': 'audio/mpeg',\r\n '.wav': 'audio/wav',\r\n '.avi': 'video/x-msvideo',\r\n '.doc': 'application/msword',\r\n '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n '.xls': 'application/vnd.ms-excel',\r\n '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n // Add more as needed\r\n };\r\n\r\n const extension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();\r\n return mimeTypes[extension] || 'application/octet-stream'; // 'application/octet-stream' is a generic binary type\r\n}\r\n\r\nexport function adjustColor(color: string, percent: number): string {\r\n if (!/^#([0-9A-F]{3}){1,2}$/i.test(color)) {\r\n console.error('Invalid hex color format');\r\n }\r\n\r\n let r: number, g: number, b: number;\r\n if (color.length === 7) {\r\n r = parseInt(color.slice(1, 3), 16);\r\n g = parseInt(color.slice(3, 5), 16);\r\n b = parseInt(color.slice(5, 7), 16);\r\n } else {\r\n r = parseInt(color[1] + color[1], 16);\r\n g = parseInt(color[2] + color[2], 16);\r\n b = parseInt(color[3] + color[3], 16);\r\n }\r\n\r\n const adjust = (value: number, percent: number): number => {\r\n const amount = (percent / 100) * 255;\r\n const newValue = Math.min(Math.max(value + amount, 0), 255);\r\n return Math.round(newValue);\r\n };\r\n\r\n r = adjust(r, percent);\r\n g = adjust(g, percent);\r\n b = adjust(b, percent);\r\n\r\n const toHex = (value: number): string => {\r\n const hex = value.toString(16).padStart(2, '0');\r\n return hex;\r\n };\r\n\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\r\n}\r\n\r\nexport function getHtmlImgDisplayString64(base64String: string){\r\n if (base64String == null)\r\n return null;\r\n\r\n const [header, base64Content] = base64String.split(';base64,');\r\n const fileName = header.split('=')[1];\r\n const mimeType = getMimeTypeForFileName(fileName);\r\n return `data:${mimeType};base64, ${base64Content}`;\r\n}\r\n\r\nexport function nameof<TObject>(obj: TObject, key: keyof TObject): string;\r\nexport function nameof<TObject>(key: keyof TObject): string;\r\nexport function nameof(key1: any, key2?: any): any {\r\n return key2 ?? key1;\r\n}\r\nexport function nameOf<TObject extends {name:S}, S extends string>(funcOrClass: TObject): S {\r\n return funcOrClass.name;\r\n}\r\n\r\nexport function getParentUrl(currentUrl: string){\r\n const urlSegments = currentUrl.split('/');\r\n urlSegments.pop();\r\n const parentUrl = urlSegments.join('/');\r\n return parentUrl;\r\n}\r\n\r\nexport function capitalizeFirstLetter(inputString: string): string {\r\n return inputString.charAt(0).toUpperCase() + inputString.slice(1);\r\n }\r\n\r\n // export function getMonth(number: number): string {\r\n // const months: string[] = [\r\n // \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n // \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n // ];\r\n \r\n // if (number < 1 || number > 12) {\r\n // throw new Error(\"Invalid month number. It should be between 1 and 12.\");\r\n // }\r\n \r\n // return months[number - 1];\r\n // }\r\n\r\n export function getMonth(numberOfTheMonth: number): string {\r\n const meseci: string[] = [\r\n \"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\",\r\n \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\r\n ];\r\n \r\n if (numberOfTheMonth < 1 || numberOfTheMonth > 12) {\r\n console.error(\"Nevažeći broj meseca. Broj treba biti između 1 i 12.\");\r\n }\r\n \r\n return meseci[numberOfTheMonth - 1];\r\n }\r\n\r\n export function singleOrDefault <T>(array: T[], predicate: (item: T) => boolean): T | undefined {\r\n const filtered = array.filter(predicate);\r\n if (filtered.length > 1) {\r\n throw new Error(\"Sequence contains more than one matching element.\");\r\n }\r\n return filtered[0];\r\n };\r\n\r\n export function pushAction(cols: Column[], action: Action){\r\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\r\n if (actionsColumn) {\r\n actionsColumn.actions = [...actionsColumn.actions, action];\r\n }\r\n }\r\n\r\n export function deleteAction(cols: Column[], actionField: string): void {\r\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\r\n\r\n if (actionsColumn && actionsColumn.actions) {\r\n const index = actionsColumn.actions.findIndex(a => a.field === actionField);\r\n if (index !== -1) {\r\n actionsColumn.actions.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n export function getFileNameFromContentDisposition(\r\n resp: HttpResponse<Blob>,\r\n defaultName: string\r\n ): string {\r\n let fileName;\r\n if (resp && resp.headers && resp.headers.get('Content-Disposition')) {\r\n let val = resp.headers.get('Content-Disposition');\r\n let start = val.indexOf('filename=');\r\n if (start != -1) {\r\n let end = val.indexOf(';', start);\r\n fileName =\r\n end != -1 ? val.substring(start + 9, end) : val.substring(start + 9);\r\n fileName = fileName.split('\"').join('');\r\n }\r\n }\r\n return fileName ?? defaultName;\r\n }\r\n\r\n export const getControl = <T extends BaseEntity>(formControlName: string & keyof T, formGroup: SpiderlyFormGroup<T>) => {\r\n if (formGroup == null)\r\n return null; // FT: When we initialized form group again this will happen\r\n \r\n if(formGroup.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n formGroup.controlNamesFromHtml.push(formControlName);\r\n \r\n let formControl = formGroup.controls[formControlName];\r\n if (formControl == null) {\r\n console.error(`FT: The property ${formControlName} in the form group ${formGroup.getRawValue().typeName} doesn't exist`);\r\n return null;\r\n }\r\n \r\n return formControl;\r\n }\r\n\r\n export function toCommaSeparatedString<T>(input: T[]): string {\r\n const stringList = input.map(item => (item?.toString() ?? ''));\r\n\r\n if (stringList.length > 1) {\r\n return `${stringList.slice(0, -1).join(', ')} and ${stringList[stringList.length - 1]}`;\r\n } else {\r\n return stringList[0] ?? '';\r\n }\r\n }\r\n\r\n export function isImageFileType(mimeType: string): boolean {\r\n if (mimeType.startsWith('image/')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n export function isExcelFileType(mimeType: string): boolean {\r\n if (mimeType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n mimeType === 'application/vnd.ms-excel'\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n export function exportListToExcel(exportTableDataToExcelObservableMethod: (tableFilter: TableFilter) => Observable<any>, tableFilter: TableFilter) {\r\n exportTableDataToExcelObservableMethod(tableFilter).subscribe(res => {\r\n let fileName = getFileNameFromContentDisposition(res, \"ExcelExport.xlsx\");\r\n FileSaver.saveAs(res.body, decodeURIComponent(fileName));\r\n });\r\n }\r\n\r\n export function getPrimengDropdownNamebookOptions(getDropdownListObservable: (parentEntityId?: number) => Observable<Namebook[]>, parentEntityId?: number): Observable<PrimengOption[]>{\r\n return getDropdownListObservable(parentEntityId ?? 0).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.id }));\r\n })\r\n );\r\n }\r\n\r\n export function getPrimengDropdownCodebookOptions(getDropdownListObservable: () => Observable<Codebook[]>): Observable<PrimengOption[]>{\r\n return getDropdownListObservable().pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.code }));\r\n })\r\n );\r\n }\r\n\r\n export function getPrimengAutocompleteNamebookOptions(getAutocompleteListObservable: (limit: number, query: string, parentEntityId?: number) => Observable<Namebook[]>, limit: number, query: string, parentEntityId?: number): Observable<PrimengOption[]>{\r\n return getAutocompleteListObservable(limit, query, parentEntityId ?? 0).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.id }));\r\n })\r\n );\r\n }\r\n\r\n export function getPrimengAutocompleteCodebookOptions(getAutocompleteListObservable: (limit: number, query: string) => Observable<Codebook[]>, limit: number, query: string): Observable<PrimengOption[]>{\r\n return getAutocompleteListObservable(limit, query).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, value: x.code }));\r\n })\r\n );\r\n }\r\n\r\n export const isNullOrEmpty = (input: string) => {\r\n if(input == null || input === ''){\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n export const selectedTab = (tabs: SpiderlyTab[]): number => {\r\n const tab = singleOrDefault(tabs, x => x.isSelected);\r\n\r\n if (tab) {\r\n return tab.id;\r\n }\r\n else{\r\n return null;\r\n }\r\n }","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class TranslateLabelsAbstractService {\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n abstract translate (name: string): string;\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyValidatorFn } from \"../components/spiderly-form-control/spiderly-form-control\";\r\nimport { ValidationErrors } from \"@angular/forms\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class ValidatorAbstractService {\r\n\r\n constructor(\r\n protected translocoService: TranslocoService\r\n ) {\r\n }\r\n\r\n abstract setValidator (formControl: SpiderlyFormControl, className: string): SpiderlyValidatorFn;\r\n\r\n isArrayEmpty = (control: SpiderlyFormControl): SpiderlyValidatorFn => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control.value;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n return validator;\r\n }\r\n\r\n notEmpty = (control: SpiderlyFormControl): void => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control.value;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value !== '';\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n control.validator = validator;\r\n control.updateValueAndValidity();\r\n }\r\n \r\n isFormArrayEmpty = (control: SpiderlyFormArray): SpiderlyValidatorFn => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n return validator;\r\n }\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable } from '@angular/core';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../components/spiderly-form-control/spiderly-form-control';\r\nimport { BaseEntity } from '../entities/base-entity';\r\nimport { TranslateLabelsAbstractService } from './translate-labels-abstract.service';\r\nimport { ValidatorAbstractService } from './validator-abstract.service';\r\nimport { SpiderlyMessageService } from './spiderly-message.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BaseFormService {\r\n constructor(\r\n private translateLabelsService: TranslateLabelsAbstractService,\r\n private validatorService: ValidatorAbstractService,\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService\r\n ) {}\r\n\r\n addFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n parentFormGroup: SpiderlyFormGroup, \r\n modelConstructor: any, \r\n propertyNameInSaveBody: string,\r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n if (modelConstructor == null)\r\n return null;\r\n\r\n if (formGroup == null)\r\n console.error('FT: You need to instantiate the form group.')\r\n\r\n this.initFormGroup(formGroup, modelConstructor, updateOnChangeControls);\r\n parentFormGroup.setControl(propertyNameInSaveBody, formGroup); // FT: Use setControl because it will update formGroup if it already exists\r\n\r\n return formGroup;\r\n }\r\n\r\n initFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n modelConstructor: T & BaseEntity, \r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n if (formGroup == null)\r\n console.error('FT: You need to instantiate the form group.')\r\n\r\n Object.keys(modelConstructor).forEach((formControlName) => {\r\n let formControl: SpiderlyFormControl;\r\n \r\n const formControlValue = modelConstructor[formControlName];\r\n \r\n if (updateOnChangeControls?.includes(formControlName as keyof T) ||\r\n (formControlName.endsWith('Id') && formControlName.length > 2)\r\n ){\r\n formControl = new SpiderlyFormControl(formControlValue, { updateOn: 'change' });\r\n }\r\n else{\r\n formControl = new SpiderlyFormControl(formControlValue, { updateOn: 'blur' });\r\n }\r\n\r\n formControl.label = formControlName;\r\n formControl.labelForDisplay = this.getTranslatedLabel(formControlName);\r\n\r\n formGroup.setControl(formControlName, formControl); // FT: Use setControl because it will update formControl if it already exists\r\n\r\n this.validatorService.setValidator(formControl, modelConstructor.typeName);\r\n });\r\n\r\n return formGroup;\r\n }\r\n\r\n getTranslatedLabel(formControlName: string): string {\r\n if (formControlName.endsWith('Id') && formControlName.length > 2) {\r\n formControlName = formControlName.substring(0, formControlName.length - 2);\r\n } \r\n else if (formControlName.endsWith('DisplayName')) {\r\n formControlName = formControlName.replace('DisplayName', '');\r\n } \r\n\r\n return this.translateLabelsService.translate(formControlName);\r\n }\r\n\r\n getFormArrayGroups<T>(formArray: SpiderlyFormArray<T>): SpiderlyFormGroup<T>[]{\r\n return formArray.controls as SpiderlyFormGroup<T>[]\r\n }\r\n\r\n addNewFormGroupToFormArray<T>(\r\n formArray: SpiderlyFormArray<T>, \r\n modelConstructor: T & BaseEntity,\r\n index: number,\r\n ) : SpiderlyFormGroup {\r\n let helperFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, modelConstructor);\r\n \r\n if (index == null) {\r\n formArray.push(helperFormGroup);\r\n }else{\r\n formArray.insert(index, helperFormGroup);\r\n }\r\n\r\n return helperFormGroup;\r\n }\r\n\r\n initFormArray<T>(\r\n parentFormGroup: SpiderlyFormGroup, \r\n modelList: (T & BaseEntity)[], \r\n modelConstructor: T & BaseEntity, \r\n formArraySaveBodyName: string, \r\n formArrayTranslationKey: string, \r\n required: boolean = false)\r\n {\r\n if (modelList == null)\r\n return null;\r\n\r\n let formArray = new SpiderlyFormArray<T>([]);\r\n formArray.required = required;\r\n formArray.modelConstructor = modelConstructor;\r\n formArray.translationKey = formArrayTranslationKey;\r\n\r\n modelList.forEach(model => {\r\n Object.assign(modelConstructor, model);\r\n let helperFormGroup: SpiderlyFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, formArray.modelConstructor);\r\n formArray.push(helperFormGroup);\r\n });\r\n\r\n parentFormGroup.setControl(formArraySaveBodyName, formArray); // FT: Use setControl because it will update formArray if it already exists\r\n\r\n return formArray;\r\n }\r\n\r\n disableAllFormControls<T>(formArray: SpiderlyFormArray<T>){\r\n formArray.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\r\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\r\n segmentationItemFormGroup.controls[key].disable();\r\n });\r\n });\r\n }\r\n\r\n enableAllFormControls<T>(formArray: SpiderlyFormArray<T>){\r\n formArray.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\r\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\r\n segmentationItemFormGroup.controls[key].enable();\r\n });\r\n });\r\n }\r\n\r\n //#region Helpers\r\n\r\n // FT: If you want to call single method\r\n checkFormGroupValidity = <T>(formGroup: SpiderlyFormGroup<T>): boolean => {\r\n if (formGroup.invalid) {\r\n Object.keys(formGroup.controls).forEach(key => {\r\n formGroup.controls[key].markAsDirty(); // this.formGroup.markAsDirty(); // FT: For some reason this doesnt work\r\n });\r\n\r\n this.showInvalidFieldsMessage();\r\n\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n\r\n showInvalidFieldsMessage = () => {\r\n this.messageService.warningMessage(\r\n this.translocoService.translate('YouHaveSomeInvalidFieldsDescription'),\r\n this.translocoService.translate('YouHaveSomeInvalidFieldsTitle'), \r\n );\r\n }\r\n\r\n generateNewNegativeId<T extends BaseEntity>(formArray: SpiderlyFormArray<T>){\r\n return -formArray.getRawValue().filter(x => x.id < 0).length - 1;\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import { BaseFormService } from './../../services/base-form.service';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { getControl, getParentUrl } from '../../services/helper-functions';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { LastMenuIconIndexClicked } from '../../entities/last-menu-icon-index-clicked';\r\n\r\n@Component({\r\n selector: 'base-form',\r\n template: '',\r\n styles: [],\r\n})\r\nexport class BaseFormCopy implements OnInit { \r\n formGroup: SpiderlyFormGroup = new SpiderlyFormGroup({});\r\n saveBody: any;\r\n successfulSaveToastDescription: string = this.translocoService.translate('SuccessfulSaveToastDescription');\r\n loading: boolean = true;\r\n\r\n private modelDiffer: KeyValueDiffer<string, any>;\r\n\r\n constructor(\r\n protected differs: KeyValueDiffers, \r\n protected http: HttpClient, \r\n protected messageService: SpiderlyMessageService, \r\n protected changeDetectorRef: ChangeDetectorRef,\r\n protected router: Router, \r\n protected route: ActivatedRoute,\r\n protected translocoService: TranslocoService,\r\n protected baseFormService: BaseFormService,\r\n ) {\r\n }\r\n\r\n ngOnInit(){\r\n }\r\n\r\n //#region Model\r\n\r\n initFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n parentFormGroup: SpiderlyFormGroup, \r\n modelConstructor: any, \r\n propertyNameInSaveBody: string,\r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n return this.baseFormService.addFormGroup(\r\n formGroup, parentFormGroup, modelConstructor, propertyNameInSaveBody, updateOnChangeControls\r\n );\r\n }\r\n\r\n createFormGroup = <T>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n modelConstructor: T & BaseEntity, \r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n return this.baseFormService.initFormGroup(\r\n formGroup, modelConstructor, updateOnChangeControls\r\n );\r\n }\r\n\r\n control = <T extends BaseEntity>(formControlName: string & keyof T, formGroup: SpiderlyFormGroup<T>) => {\r\n return getControl(formControlName, formGroup);\r\n }\r\n\r\n onSave = (reroute: boolean = true) => {\r\n this.saveBody = this.formGroup.initSaveBody();\r\n this.onBeforeSave(this.saveBody);\r\n\r\n this.saveBody = this.saveBody ?? this.formGroup.getRawValue();\r\n\r\n let isValid: boolean = this.areFormGroupsFromParentFormGroupValid();\r\n let isFormArrayValid: boolean = this.areFormArraysValid();\r\n\r\n if(isValid && isFormArrayValid){\r\n this.formGroup.saveObservableMethod(this.saveBody).subscribe(res => {\r\n this.messageService.successMessage(this.successfulSaveToastDescription);\r\n\r\n Object.keys(res).forEach((key) => {\r\n const formControl = this.formGroup.get(key);\r\n \r\n if (formControl) {\r\n if (formControl instanceof SpiderlyFormArray) {\r\n const formArray = formControl as SpiderlyFormArray;\r\n if (res[key].length !== 0) {\r\n formArray.clear();\r\n }\r\n else{\r\n // FT: This is okay because when we have M2M association with additional fields, we will not give back the list because we are not checking version on the server.\r\n // console.error(`You returned empty array for control: ${formArray.translationKey}.`);\r\n }\r\n\r\n res[key].forEach((model: any) => {\r\n if (typeof model === 'object' && model !== null) {\r\n Object.assign(formArray.modelConstructor, model);\r\n let helperFormGroup = new SpiderlyFormGroup({});\r\n this.baseFormService.initFormGroup(helperFormGroup, formArray.modelConstructor)\r\n formArray.push(helperFormGroup);\r\n } else {\r\n console.error('Can not add primitive form control inside form array.');\r\n }\r\n });\r\n\r\n } else {\r\n formControl.patchValue(res[key]);\r\n }\r\n }else{\r\n // FT: It's okay to do this.\r\n // console.error('You returned something that is not in the save DTO.');\r\n }\r\n });\r\n\r\n if (reroute) {\r\n const savedObjectId = (res as any)[this.formGroup.mainDTOName]?.id;\r\n this.rerouteToSavedObject(savedObjectId); // You always need to have id, because of id == 0 and version change\r\n }\r\n \r\n this.onAfterSave();\r\n });\r\n \r\n this.onAfterSaveRequest();\r\n }else{\r\n this.baseFormService.showInvalidFieldsMessage();\r\n }\r\n }\r\n\r\n rerouteToSavedObject = (rerouteId: number | string): void => {\r\n if(rerouteId == null){\r\n // console.error('You do not have rerouteId in your DTO.')\r\n const currentUrl = this.router.url;\r\n const parentUrl: string = getParentUrl(currentUrl);\r\n this.router.navigateByUrl(parentUrl);\r\n return;\r\n }\r\n \r\n const segments = this.router.url.split('/');\r\n segments[segments.length - 1] = rerouteId.toString();\r\n\r\n const newUrl = segments.join('/');\r\n this.router.navigateByUrl(newUrl);\r\n }\r\n\r\n onBeforeSave = (saveBody?: any) => {}\r\n onAfterSave = () => {}\r\n onAfterSaveRequest = () => {}\r\n\r\n areFormGroupsFromParentFormGroupValid(): boolean {\r\n if(this.formGroup.controls == null)\r\n return true;\r\n\r\n let invalid: boolean = false;\r\n\r\n Object.keys(this.formGroup.controls).forEach(key => {\r\n const formGroupOrControl = this.formGroup.controls[key];\r\n\r\n if (formGroupOrControl instanceof SpiderlyFormGroup){\r\n Object.keys(formGroupOrControl.controls).forEach(key => {\r\n const formControl = formGroupOrControl.controls[key] as SpiderlyFormControl; // this.formArray.markAsDirty(); // FT: For some reason this doesnt work\r\n\r\n if (formGroupOrControl.controlNamesFromHtml.includes(formControl.label) && formControl.invalid) {\r\n formControl.markAsDirty();\r\n invalid = true;\r\n }\r\n });\r\n }\r\n else if (formGroupOrControl instanceof SpiderlyFormControl){\r\n if (formGroupOrControl.invalid) {\r\n formGroupOrControl.markAsDirty();\r\n invalid = true;\r\n }\r\n }\r\n\r\n });\r\n\r\n if (invalid) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Model List\r\n \r\n getFormArrayControlByIndex<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, index: number, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl {\r\n if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n formArray.controlNamesFromHtml.push(formControlName);\r\n\r\n let filteredFormGroups: SpiderlyFormGroup<T>[];\r\n\r\n if (filter) {\r\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\r\n }\r\n else{\r\n return (formArray.controls[index] as SpiderlyFormGroup<T>).controls[formControlName] as SpiderlyFormControl;\r\n }\r\n\r\n return filteredFormGroups[index]?.controls[formControlName] as SpiderlyFormControl; // FT: Don't change this. It's always possible that change detection occurs before something.\r\n }\r\n\r\n getFormArrayControls<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl[] {\r\n if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n formArray.controlNamesFromHtml.push(formControlName);\r\n\r\n let filteredFormGroups: SpiderlyFormGroup<T>[];\r\n\r\n if (filter) {\r\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\r\n }\r\n else{\r\n return (formArray.controls as SpiderlyFormGroup<T>[]).map(x => x.controls[formControlName] as SpiderlyFormControl);\r\n }\r\n\r\n return filteredFormGroups.map(x => x.controls[formControlName] as SpiderlyFormControl);\r\n }\r\n\r\n getFormArrayGroups<T>(formArray: SpiderlyFormArray<T>): SpiderlyFormGroup<T>[]{\r\n return this.baseFormService.getFormArrayGroups(formArray);\r\n }\r\n\r\n addNewFormGroupToFormArray<T>(\r\n formArray: SpiderlyFormArray<T>, \r\n modelConstructor: T & BaseEntity,\r\n index: number,\r\n ) : SpiderlyFormGroup {\r\n return this.baseFormService.addNewFormGroupToFormArray(formArray, modelConstructor, index)\r\n }\r\n\r\n initFormArray<T>(\r\n parentFormGroup: SpiderlyFormGroup, \r\n modelList: (T & BaseEntity)[], \r\n modelConstructor: T & BaseEntity, \r\n formArraySaveBodyName: string, \r\n formArrayTranslationKey: string, \r\n required: boolean = false)\r\n {\r\n return this.baseFormService.initFormArray<T>(\r\n parentFormGroup, modelList, modelConstructor, formArraySaveBodyName, formArrayTranslationKey, required\r\n );\r\n }\r\n\r\n removeFormControlFromTheFormArray(formArray: SpiderlyFormArray, index: number) {\r\n if(index == null)\r\n throw new Error('Can not pass null index.');\r\n\r\n formArray.removeAt(index);\r\n }\r\n\r\n removeFormControlsFromTheFormArray(formArray: SpiderlyFormArray, indexes: number[]) {\r\n // Sort indexes in descending order to avoid index shifts when removing controls\r\n const sortedIndexes = indexes.sort((a, b) => b - a);\r\n\r\n sortedIndexes.forEach(index => {\r\n if (index >= 0 && index < formArray.length) {\r\n formArray.removeAt(index);\r\n }\r\n });\r\n }\r\n\r\n areFormArraysValid(): boolean {\r\n if(this.formGroup.controls == null)\r\n return true;\r\n\r\n let invalid: boolean = false;\r\n\r\n Object.keys(this.formGroup.controls).forEach(key => {\r\n const formArray = this.formGroup.controls[key] as unknown as SpiderlyFormArray;\r\n \r\n if (formArray instanceof SpiderlyFormArray){\r\n (formArray.controls as SpiderlyFormGroup[]).forEach(formGroup => {\r\n Object.keys(formGroup.controls).forEach(key => {\r\n const formControl = formGroup.controls[key] as SpiderlyFormControl; // this.formArray.markAsDirty(); // FT: For some reason this doesn't work\r\n\r\n if (\r\n (formGroup.controlNamesFromHtml.includes(formControl.label) || formArray.controlNamesFromHtml.includes(formControl.label)) && \r\n formControl.invalid\r\n ) {\r\n formControl.markAsDirty();\r\n invalid = true;\r\n }\r\n });\r\n });\r\n\r\n if (formArray.required == true && formArray.length == 0) {\r\n invalid = true;\r\n this.messageService.warningMessage(this.translocoService.translate('ListCanNotBeEmpty'));\r\n }\r\n }\r\n });\r\n\r\n if (invalid) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n onBeforeSaveList(){}\r\n onAfterSaveList(){}\r\n onAfterSaveListRequest(){}\r\n\r\n // FT: Sending LastMenuIconIndexClicked class because of reference type\r\n getCrudMenuForOrderedData = (\r\n formArray: SpiderlyFormArray, \r\n modelConstructor: BaseEntity, \r\n lastMenuIconIndexClicked: LastMenuIconIndexClicked, \r\n adjustFormArrayManually: boolean = false\r\n ): MenuItem[] => {\r\n let crudMenuForOrderedData: MenuItem[] = [\r\n {label: this.translocoService.translate('Remove'), icon: 'pi pi-minus', command: () => {\r\n this.onBeforeRemove(formArray, modelConstructor, lastMenuIconIndexClicked.index);\r\n if (adjustFormArrayManually === false) {\r\n this.removeFormControlFromTheFormArray(formArray, lastMenuIconIndexClicked.index);\r\n }\r\n }},\r\n {label: this.translocoService.translate('AddAbove'), icon: 'pi pi-arrow-up', command: () => {\r\n this.onBeforeAddAbove(formArray, modelConstructor, lastMenuIconIndexClicked.index);\r\n if (adjustFormArrayManually === false) {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n formArray, modelConstructor, lastMenuIconIndexClicked.index\r\n );\r\n }\r\n }},\r\n {label: this.translocoService.translate('AddBelow'), icon: 'pi pi-arrow-down', command: () => {\r\n this.onBeforeAddBelow(formArray, modelConstructor, lastMenuIconIndexClicked.index);\r\n if (adjustFormArrayManually === false) {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n formArray, modelConstructor, lastMenuIconIndexClicked.index + 1\r\n );\r\n }\r\n }},\r\n ];\r\n\r\n return crudMenuForOrderedData;\r\n }\r\n\r\n onBeforeRemove = (formArray: SpiderlyFormArray, modelConstructor: any, lastMenuIconIndexClicked: number) => {}\r\n\r\n onBeforeAddAbove = (formArray: SpiderlyFormArray, modelConstructor: any, lastMenuIconIndexClicked: number) => {}\r\n\r\n onBeforeAddBelow = (formArray: SpiderlyFormArray, modelConstructor: any, lastMenuIconIndexClicked: number) => {}\r\n\r\n //#endregion\r\n\r\n}\r\n","import { BaseEntity } from \"./base-entity\";\r\nimport { User } from \"./security-entities\";\r\n\r\nexport class InitTopBarData extends BaseEntity\r\n{\r\n companyName?: string;\r\n userProfilePath?: string;\r\n unreadNotificationsCount?: number;\r\n showProfileIcon?: boolean;\r\n currentUser?: User;\r\n \r\n constructor(\r\n {\r\n companyName,\r\n userProfilePath,\r\n unreadNotificationsCount,\r\n showProfileIcon,\r\n currentUser,\r\n }:{\r\n companyName?: string,\r\n userProfilePath?: string,\r\n unreadNotificationsCount?: number,\r\n showProfileIcon?: boolean,\r\n currentUser?: User,\r\n } = {}\r\n ) {\r\n super('InitTopBarData');\r\n\r\n this.companyName = companyName;\r\n this.userProfilePath = userProfilePath;\r\n this.unreadNotificationsCount = unreadNotificationsCount;\r\n this.showProfileIcon = showProfileIcon;\r\n this.currentUser = currentUser;\r\n }\r\n}","import { AuthBaseService } from './auth-base.service';\r\nimport { ApiSecurityService } from './api.service.security';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, delay, lastValueFrom, map, Observable, of, Subject, Subscription, withLatestFrom } from 'rxjs';\r\nimport { InitTopBarData } from '../entities/init-top-bar-data';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { PrimengOption } from '../entities/primeng-option';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\n\r\nexport interface AppConfig {\r\n inputStyle: string;\r\n colorScheme: string; \r\n theme: string;\r\n ripple: boolean;\r\n menuMode: string;\r\n scale: number;\r\n color: string;\r\n}\r\n\r\ninterface LayoutState {\r\n staticMenuDesktopInactive: boolean;\r\n overlayMenuActive: boolean;\r\n profileSidebarVisible: boolean;\r\n profileDropdownSidebarVisible:boolean;\r\n configSidebarVisible: boolean;\r\n staticMenuMobileActive: boolean;\r\n menuHoverActive: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LayoutBaseService implements OnDestroy {\r\n userSubscription: Subscription;\r\n\r\n protected _unreadNotificationsNumber = new BehaviorSubject<number | null>(null);\r\n unreadNotificationsCount$ = this._unreadNotificationsNumber.asObservable();\r\n\r\n layoutConfig: AppConfig = {\r\n ripple: false,\r\n inputStyle: 'outlined',\r\n menuMode: 'static',\r\n colorScheme: 'light',\r\n theme: 'lara-light-indigo',\r\n scale: 14,\r\n color: `var(--primary-color)`,\r\n };\r\n\r\n state: LayoutState = {\r\n staticMenuDesktopInactive: false,\r\n overlayMenuActive: false,\r\n profileSidebarVisible: false,\r\n profileDropdownSidebarVisible: false,\r\n configSidebarVisible: false,\r\n staticMenuMobileActive: false,\r\n menuHoverActive: false\r\n };\r\n\r\n private configUpdate = new Subject<AppConfig>();\r\n\r\n private overlayOpen = new Subject<any>();\r\n\r\n configUpdate$ = this.configUpdate.asObservable();\r\n\r\n overlayOpen$ = this.overlayOpen.asObservable();\r\n\r\n constructor(\r\n protected apiService: ApiSecurityService,\r\n protected config: ConfigBaseService,\r\n protected authService: AuthBaseService\r\n ) {\r\n }\r\n\r\n initUnreadNotificationsCountForCurrentUser = () => {\r\n this.initUnreadNotificationsCountForCurrentUserObservable().pipe(\r\n delay(1), // FT HACK: Adding delay so both additionalObservable and user emits single null value when logout\r\n withLatestFrom(this.authService.user$) // Triggers when unread notifications change\r\n ).subscribe(([additionalObservable, user]) => {\r\n if (user != null && additionalObservable !== undefined) {\r\n this.setUnreadNotificationsCountForCurrentUser().subscribe();\r\n }\r\n });\r\n }\r\n\r\n initUnreadNotificationsCountForCurrentUserObservable = (): Observable<any> => {\r\n return this.authService.user$;\r\n }\r\n\r\n setUnreadNotificationsCountForCurrentUser = (): Observable<any> => {\r\n return this.apiService.getUnreadNotificationsCountForCurrentUser().pipe(\r\n map((unreadNotificationsCount) => {\r\n this._unreadNotificationsNumber.next(unreadNotificationsCount);\r\n })\r\n );\r\n }\r\n\r\n onMenuToggle() {\r\n if (this.isOverlay()) {\r\n this.state.overlayMenuActive = !this.state.overlayMenuActive;\r\n if (this.state.overlayMenuActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n if (this.isDesktop()) {\r\n this.state.staticMenuDesktopInactive = !this.state.staticMenuDesktopInactive;\r\n }\r\n else {\r\n this.state.staticMenuMobileActive = !this.state.staticMenuMobileActive;\r\n\r\n if (this.state.staticMenuMobileActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n }\r\n\r\n showProfileSidebar() {\r\n this.state.profileSidebarVisible = !this.state.profileSidebarVisible;\r\n if (this.state.profileSidebarVisible) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n showProfileDropdownSidebar() {\r\n this.state.profileDropdownSidebarVisible = !this.state.profileDropdownSidebarVisible;\r\n if (this.state.profileDropdownSidebarVisible) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n showConfigSidebar() {\r\n this.state.configSidebarVisible = true;\r\n }\r\n\r\n isOverlay() {\r\n return this.layoutConfig.menuMode === 'overlay';\r\n }\r\n\r\n isDesktop() {\r\n return window.innerWidth > 991;\r\n }\r\n\r\n isMobile() {\r\n return !this.isDesktop();\r\n }\r\n\r\n onConfigUpdate() {\r\n this.configUpdate.next(this.layoutConfig);\r\n }\r\n \r\n //#region Top Bar\r\n\r\n initTopBarData = (): Observable<InitTopBarData> => {\r\n return combineLatest([this.authService.user$, this.unreadNotificationsCount$]).pipe(\r\n map(([currentUser, unreadNotificationsCount]) => {\r\n return new InitTopBarData({\r\n companyName: this.config.companyName,\r\n userProfilePath: `/administration/users/${currentUser?.id}`,\r\n unreadNotificationsCount: unreadNotificationsCount,\r\n showProfileIcon: true,\r\n currentUser: currentUser,\r\n });\r\n })\r\n );\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Side Bar\r\n\r\n searchPartners = (event: AutoCompleteCompleteEvent): Observable<PrimengOption[]> => {\r\n return of();\r\n }\r\n\r\n partnersAutocompleteButtonClick = (selectedPartner: PrimengOption) => {}\r\n\r\n //#endregion\r\n\r\n ngOnDestroy(): void {\r\n if (this.userSubscription) {\r\n this.userSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\nimport { Subject, Subscription, throttleTime } from \"rxjs\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MenuItem } from \"primeng/api\";\r\n\r\n@Component({\r\n selector: 'spiderly-button-base',\r\n template: ``,\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyButtonBaseComponent {\r\n @Input() icon: string;\r\n @Input() label: string;\r\n @Input() outlined: boolean = false;\r\n @Input() rounded: boolean = false;\r\n @Input() styleClass: string;\r\n @Input() routerLink: string;\r\n @Input() style: { [klass: string]: any; };\r\n @Input() class: string;\r\n @Input() severity: 'success' | 'info' | 'warning' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined;\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onClick = new EventEmitter<Event>();\r\n private clickSubject = new Subject<Event>(); // Internal subject to handle click events.\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private router: Router\r\n ) {\r\n \r\n }\r\n\r\n ngOnInit(){\r\n this.subscription = this.clickSubject\r\n .pipe(throttleTime(500))\r\n .subscribe((event: Event) => this.onClick.emit(event));\r\n }\r\n\r\n handleClick = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.routerLink !== undefined) {\r\n this.router.navigate([this.routerLink]);\r\n }\r\n else{\r\n this.clickSubject.next(event);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\nimport { Subject, Subscription, throttleTime } from \"rxjs\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\r\n\r\n@Component({\r\n selector: 'spiderly-button',\r\n templateUrl: './spiderly-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyButtonComponent extends SpiderlyButtonBaseComponent {\r\n\r\n // constructor() {\r\n // super();\r\n \r\n // }\r\n\r\n}","<p-button \r\n(onClick)=\"handleClick($event)\" \r\n[label]=\"label\" \r\n[icon]=\"icon\" \r\n[outlined]=\"outlined\" \r\n[styleClass]=\"styleClass\" \r\n[severity]=\"severity\" \r\n[rounded]=\"rounded\"\r\n[style]=\"style\"\r\n[class]=\"class\"\r\n[disabled]=\"disabled\"\r\n>\r\n <ng-content></ng-content>\r\n</p-button>","import { Component, EventEmitter, Output } from \"@angular/core\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\r\n\r\n@Component({\r\n selector: 'google-button',\r\n templateUrl: './google-button.component.html',\r\n styles: [],\r\n imports: [\r\n ButtonModule,\r\n TranslocoDirective,\r\n SpiderlyButtonComponent\r\n ],\r\n standalone: true,\r\n})\r\nexport class GoogleButtonComponent { // Custom styling of the google button - https://medium.com/simform-engineering/implement-custom-google-sign-in-using-angular-16-9c93aeff6252\r\n // @Output() onClick: EventEmitter<any> = new EventEmitter();\r\n @Output() loginWithGoogle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor() {}\r\n\r\n createFakeGoogleWrapper = () => {\r\n const googleLoginWrapper = document.createElement('div');\r\n googleLoginWrapper.style.display = 'none';\r\n googleLoginWrapper.classList.add('custom-google-button');\r\n document.body.appendChild(googleLoginWrapper);\r\n window.google.accounts.id.renderButton(googleLoginWrapper, {\r\n type: 'icon',\r\n width: '200',\r\n });\r\n \r\n const googleLoginWrapperButton = googleLoginWrapper.querySelector(\r\n 'div[role=button]'\r\n ) as HTMLElement;\r\n \r\n return {\r\n click: () => {\r\n googleLoginWrapperButton?.click();\r\n },\r\n };\r\n };\r\n\r\n handleGoogleLogin() {\r\n this.loginWithGoogle.emit(this.createFakeGoogleWrapper());\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n google: any;\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <spiderly-button (onClick)=\"handleGoogleLogin()\" [label]=\"t('ContinueWithGoogle')\" [outlined]=\"true\" [style]=\"{width: '100%'}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0.98em\" height=\"1em\" viewBox=\"0 0 256 262\"><path fill=\"#4285f4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"/><path fill=\"#34a853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"/><path fill=\"#fbbc05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z\"/><path fill=\"#eb4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"/></svg>\r\n </spiderly-button>\r\n</ng-container>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { GoogleButtonComponent } from \"../../spiderly-buttons/google-button/google-button.component\";\r\nimport { ConfigBaseService } from \"../../../services/config-base.service\";\r\nimport { AuthBaseService } from \"../../../services/auth-base.service\";\r\n\r\n@Component({\r\n selector: 'auth',\r\n templateUrl: './auth.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n GoogleButtonComponent,\r\n TranslocoDirective,\r\n ],\r\n standalone: true,\r\n})\r\nexport class AuthComponent {\r\n private initCompanyAuthDialogDetailsSubscription: Subscription | null = null;\r\n\r\n @Output() onCompanyNameChange: EventEmitter<string> = new EventEmitter();\r\n @Input() showGoogleAuth: boolean = true;\r\n\r\n hasGoogleAuth: boolean = this.config.googleAuth;\r\n companyName: string;\r\n image: string;\r\n \r\n constructor(\r\n private config: ConfigBaseService,\r\n private authService: AuthBaseService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n this.initCompanyDetails();\r\n }\r\n\r\n initCompanyDetails() {\r\n this.initCompanyAuthDialogDetailsSubscription = this.authService.initCompanyAuthDialogDetails().subscribe(initCompanyAuthDialogDetails => {\r\n if (initCompanyAuthDialogDetails != null) {\r\n this.image = initCompanyAuthDialogDetails.image;\r\n this.companyName = initCompanyAuthDialogDetails.companyName;\r\n this.onCompanyNameChange.next(this.companyName);\r\n }\r\n })\r\n }\r\n\r\n onGoogleSignIn(googleWrapper: any){\r\n googleWrapper.click();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.initCompanyAuthDialogDetailsSubscription) {\r\n this.initCompanyAuthDialogDetailsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\" style=\"margin-bottom: 38px;\">\r\n <img *ngIf=\"image != null\" [src]=\"image\" alt=\"{{companyName}} Logo\" height=\"60\">\r\n <i *ngIf=\"image == null\" class=\"pi pi-spin pi-spinner primary-color\" style=\"font-size: 2rem\"></i>\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n \r\n <div *ngIf=\"hasGoogleAuth && showGoogleAuth\">\r\n <div style=\"display: flex; align-items: center; gap: 7px; justify-content: center; margin-bottom: 16px;\">\r\n <div class=\"separator\"></div>\r\n <div>{{t('or')}}</div>\r\n <div class=\"separator\"></div>\r\n </div>\r\n <div>\r\n <!-- https://code-maze.com/how-to-sign-in-with-google-angular-aspnet-webapi/ -->\r\n <google-button (loginWithGoogle)=\"onGoogleSignIn($event)\"></google-button> \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>","import {\r\n Component, Input,\r\n } from '@angular/core';\r\nimport { SpiderlyFormControl } from '../components/spiderly-form-control/spiderly-form-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n \r\n @Component({\r\n selector: 'base-control',\r\n template: '',\r\n styles: [],\r\n })\r\n export class BaseControl {\r\n @Input() control: SpiderlyFormControl; // FT: if you name it formControl: https://stackoverflow.com/a/54755671/21209982\r\n @Input() disabled: boolean = false;\r\n @Input() showLabel: boolean = true;\r\n @Input() label: string = null; // NgModel/Want custom translation\r\n @Input() controlValid: boolean = true; // NgModel\r\n @Input() placeholder: string = '';\r\n @Input() showTooltip: boolean = false;\r\n @Input() tooltipText: string = null;\r\n @Input() tooltipIcon: string = 'pi pi-info-circle';\r\n errorMessageTooltipEvent: 'hover' | 'focus';\r\n \r\n constructor(\r\n protected translocoService: TranslocoService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n if(this.control != null && this.disabled == true)\r\n this.control.disable();\r\n\r\n // TODO FT: Delete if you don't need\r\n // if(this.control?.validator?.hasNotEmptyRule == true) // FT HACK: Be carefull with this name, if you change it in generator you need to change it here also\r\n // this.control.required = true;\r\n\r\n this.errorMessageTooltipEvent = window.innerWidth > 1000 ? 'hover' : 'focus'\r\n }\r\n\r\n ngAfterViewInit(){\r\n\r\n }\r\n\r\n getTranslatedLabel(): string{\r\n return this.label ?? this.control.labelForDisplay;\r\n }\r\n\r\n getValidationErrrorMessages(){\r\n if(this.control?.errors && this.control?.dirty){\r\n // FT: it should always be one error message for single form control, \r\n // also i don't need to reassign it to null because it will be shown only when control.valid == false\r\n return this.control.errors['_'];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n }","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'required',\r\n templateUrl: './required.component.html',\r\n styles: [],\r\n standalone: true,\r\n})\r\nexport class RequiredComponent {\r\n\r\n constructor() {}\r\n\r\n}","<span style=\"color: red; margin-left: 4px;\">*</span>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-textbox',\r\n templateUrl: './spiderly-textbox.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyTextboxComponent extends BaseControl implements OnInit {\r\n @Input() showButton: boolean = false;\r\n @Input() buttonIcon: string;\r\n @Output() onButtonClick = new EventEmitter();\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n \r\n buttonClick() {\r\n this.onButtonClick.next(null);\r\n }\r\n \r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\">\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"pi {{buttonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-body',\r\n templateUrl: './panel-body.component.html',\r\n styles: []\r\n})\r\nexport class PanelBodyComponent implements OnInit {\r\n @Input() normalBottomPadding: boolean = false; // FT: By default we set to false, when the grid is inside the body.\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<!-- FT: this is selector, not the class -->\r\n<div class=\"panel-body\"\r\n [ngClass]=\"{\r\n 'non-grid-panel-bottom-padding': normalBottomPadding, \r\n }\">\r\n <!-- 'card': true, -->\r\n <ng-content></ng-content>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-footer',\r\n templateUrl: './panel-footer.component.html',\r\n styleUrl: './panel-footer.component.scss'\r\n})\r\nexport class PanelFooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<div class=\"spiderly-panel-footer\">\r\n <div class=\"buttons-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n <span class=\"p-text-secondary\">\r\n <ng-content select=\"[footerRight]\"></ng-content>\r\n </span>\r\n</div>","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-header',\r\n templateUrl: './panel-header.component.html',\r\n styles: [`\r\n .p-panel-icons-end {\r\n font-size: 50px;\r\n }\r\n `]\r\n})\r\nexport class PanelHeaderComponent implements OnInit {\r\n @Input() title: string;\r\n @Input() showBigTitle: boolean;\r\n @Input() showIcon: boolean = true;\r\n @Input() icon: string;\r\n @Input() index: number;\r\n @Input() tabs: SpiderlyTab[];\r\n\r\n constructor(\r\n private translocoService: TranslocoService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.title == null)\r\n this.title = this.translocoService.translate('Details');\r\n\r\n if (this.showIcon === true && this.icon == null)\r\n this.icon = 'pi pi-file-edit';\r\n }\r\n\r\n setTabIsSelected(tab: SpiderlyTab){\r\n this.tabs.forEach(t => {\r\n t.isSelected = false;\r\n });\r\n\r\n tab.isSelected = true;\r\n }\r\n}\r\n\r\nexport class SpiderlyTab\r\n{\r\n label?: string;\r\n id?: number;\r\n icon?: string;\r\n isSelected?: boolean;\r\n \r\n constructor(\r\n {\r\n label,\r\n id,\r\n icon,\r\n isSelected,\r\n }:{\r\n label?: string;\r\n id?: number;\r\n icon?: string;\r\n isSelected?: boolean;\r\n } = {}\r\n ) {\r\n this.label = label;\r\n this.id = id;\r\n this.icon = icon;\r\n this.isSelected = isSelected;\r\n }\r\n\r\n}","<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\r\n @if (tabs == null) {\r\n <div style=\"display: flex; align-items: center; gap: 14px;\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 19px' : 'font-size: 16px;'\"></i> \r\n <h2 [style]=\"(showBigTitle ? 'font-size: 16px;' : '')\" class=\"remove-h-css\">{{title}}</h2>\r\n </div>\r\n }\r\n @else {\r\n @for (tab of tabs; track $index) {\r\n <div (click)=\"setTabIsSelected(tab)\"\r\n [style]=\"{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '14px',\r\n cursor: 'pointer',\r\n fontWeight: tab.isSelected ? '700' : 'normal'\r\n }\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{tab.icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 19px' : 'font-size: 16px;'\"></i> \r\n <div [style]=\"showBigTitle ? 'font-size: 16px' : ''\">{{tab.label}}</div>\r\n </div>\r\n }\r\n }\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Menu } from 'primeng/menu';\r\n\r\n@Component({\r\n selector: 'spiderly-panel',\r\n templateUrl: './spiderly-panel.component.html',\r\n})\r\nexport class SpiderlyPanelComponent implements OnInit {\r\n @Input() isFirstMultiplePanel: boolean = false;\r\n @Input() isMiddleMultiplePanel: boolean = false;\r\n @Input() isLastMultiplePanel: boolean = false;\r\n @Input() toggleable: boolean = false;\r\n @Input() collapsed: boolean = false;\r\n @Input() crudMenu: MenuItem[];\r\n @Input() showCrudMenu: boolean = true;\r\n @Input() showRemoveIcon: boolean = false;\r\n @Input() index: number;\r\n @Input() showPanelHeader: boolean = true;\r\n\r\n @Output() onMenuIconClick: EventEmitter<number> = new EventEmitter();\r\n @Output() onRemoveIconClick: EventEmitter<null> = new EventEmitter();\r\n\r\n @ViewChild('menu') menu: Menu;\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n menuItemClick(index: number, event){\r\n this.menu.toggle(event);\r\n this.onMenuIconClick.next(index);\r\n }\r\n\r\n removeItemClick(){\r\n this.onRemoveIconClick.next(null);\r\n }\r\n\r\n}","<p-panel \r\n[showHeader]=\"showPanelHeader\"\r\n[ngClass]=\"{\r\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-first': isFirstMultiplePanel,\r\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-middle': isMiddleMultiplePanel,\r\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-last': isLastMultiplePanel,\r\n 'panel-border': !isFirstMultiplePanel,\r\n 'spiderly-panel': true,\r\n}\"\r\n[toggleable]=\"toggleable\"\r\n[collapsed]=\"toggleable && collapsed\"\r\nexpandIcon=\"pi pi-chevron-up\"\r\ncollapseIcon=\"pi pi-chevron-down\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <ng-content select=\"panel-header\"></ng-content>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"icons\">\r\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\r\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\r\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n </div>\r\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\r\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"panel-body-wrapper\">\r\n <ng-content select=\"panel-body\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"panel-footer\"></ng-content>\r\n\r\n</p-panel>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spiderly-card',\r\n templateUrl: './spiderly-card.component.html',\r\n styles: []\r\n})\r\nexport class SpiderlyCardComponent implements OnInit {\r\n @Input() icon: string = 'pi pi-file-edit';\r\n @Input() title: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<div class=\"card responsive-card-padding\">\r\n <div style=\"display: flex; align-items: center; margin-bottom: 14px; gap: 12px;\">\r\n <i style=\"font-size: 20px;\" class=\"{{icon}} primary-color\"></i>\r\n <h5 style=\"margin: 0;\">{{title}}</h5>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PanelBodyComponent } from './panel-body/panel-body.component';\r\nimport { PanelFooterComponent } from './panel-footer/panel-footer.component';\r\nimport { PanelHeaderComponent } from './panel-header/panel-header.component';\r\nimport { SpiderlyPanelComponent } from './spiderly-panel/spiderly-panel.component';\r\nimport { SpiderlyCardComponent } from './spiderly-card/spiderly-card.component';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n ],\r\n exports: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n SpiderlyCardComponent\r\n ],\r\n declarations: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n SpiderlyCardComponent\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyPanelsModule {}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n } from '@angular/core';\r\nimport { BaseControl } from './base-control';\r\nimport { PrimengOption } from '../entities/primeng-option';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n @Component({\r\n selector: 'base-dropdown-control',\r\n template: '',\r\n styles: [],\r\n })\r\n export class BaseDropdownControl extends BaseControl {\r\n @Input() options: PrimengOption[];\r\n @Input() showAddon: boolean = false;\r\n @Input() addonIcon: string = 'pi pi-ellipsis-h';\r\n @Input() override placeholder: string = this.translocoService.translate('SelectFromTheList');\r\n @Output() onButtonClick: EventEmitter<null> = new EventEmitter();\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) {\r\n super(translocoService);\r\n }\r\n\r\n dropdownMarkAsDirty(){\r\n this.control.markAsDirty();\r\n }\r\n\r\n addonClick(){\r\n this.onButtonClick.next(null);\r\n }\r\n }","import {\r\n Component,\r\n EventEmitter,\r\n Output,\r\n } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { BaseDropdownControl } from './base-dropdown-control';\r\n\r\n @Component({\r\n selector: 'base-autocomplete-control',\r\n template: '',\r\n styles: [],\r\n })\r\n export class BaseAutocompleteControl extends BaseDropdownControl {\r\n @Output() onTextInput: EventEmitter<AutoCompleteCompleteEvent> = new EventEmitter();\r\n }","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-multiautocomplete',\r\n templateUrl: './spiderly-multiautocomplete.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n CommonModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n // @Input() required: boolean = true; // TODO FT: delete if you don't need through whole app\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent){\r\n this.onTextInput.next(event);\r\n }\r\n\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\">\r\n <p-autoComplete \r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [multiple]=\"true\" \r\n [dropdown]=\"false\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n [completeOnFocus]=\"true\"\r\n dropdownIcon=\"pi pi-plus\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n <span *ngIf=\"showAddon\" (click)=\"addonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"pi {{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-password',\r\n templateUrl: './spiderly-password.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyPasswordComponent extends BaseControl implements OnInit {\r\n @Input() showPasswordStrength: boolean = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-password\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control?.label\"\r\n [toggleMask]=\"true\"\r\n [feedback]=\"showPasswordStrength\"\r\n (onBlur)=\"control?.markAsDirty()\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n </div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-checkbox',\r\n templateUrl: './spiderly-checkbox.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyCheckboxComponent extends BaseControl implements OnInit {\r\n @Input() fakeLabel = true;\r\n @Input() initializeToFalse = false;\r\n @Input() inlineLabel = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n if (this.initializeToFalse == true)\r\n this.control.setValue(false);\r\n\r\n super.ngOnInit();\r\n }\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\" style=\"margin-top: 0.5rem;\">\r\n <p-checkbox\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [formControl]=\"control\"\r\n [label]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n />\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { BaseDropdownControl } from '../base-dropdown-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-multiselect',\r\n templateUrl: './spiderly-multiselect.component.html',\r\n styles: [\r\n ],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyMultiSelectComponent extends BaseDropdownControl implements OnInit {\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <span class=\"p-fluid\">\r\n <p-multiSelect\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\r\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\r\n we need to use this and dropdown control only on the client -->\r\n </span>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-textarea',\r\n templateUrl: './spiderly-textarea.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyTextareaComponent extends BaseControl implements OnInit {\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <textarea\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputTextarea\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [autoResize]=\"true\"\r\n [class]=\"control.disabled ? 'disabled' : ''\"\r\n ></textarea>\r\n </div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-number',\r\n templateUrl: './spiderly-number.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyNumberComponent extends BaseControl implements OnInit {\r\n @Input() prefix: string;\r\n @Input() showButtons: boolean = true;\r\n @Input() decimal: boolean;\r\n @Input() maxFractionDigits: number = 0;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n \r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"showLabel\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-inputNumber\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n [prefix]=\"prefix\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [showButtons]=\"showButtons\"\r\n buttonLayout=\"horizontal\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n />\r\n </div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { BaseDropdownControl } from '../base-dropdown-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { DropdownChangeEvent } from 'primeng/dropdown';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-dropdown',\r\n templateUrl: './spiderly-dropdown.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n CommonModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyDropdownComponent extends BaseDropdownControl implements OnInit {\r\n @Output() onChange: EventEmitter<DropdownChangeEvent> = new EventEmitter();\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n change(event: DropdownChangeEvent){\r\n this.onChange.next(event);\r\n }\r\n\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n\r\n <!-- FT: Dropdown doesn't support tooltip event, but it can only has not empty validation, so for now it's okay to not show validation message on dropdown ever -->\r\n <div class=\"p-inputgroup p-fluid\">\r\n <p-dropdown\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [style]=\"{'width':'100%'}\"\r\n appendTo=\"body\"\r\n />\r\n <span *ngIf=\"showAddon\" (click)=\"addonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"pi {{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n \r\n</div>","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { Editor } from 'primeng/editor';\r\nimport { Tooltip } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-editor',\r\n templateUrl: './spiderly-editor.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyEditorComponent extends BaseControl implements OnInit {\r\n @ViewChild(Editor) editor: Editor;\r\n @ViewChild(Tooltip) tooltip: Tooltip;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n onClick(){\r\n let editableArea: HTMLElement = this.editor.el.nativeElement.querySelector('.ql-editor');\r\n \r\n editableArea.onblur = () => {\r\n this.control.markAsDirty();\r\n this.tooltip.deactivate();\r\n };\r\n\r\n editableArea.onfocus = () => {\r\n if (this.errorMessageTooltipEvent == 'focus' ) {\r\n this.tooltip.activate();\r\n }\r\n };\r\n\r\n editableArea.onmouseover = () => {\r\n if (this.errorMessageTooltipEvent == 'hover' ) {\r\n this.tooltip.activate();\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n\r\n <!-- Disable doesn't work on this control -->\r\n <p-editor\r\n *ngIf=\"control\"\r\n [formControl]=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [readonly]=\"control.disabled\"\r\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\r\n [id]=\"control.label\"\r\n [placeholder]=\"placeholder\"\r\n (click)=\"onClick()\"\r\n [style]=\"{ height: '320px' }\"\r\n ></p-editor>\r\n\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-colorpick',\r\n templateUrl: './spiderly-colorpick.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyColorpickComponent extends BaseControl implements OnInit {\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.control.valueChanges.subscribe((value) => {\r\n this.control.setValue(value, { emitEvent: false }); // FT: Preventing infinite loop\r\n });\r\n\r\n if (this.control.value == null)\r\n this.placeholder = this.translocoService.translate('SelectAColor');\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div style=\"display: flex; gap: 10px;\">\r\n <div class=\"p-inputgroup p-fluid\">\r\n <!-- <span class=\"p-inputgroup-addon\">\r\n #\r\n </span> -->\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [style]=\"{'width':'100%', 'position': 'relative'}\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n />\r\n </div>\r\n <p-colorPicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n appendTo=\"body\"\r\n ></p-colorPicker>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileSelectEvent } from 'primeng/fileupload';\r\nimport { getMimeTypeForFileName, isExcelFileType, isImageFileType } from '../../services/helper-functions';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyButtonComponent } from '../../components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\n\r\n@Component({\r\n selector: 'spiderly-file',\r\n templateUrl: './spiderly-file.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective\r\n ]\r\n})\r\nexport class SpiderlyFileComponent extends BaseControl implements OnInit {\r\n @Output() onFileSelected = new EventEmitter<SpiderlyFileSelectEvent>();\r\n @Output() onFileRemoved = new EventEmitter<null>();\r\n @Input() objectId: number;\r\n @Input() fileData: string;\r\n @Input() acceptedFileTypes: Array<'image/*' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/vnd.ms-excel' | '.xlsx' | '.xls'> = ['image/*'];\r\n @Input() required: boolean; // FT: It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl.\r\n @Input() multiple: boolean = false;\r\n \r\n acceptedFileTypesCommaSeparated: string;\r\n @Input() files: File[] = [];\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n if (this.control?.value != null && this.fileData != null) {\r\n const file = this.base64ToFile(this.fileData);\r\n this.files.push(file);\r\n }\r\n\r\n this.acceptedFileTypesCommaSeparated = this.acceptedFileTypes.join(',');\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n filesSelected(event: FileSelectEvent){\r\n const file = event.files[0];\r\n\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, `${this.objectId}-${file.name}`);\r\n \r\n this.onFileSelected.next(new SpiderlyFileSelectEvent({file: file, formData: formData}));\r\n }\r\n\r\n choose(event, chooseCallback){\r\n chooseCallback();\r\n }\r\n \r\n fileRemoved(removeFileCallback, index: number){\r\n removeFileCallback(index);\r\n this.control?.setValue(null);\r\n this.onFileRemoved.next(null);\r\n }\r\n\r\n // FT: Put inside global functions if you need it\r\n base64ToFile(base64String: string){\r\n const [header, base64Content] = base64String.split(';base64,');\r\n const fileName = header.split('=')[1];\r\n const mimeType = getMimeTypeForFileName(fileName);\r\n\r\n const byteCharacters = atob(base64Content);\r\n const byteNumbers = new Uint8Array(byteCharacters.length);\r\n\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n\r\n const blob = new Blob([byteNumbers], { type: mimeType });\r\n const file = new File([blob], fileName, { type: mimeType });\r\n\r\n return file;\r\n }\r\n\r\n isImageFileType(mimeType: string): boolean {\r\n return isImageFileType(mimeType);\r\n }\r\n\r\n isExcelFileType(mimeType: string): boolean {\r\n return isExcelFileType(mimeType);\r\n }\r\n\r\n}\r\n\r\nexport class SpiderlyFileSelectEvent extends BaseEntity\r\n{\r\n file?: File;\r\n formData?: FormData;\r\n\r\n constructor(\r\n {\r\n file,\r\n formData,\r\n }:{\r\n file?: File;\r\n formData?: FormData;\r\n } = {}\r\n ) {\r\n super('SpiderlyFileSelectEvent'); \r\n\r\n this.file = file;\r\n this.formData = formData;\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- FT: It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\r\n <required *ngIf=\"control?.required || required\"></required>\r\n </div>\r\n\r\n <p-fileUpload \r\n [files]=\"files\" \r\n [disabled]=\"disabled\" \r\n [name]=\"control?.label ?? label\" \r\n [multiple]=\"multiple\" \r\n [accept]=\"acceptedFileTypesCommaSeparated\" \r\n [maxFileSize]=\"1000000\" \r\n (onSelect)=\"filesSelected($event)\"\r\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\r\n >\r\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\r\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\r\n <div class=\"flex gap-2\">\r\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\r\n <!-- <p-button (onClick)=\"clearCallback()\" icon=\"pi pi-times\" [rounded]=\"true\" [outlined]=\"true\" severity=\"danger\" [disabled]=\"!files || files.length === 0\" /> -->\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\r\n <div *ngIf=\"files?.length > 0\">\r\n <div class=\"flex justify-content-center p-0 gap-5\">\r\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\r\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\r\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\r\n </div>\r\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\r\n <div class=\"excel-details\">\r\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\"> </ng-template>\r\n <ng-template pTemplate=\"empty\">\r\n <div class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400\"></i>\r\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </div>\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-calendar',\r\n templateUrl: './spiderly-calendar.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyCalendarComponent extends BaseControl implements OnInit {\r\n @Input() showTime: boolean = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n setDate(event:Date) { \r\n \r\n }\r\n}\r\n","<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n <p-calendar\r\n *ngIf=\"control\"\r\n [style]=\"{'width':'100%'}\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n dateFormat=\"dd.mm.yy.\"\r\n iconDisplay=\"input\" \r\n [showIcon]=\"true\" \r\n [showTime]=\"showTime\"\r\n (onSelect)=\"setDate($event)\"\r\n />\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-autocomplete',\r\n templateUrl: './spiderly-autocomplete.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PrimengModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n // @Input() required: boolean = true; // TODO FT: delete if you don't need through whole app\r\n @Input() appendTo: any = 'body';\r\n @Input() showClear: boolean = true;\r\n @Input() emptyMessage: string;\r\n @Input() displayName: string; // FT: Added because when we initialize the object options are null\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n\r\n if (this.options == null && this.control.value != null) {\r\n this.options = [\r\n { label: this.displayName, value: this.control.value }\r\n ];\r\n }\r\n\r\n if (this.emptyMessage == null) {\r\n this.emptyMessage = this.translocoService.translate('EmptyMessage');\r\n }\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent){\r\n this.onTextInput.next(event);\r\n }\r\n\r\n select(event){\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n \r\n <div class=\"p-inputgroup p-fluid\">\r\n <p-autoComplete\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n [completeOnFocus]=\"true\"\r\n [style]=\"{'width':'100%', 'position' : 'relative'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n />\r\n <span *ngIf=\"showAddon\" (click)=\"addonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--primary-color); border-color: var(--primary-color);\">\r\n <i class=\"{{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</ng-container>","import { Component, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { getParentUrl } from \"../../../services/helper-functions\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\r\n\r\n@Component({\r\n selector: 'return-button',\r\n templateUrl: './return-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyReturnButtonComponent {\r\n @Input() navigateUrl: string;\r\n\r\n constructor(private router: Router) {}\r\n\r\n onReturn(){\r\n if(this.navigateUrl == undefined){\r\n const currentUrl = this.router.url;\r\n const parentUrl: string = getParentUrl(currentUrl);\r\n this.router.navigateByUrl(parentUrl);\r\n }\r\n else{\r\n this.router.navigate([this.navigateUrl]);\r\n }\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <spiderly-button (onClick)=\"onReturn()\" [label]=\"t('Return')\" icon=\"pi pi-undo\" [outlined]=\"true\"></spiderly-button>\r\n</ng-container>","import { NgModule } from '@angular/core';\r\nimport { SpiderlyPanelsModule } from '../components/spiderly-panels/spiderly-panels.module';\r\nimport { SpiderlyMultiAutocompleteComponent } from './spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nimport { SpiderlyPasswordComponent } from './spiderly-password/spiderly-password.component';\r\nimport { SpiderlyTextboxComponent } from './spiderly-textbox/spiderly-textbox.component';\r\nimport { SpiderlyCheckboxComponent } from './spiderly-checkbox/spiderly-checkbox.component';\r\nimport { SpiderlyMultiSelectComponent } from './spiderly-multiselect/spiderly-multiselect.component';\r\nimport { SpiderlyTextareaComponent } from './spiderly-textarea/spiderly-textarea.component';\r\nimport { SpiderlyNumberComponent } from './spiderly-number/spiderly-number.component';\r\nimport { SpiderlyDropdownComponent } from './spiderly-dropdown/spiderly-dropdown.component';\r\nimport { SpiderlyEditorComponent } from './spiderly-editor/spiderly-editor.component';\r\nimport { SpiderlyColorpickComponent } from './spiderly-colorpick/spiderly-colorpick.component';\r\nimport { SpiderlyFileComponent } from './spiderly-file/spiderly-file.component';\r\nimport { SpiderlyCalendarComponent } from './spiderly-calendar/spiderly-calendar.component';\r\nimport { SpiderlyAutocompleteComponent } from './spiderly-autocomplete/spiderly-autocomplete.component';\r\nimport { SpiderlyButtonComponent } from '../components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { SpiderlyReturnButtonComponent } from '../components/spiderly-buttons/return-button/return-button.component';\r\n\r\n@NgModule({\r\n imports: [\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyCheckboxComponent,\r\n SpiderlyCalendarComponent,\r\n SpiderlyReturnButtonComponent,\r\n SpiderlyButtonComponent,\r\n SpiderlyPanelsModule,\r\n SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorpickComponent,\r\n SpiderlyFileComponent,\r\n ],\r\n exports: [\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyCheckboxComponent,\r\n SpiderlyCalendarComponent,\r\n SpiderlyReturnButtonComponent,\r\n SpiderlyButtonComponent,\r\n SpiderlyPanelsModule,\r\n SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorpickComponent,\r\n SpiderlyFileComponent\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyControlsModule {}","import { ChangeDetectorRef, Component, EventEmitter, Input, KeyValueDiffers, OnInit, Output } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { VerificationTokenRequest } from '../../../entities/security-entities';\r\nimport { PrimengModule } from '../../../modules/primeng.module';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\n\r\n@Component({\r\n selector: 'verification-wrapper',\r\n templateUrl: './verification-wrapper.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpiderlyControlsModule,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class VerificationWrapperComponent extends BaseFormCopy implements OnInit {\r\n verificationTokenRequestFormGroup = new SpiderlyFormGroup<VerificationTokenRequest>({});\r\n\r\n @Input() email: string;\r\n @Output() onResendVerificationToken: EventEmitter<any> = new EventEmitter();\r\n @Output() onCodeSubmit: EventEmitter<string> = new EventEmitter();\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n ) { \r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initVerificationTokenRequestFormGroup(new VerificationTokenRequest({email: this.email}));\r\n }\r\n\r\n initVerificationTokenRequestFormGroup(model: VerificationTokenRequest){\r\n this.initFormGroup(this.verificationTokenRequestFormGroup, this.formGroup, model, model.typeName, []);\r\n }\r\n\r\n codeSubmit(){\r\n let isValid: boolean = this.baseFormService.checkFormGroupValidity(this.verificationTokenRequestFormGroup);\r\n \r\n if(isValid){\r\n this.onCodeSubmit.next(this.verificationTokenRequestFormGroup.controls.verificationCode.getRawValue());\r\n }\r\n }\r\n\r\n resendVerificationToken(){\r\n this.onResendVerificationToken.next(null);\r\n }\r\n\r\n}\r\n\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"header\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('verificationCode', verificationTokenRequestFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { VerificationWrapperComponent } from './verification-wrapper.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\n\r\n@Component({\r\n selector: 'registration-verification',\r\n templateUrl: './registration-verification.component.html',\r\n standalone: true,\r\n imports: [\r\n VerificationWrapperComponent\r\n ]\r\n})\r\nexport class RegistrationVerificationComponent implements OnInit {\r\n @Input() email: string;\r\n\r\n constructor(\r\n private authService: AuthBaseService, \r\n private messageService: SpiderlyMessageService, \r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n\r\n resendVerificationToken(){\r\n this.authService.sendRegistrationVerificationEmail({email: this.email}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullySentVerificationCode'));\r\n });\r\n }\r\n\r\n onCodeSubmit(event: string){\r\n this.authService.register({email: this.email, verificationCode: event}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('YouHaveSuccessfullyVerifiedYourAccount'));\r\n this.authService.navigateToDashboard();\r\n });\r\n }\r\n\r\n}\r\n\r\n","<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\r\n","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { Registration } from '../../../entities/security-entities';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\n\r\n@Component({\r\n selector: 'app-registration',\r\n templateUrl: './registration.component.html',\r\n})\r\nexport class RegistrationComponent extends BaseFormCopy implements OnInit {\r\n registrationFormGroup = new SpiderlyFormGroup<Registration>({});\r\n\r\n companyName: string;\r\n showEmailSentDialog: boolean = false;\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService, \r\n ) {\r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initRegistrationFormGroup(new Registration({}));\r\n }\r\n \r\n initRegistrationFormGroup(model: Registration){\r\n this.initFormGroup(this.registrationFormGroup, this.formGroup, model, model.typeName, []);\r\n }\r\n\r\n companyNameChange(companyName: string){\r\n this.companyName = companyName;\r\n }\r\n\r\n sendRegistrationVerificationEmail() {\r\n let isFormGroupValid: boolean = this.baseFormService.checkFormGroupValidity(this.registrationFormGroup);\r\n\r\n if (isFormGroupValid == false) \r\n return;\r\n\r\n // const returnUrl = this.route.snapshot.queryParams['returnUrl'] || '';\r\n this.authService.sendRegistrationVerificationEmail(this.registrationFormGroup.getRawValue()).subscribe(() => {\r\n this.showEmailSentDialog = true;\r\n });\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (registrationFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\r\n <spiderly-textbox [control]=\"control('email', registrationFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div class=\"mb-4 gap-5\">\r\n <div class=\"text-center\" style=\"font-size: smaller;\">\r\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\r\n </div>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('AgreeAndJoin')\" (onClick)=\"sendRegistrationVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button [label]=\"t('AlreadyHasAccount', {companyName: companyName})\" routerLink=\"/login\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <registration-verification [email]=\"registrationFormGroup.controls.email.getRawValue()\"></registration-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { VerificationWrapperComponent } from './verification-wrapper.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\n\r\n@Component({\r\n selector: 'login-verification',\r\n templateUrl: './login-verification.component.html',\r\n standalone: true,\r\n imports: [\r\n VerificationWrapperComponent\r\n ]\r\n})\r\nexport class LoginVerificationComponent implements OnInit {\r\n @Input() email: string;\r\n @Input() userId: number;\r\n\r\n constructor(\r\n private authService: AuthBaseService, \r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n \r\n resendVerificationToken(){\r\n this.authService.sendLoginVerificationEmail({email: this.email}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullySentVerificationCode'));\r\n });\r\n }\r\n\r\n onCodeSubmit(event: string){\r\n this.authService.login({email: this.email, verificationCode: event}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('YouHaveSuccessfullyVerifiedYourAccount'));\r\n this.authService.navigateToDashboard();\r\n });\r\n }\r\n}\r\n\r\n","<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\r\n\r\n","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { Login } from '../../../entities/security-entities';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n})\r\nexport class LoginComponent extends BaseFormCopy implements OnInit {\r\n loginFormGroup = new SpiderlyFormGroup<Login>({});\r\n\r\n companyName: string;\r\n showEmailSentDialog: boolean = false;\r\n usersCanRegister: boolean = this.config.usersCanRegister;\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n private authService: AuthBaseService, \r\n private config: ConfigBaseService\r\n ) { \r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initLoginFormGroup(new Login({}));\r\n }\r\n \r\n initLoginFormGroup(model: Login){\r\n this.initFormGroup(this.loginFormGroup, this.formGroup, model, model.typeName, []);\r\n }\r\n\r\n companyNameChange(companyName: string){\r\n this.companyName = companyName;\r\n }\r\n\r\n sendLoginVerificationEmail() {\r\n let isFormGroupValid: boolean = this.baseFormService.checkFormGroupValidity(this.loginFormGroup);\r\n \r\n if (isFormGroupValid == false) \r\n return;\r\n\r\n this.authService.sendLoginVerificationEmail(this.loginFormGroup.getRawValue()).subscribe(()=>{\r\n this.showEmailSentDialog = true;\r\n });\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (loginFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0; margin-bottom: 32px;\">\r\n <spiderly-textbox [control]=\"control('email', loginFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button *ngIf=\"usersCanRegister\" [label]=\"t('NewToJoinNow', {companyName: companyName})\" routerLink=\"/registration\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { RegistrationComponent } from './registration/registration.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { AuthComponent } from './partials/auth.component';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { LoginVerificationComponent } from './partials/login-verification.component';\r\nimport { RegistrationVerificationComponent } from './partials/registration-verification.component';\r\n\r\nconst routes: Routes = [\r\n { \r\n path: 'registration', \r\n component: RegistrationComponent\r\n },\r\n { \r\n path: 'login', \r\n component: LoginComponent\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(routes),\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AuthComponent,\r\n PrimengModule,\r\n SpiderlyControlsModule,\r\n LoginVerificationComponent,\r\n RegistrationVerificationComponent,\r\n TranslocoDirective,\r\n ],\r\n declarations: [\r\n RegistrationComponent,\r\n LoginComponent,\r\n ]\r\n})\r\nexport class AuthModule { }\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n@Component({\r\n selector: 'card-skeleton',\r\n templateUrl: './card-skeleton.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [SkeletonModule]\r\n})\r\nexport class CardSkeletonComponent {\r\n @Input() height: number = 400;\r\n titleHeight: number = 23;\r\n dataHeight: number;\r\n padding: number = 21;\r\n titleMarginBottom: number = 14;\r\n titleMarginTop: number = 4;\r\n\r\n ngOnInit(){\r\n this.dataHeight = this.height - (this.titleHeight + this.padding * 2 + this.titleMarginBottom + this.titleMarginTop)\r\n }\r\n}","<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\r\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\r\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\r\n </div>\r\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\r\n <p-skeleton width=\"100%\" height=\"100%\"/>\r\n </div>\r\n</div>","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class IsAuthorizedForSaveEvent extends BaseEntity\r\n{\r\n isAuthorizedForSave?: boolean;\r\n currentUserPermissionCodes?: string[];\r\n\r\n constructor(\r\n {\r\n isAuthorizedForSave,\r\n currentUserPermissionCodes,\r\n }:{\r\n isAuthorizedForSave?: boolean;\r\n currentUserPermissionCodes?: string[];\r\n } = {}\r\n ) {\r\n super('IsAuthorizedForSaveEvent'); \r\n\r\n this.isAuthorizedForSave = isAuthorizedForSave;\r\n this.currentUserPermissionCodes = currentUserPermissionCodes;\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { combineLatest, forkJoin, map, Observable, of, Subscription } from 'rxjs';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { CardSkeletonComponent } from '../card-skeleton/card-skeleton.component';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { LastMenuIconIndexClicked } from '../../entities/last-menu-icon-index-clicked';\r\nimport { Role, RoleSaveBody } from '../../entities/security-entities';\r\nimport { SpiderlyButton } from '../../entities/spiderly-button';\r\nimport { getControl, getPrimengAutocompleteNamebookOptions, getPrimengDropdownNamebookOptions, nameof } from '../../services/helper-functions';\r\nimport { BaseFormService } from '../../services/base-form.service';\r\nimport { ApiSecurityService } from '../../services/api.service.security';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { IsAuthorizedForSaveEvent } from '../../entities/is-authorized-for-save-event';\r\nimport { AuthBaseService } from '../../services/auth-base.service';\r\nimport { SpiderlyTextboxComponent } from '../../controls/spiderly-textbox/spiderly-textbox.component';\r\nimport { SpiderlyTextareaComponent } from '../../controls/spiderly-textarea/spiderly-textarea.component';\r\nimport { SpiderlyMultiAutocompleteComponent } from '../../controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nimport { SpiderlyMultiSelectComponent } from '../../controls/spiderly-multiselect/spiderly-multiselect.component';\r\nimport { SpiderlyPanelsModule } from '../spiderly-panels/spiderly-panels.module';\r\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { SpiderlyReturnButtonComponent } from '../spiderly-buttons/return-button/return-button.component';\r\n\r\n@Component({\r\n selector: 'role-base-details',\r\n templateUrl: 'role-base-details.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule, \r\n FormsModule,\r\n ReactiveFormsModule,\r\n PrimengModule,\r\n // SpiderlyControlsModule,\r\n TranslocoDirective,\r\n CardSkeletonComponent,\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyPanelsModule,\r\n SpiderlyButtonComponent,\r\n SpiderlyReturnButtonComponent\r\n ]\r\n})\r\nexport class RoleBaseDetailsComponent {\r\n @Output() onSave = new EventEmitter<void>();\r\n @Output() onRoleFormGroupInitFinish = new EventEmitter<void>();\r\n @Input() getCrudMenuForOrderedData: (formArray: SpiderlyFormArray, modelConstructor: BaseEntity, lastMenuIconIndexClicked: LastMenuIconIndexClicked, adjustFormArrayManually: boolean) => MenuItem[];\r\n @Input() formGroup: SpiderlyFormGroup;\r\n @Input() roleFormGroup: SpiderlyFormGroup<Role>;\r\n @Input() additionalButtons: SpiderlyButton[] = [];\r\n\r\n authorizationForSaveSubscription: Subscription;\r\n @Input() authorizedForSaveObservable: () => Observable<boolean> = () => of(false);\r\n isAuthorizedForSave: boolean = false;\r\n @Output() onIsAuthorizedForSaveChange = new EventEmitter<IsAuthorizedForSaveEvent>(); \r\n \r\n modelId: number;\r\n loading: boolean = true;\r\n roleSaveBodyName: string = nameof<RoleSaveBody>('roleDTO');\r\n\r\n usersForRoleOptions: PrimengOption[];\r\n permissionsForRoleOptions: PrimengOption[];\r\n\r\n selectedUsersForRole = new SpiderlyFormControl<PrimengOption[]>(null, {updateOn: 'change'});\r\n selectedPermissionsForRole = new SpiderlyFormControl<number[]>(null, {updateOn: 'change'});\r\n\r\n constructor(\r\n private apiService: ApiSecurityService,\r\n private route: ActivatedRoute,\r\n private baseFormService: BaseFormService,\r\n private authService: AuthBaseService\r\n ) {}\r\n\r\n ngOnInit(){\r\n this.formGroup.initSaveBody = () => { \r\n let saveBody = new RoleSaveBody();\r\n saveBody.roleDTO = this.roleFormGroup.getRawValue();\r\n\r\n saveBody.selectedPermissionsIds = this.selectedPermissionsForRole.getRawValue();\r\n saveBody.selectedUsersIds = this.selectedUsersForRole.getRawValue()?.map(n => n.value);\r\n\r\n return saveBody;\r\n }\r\n\r\n this.formGroup.saveObservableMethod = this.apiService.saveRole;\r\n this.formGroup.mainDTOName = this.roleSaveBodyName;\r\n\r\n this.route.params.subscribe(async (params) => {\r\n this.modelId = params['id'];\r\n\r\n getPrimengDropdownNamebookOptions(this.apiService.getPermissionsDropdownListForRole).subscribe(po => {\r\n this.permissionsForRoleOptions = po;\r\n });\r\n\r\n if(this.modelId > 0){\r\n forkJoin({\r\n mainUIFormDTO: this.apiService.getRoleMainUIFormDTO(this.modelId)\r\n })\r\n .subscribe(({ mainUIFormDTO }) => {\r\n this.initRoleFormGroup(new Role(mainUIFormDTO.roleDTO));\r\n\r\n this.selectedPermissionsForRole.setValue(\r\n mainUIFormDTO.permissionsNamebookDTOList.map(n => { return n.id })\r\n );\r\n this.selectedUsersForRole.setValue(\r\n mainUIFormDTO.usersNamebookDTOList.map(n => ({ label: n.displayName, value: n.id }))\r\n );\r\n\r\n this.authorizationForSaveSubscription = this.handleAuthorizationForSave().subscribe();\r\n this.loading = false;\r\n });\r\n }\r\n else{\r\n this.initRoleFormGroup(new Role({id: 0}));\r\n\r\n this.authorizationForSaveSubscription = this.handleAuthorizationForSave().subscribe();\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n initRoleFormGroup(role: Role) {\r\n this.baseFormService.addFormGroup<Role>(\r\n this.roleFormGroup, \r\n this.formGroup, \r\n role, \r\n this.roleSaveBodyName,\r\n []\r\n );\r\n this.roleFormGroup.mainDTOName = this.roleSaveBodyName;\r\n this.onRoleFormGroupInitFinish.next();\r\n }\r\n \r\n handleAuthorizationForSave = () => {\r\n return combineLatest([this.authService.currentUserPermissionCodes$, this.authorizedForSaveObservable()]).pipe(\r\n map(([currentUserPermissionCodes, isAuthorizedForSave]) => {\r\n if (currentUserPermissionCodes != null && isAuthorizedForSave != null) {\r\n this.isAuthorizedForSave =\r\n (currentUserPermissionCodes.includes('InsertRole') && this.modelId <= 0) || \r\n (currentUserPermissionCodes.includes('UpdateRole') && this.modelId > 0) ||\r\n isAuthorizedForSave;\r\n\r\n if (this.isAuthorizedForSave) { \r\n this.roleFormGroup.controls.name.enable();\r\n this.roleFormGroup.controls.description.enable();\r\n this.selectedUsersForRole.enable();\r\n this.selectedPermissionsForRole.enable();\r\n }\r\n else{\r\n this.roleFormGroup.controls.name.disable();\r\n this.roleFormGroup.controls.description.disable();\r\n this.selectedUsersForRole.disable();\r\n this.selectedPermissionsForRole.disable();\r\n }\r\n\r\n this.onIsAuthorizedForSaveChange.next(new IsAuthorizedForSaveEvent({\r\n isAuthorizedForSave: this.isAuthorizedForSave, \r\n currentUserPermissionCodes: currentUserPermissionCodes\r\n })); \r\n }\r\n })\r\n );\r\n }\r\n\r\n searchUsersForRole(event: AutoCompleteCompleteEvent) {\r\n getPrimengAutocompleteNamebookOptions(this.apiService.getUsersAutocompleteListForRole, 50, event?.query ?? '').subscribe(po => {\r\n this.usersForRoleOptions = po;\r\n });\r\n }\r\n\r\n control(formControlName: string, formGroup: SpiderlyFormGroup){\r\n return getControl(formControlName, formGroup);\r\n }\r\n\r\n getFormArrayGroups<T>(formArray: SpiderlyFormArray): SpiderlyFormGroup<T>[]{\r\n return this.baseFormService.getFormArrayGroups<T>(formArray);\r\n }\r\n\r\n save(){\r\n this.onSave.next();\r\n }\r\n\r\n ngOnDestroy(){\r\n if (this.authorizationForSaveSubscription) {\r\n this.authorizationForSaveSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('name', roleFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"control('description', roleFormGroup)\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"selectedUsersForRole\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"selectedPermissionsForRole\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>","import { Component } from '@angular/core';\r\nimport { ConfigBaseService } from '../../services/config-base.service'\r\n\r\n@Component({\r\n selector: 'footer',\r\n templateUrl: './footer.component.html',\r\n standalone: true\r\n})\r\nexport class FooterComponent {\r\n companyName: string = this.config.companyName;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\r\n}\r\n","<div class=\"layout-footer\">\r\n <span class=\"font-medium ml-2\">{{companyName}}</span>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'index-card',\r\n templateUrl: './index-card.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n SpiderlyPanelsModule\r\n]\r\n})\r\nexport class IndexCardComponent {\r\n @Input() last: boolean;\r\n @Input() index: number;\r\n @Input() header: string = '';\r\n @Input() description: string;\r\n @Input() showRemoveIcon: boolean;\r\n @Input() showCrudMenu: boolean = true;\r\n\r\n @Input() crudMenu: MenuItem[];\r\n\r\n @Output() onMenuIconClick = new EventEmitter<number>();\r\n @Output() onRemoveIconClick = new EventEmitter<null>();\r\n \r\n constructor(\r\n protected formBuilder: FormBuilder,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n // console.log(this.last);\r\n }\r\n\r\n menuIconClick(index: number){\r\n this.onMenuIconClick.next(index);\r\n }\r\n\r\n removeIconClick(){\r\n this.onRemoveIconClick.next(null);\r\n }\r\n\r\n}","<div [ngClass]=\"{\r\n\t'last-child-zero-margin': last,\r\n 'card-margin-bottom': true,\r\n\t}\">\r\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\r\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\r\n\t\t\r\n\t\t<panel-body>\r\n\t\t\t<ng-content>\r\n\t\t\t\t<!-- Custom things below description -->\r\n\t\t\t</ng-content>\r\n\t\t</panel-body>\r\n\t\t\r\n\t</spiderly-panel>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'info-card',\r\n templateUrl: './info-card.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n SpiderlyPanelsModule\r\n]\r\n})\r\nexport class InfoCardComponent {\r\n @Input() public header: string = '';\r\n @Input() public description: string;\r\n \r\n constructor(\r\n protected formBuilder: FormBuilder,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n }\r\n\r\n}","<div class=\"card responsive-card-padding\" style=\"background-color: var(--primary-lighter-color); position: relative; overflow: hidden;\">\r\n <!-- TODO FT: Translate -->\r\n <div style=\"display: flex; align-items: center; gap: 21px; position: relative; z-index: 2;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 26px; color: var(--primary-color);\"></i>\r\n <div>\r\n <div class=\"header\" style=\"color:var(--primary-color); font-weight: 600; text-align: left;\">\r\n {{header}}\r\n </div>\r\n <div style=\"color:var(--primary-color); text-align: left; margin-top: 8px;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-overflow-icon\" style=\"position: absolute; overflow: hidden; right: 8px; top: -25px; z-index: 1;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 270px;\"></i>\r\n </div>\r\n </div>","import { Component } from '@angular/core';\r\nimport { ConfigBaseService } from '../../services/config-base.service';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'not-found',\r\n templateUrl: './not-found.component.html',\r\n standalone: true,\r\n imports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class NotFoundComponent { \r\n companyName = this.config.companyName;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\r\n}","<div class=\"surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden\">\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n <img src=\"assets/primeng/images/logo-dark.svg\" alt=\"{{companyName}} Logo\" class=\"mb-5 w-6rem flex-shrink-0\">\r\n <div style=\"border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(33, 150, 243, 0.4) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center\" style=\"border-radius:53px\">\r\n <span class=\"text-blue-500 font-bold text-3xl\">404</span>\r\n <h1 class=\"text-900 font-bold text-3xl lg:text-5xl mb-2\">Not Found</h1>\r\n <div class=\"text-600 mb-5\">Requested resource is not available.</div>\r\n <a [routerLink]=\"['/']\" class=\"w-full flex align-items-center py-5 border-300 border-bottom-1\">\r\n <span class=\"flex justify-content-center align-items-center bg-cyan-400 border-round\" style=\"height:3.5rem; width:3.5rem;\">\r\n <i class=\"text-50 pi pi-fw pi-table text-2xl\"></i>\r\n </span>\r\n <span class=\"ml-4 flex flex-column\">\r\n <span class=\"text-900 lg:text-xl font-medium mb-0 block\">Frequently Asked Questions</span>\r\n <span class=\"text-600 lg:text-xl\">Need help find answers here.</span>\r\n </span>\r\n </a>\r\n <a [routerLink]=\"['/']\" class=\"w-full flex align-items-center py-5 border-300 border-bottom-1\">\r\n <span class=\"flex justify-content-center align-items-center bg-orange-400 border-round\" style=\"height:3.5rem; width:3.5rem;\">\r\n <i class=\"pi pi-fw pi-question-circle text-50 text-2xl\"></i>\r\n </span>\r\n <span class=\"ml-4 flex flex-column\">\r\n <span class=\"text-900 lg:text-xl font-medium mb-0\">Solution Center</span>\r\n <span class=\"text-600 lg:text-xl\">Discover solutions.</span>\r\n </span>\r\n </a>\r\n <a [routerLink]=\"['/']\" class=\"w-full flex align-items-center mb-5 py-5 border-300 border-bottom-1\">\r\n <span class=\"flex justify-content-center align-items-center bg-indigo-400 border-round\" style=\"height:3.5rem; width:3.5rem;\">\r\n <i class=\"pi pi-fw pi-unlock text-50 text-2xl\"></i>\r\n </span>\r\n <span class=\"ml-4 flex flex-column\">\r\n <span class=\"text-900 lg:text-xl font-medium mb-0\">Permission Manager</span>\r\n <span class=\"text-600 lg:text-xl\">Manage users permissions.</span>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\n\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\r\n\r\n@Component({\r\n selector: 'spiderly-split-button',\r\n templateUrl: './spiderly-split-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {\r\n @Input() dropdownItems: MenuItem[];\r\n\r\n\r\n\r\n}","<p-splitButton\r\n(onClick)=\"handleClick($event)\" \r\n[label]=\"label\" \r\n[icon]=\"icon\" \r\n[outlined]=\"outlined\" \r\n[styleClass]=\"styleClass\" \r\n[severity]=\"severity\" \r\n[rounded]=\"rounded\"\r\n[style]=\"style\"\r\n[class]=\"class\"\r\n[disabled]=\"disabled\"\r\n[model]=\"dropdownItems\"\r\n>\r\n <ng-content></ng-content>\r\n</p-splitButton>","import { ConfirmationService } from 'primeng/api';\r\nimport { Component } from \"@angular/core\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\n\r\n@Component({\r\n selector: 'spiderly-delete-confirmation',\r\n templateUrl: './spiderly-delete-confirmation.component.html',\r\n styles: [],\r\n standalone: true,\r\n imports: [\r\n PrimengModule,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n ],\r\n providers: [\r\n ConfirmationService\r\n ]\r\n})\r\nexport class SpiderlyDeleteConfirmationComponent {\r\n\r\n constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) {}\r\n\r\n accept(){\r\n this.config.data.deleteItemFromTableObservableMethod(this.config.data.id).subscribe({\r\n next: () => {\r\n this.ref.close(true); // deleted succesfully\r\n },\r\n error: () => {\r\n this.ref.close(false); // not deleted succesfully\r\n },\r\n });\r\n }\r\n\r\n reject(){\r\n this.ref.close(false);\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <p-confirmDialog \r\n #cd \r\n ></p-confirmDialog>\r\n <div\r\n class=\"border-bottom-1 surface-border text-lg\"\r\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\r\n >\r\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\r\n <p>{{t('PleaseConfirmToProceed')}}</p>\r\n </div>\r\n \r\n <div style=\"display: flex; gap: 5px; justify-content: right; margin-top: 28px;\">\r\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancle')\" severity=\"secondary\"></spiderly-button>\r\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\r\n </div>\r\n</ng-container>\r\n","import { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { Table, TableFilterEvent, TableLazyLoadEvent } from 'primeng/table';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { SpiderlyDeleteConfirmationComponent } from '../spiderly-delete-dialog/spiderly-delete-confirmation.component';\r\nimport { CommonModule, formatDate } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { firstValueFrom, Observable } from 'rxjs';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { SpiderlyFormControl } from '../spiderly-form-control/spiderly-form-control';\r\nimport { TableResponse } from '../../entities/table-response';\r\nimport { LazyLoadSelectedIdsResult } from '../../entities/lazy-load-selected-ids-result';\r\nimport { exportListToExcel } from '../../services/helper-functions';\r\nimport { TableFilter } from '../../entities/table-filter';\r\nimport { PrimengModule } from '../../modules/primeng.module';\r\n\r\n@Component({\r\n selector: 'spiderly-data-table',\r\n templateUrl: './spiderly-data-table.component.html',\r\n styleUrl: 'spiderly-data-table.component.scss',\r\n styles: [`\r\n \t:host {\r\n\t\t ::ng-deep {\r\n\t\t .remove-button-border-focus:focus, \r\n .remove-button-border-focus:enabled:focus {\r\n box-shadow: none;\r\n -webkit-box-shadow: none;\r\n -moz-box-shadow: none;\r\n background-color: var(--gray-200);\r\n\t\t }\r\n\t\t }\r\n\t }\r\n `],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n PrimengModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n ],\r\n standalone: true,\r\n})\r\nexport class SpiderlyDataTableComponent implements OnInit {\r\n @ViewChild('dt') table: Table;\r\n @Input() tableTitle: string;\r\n @Input() tableIcon: string = 'pi pi-list';\r\n @Input() items: any[]; // FT: Pass only when hasLazyLoad === false\r\n @Input() rows: number = 10;\r\n @Input() cols: Column[];\r\n @Input() showPaginator: boolean = true; // FT: Pass only when hasLazyLoad === false\r\n @Input() showCardWrapper: boolean = true;\r\n @Input() readonly: boolean = false;\r\n totalRecords: number;\r\n @Output() onTotalRecordsChange: EventEmitter<number> = new EventEmitter();;\r\n \r\n @Input() getTableDataObservableMethod: (tableFilter: TableFilter) => Observable<TableResponse>;\r\n @Input() exportTableDataToExcelObservableMethod: (tableFilter: TableFilter) => Observable<any>;\r\n @Input() deleteItemFromTableObservableMethod: (rowId: number) => Observable<any>;\r\n\r\n lastLazyLoadEvent: TableLazyLoadEvent;\r\n loading: boolean = true;\r\n \r\n @Input() newlySelectedItems: number[] = [];\r\n fakeSelectedItems: number[] = []; // FT: Only for showing checkboxes, we will not send this to the backend\r\n currentPageSelectedItemsFromDb: number[] = []; // FT: Made so we can add only newly selected items to the newlySelectedItems\r\n @Input() unselectedItems: number[] = [];\r\n @Input() selectionMode: 'single' | 'multiple' | undefined | null;\r\n @Output() onLazyLoad: EventEmitter<TableFilter> = new EventEmitter();\r\n rowsSelectedNumber: number = 0;\r\n isAllSelected: boolean = null;\r\n fakeIsAllSelected: boolean = false; // FT: Only for showing checkboxes, we will not send this to the backend\r\n isFirstTimeLazyLoad: boolean = true;\r\n @Output() onIsAllSelectedChange: EventEmitter<AllClickEvent> = new EventEmitter();\r\n @Input() selectedLazyLoadObservableMethod: (tableFilter: TableFilter) => Observable<LazyLoadSelectedIdsResult>;\r\n @Input() additionalFilterIdLong: number;\r\n \r\n matchModeDateOptions: SelectItem[] = [];\r\n matchModeNumberOptions: SelectItem[] = [];\r\n @Input() showAddButton: boolean = true; \r\n @Input() showExportToExcelButton: boolean = true;\r\n @Input() showReloadTableButton: boolean = false;\r\n\r\n deleteRef: DynamicDialogRef;\r\n\r\n // Client side table\r\n // @Input() formArrayItems: any[]; // FT: Pass this only if you have some additional logic for showing data\r\n @Input() getFormArrayItems: (additionalIndexes?: any) => any[];\r\n @Input() hasLazyLoad: boolean = true; \r\n selectedItemIds: number[] = []; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getAlreadySelectedItemIds: (additionalIndexes?: any) => number[]; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n selectedItems: any[] = []; // FT: Pass only when hasLazyLoad === false\r\n @Input() getAlreadySelectedItems: (additionalIndexes?: any) => any[]; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getFormControl: (formControlName: string, index: number, additionalIndexes?: any) => SpiderlyFormControl;\r\n @Input() additionalIndexes: any;\r\n @Output() onRowSelect: EventEmitter<RowClickEvent> = new EventEmitter();\r\n @Output() onRowUnselect: EventEmitter<RowClickEvent> = new EventEmitter();\r\n\r\n constructor(\r\n private router: Router,\r\n private dialogService: DialogService,\r\n private route: ActivatedRoute,\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n @Inject(LOCALE_ID) private locale: string\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.matchModeDateOptions = [\r\n { label: this.translocoService.translate('OnDate'), value: 'equals' },\r\n { label: this.translocoService.translate('DatesBefore'), value: 'dateBefore' },\r\n { label: this.translocoService.translate('DatesAfter'), value: 'dateAfter' },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: 'equals' },\r\n { label: this.translocoService.translate('MoreThan'), value: 'gte' },\r\n { label: this.translocoService.translate('LessThan'), value: 'lte' },\r\n ];\r\n\r\n if (this.hasLazyLoad === false) {\r\n this.clientLoad();\r\n }\r\n }\r\n \r\n lazyLoad(event: TableLazyLoadEvent) {\r\n this.lastLazyLoadEvent = event;\r\n\r\n let tableFilter: TableFilter = event as unknown as TableFilter;\r\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getTableDataObservableMethod(tableFilter).subscribe({\r\n next: async (res) => { \r\n this.items = res.data;\r\n this.totalRecords = res.totalRecords;\r\n this.onTotalRecordsChange.next(res.totalRecords);\r\n \r\n if (this.selectedLazyLoadObservableMethod != null) {\r\n let selectedRowsMethodResult: LazyLoadSelectedIdsResult = await firstValueFrom(this.selectedLazyLoadObservableMethod(tableFilter));\r\n \r\n this.currentPageSelectedItemsFromDb = [...selectedRowsMethodResult.selectedIds];\r\n\r\n if (this.isFirstTimeLazyLoad == true) {\r\n this.rowsSelectedNumber = selectedRowsMethodResult.totalRecordsSelected;\r\n this.setFakeIsAllSelected();\r\n this.isFirstTimeLazyLoad = false;\r\n }\r\n \r\n if (this.isAllSelected == true) {\r\n let idsToInsert = [...this.items.map(x => x.id)];\r\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\r\n this.fakeSelectedItems = [...idsToInsert]; // FT: Only for showing checkboxes, we will not send this to the backend\r\n }\r\n else if (this.isAllSelected == false) {\r\n this.fakeSelectedItems = [...this.newlySelectedItems]; // FT: Only for showing checkboxes, we will not send this to the backend\r\n }\r\n else if (this.isAllSelected == null) {\r\n let idsToInsert = [...selectedRowsMethodResult.selectedIds, ...this.newlySelectedItems];\r\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\r\n this.fakeSelectedItems = [...idsToInsert];\r\n }\r\n }\r\n\r\n this.loading = false;\r\n },\r\n error: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n clientLoad(){\r\n this.loading = false;\r\n\r\n this.loadFormArrayItems();\r\n this.totalRecords = this.items.length;\r\n this.onTotalRecordsChange.next(this.items.length);\r\n\r\n if (this.getAlreadySelectedItemIds) {\r\n this.selectedItemIds = this.getAlreadySelectedItemIds(this.additionalIndexes);\r\n }\r\n if (this.getAlreadySelectedItems) {\r\n this.selectedItems = this.getAlreadySelectedItems(this.additionalIndexes);\r\n }\r\n this.rowsSelectedNumber = this.selectedItemIds.length;\r\n this.setFakeIsAllSelected();\r\n }\r\n\r\n private clientFilterCount = 0;\r\n\r\n filter(event: TableFilterEvent){\r\n if (this.hasLazyLoad && this.selectionMode === 'multiple')\r\n this.selectAll(false); // FT: We need to do it like this because: totalRecords: 1 -> selectedRecords from earlyer selection 2 -> unselect current -> all checkbox is set to true\r\n\r\n if (this.hasLazyLoad === false && this.selectionMode === 'multiple') {\r\n if (this.clientFilterCount === 0) {\r\n this.loadFormArrayItems();\r\n this.clientFilterCount++;\r\n }else{\r\n this.clientFilterCount--;\r\n }\r\n }\r\n }\r\n\r\n private loadFormArrayItems(){\r\n this.items = this.getFormArrayItems(this.additionalIndexes);\r\n this.items.forEach((item, index) => {\r\n item.index = index;\r\n });\r\n }\r\n \r\n getColHeaderWidth(filterType: string) {\r\n switch (filterType) {\r\n case 'text':\r\n return 'min-width: 12rem;';\r\n case 'date':\r\n return 'min-width: 10rem;';\r\n case 'multiselect':\r\n return 'min-width: 12rem;';\r\n case 'boolean':\r\n return 'min-width: 8rem;';\r\n case 'numeric':\r\n return 'min-width: 12rem;';\r\n default:\r\n return 'width: 0rem;'; // fitting content of the row like this\r\n }\r\n }\r\n\r\n getColMatchModeOptions(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return null;\r\n case 'date':\r\n return this.matchModeDateOptions;\r\n case 'multiselect':\r\n return null;\r\n case 'boolean':\r\n return null;\r\n case 'numeric':\r\n return this.matchModeNumberOptions;\r\n default:\r\n return null;\r\n }\r\n }\r\n \r\n getColMatchMode(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return 'contains';\r\n case 'date':\r\n return null;\r\n case 'multiselect':\r\n return 'in';\r\n case 'boolean':\r\n return 'equals';\r\n case 'numeric':\r\n return null;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n isDropOrMulti(filterType: string){\r\n if (filterType == 'dropdown' || filterType == 'multiselect') {\r\n return true;\r\n } \r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n navigateToDetails(rowId: number){\r\n this.router.navigate([rowId], {relativeTo: this.route});\r\n }\r\n\r\n deleteObject(rowId: number){\r\n this.deleteRef = this.dialogService.open(SpiderlyDeleteConfirmationComponent, \r\n { \r\n header: this.translocoService.translate('AreYouSure'),\r\n width: '400px',\r\n data:{ deleteItemFromTableObservableMethod: this.deleteItemFromTableObservableMethod, id: rowId, } \r\n });\r\n\r\n this.deleteRef.onClose.subscribe((deletedSuccessfully: boolean)=>{\r\n if(deletedSuccessfully === true){\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullyDeletedMessage'));\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n reload(){\r\n this.loading = true;\r\n this.items = null;\r\n this.lazyLoad(this.lastLazyLoadEvent);\r\n }\r\n\r\n showActions(): boolean {\r\n return this.cols.some(x => x.actions?.length > 0);\r\n }\r\n\r\n getStyleForBodyColumn(col: Column<any>) {\r\n switch(col.filterType){\r\n case 'numeric':\r\n return 'text-align: right;';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getClassForAction(action: Action): string{\r\n switch(action.field){\r\n case 'Details':\r\n return 'pi pi-pencil text-lg cursor-pointer primary-color';\r\n case 'Delete':\r\n return 'pi pi-trash text-lg text-red-500 cursor-pointer';\r\n default:\r\n return `${action.icon} ${action.style} text-lg cursor-pointer`;\r\n }\r\n }\r\n\r\n getMethodForAction(action: Action, rowData: any){\r\n switch(action.field){\r\n case 'Details':\r\n return this.navigateToDetails(rowData.id);\r\n case 'Delete':\r\n return this.deleteObject(rowData.id);\r\n default:\r\n return action.onClick(rowData.id);\r\n }\r\n }\r\n\r\n getRowData(rowData: any, col: Column): string{\r\n switch (col.filterType) {\r\n case 'text':\r\n return rowData[col.field];\r\n case 'date':\r\n if (rowData[col.field] == null)\r\n return null;\r\n \r\n if (col.showTime)\r\n return formatDate(rowData[col.field], 'dd.MM.yyyy. HH:mm', this.locale);\r\n else\r\n return formatDate(rowData[col.field], 'dd.MM.yyyy.', this.locale);\r\n case 'multiselect':\r\n return rowData[col.field];\r\n case 'boolean':\r\n return rowData[col.field] == true ? this.translocoService.translate('Yes') : this.translocoService.translate('No');\r\n case 'numeric':\r\n // TODO FT: make decimal pipe\r\n return rowData[col.field];\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n colTrackByFn(index, item){\r\n return item.field;\r\n }\r\n\r\n actionTrackByFn(index, item: Action){\r\n return `${index}${item.field}`\r\n }\r\n\r\n exportListToExcel() {\r\n let tableFilter: TableFilter = this.lastLazyLoadEvent as unknown as TableFilter;\r\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n exportListToExcel(this.exportTableDataToExcelObservableMethod, tableFilter);\r\n }\r\n\r\n clear(table: Table) {\r\n table.clear();\r\n }\r\n\r\n //#region Selection\r\n\r\n setFakeIsAllSelected(){\r\n if(this.rowsSelectedNumber == this.totalRecords)\r\n this.fakeIsAllSelected = true;\r\n else\r\n this.fakeIsAllSelected = false;\r\n }\r\n\r\n selectAll(checked: boolean){\r\n this.unselectedItems.length = 0;\r\n this.newlySelectedItems.length = 0;\r\n\r\n if (checked == true) {\r\n this.isAllSelected = true;\r\n this.fakeIsAllSelected = true;\r\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: true, additionalIndexes: this.additionalIndexes}));\r\n this.rowsSelectedNumber = this.totalRecords;\r\n this.fakeSelectedItems = [...this.items.map(x => x.id)];\r\n this.selectedItemIds = [...this.items.map(x => x.id)]\r\n }\r\n else{\r\n this.isAllSelected = false;\r\n this.fakeIsAllSelected = false;\r\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: false, additionalIndexes: this.additionalIndexes}));\r\n this.rowsSelectedNumber = 0;\r\n this.fakeSelectedItems = [];\r\n this.selectedItemIds = [];\r\n }\r\n }\r\n\r\n selectRow(id: number, index: number) {\r\n if (this.isRowSelected(id)) {\r\n this.rowUnselect(id);\r\n this.onRowUnselect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\r\n } else {\r\n this.rowSelect(id);\r\n this.onRowSelect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\r\n }\r\n }\r\n\r\n isRowSelected(id: number){\r\n if (this.hasLazyLoad){\r\n return this.fakeSelectedItems.find(x => x === id) != undefined;\r\n }\r\n else {\r\n return this.selectedItemIds.find(x => x === id) != undefined;\r\n }\r\n }\r\n\r\n rowSelect(id: number){\r\n if (this.isAllSelected == false || this.currentPageSelectedItemsFromDb.includes(id) == false) {\r\n this.newlySelectedItems.push(id);\r\n }\r\n\r\n if (this.hasLazyLoad){\r\n this.fakeSelectedItems.push(id);\r\n }\r\n else {\r\n this.selectedItemIds.push(id);\r\n }\r\n \r\n this.rowsSelectedNumber++;\r\n\r\n const index = this.unselectedItems.indexOf(id);\r\n if (index !== -1) {\r\n this.unselectedItems.splice(index, 1); // FT: Splice is mutating the array\r\n }\r\n\r\n this.setFakeIsAllSelected();\r\n }\r\n \r\n rowUnselect(id: number) {\r\n if (this.isAllSelected == true || this.currentPageSelectedItemsFromDb.includes(id) == true) {\r\n this.unselectedItems.push(id);\r\n }\r\n\r\n this.rowsSelectedNumber--;\r\n\r\n const index = this.newlySelectedItems.indexOf(id);\r\n const fakeIndex = this.fakeSelectedItems.indexOf(id);\r\n const nonLazyLoadIndex = this.selectedItemIds.indexOf(id);\r\n\r\n if (index !== -1) {\r\n this.newlySelectedItems.splice(index, 1); // FT: Splice is mutating the array\r\n }\r\n if (fakeIndex !== -1) {\r\n this.fakeSelectedItems.splice(fakeIndex, 1); // FT: Splice is mutating the array\r\n }\r\n if (nonLazyLoadIndex !== -1) {\r\n this.selectedItemIds.splice(nonLazyLoadIndex, 1); // FT: Splice is mutating the array\r\n }\r\n\r\n this.setFakeIsAllSelected();\r\n }\r\n //#endregion\r\n\r\n //#region Client side table\r\n\r\n // FT: Can do it with Id also, because we are never adding the new record in the table at the same page.\r\n getFormArrayControlByIndex(formControlName: string, index: number): SpiderlyFormControl{\r\n if (this.getFormControl) {\r\n return this.getFormControl(formControlName, index, this.additionalIndexes);\r\n }\r\n else{\r\n return null;\r\n }\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\nexport class Action {\r\n name?: string;\r\n field?: string;\r\n icon?: string;\r\n style?: string;\r\n onClick?: (id: number) => void;\r\n\r\n constructor(\r\n {\r\n name,\r\n field,\r\n icon,\r\n style,\r\n onClick,\r\n }:{\r\n name?: string;\r\n field?: string;\r\n icon?: string;\r\n style?: string;\r\n onClick?: () => void;\r\n } = {}\r\n ) {\r\n this.name = name;\r\n this.field = field;\r\n this.icon = icon;\r\n this.style = style;\r\n this.onClick = onClick;\r\n }\r\n}\r\n\r\nexport class Column<T = any> {\r\n name: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // FT: Made specificaly for multiautocomplete, maybe for something more in the future\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';\r\n filterPlaceholder?: string;\r\n showMatchModes?: boolean;\r\n showAddButton?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n actions?: Action[];\r\n editable?: boolean;\r\n showTime?: boolean;\r\n\r\n constructor(\r\n {\r\n name,\r\n field,\r\n filterField,\r\n filterType,\r\n filterPlaceholder,\r\n showMatchModes,\r\n showAddButton,\r\n dropdownOrMultiselectValues,\r\n actions,\r\n editable,\r\n showTime,\r\n }:{\r\n name?: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // FT: Made specificaly for multiautocomplete, maybe for something more in the future;\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';\r\n filterPlaceholder?: string;\r\n showMatchModes?: boolean;\r\n showAddButton?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n actions?: Action[];\r\n editable?: boolean;\r\n showTime?: boolean;\r\n } = {}\r\n ) {\r\n this.name = name;\r\n this.field = field;\r\n this.filterField = filterField;\r\n this.filterType = filterType;\r\n this.filterPlaceholder = filterPlaceholder;\r\n this.showMatchModes = showMatchModes;\r\n this.showAddButton = showAddButton;\r\n this.dropdownOrMultiselectValues = dropdownOrMultiselectValues;\r\n this.actions = actions;\r\n this.editable = editable;\r\n this.showTime = showTime;\r\n }\r\n}\r\n\r\nexport class RowClickEvent {\r\n index?: number;\r\n id?: number;\r\n additionalIndexes?: any;\r\n\r\n constructor(\r\n {\r\n index, \r\n id, \r\n additionalIndexes\r\n }:{\r\n index?: number; \r\n id?: number; \r\n additionalIndexes?: any;\r\n } = {}\r\n ) {\r\n this.index = index;\r\n this.id = id;\r\n this.additionalIndexes = additionalIndexes;\r\n }\r\n}\r\n\r\nexport class AllClickEvent {\r\n checked?: boolean;\r\n additionalIndexes?: any;\r\n\r\n constructor(\r\n {\r\n checked, \r\n additionalIndexes\r\n }:{\r\n checked?: boolean; \r\n additionalIndexes?: any;\r\n } = {}\r\n ) {\r\n this.checked = checked;\r\n this.additionalIndexes = additionalIndexes;\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" styleClass=\"p-datatable-gridlines\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}} text-2xl primary-color\"></i>\r\n <h5 style=\"margin: 0px;\">{{tableTitle}}</h5>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <!-- <p-sortIcon field=\"\"></p-sortIcon> -->\r\n <!-- <p-columnFilter type=\"date\" field=\"date\" display=\"menu\"></p-columnFilter> -->\r\n <p-columnFilter *ngIf=\"col.filterType != null\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-container *ngIf=\"isDropOrMulti(col.filterType)\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"value\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData.id, rowData.index)\" [ngModel]=\"isRowSelected(rowData.id)\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [pTooltip]=\"getRowData(rowData, col)\" [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n {{getRowData(rowData, col)}}\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { MenuChangeEvent } from '../../../entities/menuchangeevent';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SidebarMenuService {\r\n private menuSource = new Subject<MenuChangeEvent>();\r\n private resetSource = new Subject();\r\n\r\n menuSource$ = this.menuSource.asObservable();\r\n resetSource$ = this.resetSource.asObservable();\r\n\r\n onMenuStateChange(event: MenuChangeEvent) {\r\n this.menuSource.next(event);\r\n }\r\n\r\n reset() {\r\n this.resetSource.next(true);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { SidebarMenuService } from './sidebar-menu.service';\r\nimport { SpiderlyMenuItem } from './sidebar-menu.component';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { SpiderlyFormControl } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { PrimengOption } from '../../../entities/primeng-option';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ApiSecurityService } from '../../../services/api.service.security';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PrimengModule } from '../../../modules/primeng.module';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[menuitem]',\r\n templateUrl: './menuitem.component.html',\r\n animations: [\r\n trigger('children', [\r\n state('collapsed', style({\r\n height: '0'\r\n })),\r\n state('expanded', style({\r\n height: '*'\r\n })),\r\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\r\n ])\r\n ],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n ]\r\n})\r\nexport class MenuitemComponent implements OnInit, OnDestroy {\r\n\r\n @Input() item: SpiderlyMenuItem;\r\n\r\n @Input() index!: number;\r\n\r\n @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;\r\n\r\n @Input() parentKey!: string;\r\n\r\n active = false;\r\n\r\n private menuSourceSubscription: Subscription;\r\n\r\n private menuResetSubscription: Subscription;\r\n\r\n private permissionSubscription: Subscription | null = null;\r\n\r\n key: string = \"\";\r\n\r\n selectedPartner: SpiderlyFormControl = new SpiderlyFormControl<string>(null, { updateOn: 'change' });\r\n\r\n partnerOptions: PrimengOption[];\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private cd: ChangeDetectorRef, \r\n public router: Router, \r\n private menuService: SidebarMenuService, \r\n private authService: AuthBaseService,\r\n private apiService: ApiSecurityService,\r\n private config: ConfigBaseService\r\n ) {\r\n this.menuSourceSubscription = this.menuService.menuSource$.subscribe(value => {\r\n Promise.resolve(null).then(() => {\r\n if (value.routeEvent) {\r\n this.active = (value.key === this.key || value.key.startsWith(this.key + '-')) ? true : false;\r\n }\r\n else {\r\n if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {\r\n this.active = false;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {\r\n this.active = false;\r\n });\r\n\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(params => {\r\n if (this.item.routerLink) {\r\n this.updateActiveStateFromRoute();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\r\n \r\n if (this.item.routerLink) {\r\n this.updateActiveStateFromRoute();\r\n }\r\n\r\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\r\n if (this.item && typeof this.item.hasPermission === 'function') {\r\n this.item.visible = this.item.hasPermission(currentUserPermissionCodes);\r\n }\r\n });\r\n }\r\n\r\n updateActiveStateFromRoute() {\r\n let activeRoute = this.router.isActive(this.item.routerLink[0], { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' });\r\n\r\n if (activeRoute) {\r\n this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });\r\n }\r\n }\r\n\r\n itemClick(event: Event) {\r\n // avoid processing disabled items\r\n if (this.item.disabled || event === null) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n // execute command\r\n if (this.item.command) {\r\n this.item.command({ originalEvent: event, item: this.item });\r\n }\r\n\r\n // toggle active state\r\n if (this.item.items) {\r\n this.active = !this.active;\r\n }\r\n \r\n this.menuService.onMenuStateChange({ key: this.key });\r\n }\r\n\r\n get submenuAnimation() {\r\n return this.root ? 'expanded' : (this.active ? 'expanded' : 'collapsed');\r\n }\r\n\r\n @HostBinding('class.active-menuitem') \r\n get activeClass() {\r\n return this.active && !this.root;\r\n }\r\n\r\n //#region FT HACK: Partner\r\n\r\n searchPartners(event: AutoCompleteCompleteEvent) {\r\n this.layoutService.searchPartners(event).subscribe(po => {\r\n this.partnerOptions = po; \r\n })\r\n }\r\n\r\n partnersAutocompleteButtonClick = async () => {\r\n this.layoutService.partnersAutocompleteButtonClick(this.selectedPartner);\r\n }\r\n\r\n //#endregion\r\n\r\n ngOnDestroy() {\r\n if (this.menuSourceSubscription) {\r\n this.menuSourceSubscription.unsubscribe();\r\n }\r\n\r\n if (this.menuResetSubscription) {\r\n this.menuResetSubscription.unsubscribe();\r\n }\r\n\r\n if (this.permissionSubscription) {\r\n this.permissionSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\r\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\r\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\r\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\r\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\r\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\r\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n\r\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\r\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\r\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\r\n </ng-template>\r\n </ul>\r\n\r\n <!-- FT: Delete this in the future iterations, make link to partner in /partners page -->\r\n <spiderly-autocomplete\r\n *ngIf=\"item.showPartnerDialog\"\r\n [control]=\"selectedPartner\"\r\n [options]=\"partnerOptions\"\r\n (onTextInput)=\"searchPartners($event)\"\r\n label=\"\"\r\n [placeholder]=\"t('SelectThePartner')\"\r\n [showAddon]=\"true\"\r\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\r\n addonIcon=\"pi pi-check\"\r\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\r\n class=\"mobile-stay-open\"\r\n ></spiderly-autocomplete>\r\n \r\n</ng-container>","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Input, OnInit } from '@angular/core';\r\nimport { Component } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { MenuitemComponent } from './menuitem.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface SpiderlyMenuItem extends MenuItem{\r\n hasPermission?: (permissionCodes: string[]) => boolean;\r\n showPartnerDialog?: boolean; \r\n}\r\n\r\n@Component({\r\n selector: 'sidebar-menu', // FT: Don't chane selector to 'menu', because other style will apply to it\r\n templateUrl: './sidebar-menu.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MenuitemComponent\r\n ]\r\n})\r\nexport class SidebarMenuComponent implements OnInit {\r\n @Input() menu: SpiderlyMenuItem[];\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService,\r\n private translocoService: TranslocoService,\r\n private config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n}\r\n","<ul class=\"layout-menu\">\r\n <ng-container *ngFor=\"let item of menu; let i = index;\">\r\n <li menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\r\n <li *ngIf=\"item.separator\" class=\"gray-separator\" style=\"margin-top: 11px;\"></li>\r\n </ng-container>\r\n</ul>\r\n","import { Component, ElementRef, Input } from '@angular/core';\r\nimport { SidebarMenuComponent, SpiderlyMenuItem } from './sidebar-menu.component';\r\n\r\n@Component({\r\n selector: 'sidebar',\r\n templateUrl: './sidebar.component.html',\r\n standalone: true,\r\n imports: [\r\n SidebarMenuComponent\r\n ]\r\n})\r\nexport class AppSidebarComponent {\r\n @Input() menu: SpiderlyMenuItem[];\r\n\r\n constructor(public el: ElementRef) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n}\r\n\r\n"," <sidebar-menu [menu]=\"menu\"></sidebar-menu>\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { ApiSecurityService } from '../../../services/api.service.security';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { User } from '../../../entities/security-entities';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PrimengModule } from '../../../modules/primeng.module';\r\n\r\ninterface SpiderlyMenuItem {\r\n label?: string;\r\n icon?: string;\r\n showSeparator?: boolean;\r\n onClick?: () => void;\r\n showNotificationBadge?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'topbar',\r\n templateUrl: './topbar.component.html',\r\n styles: [\r\n ],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n PrimengModule\r\n ]\r\n})\r\nexport class AppTopBarComponent implements OnDestroy {\r\n private initTopBarSubscription: Subscription | null = null;\r\n\r\n currentUser: User;\r\n userProfilePath: string;\r\n unreadNotificationsCount: number;\r\n menuItems: SpiderlyMenuItem[] = [];\r\n avatarLabel: string;\r\n companyName: string;\r\n showProfileIcon: boolean = false;\r\n\r\n notificationMenuItem: SpiderlyMenuItem = \r\n {\r\n label: this.translocoService.translate('Notifications'),\r\n icon: 'pi-bell',\r\n showNotificationBadge: true,\r\n onClick: () => {\r\n this.router.navigateByUrl(`/notifications`);\r\n },\r\n };\r\n\r\n @ViewChild('menubutton') menuButton!: ElementRef;\r\n\r\n @ViewChild('topbarmenu') menu!: ElementRef;\r\n\r\n @ViewChild('topbarprofiledropdownmenubutton') topbarProfileDropdownMenuButton!: ElementRef;\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService, \r\n private apiService: ApiSecurityService,\r\n protected router: Router,\r\n private translocoService: TranslocoService,\r\n private config: ConfigBaseService\r\n ) { \r\n }\r\n\r\n async ngOnInit(){\r\n this.menuItems = [\r\n {\r\n label: this.translocoService.translate('YourProfile'),\r\n icon: 'pi-user',\r\n showSeparator: true,\r\n onClick: () => {\r\n this.routeToUserPage();\r\n }\r\n },\r\n this.notificationMenuItem,\r\n // {\r\n // label: this.translocoService.translate('Settings'),\r\n // icon: 'pi-cog',\r\n // onClick: () => {\r\n // this.router.navigateByUrl(`/administration/users`);\r\n // }\r\n // },\r\n {\r\n label: this.translocoService.translate('Logout'),\r\n icon: 'pi-sign-out',\r\n showSeparator: true,\r\n onClick: () => {\r\n this.authService.logout();\r\n }\r\n }\r\n ];\r\n\r\n this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n this.layoutService.state.profileDropdownSidebarVisible = false;\r\n });\r\n\r\n this.onAfterNgOnInit();\r\n }\r\n\r\n onAfterNgOnInit = () => {\r\n this.initTopBarSubscription = this.layoutService.initTopBarData().subscribe(initTopBarData => {\r\n this.userProfilePath = initTopBarData.userProfilePath;\r\n this.companyName = initTopBarData.companyName;\r\n this.unreadNotificationsCount = initTopBarData.unreadNotificationsCount;\r\n this.notificationMenuItem.showNotificationBadge = initTopBarData.unreadNotificationsCount > 0;\r\n this.showProfileIcon = initTopBarData.showProfileIcon;\r\n this.currentUser = initTopBarData.currentUser;\r\n this.avatarLabel = initTopBarData.currentUser?.email.charAt(0).toLocaleUpperCase();\r\n });\r\n }\r\n\r\n onDocumentClick(event: any) {\r\n if (\r\n !this.menu.nativeElement.contains(event.target) \r\n ) {\r\n if (this.layoutService.state.profileDropdownSidebarVisible == true) {\r\n this.layoutService.state.profileDropdownSidebarVisible = false;\r\n }\r\n }\r\n }\r\n\r\n routeToUserPage(){\r\n this.router.navigateByUrl(this.userProfilePath);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.initTopBarSubscription) {\r\n this.initTopBarSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}","<div class=\"layout-topbar\">\r\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\r\n <span>{{companyName?.toLocaleUpperCase()}}</span>\r\n </a>\r\n\r\n <button\r\n #menubutton\r\n class=\"p-link layout-menu-button layout-topbar-button\"\r\n (click)=\"layoutService.onMenuToggle()\"\r\n >\r\n <i class=\"pi pi-bars\"></i>\r\n </button>\r\n\r\n <div\r\n #topbarmenu\r\n class=\"profile-button\"\r\n >\r\n <div\r\n #topbarprofiledropdownmenubutton\r\n (click)=\"layoutService.showProfileDropdownSidebar()\"\r\n >\r\n <p-avatar\r\n *ngIf=\"showProfileIcon\"\r\n [label]=\"avatarLabel\"\r\n [style]=\"{ 'background-color': 'var(--primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\r\n pBadge \r\n [badgeStyleClass]=\"'p-badge-danger'\"\r\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\r\n [value]=\"unreadNotificationsCount\"\r\n />\r\n </div>\r\n <div\r\n #topbarprofiledropdownmenu\r\n (document:click)=\"onDocumentClick($event)\"\r\n >\r\n <div *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" style=\"width: 280px; position: absolute; right: 26px; top: 60px; padding: 15px;\" class=\"card\">\r\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\r\n <p-avatar\r\n [label]=\"avatarLabel\"\r\n size=\"xlarge\"\r\n [style]=\"{ 'background-color': 'var(--primary-color)', 'color': '#fff', 'cursor': 'pointer' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div>{{currentUser?.email}}</div>\r\n </div>\r\n <div style=\"margin-top: 15px;\">\r\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\r\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\r\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 5px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}} primary-color\" \r\n style=\"font-size: 16px; position: relative;\"\r\n >\r\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\r\n </i>\r\n <div> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n ","import { Component, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AppSidebarComponent } from './sidebar/sidebar.component';\r\nimport { AppTopBarComponent } from './topbar/topbar.component';\r\nimport { LayoutBaseService } from '../../services/app-layout-base.service';\r\n\r\n@Component({\r\n selector: 'layout-base',\r\n template: '',\r\n standalone: true\r\n})\r\nexport class LayoutBaseComponent implements OnDestroy {\r\n\r\n overlayMenuOpenSubscription: Subscription;\r\n\r\n menuOutsideClickListener: any;\r\n\r\n profileMenuOutsideClickListener: any;\r\n\r\n @ViewChild(AppSidebarComponent) appSidebar!: AppSidebarComponent;\r\n\r\n @ViewChild(AppTopBarComponent) appTopbar!: AppTopBarComponent;\r\n\r\n constructor(\r\n protected layoutService: LayoutBaseService, \r\n protected renderer: Renderer2, \r\n protected router: Router,\r\n ) {\r\n this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n if (!this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\r\n const isOutsideClicked = !(\r\n this.appSidebar.el.nativeElement.isSameNode(event.target) || \r\n this.appSidebar.el.nativeElement.contains(event.target) ||\r\n this.appTopbar.menuButton.nativeElement.isSameNode(event.target) || \r\n this.appTopbar.menuButton.nativeElement.contains(event.target) ||\r\n (event.target.closest('.p-autocomplete-items')) ||\r\n (event.target.closest('.p-autocomplete-clear-icon'))\r\n );\r\n \r\n if (isOutsideClicked) {\r\n this.hideMenu();\r\n }\r\n });\r\n }\r\n\r\n if (!this.profileMenuOutsideClickListener) {\r\n this.profileMenuOutsideClickListener = this.renderer.listen('document', 'click', event => {\r\n const isOutsideClicked = !(this.appTopbar.menu.nativeElement.isSameNode(event.target) || this.appTopbar.menu.nativeElement.contains(event.target));\r\n\r\n if (isOutsideClicked) {\r\n this.hideProfileMenu();\r\n }\r\n });\r\n }\r\n\r\n if (this.layoutService.state.staticMenuMobileActive) {\r\n this.blockBodyScroll();\r\n }\r\n });\r\n\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this.hideMenu();\r\n this.hideProfileMenu();\r\n });\r\n }\r\n\r\n hideMenu() {\r\n this.layoutService.state.overlayMenuActive = false;\r\n this.layoutService.state.staticMenuMobileActive = false;\r\n this.layoutService.state.menuHoverActive = false;\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n this.menuOutsideClickListener = null;\r\n }\r\n this.unblockBodyScroll();\r\n }\r\n\r\n hideProfileMenu() {\r\n this.layoutService.state.profileSidebarVisible = false;\r\n if (this.profileMenuOutsideClickListener) {\r\n this.profileMenuOutsideClickListener();\r\n this.profileMenuOutsideClickListener = null;\r\n }\r\n }\r\n\r\n blockBodyScroll(): void {\r\n if (document.body.classList) {\r\n document.body.classList.add('blocked-scroll');\r\n }\r\n else {\r\n document.body.className += ' blocked-scroll';\r\n }\r\n }\r\n\r\n unblockBodyScroll(): void {\r\n if (document.body.classList) {\r\n document.body.classList.remove('blocked-scroll');\r\n }\r\n else {\r\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' +\r\n 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n }\r\n }\r\n\r\n get containerClass() {\r\n return {\r\n 'layout-theme-light': this.layoutService.layoutConfig.colorScheme === 'light',\r\n 'layout-theme-dark': this.layoutService.layoutConfig.colorScheme === 'dark',\r\n 'layout-overlay': this.layoutService.layoutConfig.menuMode === 'overlay',\r\n 'layout-static': this.layoutService.layoutConfig.menuMode === 'static',\r\n 'layout-static-inactive': this.layoutService.state.staticMenuDesktopInactive && this.layoutService.layoutConfig.menuMode === 'static',\r\n 'layout-overlay-active': this.layoutService.state.overlayMenuActive,\r\n 'layout-mobile-active': this.layoutService.state.staticMenuMobileActive,\r\n 'p-input-filled': this.layoutService.layoutConfig.inputStyle === 'filled',\r\n 'p-ripple-disabled': !this.layoutService.layoutConfig.ripple\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.overlayMenuOpenSubscription) {\r\n this.overlayMenuOpenSubscription.unsubscribe();\r\n }\r\n\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n }\r\n\r\n this.onAfterNgDestroy();\r\n }\r\n\r\n onAfterNgDestroy = () => {}\r\n \r\n}\r\n\r\n","import { BaseEntity } from \"./base-entity\";\r\n\r\n// FT HACK: Fake class, because of api imports\r\nexport class Codebook extends BaseEntity\r\n{\r\n code?: string;\r\n displayName?: string;\r\n \r\n constructor(\r\n {\r\n code,\r\n displayName,\r\n }:{\r\n code?: string;\r\n displayName?: string;\r\n } = {}\r\n ) {\r\n super('Namebook');\r\n\r\n this.code = code;\r\n this.displayName = displayName;\r\n }\r\n}","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class LastMenuIconIndexClicked extends BaseEntity\r\n{\r\n index?: number;\r\n\r\n constructor(\r\n {\r\n index,\r\n }:{\r\n index?: number;\r\n } = {}\r\n ) {\r\n super('LastMenuIconIndexClicked'); \r\n\r\n this.index = index;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class LazyLoadSelectedIdsResult extends BaseEntity\r\n{\r\n selectedIds?: number[] = []; // FT: Only for showing checkboxes, we will not send this to the backend\r\n totalRecordsSelected?: number = 0;\r\n\r\n constructor(\r\n {\r\n selectedIds,\r\n totalRecordsSelected,\r\n }:{\r\n selectedIds?: number[];\r\n totalRecordsSelected?: number;\r\n } = {}\r\n ) {\r\n super('LazyLoadSelectedIdsResult');\r\n\r\n this.selectedIds = selectedIds;\r\n this.totalRecordsSelected = totalRecordsSelected;\r\n }\r\n}","export class MenuChangeEvent {\r\n key: string;\r\n routeEvent?: boolean;\r\n}","export class MimeTypes {\r\n private constructor(public readonly value: string) {}\r\n\r\n static Pdf = new MimeTypes(\"application/pdf\");\r\n static Zip = new MimeTypes(\"application/zip\");\r\n\r\n static Jpeg = new MimeTypes(\"image/jpeg\");\r\n static Png = new MimeTypes(\"image/png\");\r\n static Svg = new MimeTypes(\"image/svg\");\r\n static Webp = new MimeTypes(\"image/webp\");\r\n\r\n toString() {\r\n return this.value;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class Namebook extends BaseEntity\r\n{\r\n id?: number;\r\n displayName?: string;\r\n \r\n constructor(\r\n {\r\n id,\r\n displayName,\r\n }:{\r\n id?: number;\r\n displayName?: string;\r\n } = {}\r\n ) {\r\n super('Namebook');\r\n\r\n this.id = id;\r\n this.displayName = displayName;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class PrimengOption extends BaseEntity\r\n{\r\n label?: string;\r\n value?: any;\r\n \r\n constructor(\r\n {\r\n label,\r\n value,\r\n }:{\r\n label?: string;\r\n value?: any;\r\n } = {}\r\n ) {\r\n super('PrimengOption');\r\n\r\n this.label = label;\r\n this.value = value;\r\n }\r\n\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\n// FT HACK: Fake class, because of api imports\r\nexport class SimpleSaveResult extends BaseEntity\r\n{\r\n id?: string;\r\n \r\n constructor(\r\n {\r\n id,\r\n }:{\r\n id?: string;\r\n } = {}\r\n ) {\r\n super('SimpleSaveResult');\r\n\r\n this.id = id;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class SpiderlyButton extends BaseEntity\r\n{\r\n label?: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n \r\n constructor(\r\n {\r\n label,\r\n icon,\r\n disabled,\r\n onClick,\r\n }:{\r\n label?: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n } = {}\r\n ) {\r\n super('SpiderlyButton');\r\n\r\n this.label = label;\r\n this.icon = icon;\r\n this.disabled = disabled;\r\n this.onClick = onClick;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\nimport { TableFilterContext } from \"../entities/table-filter-context\";\r\nimport { TableFilterSortMeta } from \"../entities/table-filter-sort-meta\";\r\n\r\nexport class TableFilter extends BaseEntity\r\n{\r\n filters?: Map<string, TableFilterContext[]>;\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: TableFilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n \r\n constructor(\r\n {\r\n filters,\r\n first,\r\n rows,\r\n sortField,\r\n sortOrder,\r\n multiSortMeta,\r\n additionalFilterIdInt,\r\n additionalFilterIdLong,\r\n }:{\r\n filters?: Map<string, TableFilterContext[]>;\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: TableFilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n } = {}\r\n ) {\r\n super('TableFilter');\r\n\r\n this.filters = filters;\r\n this.first = first;\r\n this.rows = rows;\r\n this.sortField = sortField;\r\n this.sortOrder = sortOrder;\r\n this.multiSortMeta = multiSortMeta;\r\n this.additionalFilterIdInt = additionalFilterIdInt;\r\n this.additionalFilterIdLong = additionalFilterIdLong;\r\n }\r\n}","export class TableFilterContext\r\n{\r\n Value: any;\r\n MatchMode: string;\r\n Operator: string;\r\n}","export class TableFilterSortMeta\r\n{\r\n Field: string;\r\n Order: number;\r\n}","export class TableResponse<T = any> {\r\n data?: T[];\r\n totalRecords: number;\r\n}\r\n ","export enum LoginVerificationResultStatusCodes\r\n{\r\n \r\n}\r\n\r\nexport enum RegistrationVerificationResultStatusCodes\r\n{\r\n UserDoesNotExistAndDoesNotHaveValidToken = 0,\r\n\tUserWithoutPasswordExists = 1,\r\n\tUserWithPasswordExists = 2,\r\n\tUnexpectedError = 3,\r\n}\r\n\r\nexport enum SecurityPermissionCodes\r\n{\r\n\tReadUser = \"ReadUser\",\r\n\tUpdateUser = \"UpdateUser\",\r\n\tInsertUser = \"InsertUser\",\r\n\tDeleteUser = \"DeleteUser\",\r\n\tReadRole = \"ReadRole\",\r\n\tUpdateRole = \"UpdateRole\",\r\n\tInsertRole = \"InsertRole\",\r\n\tDeleteRole = \"DeleteRole\",\r\n\tReadPermission = \"ReadPermission\",\r\n\tUpdatePermission = \"UpdatePermission\",\r\n\tInsertPermission = \"InsertPermission\",\r\n\tDeletePermission = \"DeletePermission\",\r\n}\r\n","export enum VerificationTypeCodes\r\n{\r\n Login = 0,\r\n\tRegistration = 1,\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthBaseService, \r\n private router: Router,\r\n private config: ConfigBaseService\r\n ) {\r\n\r\n }\r\n\r\n canActivate(): Observable<boolean> {\r\n return this.checkAuth();\r\n }\r\n\r\n private checkAuth(): Observable<boolean> {\r\n return this.authService.user$.pipe(\r\n map((user) => {\r\n if (user) {\r\n return true;\r\n } else {\r\n // const returnUrl = this.router.getCurrentNavigation()?.extractedUrl.toString() || '/';\r\n // this.router.navigate(['login'], {\r\n // queryParams: { returnUrl },\r\n // });\r\n this.router.navigate([this.config.loginSlug]);\r\n return false;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NotAuthGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthBaseService, \r\n ) {\r\n\r\n }\r\n\r\n canActivate(): Observable<boolean> {\r\n return this.checkAuth();\r\n }\r\n\r\n private checkAuth(): Observable<boolean> {\r\n return this.authService.user$.pipe(\r\n map((user) => {\r\n if (user) {\r\n this.authService.navigateToDashboard(); // FT: If there is a user and he went to the login page, push him to the dashboard i try to load partner.\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslocoFallbackStrategy, TranslocoService } from '@jsverse/transloco';\r\n\r\nimport { HashMap, TranslocoMissingHandler, TranslocoMissingHandlerData } from \"@jsverse/transloco\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpiderlyTranslocoFallbackStrategy implements TranslocoFallbackStrategy {\r\n getNextLangs(failedLang: string): string[] {\r\n return ['sr-Latn-RS.generated'];\r\n }\r\n\r\n}\r\n\r\nexport class SpiderlyTranslocoMissingHandler implements TranslocoMissingHandler {\r\n constructor(private translocoService: TranslocoService) {\r\n \r\n }\r\n\r\n handle(key: string, data: TranslocoMissingHandlerData, params?: HashMap) {\r\n return this.translocoService.translate(key, params, `${this.translocoService.getActiveLang()}.generated`);\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of spiderly\r\n */\r\n\r\nexport * from './lib/modules/core.module';\r\nexport * from './lib/modules/primeng.module';\r\nexport * from './lib/modules/spiderly-transloco.module';\r\nexport * from './lib/components/auth/auth.module';\r\n\r\nexport * from './lib/controls/spiderly-autocomplete/spiderly-autocomplete.component';\r\nexport * from './lib/controls/spiderly-calendar/spiderly-calendar.component';\r\nexport * from './lib/controls/spiderly-checkbox/spiderly-checkbox.component';\r\nexport * from './lib/controls/spiderly-colorpick/spiderly-colorpick.component';\r\nexport * from './lib/controls/spiderly-dropdown/spiderly-dropdown.component';\r\nexport * from './lib/controls/spiderly-editor/spiderly-editor.component';\r\nexport * from './lib/controls/spiderly-file/spiderly-file.component';\r\nexport * from './lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nexport * from './lib/controls/spiderly-multiselect/spiderly-multiselect.component';\r\nexport * from './lib/controls/spiderly-number/spiderly-number.component';\r\nexport * from './lib/controls/spiderly-password/spiderly-password.component';\r\nexport * from './lib/controls/spiderly-textarea/spiderly-textarea.component';\r\nexport * from './lib/controls/spiderly-textbox/spiderly-textbox.component';\r\nexport * from './lib/controls/base-control';\r\nexport * from './lib/controls/base-autocomplete-control';\r\nexport * from './lib/controls/base-dropdown-control';\r\nexport * from './lib/controls/spiderly-controls.module';\r\n\r\nexport * from './lib/components/base-details/role-base-details.component'\r\nexport * from './lib/components/base-form/base-form copy';\r\nexport * from './lib/components/card-skeleton/card-skeleton.component';\r\nexport * from './lib/components/auth/partials/login-verification.component';\r\nexport * from './lib/components/auth/partials/registration-verification.component';\r\nexport * from './lib/components/auth/partials/verification-wrapper.component';\r\nexport * from './lib/components/footer/footer.component';\r\nexport * from './lib/components/spiderly-buttons/google-button/google-button.component';\r\nexport * from './lib/components/index-card/index-card.component';\r\nexport * from './lib/components/info-card/info-card.component';\r\nexport * from './lib/components/not-found/not-found.component';\r\nexport * from './lib/components/required/required.component';\r\nexport * from './lib/components/spiderly-buttons/return-button/return-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base';\r\nexport * from './lib/components/spiderly-data-table/spiderly-data-table.component';\r\nexport * from './lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component';\r\nexport * from './lib/components/spiderly-form-control/spiderly-form-control';\r\nexport * from './lib/components/spiderly-panels/panel-body/panel-body.component';\r\nexport * from './lib/components/spiderly-panels/panel-footer/panel-footer.component';\r\nexport * from './lib/components/spiderly-panels/panel-header/panel-header.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-card/spiderly-card.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-panels.module';\r\nexport * from './lib/components/layout/sidebar/sidebar-menu.component';\r\nexport * from './lib/components/layout/sidebar/menuitem.component';\r\nexport * from './lib/components/layout/sidebar/sidebar.component';\r\nexport * from './lib/components/layout/topbar/topbar.component';\r\nexport * from './lib/components/layout/layout-base.component';\r\n\r\nexport * from './lib/entities/base-entity';\r\nexport * from './lib/entities/codebook';\r\nexport * from './lib/entities/last-menu-icon-index-clicked';\r\nexport * from './lib/entities/lazy-load-selected-ids-result';\r\nexport * from './lib/entities/menuchangeevent';\r\nexport * from './lib/entities/mime-type';\r\nexport * from './lib/entities/namebook';\r\nexport * from './lib/entities/primeng-option';\r\nexport * from './lib/entities/security-entities';\r\nexport * from './lib/entities/simple-save-result';\r\nexport * from './lib/entities/spiderly-button';\r\nexport * from './lib/entities/table-filter';\r\nexport * from './lib/entities/table-filter-context';\r\nexport * from './lib/entities/table-filter-sort-meta';\r\nexport * from './lib/entities/table-response';\r\nexport * from './lib/entities/init-company-auth-dialog-details';\r\nexport * from './lib/entities/init-top-bar-data';\r\nexport * from './lib/entities/is-authorized-for-save-event';\r\n\r\nexport * from './lib/enums/security-enums';\r\nexport * from './lib/enums/verification-type-codes';\r\n\r\nexport * from './lib/guards/auth.guard';\r\nexport * from './lib/guards/not-auth.guard';\r\n\r\nexport * from './lib/handlers/spiderly-error-handler';\r\nexport * from './lib/handlers/spiderly-transloco-fallback-strategy';\r\n\r\nexport * from './lib/interceptors/http-loading.interceptor';\r\nexport * from './lib/interceptors/json-parser.interceptor';\r\nexport * from './lib/interceptors/jwt.interceptor';\r\nexport * from './lib/interceptors/unauthorized.interceptor';\r\n\r\nexport * from './lib/services/api.service.security';\r\nexport * from './lib/services/app-initializer';\r\nexport * from './lib/services/auth-base.service';\r\nexport * from './lib/services/base-form.service';\r\nexport * from './lib/services/config-base.service';\r\nexport * from './lib/services/helper-functions';\r\nexport * from './lib/services/spiderly-message.service';\r\nexport * from './lib/services/spiderly-transloco-loader';\r\nexport * from './lib/services/translate-labels-abstract.service';\r\nexport * from './lib/services/validator-abstract.service';\r\nexport * from './lib/services/app-layout-base.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigBaseService","i2","i1.SpiderlyMessageService","i3.ConfigBaseService","i1","i2.ConfigBaseService","finalize","tap","i3","i4.ApiSecurityService","i5.ConfigBaseService","map","i1.TranslateLabelsAbstractService","i2.ValidatorAbstractService","i3.SpiderlyMessageService","i4","i2.SpiderlyMessageService","i5.BaseFormService","delay","i1.ApiSecurityService","i3.AuthBaseService","i2.AuthBaseService","i5","i6","i7","i1.AuthBaseService","i6.LayoutBaseService","i7.AuthBaseService","i8","i9.AuthComponent","i10.SpiderlyTextboxComponent","i11.SpiderlyButtonComponent","i12.RegistrationVerificationComponent","i6.AuthBaseService","i7.ConfigBaseService","i9","i10.AuthComponent","i11.SpiderlyTextboxComponent","i12.SpiderlyButtonComponent","i13.LoginVerificationComponent","i3.BaseFormService","i4.AuthBaseService","i7.PanelHeaderComponent","i8.PanelBodyComponent","i9.PanelFooterComponent","i10.SpiderlyPanelComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","i10","i11","i12","i13.SpiderlyButtonComponent","i14.SpiderlyNumberComponent","i1.LayoutBaseService","i3.SidebarMenuService","i5.ApiSecurityService","i6.ConfigBaseService","i9.SpiderlyAutocompleteComponent","i4.ConfigBaseService","filter","i3.ApiSecurityService"],"mappings":"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"}