spiderly 19.2.0 → 19.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/spiderly.mjs +2195 -2108
- package/fesm2022/spiderly.mjs.map +1 -1
- package/lib/components/auth/login/login.component.d.ts +6 -7
- package/lib/components/auth/partials/verification-wrapper.component.d.ts +4 -4
- package/lib/components/base-details/role-base-details.component.d.ts +13 -23
- package/lib/components/base-form/base-form copy.d.ts +11 -28
- package/lib/components/info-card/info-card.component.d.ts +4 -2
- package/lib/components/layout/profile-avatar/profile-avatar.component.d.ts +18 -11
- package/lib/components/layout/sidebar/menuitem.component.d.ts +3 -3
- package/lib/components/spiderly-buttons/google-button/google-button.component.d.ts +2 -5
- package/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.d.ts +2 -1
- package/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.d.ts +2 -1
- package/lib/components/spiderly-data-table/spiderly-data-table.component.d.ts +12 -8
- package/lib/components/spiderly-form-control/spiderly-form-control.d.ts +24 -7
- package/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.d.ts +1 -1
- package/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.d.ts +2 -1
- package/lib/components/spiderly-panels/spiderly-panels.module.d.ts +4 -5
- package/lib/controls/base-control.d.ts +4 -3
- package/lib/controls/base-dropdown-control.d.ts +2 -2
- package/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.d.ts +4 -4
- package/lib/controls/spiderly-controls.module.d.ts +10 -11
- package/lib/controls/spiderly-file/spiderly-file.component.d.ts +7 -4
- package/lib/entities/base-entity.d.ts +14 -2
- package/lib/entities/codebook.d.ts +1 -0
- package/lib/entities/filter-sort-meta.d.ts +13 -0
- package/lib/entities/filter.d.ts +29 -1
- package/lib/entities/init-company-auth-dialog-details.d.ts +1 -0
- package/lib/entities/init-top-bar-data.d.ts +1 -0
- package/lib/entities/is-authorized-for-save-event.d.ts +2 -3
- package/lib/entities/last-menu-icon-index-clicked.d.ts +1 -0
- package/lib/entities/lazy-load-selected-ids-result.d.ts +1 -0
- package/lib/entities/namebook.d.ts +11 -2
- package/lib/entities/primeng-option.d.ts +1 -0
- package/lib/entities/security-entities.d.ts +197 -56
- package/lib/entities/simple-save-result.d.ts +1 -0
- package/lib/entities/spiderly-button.d.ts +5 -8
- package/lib/enums/security-enums.d.ts +0 -8
- package/lib/errors/spiderly-error.d.ts +3 -0
- package/lib/services/api.service.security.d.ts +1 -3
- package/lib/services/app-initializer.d.ts +1 -1
- package/lib/services/app-layout-base.service.d.ts +3 -3
- package/lib/services/auth-base.service.d.ts +4 -5
- package/lib/services/base-form.service.d.ts +10 -11
- package/lib/services/config-base.service.d.ts +0 -1
- package/lib/services/helper-functions.d.ts +17 -7
- package/lib/services/spiderly-message.service.d.ts +0 -1
- package/lib/services/spiderly-transloco-loader.d.ts +3 -1
- package/package.json +10 -10
- package/public-api.d.ts +1 -5
- package/styles/components/info-card/info-card.component.scss +61 -0
- package/styles/components/layout/profile-avatar/profile-avatar.component.scss +9 -0
- package/styles/components/spiderly-panels/panel-body/panel-body.component.scss +9 -0
- package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +7 -0
- package/styles/components/spiderly-panels/spiderly-panel/spiderly-panel.component.scss +87 -10
- package/styles/controls/base-controls.scss +17 -0
- package/styles/styles/layout/_variables.scss +1 -1
- package/styles/styles/shared.scss +39 -105
- package/lib/components/auth/partials/registration-verification.component.d.ts +0 -17
- package/lib/components/auth/registration/registration.component.d.ts +0 -34
- package/lib/handlers/spiderly-transloco-fallback-strategy.d.ts +0 -13
- package/lib/modules/core.module.d.ts +0 -21
- package/lib/modules/spiderly-transloco.module.d.ts +0 -51
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spiderly.mjs","sources":["../../../projects/spiderly/src/lib/services/app-initializer.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/config-base.service.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/services/auth-base.service.ts","../../../projects/spiderly/src/lib/services/spiderly-message.service.ts","../../../projects/spiderly/src/lib/handlers/spiderly-error-handler.ts","../../../projects/spiderly/src/lib/modules/core.module.ts","../../../projects/spiderly/src/lib/services/spiderly-transloco-loader.ts","../../../projects/spiderly/src/lib/modules/spiderly-transloco.module.ts","../../../projects/spiderly/src/lib/controls/base-control.ts","../../../projects/spiderly/src/lib/controls/base-dropdown-control.ts","../../../projects/spiderly/src/lib/controls/base-autocomplete-control.ts","../../../projects/spiderly/src/lib/components/required/required.component.ts","../../../projects/spiderly/src/lib/components/required/required.component.html","../../../projects/spiderly/src/lib/components/spiderly-form-control/spiderly-form-control.ts","../../../projects/spiderly/src/lib/services/validator-abstract.service.ts","../../../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/controls/spiderly-calendar/spiderly-calendar.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.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-colorpicker/spiderly-colorpicker.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-colorpicker/spiderly-colorpicker.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/services/helper-functions.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/controls/spiderly-file/spiderly-file.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.html","../../../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-multiselect/spiderly-multiselect.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.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-password/spiderly-password.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.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-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/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/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/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.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/base-form/base-form copy.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/login-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.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/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/components/auth/login/login.component.ts","../../../projects/spiderly/src/lib/components/auth/login/login.component.html","../../../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/auth/registration/registration.component.ts","../../../projects/spiderly/src/lib/components/auth/registration/registration.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/entities/filter.ts","../../../projects/spiderly/src/lib/enums/match-mode-enum-codes.ts","../../../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/spiderly-data-view/spiderly-data-view.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-view/spiderly-data-view.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/profile-avatar/profile-avatar.component.ts","../../../projects/spiderly/src/lib/components/layout/profile-avatar/profile-avatar.component.html","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.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.component.ts","../../../projects/spiderly/src/lib/components/layout/layout.component.html","../../../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/filter-rule.ts","../../../projects/spiderly/src/lib/entities/filter-sort-meta.ts","../../../projects/spiderly/src/lib/entities/paginated-result.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/lib/interceptors/http-loading.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/json-parser.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/jwt.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/unauthorized.interceptor.ts","../../../projects/spiderly/src/lib/directives/template-type.directive.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}","export class BaseEntity {\r\n\r\n public typeName?: string;\r\n\r\n constructor(typeName: string) {\r\n this.typeName = typeName;\r\n }\r\n}","import { BaseEntity } from \"./base-entity\";\r\nimport { Filter } from \"./filter\";\r\nimport { FilterRule } from \"./filter-rule\";\r\nimport { FilterSortMeta } from \"./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 UserBase 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('UserBase'); \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 { 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 logoPath = 'assets/images/logo/logo.svg';\r\n\r\n constructor(\r\n ) {\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 { Filter } from '../entities/filter';\r\nimport { Login, Registration, RegistrationVerificationResult, RefreshTokenRequest, AuthResult, Role, UserBase, ExternalProvider, VerificationTokenRequest, RoleSaveBody, RoleMainUIForm } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { PaginatedResult } from '../entities/paginated-result';\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 getCurrentUserBase = (): Observable<UserBase> => { \r\n return this.http.get<UserBase>(`${this.config.apiUrl}/Security/GetCurrentUserBase`, 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 getPaginatedRoleList = (dto: Filter): Observable<PaginatedResult> => { \r\n return this.http.post<PaginatedResult>(`${this.config.apiUrl}/Security/GetPaginatedRoleList`, dto, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n exportRoleListToExcel = (dto: Filter): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/ExportRoleListToExcel`, 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, 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, UserBase } 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<UserBase | 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.getCurrentUserBase().subscribe((user: UserBase) => {\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(): boolean {\r\n const expired = this.getTokenRemainingTime() < 5000;\r\n \r\n return 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: this.config.logoPath, \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 { 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 { 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 { EnvironmentProviders, makeEnvironmentProviders, APP_INITIALIZER, ErrorHandler, Provider } from \"@angular/core\";\nimport { MessageService, ConfirmationService } from \"primeng/api\";\nimport { authInitializer } from \"../services/app-initializer\";\nimport { AuthBaseService } from \"../services/auth-base.service\";\nimport { SpiderlyErrorHandler } from \"../handlers/spiderly-error-handler\";\nimport { DialogService } from \"primeng/dynamicdialog\";\n\n/**\n * Provides core services and configuration for the Spiderly library.\n * \n * @param spiderlyCoreConfig Optional configuration object for Spiderly core.\n * @returns EnvironmentProviders for Angular's dependency injection system.\n * \n * Usage:\n * Call this function in your application's providers to set up core services.\n */\nexport function provideSpiderlyCore(spiderlyCoreConfig?: SpiderlyCoreConfig): EnvironmentProviders {\n const useAuth = spiderlyCoreConfig?.useAuth ?? true;\n\n const providers: Provider[] = [\n MessageService,\n ConfirmationService,\n DialogService,\n {\n provide: ErrorHandler,\n useClass: SpiderlyErrorHandler,\n },\n ];\n\n if (useAuth === true) {\n providers.push({\n provide: APP_INITIALIZER,\n useFactory: authInitializer,\n multi: true,\n deps: [AuthBaseService],\n });\n }\n\n return makeEnvironmentProviders(providers);\n}\n\n/**\n * Configuration options for Spiderly core module.\n */\nexport interface SpiderlyCoreConfig {\n /**\n * Whether to enable authentication features.\n * Defaults to true. Set to false to disable authentication-related providers and initializers.\n */\n useAuth?: boolean;\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, TranslocoModule } from '@jsverse/transloco';\r\nimport { EnvironmentProviders, importProvidersFrom, 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/**\r\n * Provides Transloco with Spiderly-specific configuration.\r\n * @param config Optional configuration for available, preload, default, and fallback languages.\r\n * @returns EnvironmentProviders for Angular DI.\r\n */\r\nexport function provideSpiderlyTransloco(config?: SpiderlyTranslocoConfig): EnvironmentProviders {\r\n return importProvidersFrom(\r\n SpiderlyTranslocoModule.forRoot(config)\r\n );\r\n}\r\n\r\n/**\r\n * Angular module for Spiderly Transloco integration.\r\n */\r\n@NgModule({\r\n imports: [TranslocoModule],\r\n exports: [TranslocoModule],\r\n})\r\nexport class SpiderlyTranslocoModule {\r\n\r\n /**\r\n * Configures the module with custom translation settings.\r\n * @param config Optional SpiderlyTranslocoConfig object.\r\n * @returns ModuleWithProviders for Angular module system.\r\n */\r\n static forRoot(config?: SpiderlyTranslocoConfig): ModuleWithProviders<SpiderlyTranslocoModule> {\r\n return {\r\n ngModule: SpiderlyTranslocoModule,\r\n providers: [\r\n provideTranslocoPreloadLangs(config.preloadLangs ?? ['en']),\r\n provideTransloco({\r\n config: {\r\n availableLangs: config?.availableLangs ?? [\r\n 'en', 'en.generated',\r\n 'sr-Latn-RS', 'sr-Latn-RS.generated', \r\n ],\r\n defaultLang: config?.defaultLang ?? 'en',\r\n fallbackLang: config?.fallbackLang ?? 'en.generated',\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}\r\n\r\n/**\r\n * Configuration interface for Spiderly Transloco.\r\n */\r\nexport interface SpiderlyTranslocoConfig {\r\n /**\r\n * List of language codes that are available for translation in your app.\r\n * Example: ['en', 'en.generated', 'sr-Latn-RS', 'sr-Latn-RS.generated']\r\n * See the full list of language codes here:\r\n * https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry\r\n */\r\n availableLangs: string[];\r\n\r\n /**\r\n * List of language codes to preload at app startup.\r\n * Example: ['en', 'en.generated']\r\n * Only these languages will be loaded immediately; others load on demand.\r\n */\r\n preloadLangs: string[];\r\n\r\n /**\r\n * The default language code to use if no language is set.\r\n * Example: 'en'\r\n */\r\n defaultLang: string;\r\n\r\n /**\r\n * The fallback language code to use if a translation key is missing.\r\n * Example: 'en.generated'\r\n */\r\n fallbackLang: string;\r\n}","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 standalone: false\r\n})\r\n export class BaseControl {\r\n @Input() control: SpiderlyFormControl; // 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 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 // 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 {\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 standalone: false\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({\n selector: 'base-autocomplete-control',\n template: '',\n styles: [],\n standalone: false\n})\r\n export class BaseAutocompleteControl extends BaseDropdownControl {\r\n @Output() onTextInput: EventEmitter<AutoCompleteCompleteEvent> = new EventEmitter();\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 { FormArray, FormControl, FormControlOptions, 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// 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 public parentClassName: string;\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 { // 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\ntype SpiderlyControlsOfType<TValue> = {\r\n [P in keyof TValue]: SpiderlyFormControl<TValue[P]>;\r\n};\r\n\r\nexport class SpiderlyFormGroup<TValue = any> extends FormGroup {\r\n declare controls: SpiderlyControlsOfType<TValue>;\r\n\r\n constructor(controls: SpiderlyControlsOfType<TValue>) {\r\n super(controls);\r\n }\r\n\r\n override getRawValue(): TValue { // 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; // 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[]; // 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 { 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 { Component, Input, OnInit } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent, AutoCompleteModule, AutoCompleteSelectEvent, AutoCompleteUnselectEvent } 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 { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { ValidatorAbstractService } from '../../services/validator-abstract.service';\r\nimport { SpiderlyFormControl } from '../../components/spiderly-form-control/spiderly-form-control';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\n\r\n@Component({\r\n selector: 'spiderly-autocomplete',\r\n templateUrl: './spiderly-autocomplete.component.html',\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n AutoCompleteModule,\r\n InputGroupAddonModule,\r\n InputGroupModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n @Input() appendTo: any = 'body';\r\n @Input() showClear: boolean = true;\r\n @Input() emptyMessage: string;\r\n @Input() displayName: string; // Added because when we initialize the object options are null\r\n helperFormControl = new SpiderlyFormControl<PrimengOption>(null, {updateOn: 'change'});\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n private validatorService: ValidatorAbstractService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n\r\n this.helperFormControl.label = this.control.label;\r\n this.validatorService.setValidator(this.helperFormControl, this.control.parentClassName);\r\n \r\n if (this.control.value != null)\r\n this.helperFormControl.setValue({label: this.displayName, code: this.control.value});\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: AutoCompleteSelectEvent){\r\n this.control.setValue(event.value.code);\r\n }\r\n\r\n clear(){\r\n this.control.setValue(null);\r\n }\r\n\r\n autocompleteMarkAsDirty(){\r\n this.dropdownMarkAsDirty();\r\n this.helperFormControl.markAsDirty();\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\"> <!-- By passing an empty string we remove the label entirely -->\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n \r\n <!-- Don't support p-inputgroup -->\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]=\"helperFormControl\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"autocompleteMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n (onClear)=\"clear()\"\r\n [completeOnFocus]=\"true\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width':'100%'}\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n ></p-autocomplete>\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 { DatePickerModule } from 'primeng/datepicker';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-calendar',\r\n templateUrl: './spiderly-calendar.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n DatePickerModule,\r\n TooltipModule,\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-datepicker\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 (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 appendTo=\"body\"\r\n [fluid]=\"true\"\r\n />\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } 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 { CheckboxChangeEvent, CheckboxModule } from 'primeng/checkbox';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-checkbox',\r\n templateUrl: './spiderly-checkbox.component.html',\r\n styleUrl: './spiderly-checkbox.component.scss',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CheckboxModule,\r\n TooltipModule,\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 @Output() onChange = new EventEmitter<CheckboxChangeEvent>();\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 change = (event: CheckboxChangeEvent) => {\r\n this.onChange.next(event);\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 style=\"margin-top: 0.5rem; position: relative;\">\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 [value]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n (onChange)=\"change($event)\"\r\n />\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 { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'spiderly-colorpicker',\r\n templateUrl: './spiderly-colorpicker.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ColorPickerModule,\r\n InputTextModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyColorPickerComponent extends BaseControl implements OnInit {\r\n @Input() showInputTextField: boolean = true;\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 }); // Preventing infinite loop\r\n });\r\n\r\n if (this.control.value == null)\r\n this.placeholder = this.translocoService.translate('ColorPickerPlaceholder');\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 <input\r\n *ngIf=\"control && showInputTextField\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [fluid]=\"true\"\r\n />\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 { 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 { SelectModule } from 'primeng/select';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-dropdown',\r\n templateUrl: './spiderly-dropdown.component.html',\r\n styles: [],\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n SelectModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n ]\r\n})\r\nexport class SpiderlyDropdownComponent extends BaseDropdownControl implements OnInit {\r\n @Input() isBooleanPicker: boolean = false;\r\n @Output() onChange = new EventEmitter<DropdownChangeEvent>();\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.isBooleanPicker) {\r\n this.options = [\r\n {label: this.translocoService.translate('True'), code: true},\r\n {label: this.translocoService.translate('False'), code: false},\r\n {label: this.translocoService.translate('Empty'), code: null},\r\n ]\r\n }\r\n\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 <!-- Don't support p-inputgroup -->\r\n <p-select\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=\"code\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\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 { Editor, EditorModule } from 'primeng/editor';\r\nimport { Tooltip, TooltipModule } 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 imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n EditorModule,\r\n TooltipModule,\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 { 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 { Filter } from \"../entities/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(exportListToExcelObservableMethod: (filter: Filter) => Observable<any>, filter: Filter) {\r\n exportListToExcelObservableMethod(filter).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, code: 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, code: 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, code: 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, code: 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 { 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\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})\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' | 'warn' | '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 } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\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})\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, 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, FileUploadModule } 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 { 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 imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FileUploadModule,\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; // 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 // 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 <!-- 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 </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 mt-3\"></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, OnInit } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent, AutoCompleteModule } 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 { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-multiautocomplete',\r\n templateUrl: './spiderly-multiautocomplete.component.html',\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n AutoCompleteModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\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","<ng-container *transloco=\"let t\">\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\r\n <!-- Don't support p-inputgroup -->\r\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\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 [fluid]=\"true\"\r\n [style]=\"{'width': '100%'}\"\r\n >\r\n </p-autocomplete>\r\n </div>\r\n</ng-container>","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 { MultiSelectModule } from 'primeng/multiselect';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-multiselect',\r\n templateUrl: './spiderly-multiselect.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MultiSelectModule,\r\n TooltipModule,\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 <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=\"code\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\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</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 { InputNumberModule } from 'primeng/inputnumber';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-number',\r\n templateUrl: './spiderly-number.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n InputNumberModule,\r\n TooltipModule,\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, 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 { PasswordModule } from 'primeng/password';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-password',\r\n templateUrl: './spiderly-password.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PasswordModule,\r\n TooltipModule,\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, 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 { TextareaModule } from 'primeng/textarea';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-textarea',\r\n templateUrl: './spiderly-textarea.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TextareaModule,\r\n TooltipModule,\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 pTextarea\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, 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 { InputTextModule } from 'primeng/inputtext';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-textbox',\r\n templateUrl: './spiderly-textbox.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n InputTextModule,\r\n TooltipModule,\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\">\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 [fluid]=\"true\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--p-primary-color); border-color: var(--p-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({\n selector: 'panel-body',\n templateUrl: './panel-body.component.html',\n styles: [],\n standalone: false\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({\n selector: 'panel-footer',\n templateUrl: './panel-footer.component.html',\n styleUrl: './panel-footer.component.scss',\n standalone: false\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({\n selector: 'panel-header',\n templateUrl: './panel-header.component.html',\n styles: [`\r\n .p-panel-icons-end {\r\n font-size: 50px;\r\n }\r\n `],\n standalone: false\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: 8px;\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \r\n <h2 [style]=\"(showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : '')\" 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: '8px',\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: 21px' : 'font-size: 16px;'\"></i> \r\n <div [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\">{{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 styleUrl: './spiderly-panel.component.scss',\r\n standalone: false\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>\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({\n selector: 'spiderly-card',\n templateUrl: './spiderly-card.component.html',\n styles: [],\n standalone: false\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: 8px;\">\r\n <i style=\"font-size: 21px;\" 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 { MenuModule } from 'primeng/menu';\r\nimport { PanelModule } from 'primeng/panel';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MenuModule,\r\n PanelModule\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 { 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({\n selector: 'return-button',\n templateUrl: './return-button.component.html',\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SpiderlyButtonComponent,\n TranslocoDirective,\n ]\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 { SpiderlyColorPickerComponent } from './spiderly-colorpicker/spiderly-colorpicker.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 SpiderlyColorPickerComponent,\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 SpiderlyColorPickerComponent,\r\n SpiderlyFileComponent\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyControlsModule {}","import { Component, Input } from \"@angular/core\";\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n@Component({\n selector: 'card-skeleton',\n templateUrl: './card-skeleton.component.html',\n styles: [],\n imports: [SkeletonModule]\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 { 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, 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('Spiderly: 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('Spiderly: 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 formControl.parentClassName = modelConstructor.typeName;\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 // 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 { 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 { 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 imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\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 @Input() panelTitle: string;\r\n @Input() showBigPanelTitle: boolean = true;\r\n @Input() panelIcon: string;\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.selectedUsersIds = this.selectedUsersForRole.getRawValue()?.map(n => n.code);\r\n saveBody.selectedPermissionsIds = this.selectedPermissionsForRole.getRawValue();\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, code: 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 [title]=\"panelTitle\" [showBigTitle]=\"showBigPanelTitle\" [icon]=\"panelIcon\"></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 { 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 standalone: false\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 // 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 // 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 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 { 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 { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { SpiderlyPanelsModule } from '../../spiderly-panels/spiderly-panels.module';\r\n\r\n@Component({\r\n selector: 'verification-wrapper',\r\n templateUrl: './verification-wrapper.component.html',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpiderlyControlsModule,\r\n SpiderlyPanelsModule,\r\n ButtonModule,\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({\n selector: 'login-verification',\n templateUrl: './login-verification.component.html',\n imports: [\n VerificationWrapperComponent\n ]\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 { 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({\n selector: 'registration-verification',\n templateUrl: './registration-verification.component.html',\n imports: [\n VerificationWrapperComponent\n ]\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 { 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({\n selector: 'google-button',\n templateUrl: './google-button.component.html',\n styles: [],\n imports: [\n ButtonModule,\n TranslocoDirective,\n SpiderlyButtonComponent\n ]\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({\n selector: 'auth',\n templateUrl: './auth.component.html',\n styles: [],\n imports: [\n CommonModule,\n GoogleButtonComponent,\n TranslocoDirective,\n ]\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(--p-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\" title=\"{{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 { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslocoDirective, 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\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { AuthComponent } from '../partials/auth.component';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { LoginVerificationComponent } from '../partials/login-verification.component';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AuthComponent,\r\n SpiderlyControlsModule,\r\n LoginVerificationComponent,\r\n TranslocoDirective,\r\n ]\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 { BaseEntity } from \"./base-entity\";\r\nimport { UserBase } 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?: UserBase;\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?: UserBase,\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(--p-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), // 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 { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslocoDirective, 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\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { AuthComponent } from '../partials/auth.component';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { RegistrationVerificationComponent } from '../partials/registration-verification.component';\r\n\r\n@Component({\r\n selector: 'app-registration',\r\n templateUrl: './registration.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AuthComponent,\r\n SpiderlyControlsModule,\r\n RegistrationVerificationComponent,\r\n TranslocoDirective,\r\n ]\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 } 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\n\r\n@Component({\r\n selector: 'index-card',\r\n templateUrl: './index-card.component.html',\r\n imports: [\r\n CommonModule,\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\n\r\n@Component({\r\n selector: 'info-card',\r\n templateUrl: './info-card.component.html',\r\n imports: [\r\n CommonModule,\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(--p-primary-100); 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(--p-primary-color);\"></i>\r\n <div>\r\n <div class=\"header\" style=\"color:var(--p-primary-color); font-weight: 600; text-align: left;\">\r\n {{header}}\r\n </div>\r\n <div style=\"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\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n selector: 'not-found',\r\n templateUrl: './not-found.component.html',\r\n imports: [\r\n RouterModule,\r\n ButtonModule,\r\n ]\r\n})\r\nexport class NotFoundComponent { \r\n companyName = this.config.companyName;\r\n logoPath: string = this.config.logoPath;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\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(--p-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\">\r\n <img \r\n [src]=\"logoPath\" \r\n alt=\"{{companyName}} Logo\" \r\n title=\"{{companyName}} Logo\" \r\n height=\"60\"\r\n class=\"mb-4\"\r\n >\r\n </div>\r\n <h1 class=\"mb-4\">\r\n <div class=\"font-bold text-5xl lg:text-6xl gradient-title\">404</div>\r\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\r\n </h1>\r\n <div class=\"text-600 text-lg mb-5\">\r\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\r\n </div>\r\n <div>\r\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\r\n </div>\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({\n selector: 'spiderly-split-button',\n templateUrl: './spiderly-split-button.component.html',\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SplitButtonModule\n ]\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 { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\n\r\n@Component({\r\n selector: 'spiderly-delete-confirmation',\r\n templateUrl: './spiderly-delete-confirmation.component.html',\r\n styles: [],\r\n imports: [\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n ConfirmDialogModule,\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 { BaseEntity } from \"./base-entity\";\r\nimport { FilterSortMeta as FilterSortMeta } from \"./filter-sort-meta\";\r\nimport { FilterRule } from \"./filter-rule\";\r\n\r\nexport class Filter<T extends BaseEntity=any> extends BaseEntity\r\n{\r\n filters?: { [K in keyof T]?: FilterRule[] };\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: FilterSortMeta[];\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?: { [K in keyof T]?: FilterRule[] };\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: FilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n } = {}\r\n ) {\r\n super('Filter');\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 enum MatchModeCodes\r\n{\r\n StartsWith,\r\n Contains,\r\n Equals,\r\n LessThan,\r\n GreaterThan,\r\n In,\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, TableModule } 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 { PaginatedResult } from '../../entities/paginated-result';\r\nimport { LazyLoadSelectedIdsResult } from '../../entities/lazy-load-selected-ids-result';\r\nimport { exportListToExcel, getHtmlImgDisplayString64 } from '../../services/helper-functions';\r\nimport { Filter } from '../../entities/filter';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\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 imports: [\r\n FormsModule,\r\n CommonModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n CheckboxModule,\r\n TooltipModule,\r\n ]\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[]; // Pass only when hasLazyLoad === false\r\n @Input() rows: number = 10;\r\n @Input() cols: Column[];\r\n @Input() showPaginator: boolean = true; // Pass only when hasLazyLoad === false\r\n @Input() showCardWrapper: boolean = false;\r\n @Input() readonly: boolean = false;\r\n totalRecords: number;\r\n @Output() onTotalRecordsChange: EventEmitter<number> = new EventEmitter();\r\n \r\n @Input() getPaginatedListObservableMethod: (tableFilter: Filter) => Observable<PaginatedResult>;\r\n @Input() exportListToExcelObservableMethod: (tableFilter: Filter) => 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[] = []; // Only for showing checkboxes, we will not send this to the backend\r\n currentPageSelectedItemsFromDb: number[] = []; // 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<Filter> = new EventEmitter();\r\n rowsSelectedNumber: number = 0;\r\n isAllSelected: boolean = null;\r\n fakeIsAllSelected: boolean = false; // 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: Filter) => 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[]; // 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[] = []; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getAlreadySelectedItemIds: (additionalIndexes?: any) => number[]; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n selectedItems: any[] = []; // Pass only when hasLazyLoad === false\r\n @Input() getAlreadySelectedItems: (additionalIndexes?: any) => any[]; // 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 let a = new Filter<any>();\r\n this.matchModeDateOptions = [\r\n { label: this.translocoService.translate('OnDate'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\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: Filter = event as unknown as Filter;\r\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getPaginatedListObservableMethod(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]; // 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]; // 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); // 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): any {\r\n switch (filterType) {\r\n case 'text':\r\n return MatchModeCodes.Contains;\r\n case 'date':\r\n return MatchModeCodes.Equals;\r\n case 'multiselect':\r\n return MatchModeCodes.In;\r\n case 'boolean':\r\n return MatchModeCodes.Equals;\r\n case 'numeric':\r\n return MatchModeCodes.Equals\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: make decimal pipe\r\n return rowData[col.field];\r\n case 'blob':\r\n return getHtmlImgDisplayString64(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 filter: Filter = this.lastLazyLoadEvent as unknown as Filter;\r\n filter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n exportListToExcel(this.exportListToExcelObservableMethod, filter);\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); // 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); // Splice is mutating the array\r\n }\r\n if (fakeIndex !== -1) {\r\n this.fakeSelectedItems.splice(fakeIndex, 1); // Splice is mutating the array\r\n }\r\n if (nonLazyLoadIndex !== -1) {\r\n this.selectedItemIds.splice(nonLazyLoadIndex, 1); // 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 // 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; // Made specificaly for multiautocomplete, maybe for something more in the future\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\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; // 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\" [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\" 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\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" 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-columnFilter *ngIf=\"col.filterType != null && col.filterType !== 'blob'\" [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=\"code\" [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]=\"col.filterType !== 'blob' ? 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 <ng-container *ngIf=\"col.filterType === 'blob'\">\r\n <img width=\"45\" [src]=\"getRowData(rowData, col)\" alt=\"\">\r\n </ng-container>\r\n <ng-container *ngIf=\"col.filterType !== 'blob'\">\r\n {{getRowData(rowData, col)}}\r\n </ng-container>\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 { Component, ContentChild, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { Table, TableFilterEvent, TableLazyLoadEvent, TableModule } from 'primeng/table';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { PaginatedResult } from '../../entities/paginated-result';\r\nimport { Filter } from '../../entities/filter';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\r\nimport { Action } from '../spiderly-data-table/spiderly-data-table.component';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\n\r\n@Component({\r\n selector: 'spiderly-data-view',\r\n templateUrl: './spiderly-data-view.component.html',\r\n styleUrl: 'spiderly-data-view.component.scss',\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n CheckboxModule,\r\n TooltipModule,\r\n DatePickerModule,\r\n InputTextModule,\r\n InputNumberModule,\r\n SelectModule,\r\n ]\r\n})\r\nexport class SpiderlyDataViewComponent<T> implements OnInit {\r\n @ViewChild('dt') table: Table;\r\n /**\r\n * List of items in the table.\r\n * Should be provided only when `hasLazyLoad === false`.\r\n */\r\n @Input() items: T[];\r\n @Input() rows: number = 10;\r\n @Input() filters: DataViewFilter<T>[] = [];\r\n totalRecords: number;\r\n @Output() onLazyLoad: EventEmitter<Filter> = new EventEmitter();\r\n\r\n @Input() showCardWrapper: boolean = true;\r\n /**\r\n * Whether to display additional data on the right side of the paginator.\r\n * Defaults to `false`.\r\n */\r\n @Input() showPaginatorRightData: boolean = false;\r\n @Input() showTotalRecordsNumber: boolean = false;\r\n @Input() applyFiltersIcon: string = 'pi pi-filter';\r\n @Input() clearFiltersIcon: string = 'pi pi-filter-slash';\r\n \r\n @Input() getPaginatedListObservableMethod: (filter: Filter) => Observable<PaginatedResult>;\r\n\r\n lastLazyLoadEvent: TableLazyLoadEvent;\r\n loading: boolean = true;\r\n\r\n matchModeDateOptions: SelectItem[] = [];\r\n matchModeNumberOptions: SelectItem[] = [];\r\n \r\n @ContentChild('cardBody', { read: TemplateRef }) cardBody!: TemplateRef<any>;\r\n\r\n constructor(\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: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n }\r\n \r\n lazyLoad(event: TableLazyLoadEvent) {\r\n this.lastLazyLoadEvent = event;\r\n \r\n const transformedFilter: { [K in keyof T]?: { value: any; matchMode: MatchModeCodes }[] } = {};\r\n\r\n for (const key in event.filters) {\r\n const filterMeta = event.filters[key];\r\n\r\n if (Array.isArray(filterMeta)) {\r\n transformedFilter[key] = filterMeta;\r\n } \r\n else {\r\n transformedFilter[key] = [{\r\n value: filterMeta.value,\r\n matchMode: filterMeta.matchMode\r\n }];\r\n }\r\n }\r\n\r\n let tableFilter = event as unknown as Filter<T>;\r\n\r\n tableFilter.filters = transformedFilter;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getPaginatedListObservableMethod(tableFilter).subscribe({\r\n next: async (res) => { \r\n this.items = res.data;\r\n this.totalRecords = res.totalRecords;\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 filter(event: TableFilterEvent){\r\n }\r\n \r\n getDefaultMatchMode(filterType: string): any {\r\n switch (filterType) {\r\n case 'text':\r\n return MatchModeCodes.Contains;\r\n case 'date':\r\n return MatchModeCodes.Equals;\r\n case 'multiselect':\r\n return MatchModeCodes.In;\r\n case 'boolean':\r\n return MatchModeCodes.Equals;\r\n case 'numeric':\r\n return MatchModeCodes.Equals\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getMatchModeOptions(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return [];\r\n case 'date':\r\n return this.matchModeDateOptions;\r\n case 'multiselect':\r\n return [];\r\n case 'boolean':\r\n return [];\r\n case 'numeric':\r\n return this.matchModeNumberOptions;\r\n default:\r\n return [];\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 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 applyFilters = () => {\r\n this.table._filter();\r\n }\r\n\r\n clearFilters() {\r\n this.table.clear();\r\n }\r\n}\r\n\r\nexport interface DataViewCardBody<T> {\r\n $implicit: T;\r\n item: T;\r\n index: number;\r\n}\r\n\r\nexport interface DataViewFilter<T extends BaseEntity> {\r\n label?: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future\r\n type?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\r\n placeholder?: string;\r\n showMatchModes?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n}","<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table \r\n #dt \r\n [value]=\"items\" \r\n [rows]=\"rows\" \r\n [rowHover]=\"false\" \r\n responsiveLayout=\"scroll\" \r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\" \r\n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \r\n [loading]=\"(items === undefined || loading === true)\" \r\n dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"\r\n [filterDelay]=\"500\"\r\n [paginator]=\"true\"\r\n > \r\n <ng-template #caption>\r\n <div *ngIf=\"filters.length !== 0\">\r\n <div class=\"data-view-grid\">\r\n @for (filter of filters; track $index) {\r\n <div>\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\r\n <div>\r\n <label>\r\n {{filter.label}}\r\n </label>\r\n </div>\r\n\r\n <p-columnFilter *ngIf=\"filter.type != null\" [type]=\"filter.type\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.placeholder\" \r\n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.type)\" [matchModeOptions]=\"getMatchModeOptions(filter.type)\" \r\n >\r\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'100%'}\">\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 </div>\r\n }\r\n </div>\r\n <div style=\"display: flex; gap: 12px;\">\r\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" [icon]=\"applyFiltersIcon\"></spiderly-button>\r\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" [icon]=\"clearFiltersIcon\"></spiderly-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #body let-rowData let-index=\"rowIndex\">\r\n <tr style=\"padding: 0; margin-bottom: 0;\">\r\n <td style=\"display: block; border: 0; padding: 0;\">\r\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n {{t('NoRecordsFound')}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showTotalRecordsNumber\" pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showPaginatorRightData\" pTemplate=\"paginatorright\">\r\n <ng-content select=\"[PAGINATORRIGHT]\"></ng-content>\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, RouterModule } 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 { 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 imports: [\r\n CommonModule,\r\n RouterModule,\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.item.visible = this.item.visible ?? true;\r\n\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 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 <!-- 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 change selector to 'menu', because other style will apply to it\r\n templateUrl: './sidebar-menu.component.html',\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({\n selector: 'sidebar',\n templateUrl: './sidebar.component.html',\n imports: [\n SidebarMenuComponent\n ]\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 { Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { UserBase } from '../../../entities/security-entities';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { SpiderlyButtonComponent } from \"../../spiderly-buttons/spiderly-button/spiderly-button.component\";\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\n\r\ninterface ProfileAvatarModalMenuItem {\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: 'spiderly-profile-avatar',\r\n templateUrl: './profile-avatar.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AvatarModule,\r\n BadgeModule,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n]\r\n})\r\nexport class ProfileAvatarComponent {\r\n @Input() isSideMenuLayout = true;\r\n\r\n private initTopBarSubscription: Subscription | null = null;\r\n\r\n currentUser: UserBase;\r\n userProfilePath: string;\r\n unreadNotificationsCount: number;\r\n menuItems: ProfileAvatarModalMenuItem[] = [];\r\n avatarLabel: string;\r\n showProfileIcon = false;\r\n\r\n notificationMenuItem: ProfileAvatarModalMenuItem =\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('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 protected router: Router,\r\n private translocoService: TranslocoService,\r\n public 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('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.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}\r\n","<ng-container *transloco=\"let t\">\r\n <div\r\n *ngIf=\"this.currentUser != null\"\r\n #topbarmenu\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(--p-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 \r\n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \r\n [ngStyle]=\"{'right': isSideMenuLayout ? '26px' : '0', 'top': isSideMenuLayout ? '60px' : '40px'}\" \r\n style=\"width: 280px; position: absolute; padding: 15px;\" \r\n 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(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'margin': 'auto' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div style=\"font-size: 15px;\">{{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 style=\"font-size: 15px;\"> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"this.currentUser == null\">\r\n <spiderly-button [label]=\"t('Login')\" icon=\"pi pi-sign-in\" [routerLink]=\"this.config.loginSlug\"></spiderly-button>\r\n </div>\r\n</ng-container>","import { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { filter } from 'rxjs';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ProfileAvatarComponent } from '../profile-avatar/profile-avatar.component';\r\n\r\n@Component({\r\n selector: 'spiderly-sidemenu-topbar',\r\n templateUrl: './sidemenu-topbar.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AvatarModule,\r\n BadgeModule,\r\n ProfileAvatarComponent,\r\n ]\r\n})\r\nexport class SideMenuTopBarComponent {\r\n companyName = this.config.companyName;\r\n @ViewChild('menubutton') menuButton!: ElementRef;\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n protected router: Router,\r\n private config: ConfigBaseService,\r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n async ngOnInit(){\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\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 class=\"profile-button\">\r\n <spiderly-profile-avatar\r\n ></spiderly-profile-avatar>\r\n </div>\r\n\r\n</div>\r\n ","import { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { ProfileAvatarComponent } from \"../profile-avatar/profile-avatar.component\";\r\nimport { MenubarModule } from \"primeng/menubar\";\r\nimport { SpiderlyMenuItem } from '../sidebar/sidebar-menu.component';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spiderly-topbar',\r\n templateUrl: './topbar.component.html',\r\n styleUrl: './topbar.component.scss',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n MenubarModule,\r\n AvatarModule,\r\n ProfileAvatarComponent,\r\n]\r\n})\r\nexport class TopBarComponent {\r\n @Input() menu: SpiderlyMenuItem[] = [];\r\n companyName = this.config.companyName;\r\n logoPath = this.config.logoPath;\r\n /**\r\n * Determines whether to show background color on hover\r\n * for root menu items. Defaults to `false`.\r\n */\r\n @Input() showHoverBgOnRootItems: boolean = false;\r\n\r\n private permissionSubscription: Subscription | null = null;\r\n\r\n constructor(\r\n private authService: AuthBaseService,\r\n private config: ConfigBaseService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\r\n this.hideMenuItemsBasedOnPermissions(this.menu, currentUserPermissionCodes);\r\n });\r\n }\r\n\r\n hideMenuItemsBasedOnPermissions = (menu: SpiderlyMenuItem[], currentUserPermissionCodes: string[]) => {\r\n menu.forEach(menuItem => {\r\n if (menuItem.items) {\r\n this.hideMenuItemsBasedOnPermissions(menuItem.items, currentUserPermissionCodes)\r\n }\r\n if (typeof menuItem.hasPermission === 'function') {\r\n menuItem.visible = menuItem.hasPermission(currentUserPermissionCodes) ?? false;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.permissionSubscription) {\r\n this.permissionSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"topbar-wrapper\">\r\n <nav class=\"topbar {{showHoverBgOnRootItems ? '' : 'show-hover-bg-on-root-items'}}\">\r\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\r\n <ng-template #start>\r\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\r\n </ng-template>\r\n <ng-template #end>\r\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\r\n <div>\r\n <ng-content select=\"[ACTIONS]\"></ng-content>\r\n </div>\r\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\r\n </div>\r\n </ng-template>\r\n </p-menubar>\r\n </nav>\r\n</div>","import { Component, ElementRef, Input, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AppSidebarComponent } from './sidebar/sidebar.component';\r\nimport { SideMenuTopBarComponent } from './sidemenu-topbar/sidemenu-topbar.component';\r\nimport { LayoutBaseService } from '../../services/app-layout-base.service';\r\nimport { SpiderlyMenuItem } from './sidebar/sidebar-menu.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FooterComponent } from '../footer/footer.component';\r\nimport { TopBarComponent } from './topbar/topbar.component';\r\n\r\n@Component({\r\n selector: 'spiderly-layout',\r\n templateUrl: './layout.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AppSidebarComponent,\r\n FooterComponent,\r\n SideMenuTopBarComponent,\r\n TopBarComponent,\r\n]\r\n})\r\nexport class SpiderlyLayoutComponent implements OnDestroy {\r\n @Input() menu: SpiderlyMenuItem[] = [];\r\n sideMenu: SpiderlyMenuItem[] = [];\r\n topMenu: SpiderlyMenuItem[] = [];\r\n @Input() isSideMenuLayout: boolean = true;\r\n /**\r\n * Determines whether to show background color on hover\r\n * for root top menu items. Defaults to `false`.\r\n */\r\n @Input() showHoverBgOnRootTopMenuItems: boolean = false;\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(SideMenuTopBarComponent) sidemenuTopbar!: SideMenuTopBarComponent;\r\n\r\n @ViewChild('topbarmenu') topbarmenu!: ElementRef;\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.sidemenuTopbar?.menuButton?.nativeElement.isSameNode(event.target) || \r\n this.sidemenuTopbar?.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 = !(\r\n this.topbarmenu?.nativeElement.isSameNode(event.target) || \r\n this.topbarmenu?.nativeElement.contains(event.target)\r\n );\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 ngOnInit() {\r\n if (this.isSideMenuLayout) {\r\n this.sideMenu = [...this.menu];\r\n }\r\n else{\r\n this.topMenu = [...this.menu[0].items];\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","<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\r\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\r\n <div class=\"layout-sidebar\">\r\n <sidebar [menu]=\"sideMenu\"></sidebar>\r\n </div>\r\n <div class=\"layout-main-container\">\r\n <div class=\"layout-main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <footer></footer>\r\n </div>\r\n <div class=\"layout-mask\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"isSideMenuLayout === false\">\r\n <spiderly-topbar [menu]=\"topMenu\" [showHoverBgOnRootItems]=\"showHoverBgOnRootTopMenuItems\">\r\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\r\n </spiderly-topbar>\r\n <main style=\"max-width: 1100px; margin: auto; padding: 18px;\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n</div>","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 code?: any; // Can't be value: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294\r\n \r\n constructor(\r\n {\r\n label,\r\n code,\r\n }:{\r\n label?: string;\r\n code?: any;\r\n } = {}\r\n ) {\r\n super('PrimengOption');\r\n\r\n this.label = label;\r\n this.code = code;\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 { MatchModeCodes } from \"../enums/match-mode-enum-codes\";\r\n\r\n/**\r\n * Represents a filter rule used for querying or filtering data collections.\r\n * \r\n * The `FilterRule` class is a generic structure that defines a single filtering condition,\r\n * including the match mode (comparison operator), the value to compare, and an optional logical operator.\r\n * \r\n * The allowed match modes are determined by the type parameter `T`:\r\n * - For `string`: supports `Contains`, `StartsWith`, and `Equals`.\r\n * - For `boolean`: supports `Equals`.\r\n * - For `Date`: supports `Equals`, `GreaterThan`, and `LessThan`.\r\n * - For `number`: supports `Equals`, `GreaterThan`, `LessThan`, and `In`.\r\n * - For other types: allows any value from `MatchModeCodes`.\r\n * \r\n * @template T The type of the value to filter by.\r\n */\r\nexport class FilterRule<T=any>\r\n{\r\n matchMode: AllowedMatchModes<T>;\r\n value: T;\r\n operator?: string;\r\n}\r\n\r\ntype AllowedMatchModes<T> = \r\n T extends string ? MatchModeCodes.Contains | MatchModeCodes.StartsWith | MatchModeCodes.Equals :\r\n T extends boolean ? MatchModeCodes.Equals :\r\n T extends Date ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan :\r\n T extends number ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan | MatchModeCodes.In :\r\n MatchModeCodes;","export class FilterSortMeta\r\n{\r\n field: string;\r\n order: number;\r\n}","export class PaginatedResult<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","import { HttpEvent, HttpInterceptorFn } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { Observable, finalize } from \"rxjs\";\r\n\r\nexport const httpLoadingInterceptor: HttpInterceptorFn = (req, next) => {\r\n const spinner = inject(NgxSpinnerService);\r\n \r\n const shouldSkipSpinner = req.params.has('X-Skip-Spinner'); // Using this for multiautocomplete, autocomplete, dropdown, table etc...\r\n\r\n if (!shouldSkipSpinner)\r\n spinner.show();\r\n\r\n return next(req).pipe(\r\n finalize(() => {\r\n if (!shouldSkipSpinner){\r\n spinner.hide();\r\n }\r\n })\r\n ) as Observable<HttpEvent<any>>;\r\n}","import { HttpEvent, HttpResponse, HttpInterceptorFn } from '@angular/common/http';\r\nimport { tap } from 'rxjs';\r\n\r\nexport const jsonHttpInterceptor: HttpInterceptorFn = (req, next) => {\r\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\r\n\r\n const 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 (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 convertDates(object[i], object, i);\r\n } else {\r\n for (const key of Object.keys(object as Record<string, unknown>)) {\r\n 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 return next(req)\r\n .pipe(\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n convertDates(event.body);\r\n }\r\n }\r\n ));\r\n}","import { inject } from '@angular/core';\r\nimport { HttpInterceptorFn } from '@angular/common/http';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\nexport const jwtInterceptor: HttpInterceptorFn = (req, next) => {\r\n const config = inject(ConfigBaseService);\r\n\r\n const accessToken = localStorage.getItem('access_token');\r\n const isApiUrl = req.url.startsWith(config.apiUrl);\r\n\r\n if (accessToken && isApiUrl) {\r\n req = req.clone({\r\n setHeaders: { Authorization: `Bearer ${accessToken}` },\r\n });\r\n }\r\n\r\n return next(req);\r\n}","import { inject } from '@angular/core';\r\nimport { HttpRequest, HttpErrorResponse, HttpInterceptorFn } 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\nexport const unauthorizedInterceptor: HttpInterceptorFn = (req, next) => {\r\n const messageService = inject(SpiderlyMessageService);\r\n const translocoService = inject(TranslocoService);\r\n const config = inject(ConfigBaseService);\r\n\r\n const handleAuthError = (err: HttpErrorResponse, request: HttpRequest<any>): Observable<any> => {\r\n if (!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 messageService.warningMessageWithTimeout( // FT: Had problem when the server is shut down, and try to refresh token, warning message didn't appear\r\n translocoService.translate('ServerLostConnectionDetails'),\r\n translocoService.translate('ServerLostConnectionTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 400) {\r\n messageService.warningMessage(\r\n errorResponse.message ?? translocoService.translate('BadRequestDetails'),\r\n translocoService.translate('Warning'),\r\n );\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 401) {\r\n messageService.warningMessage(\r\n errorResponse.message ?? translocoService.translate('LoginRequired'),\r\n translocoService.translate('Warning'),\r\n );\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 403) {\r\n messageService.warningMessage(\r\n translocoService.translate('PermissionErrorDetails'),\r\n translocoService.translate('PermissionErrorTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 404) {\r\n messageService.warningMessage(\r\n translocoService.translate('NotFoundDetails'),\r\n translocoService.translate('NotFoundTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 419) { // Access token expired\r\n return of(err.message);\r\n } \r\n else {\r\n messageService.errorMessage(\r\n errorResponse.message,\r\n 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 return next(req).pipe(\r\n catchError((err) => {\r\n return handleAuthError(err, req);\r\n })\r\n );\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[templateType]',\r\n})\r\nexport class SpiderlyTemplateTypeDirective<T> {\r\n @Input() templateType?: T;\r\n\r\n static ngTemplateContextGuard<T>(\r\n dir: SpiderlyTemplateTypeDirective<T>,\r\n ctx: unknown\r\n ): ctx is T {\r\n return true;\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/spiderly-transloco.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-colorpicker/spiderly-colorpicker.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/auth/login/login.component';\r\nexport * from './lib/components/auth/registration/registration.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-data-view/spiderly-data-view.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/sidemenu-topbar/sidemenu-topbar.component';\r\nexport * from './lib/components/layout/layout.component';\r\nexport * from './lib/components/layout/topbar/topbar.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/filter';\r\nexport * from './lib/entities/filter-rule';\r\nexport * from './lib/entities/filter-sort-meta';\r\nexport * from './lib/entities/paginated-result';\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\nexport * from './lib/enums/match-mode-enum-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\r\nexport * from './lib/directives/template-type.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigBaseService","i1","i2","i3","i4.ApiSecurityService","i5.ConfigBaseService","i1.SpiderlyMessageService","i3.ConfigBaseService","i2.ValidatorAbstractService","i6","i4","i5","map","i1.TranslateLabelsAbstractService","i3.SpiderlyMessageService","i1.ApiSecurityService","i3.BaseFormService","i4.AuthBaseService","i7.PanelHeaderComponent","i8.PanelBodyComponent","i9.PanelFooterComponent","i10.SpiderlyPanelComponent","i2.SpiderlyMessageService","i5.BaseFormService","i7.SpiderlyTextboxComponent","i8.SpiderlyButtonComponent","i9.PanelHeaderComponent","i10.PanelBodyComponent","i11.PanelFooterComponent","i12.SpiderlyPanelComponent","i1.AuthBaseService","i1.ConfigBaseService","i2.AuthBaseService","i6.AuthBaseService","i7.ConfigBaseService","i8","i9","i10.SpiderlyTextboxComponent","i11.SpiderlyButtonComponent","delay","i3.AuthBaseService","i6.LayoutBaseService","i7.AuthBaseService","i9.SpiderlyTextboxComponent","i10.SpiderlyButtonComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","i7.SpiderlyButtonComponent","i8.SpiderlyNumberComponent","i11","i12","i14","i4.SpiderlyButtonComponent","i7","i1.LayoutBaseService","i3.SidebarMenuService","i5.ApiSecurityService","i6.ConfigBaseService","i8.SpiderlyAutocompleteComponent","i4.ConfigBaseService","filter","finalize","tap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spiderly.mjs","sources":["../../../projects/spiderly/src/lib/components/required/required.component.ts","../../../projects/spiderly/src/lib/components/required/required.component.html","../../../projects/spiderly/src/lib/controls/base-control.ts","../../../projects/spiderly/src/lib/controls/base-dropdown-control.ts","../../../projects/spiderly/src/lib/controls/base-autocomplete-control.ts","../../../projects/spiderly/src/lib/components/spiderly-form-control/spiderly-form-control.ts","../../../projects/spiderly/src/lib/services/validator-abstract.service.ts","../../../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/controls/spiderly-calendar/spiderly-calendar.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.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-colorpicker/spiderly-colorpicker.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-colorpicker/spiderly-colorpicker.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/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/entities/base-entity.ts","../../../projects/spiderly/src/lib/services/helper-functions.ts","../../../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-multiautocomplete/spiderly-multiautocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.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-number/spiderly-number.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.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-textarea/spiderly-textarea.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.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-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/entities/is-authorized-for-save-event.ts","../../../projects/spiderly/src/lib/entities/namebook.ts","../../../projects/spiderly/src/lib/entities/security-entities.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/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-panels.module.ts","../../../projects/spiderly/src/lib/services/config-base.service.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/errors/spiderly-error.ts","../../../projects/spiderly/src/lib/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/spiderly-message.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.ts","../../../projects/spiderly/src/lib/entities/init-company-auth-dialog-details.ts","../../../projects/spiderly/src/lib/services/auth-base.service.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/base-form/base-form copy.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/login-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.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/components/auth/login/login.component.ts","../../../projects/spiderly/src/lib/components/auth/login/login.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/enums/match-mode-enum-codes.ts","../../../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/spiderly-data-view/spiderly-data-view.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-view/spiderly-data-view.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/entities/init-top-bar-data.ts","../../../projects/spiderly/src/lib/services/app-layout-base.service.ts","../../../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/profile-avatar/profile-avatar.component.ts","../../../projects/spiderly/src/lib/components/layout/profile-avatar/profile-avatar.component.html","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.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.component.ts","../../../projects/spiderly/src/lib/components/layout/layout.component.html","../../../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/primeng-option.ts","../../../projects/spiderly/src/lib/entities/simple-save-result.ts","../../../projects/spiderly/src/lib/entities/filter-sort-meta.ts","../../../projects/spiderly/src/lib/entities/filter.ts","../../../projects/spiderly/src/lib/entities/filter-rule.ts","../../../projects/spiderly/src/lib/entities/paginated-result.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-error-handler.ts","../../../projects/spiderly/src/lib/interceptors/http-loading.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/json-parser.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/jwt.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/unauthorized.interceptor.ts","../../../projects/spiderly/src/lib/services/app-initializer.ts","../../../projects/spiderly/src/lib/services/spiderly-transloco-loader.ts","../../../projects/spiderly/src/lib/directives/template-type.directive.ts","../../../projects/spiderly/src/public-api.ts","../../../projects/spiderly/src/spiderly.ts"],"sourcesContent":["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 {\r\n Component, Input,\r\n} from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyFormControl } from '../components/spiderly-form-control/spiderly-form-control';\r\n \r\n @Component({\r\n selector: 'base-control',\r\n template: '',\r\n styles: [],\r\n standalone: false\r\n})\r\n export class BaseControl {\r\n @Input() control: SpiderlyFormControl<any>; // 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() showRequired: 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 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 // 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 {\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\nimport { Namebook } from '../entities/namebook';\r\n\r\n @Component({\r\n selector: 'base-dropdown-control',\r\n template: '',\r\n styles: [],\r\n standalone: false\r\n})\r\n export class BaseDropdownControl extends BaseControl {\r\n @Input() options: Namebook[];\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({\n selector: 'base-autocomplete-control',\n template: '',\n styles: [],\n standalone: false\n})\r\n export class BaseAutocompleteControl extends BaseDropdownControl {\r\n @Output() onTextInput: EventEmitter<AutoCompleteCompleteEvent> = new EventEmitter();\r\n }","import { FormArray, FormControl, FormControlOptions, FormGroup, ValidatorFn } from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseEntity, SchemaAwareConstructor } from '../../entities/base-entity';\r\nimport { Namebook } from '../../entities/namebook';\r\nimport { BaseFormService } from '../../services/base-form.service';\r\n\r\nexport interface SpiderlyValidatorFn extends ValidatorFn {\r\n hasNotEmptyRule?: boolean;\r\n}\r\n\r\n// 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 public parentClassName: string;\r\n public type: string; // number, Date, string, Namebook[], number[]...\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 { // 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\ntype SpiderlyControlsOfType<TValue> = {\r\n [P in keyof TValue]:\r\n TValue[P] extends (infer U)[]\r\n ? U extends Namebook | string | number | Date | boolean\r\n ? SpiderlyFormControl<TValue[P]>\r\n : SpiderlyFormArray<U>\r\n : TValue[P] extends Date\r\n ? SpiderlyFormControl<TValue[P]>\r\n : TValue[P] extends object\r\n ? SpiderlyFormGroup<TValue[P]>\r\n : SpiderlyFormControl<TValue[P]>;\r\n};\r\n\r\nexport class SpiderlyFormGroup<TValue = any> extends FormGroup {\r\n declare controls: SpiderlyControlsOfType<TValue>;\r\n\r\n constructor(controls: SpiderlyControlsOfType<TValue>) {\r\n super(controls);\r\n }\r\n\r\n override getRawValue(): TValue { // Doing this because .value gets only not disabled values\r\n return super.getRawValue() as TValue;\r\n }\r\n\r\n public targetClass: SchemaAwareConstructor<TValue>;\r\n public trackingId: string = crypto.randomUUID();\r\n public name?: string; // Using for nested form groups\r\n public saveObservableMethod?: (saveBody: any) => Observable<any>;\r\n public initSaveBody?: () => BaseEntity = () => null;\r\n public controlNamesFromHtml?: string[] = [];\r\n\r\n public getControl = <TKey extends Extract<keyof TValue, string>>(formControlName: TKey): SpiderlyControlsOfType<TValue>[TKey] => {\r\n if(this.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n this.controlNamesFromHtml.push(formControlName);\r\n\r\n let formControl = this.controls[formControlName];\r\n if (formControl == null) {\r\n console.error(`Spiderly: The property ${formControlName} in the form group ${this.targetClass.typeName} doesn't exist`);\r\n return null;\r\n }\r\n \r\n return formControl;\r\n }\r\n}\r\n\r\nexport class SpiderlyFormArray<TValue extends BaseEntity = any> extends FormArray {\r\n constructor(\r\n controls: SpiderlyControlsOfType<TValue>[],\r\n private translocoService: TranslocoService,\r\n private baseFormService: BaseFormService\r\n ) {\r\n super(controls);\r\n }\r\n\r\n public label: string;\r\n public labelForDisplay: string;\r\n override value: TValue[]; // There is no getRawValue in FormArray\r\n public required: boolean;\r\n public formGroupInitialValues: Partial<TValue> = {};\r\n public targetClass: SchemaAwareConstructor<TValue>;\r\n public lastMenuIconIndexClicked: number;\r\n\r\n public getCrudMenuForOrderedData = () => {\r\n let crudMenuForOrderedData: MenuItem[] = [\r\n {label: this.translocoService.translate('Remove'), icon: 'pi pi-minus', command: () => {\r\n this.baseFormService.removeFormControlFromTheFormArray(this, this.lastMenuIconIndexClicked);\r\n }},\r\n {label: this.translocoService.translate('AddAbove'), icon: 'pi pi-arrow-up', command: () => {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n this, this.targetClass, this.formGroupInitialValues, this.lastMenuIconIndexClicked\r\n );\r\n }},\r\n {label: this.translocoService.translate('AddBelow'), icon: 'pi pi-arrow-down', command: () => {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n this, this.targetClass, this.formGroupInitialValues, this.lastMenuIconIndexClicked + 1\r\n );\r\n }},\r\n ];\r\n\r\n return crudMenuForOrderedData;\r\n };\r\n\r\n public addNewFormGroup = (index: number) => {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n this,\r\n this.targetClass,\r\n this.formGroupInitialValues,\r\n index\r\n );\r\n }\r\n\r\n public getFormGroups = () => {\r\n return this.controls as SpiderlyFormGroup<TValue>[]\r\n }\r\n\r\n disableAllFormControls(){\r\n this.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(){\r\n this.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}","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 { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { AutoCompleteCompleteEvent, AutoCompleteModule, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { ValidatorAbstractService } from '../../services/validator-abstract.service';\r\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\r\nimport { SpiderlyFormControl } from '../../components/spiderly-form-control/spiderly-form-control';\r\nimport { Namebook } from '../../entities/namebook';\r\n\r\n@Component({\r\n selector: 'spiderly-autocomplete',\r\n templateUrl: './spiderly-autocomplete.component.html',\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n AutoCompleteModule,\r\n InputGroupAddonModule,\r\n InputGroupModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n @Input() appendTo: any = 'body';\r\n @Input() showClear: boolean = true;\r\n @Input() emptyMessage: string;\r\n @Input() displayName: string; // Added because when we initialize the object options are null\r\n helperFormControl = new SpiderlyFormControl<Namebook>(null, {updateOn: 'change'});\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n private validatorService: ValidatorAbstractService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n\r\n this.helperFormControl.label = this.control.label;\r\n this.validatorService.setValidator(this.helperFormControl, this.control.parentClassName);\r\n \r\n if (this.control.value != null)\r\n this.helperFormControl.setValue({displayName: this.displayName, id: this.control.value});\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: AutoCompleteSelectEvent){\r\n const selectedOption: Namebook = event.value;\r\n this.control.setValue(selectedOption.id);\r\n this.helperFormControl.setValue({displayName: selectedOption.displayName, id: selectedOption.id});\r\n }\r\n\r\n clear(){\r\n this.control.setValue(null);\r\n this.helperFormControl.setValue(null);\r\n }\r\n\r\n autocompleteMarkAsDirty(){\r\n this.dropdownMarkAsDirty();\r\n this.helperFormControl.markAsDirty();\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"> <!-- By passing an empty string we remove the label entirely -->\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n \r\n <!-- Don't support p-inputgroup -->\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]=\"helperFormControl\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"autocompleteMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n (onClear)=\"clear()\"\r\n [completeOnFocus]=\"true\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width':'100%'}\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n optionLabel=\"displayName\"\r\n ></p-autocomplete>\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 { DatePickerModule } from 'primeng/datepicker';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-calendar',\r\n templateUrl: './spiderly-calendar.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n DatePickerModule,\r\n TooltipModule,\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\" style=\"display: flex; align-items: center;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\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: 8px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n <p-datepicker\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 (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 appendTo=\"body\"\r\n [fluid]=\"true\"\r\n />\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } 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 { CheckboxChangeEvent, CheckboxModule } from 'primeng/checkbox';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-checkbox',\r\n templateUrl: './spiderly-checkbox.component.html',\r\n styleUrl: './spiderly-checkbox.component.scss',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CheckboxModule,\r\n TooltipModule,\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 @Output() onChange = new EventEmitter<CheckboxChangeEvent>();\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 change = (event: CheckboxChangeEvent) => {\r\n this.onChange.next(event);\r\n }\r\n}\r\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <div style=\"margin-top: 0.5rem; position: relative;\"> <!-- The margin-top is intentional: it vertically aligns the checkbox with other input controls that have greater height. -->\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 [value]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n (onChange)=\"change($event)\"\r\n />\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 { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'spiderly-colorpicker',\r\n templateUrl: './spiderly-colorpicker.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ColorPickerModule,\r\n InputTextModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyColorPickerComponent extends BaseControl implements OnInit {\r\n @Input() showInputTextField: boolean = true;\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 }); // Preventing infinite loop\r\n });\r\n\r\n if (this.control.value == null)\r\n this.placeholder = this.translocoService.translate('ColorPickerPlaceholder');\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <div style=\"display: flex; gap: 10px;\">\r\n <input\r\n *ngIf=\"control && showInputTextField\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [fluid]=\"true\"\r\n />\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 { 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 { SelectModule } from 'primeng/select';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-dropdown',\r\n templateUrl: './spiderly-dropdown.component.html',\r\n styles: [],\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n SelectModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n ]\r\n})\r\nexport class SpiderlyDropdownComponent extends BaseDropdownControl implements OnInit {\r\n @Input() isBooleanPicker: boolean = false;\r\n @Output() onChange = new EventEmitter<DropdownChangeEvent>();\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.isBooleanPicker) {\r\n this.options = [\r\n {displayName: this.translocoService.translate('True'), id: true},\r\n {displayName: this.translocoService.translate('False'), id: false},\r\n {displayName: this.translocoService.translate('Empty'), id: null},\r\n ]\r\n }\r\n\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></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 <!-- Don't support p-inputgroup -->\r\n <p-select\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=\"displayName\"\r\n optionValue=\"id\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\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 { Editor, EditorModule } from 'primeng/editor';\r\nimport { Tooltip, TooltipModule } 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 imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n EditorModule,\r\n TooltipModule,\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></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, 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\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})\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' | 'warn' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined;\r\n @Input() size: 'small' | 'large' | 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, Input } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\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})\r\nexport class SpiderlyButtonComponent extends SpiderlyButtonBaseComponent {\r\n\r\n // constructor() {\r\n // super();\r\n \r\n // }\r\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\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[size]=\"size\"\r\n[type]=\"type\"\r\n>\r\n <ng-content></ng-content>\r\n</p-button>","interface PropertySchema {\r\n type: string; // Use a string or an enum to represent the type (e.g., 'string', 'number', 'Date')\r\n nestedConstructor?: SchemaAwareConstructor<any>;\r\n isSaveBodyMainDTO?: boolean;\r\n // Add other metadata you might need (e.g., isRequired, minLength, etc.)\r\n}\r\n\r\nexport interface ClassSchema {\r\n [propertyName: string]: PropertySchema;\r\n}\r\n\r\n// A type that represents a class constructor with a static 'schema' property\r\nexport type SchemaAwareConstructor<T> = {\r\n new (...args: any[]): T;\r\n readonly schema: ClassSchema; // The static property holding the schema\r\n readonly typeName: string; // 'typeName' can't be named 'name' because of the conflict with the Function.name\r\n};\r\n\r\nexport class BaseEntity {\r\n \r\n}","import { HttpResponse } from \"@angular/common/http\";\r\nimport * as FileSaver from 'file-saver';\r\nimport 'reflect-metadata';\r\nimport { map, Observable } from 'rxjs';\r\nimport { Action, Column } from \"../components/spiderly-data-table/spiderly-data-table.component\";\r\nimport { SpiderlyTab } from \"../components/spiderly-panels/panel-header/panel-header.component\";\r\nimport { Codebook } from \"../entities/codebook\";\r\nimport { Filter } from \"../entities/filter\";\r\nimport { Namebook } from \"../entities/namebook\";\r\nimport { PrimengOption } from \"../entities/primeng-option\";\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\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\nexport 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\nexport 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\nexport 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\nexport 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\nexport 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\nexport 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\nexport 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\nexport 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\nexport function exportListToExcel(exportListToExcelObservableMethod: (filter: Filter) => Observable<any>, filter: Filter) {\r\n exportListToExcelObservableMethod(filter).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\nexport 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, code: x.id }));\r\n })\r\n );\r\n}\r\n\r\nexport 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, code: x.code }));\r\n })\r\n );\r\n}\r\n\r\nexport 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, code: x.id }));\r\n })\r\n );\r\n}\r\n\r\nexport 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, code: x.code }));\r\n })\r\n );\r\n}\r\n\r\nexport 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\nexport 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}\r\n\r\nexport function firstCharToUpper(input: string): string {\r\n return input.charAt(0).toUpperCase() + input.slice(1);\r\n}\r\n\r\nexport function splitPascalCase(input: string) {\r\n const regex = /($[a-z])|[A-Z][^A-Z]+/g;\r\n return input.match(regex).join(\" \");\r\n}\r\n\r\nexport function capitalizeFirstChar(str: string): string {\r\n if (!str) return str;\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function kebabToTitleCase(input: string): string {\r\n return input\r\n .split('-')\r\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(' ');\r\n}\r\n\r\n/**\r\n * Custom styling of the google button - https://medium.com/simform-engineering/implement-custom-google-sign-in-using-angular-16-9c93aeff6252\r\n*/\r\nexport function createFakeGoogleWrapper() { \r\n const googleLoginWrapper = document.createElement('div');\r\n googleLoginWrapper.style.display = 'none';\r\n googleLoginWrapper.classList.add('custom-google-button');\r\n\r\n document.body.appendChild(googleLoginWrapper);\r\n\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\nexport const PROPS_KEY = Symbol('props');\r\n\r\nexport function ReflectProp (target: any, propertyKey: string) {\r\n const props = Reflect.getMetadata(PROPS_KEY, target) || [];\r\n Reflect.defineMetadata(PROPS_KEY, [...props, propertyKey], target);\r\n}\r\n\r\nexport const primitiveArrayTypes = ['Namebook[]', 'number[]', 'Date[]', 'string[]'];","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { FileSelectEvent, FileUploadModule } from 'primeng/fileupload';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { SpiderlyButtonComponent } from '../../components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { getMimeTypeForFileName, isExcelFileType, isImageFileType } from '../../services/helper-functions';\r\nimport { BaseControl } from '../base-control';\r\n\r\n@Component({\r\n selector: 'spiderly-file',\r\n templateUrl: './spiderly-file.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FileUploadModule,\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; // 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 @Input() isCloudinaryFileData: boolean = true;\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 if (this.isCloudinaryFileData) {\r\n this.pushFileFromCloudinaryUrl(this.fileData);\r\n }\r\n else{\r\n const file = this.getFileFromBase64(this.fileData);\r\n this.files.push(file);\r\n }\r\n }\r\n\r\n if (!this.objectId) {\r\n this.objectId = 0;\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 // Put inside global functions if you need it\r\n async pushFileFromCloudinaryUrl(cloudinaryUrl: string) {\r\n const response = await fetch(cloudinaryUrl);\r\n\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch file from Cloudinary: ${response.statusText}`);\r\n }\r\n\r\n const blob = await response.blob();\r\n\r\n const urlParts = cloudinaryUrl.split('/');\r\n const lastPart = urlParts[urlParts.length - 1];\r\n const fileName = lastPart.split('?')[0];\r\n\r\n const file = new File([blob], fileName, { type: blob.type });\r\n\r\n this.files = [...this.files, file]; // this.files.push(file); doesn't work\r\n\r\n return file;\r\n }\r\n\r\n // Put inside global functions if you need it\r\n getFileFromBase64(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(); \r\n\r\n this.file = file;\r\n this.formData = formData;\r\n }\r\n\r\n static readonly typeName = 'SpiderlyFileSelectEvent' as const;\r\n}","<ng-container *transloco=\"let t\">\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- 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 </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 mt-3\"></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, OnInit } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent, AutoCompleteModule } 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 { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-multiautocomplete',\r\n templateUrl: './spiderly-multiautocomplete.component.html',\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n AutoCompleteModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\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","<ng-container *transloco=\"let t\">\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\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 [fluid]=\"true\"\r\n [style]=\"{'width': '100%'}\"\r\n appendTo=\"body\"\r\n optionLabel=\"displayName\"\r\n dataKey=\"id\"\r\n >\r\n </p-autocomplete>\r\n </div>\r\n</ng-container>","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 { MultiSelectModule } from 'primeng/multiselect';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-multiselect',\r\n templateUrl: './spiderly-multiselect.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MultiSelectModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyMultiSelectComponent extends BaseDropdownControl implements OnInit {\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\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=\"displayName\"\r\n optionValue=\"id\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\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</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 { InputNumberModule } from 'primeng/inputnumber';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-number',\r\n templateUrl: './spiderly-number.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n InputNumberModule,\r\n TooltipModule,\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"showLabel\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></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, 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 { PasswordModule } from 'primeng/password';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-password',\r\n templateUrl: './spiderly-password.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PasswordModule,\r\n TooltipModule,\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></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, 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 { TextareaModule } from 'primeng/textarea';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-textarea',\r\n templateUrl: './spiderly-textarea.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TextareaModule,\r\n TooltipModule,\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></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 pTextarea\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, 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 { InputTextModule } from 'primeng/inputtext';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-textbox',\r\n templateUrl: './spiderly-textbox.component.html',\r\n styleUrl: '../base-controls.scss',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n InputTextModule,\r\n TooltipModule,\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 style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <div class=\"spiderly-inputgroup\">\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 [fluid]=\"true\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"spiderly-inputgroup-addon\">\r\n <i class=\"{{buttonIcon}}\"></i>\r\n </span>\r\n </div>\r\n</div>","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({\n selector: 'return-button',\n templateUrl: './return-button.component.html',\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SpiderlyButtonComponent,\n TranslocoDirective,\n ]\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 { 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 { SpiderlyColorPickerComponent } from './spiderly-colorpicker/spiderly-colorpicker.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 SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorPickerComponent,\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 SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorPickerComponent,\r\n SpiderlyFileComponent\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyControlsModule {}","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class IsAuthorizedForSaveEvent extends BaseEntity\r\n{\r\n isAuthorizedForSave?: boolean;\r\n\r\n constructor(\r\n {\r\n isAuthorizedForSave,\r\n }:{\r\n isAuthorizedForSave?: boolean;\r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.isAuthorizedForSave = isAuthorizedForSave;\r\n }\r\n\r\n static readonly typeName = 'IsAuthorizedForSaveEvent' as const;\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class Namebook extends BaseEntity\r\n{\r\n id?: any;\r\n displayName?: string;\r\n \r\n constructor(\r\n {\r\n id,\r\n displayName,\r\n }:{\r\n id?: any;\r\n displayName?: string;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.id = id;\r\n this.displayName = displayName;\r\n }\r\n\r\n static schema = {\r\n id: {\r\n type: 'any',\r\n },\r\n displayName: {\r\n type: 'string',\r\n },\r\n } as const;\r\n\r\n static readonly typeName = 'Namebook' as const;\r\n}","import { BaseEntity } from \"./base-entity\";\r\nimport { Namebook } from \"./namebook\";\r\n\r\n\r\nexport class UserBase extends BaseEntity\r\n{\r\n static readonly typeName = 'UserBase' as const;\r\n\r\n id?: number;\r\n email?: string;\r\n\r\n constructor(\r\n {\r\n id,\r\n email,\r\n }:{\r\n id?: number;\r\n email?: string;\r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.id = id;\r\n this.email = email;\r\n }\r\n\r\n static readonly schema = {\r\n id: {\r\n type: 'number',\r\n },\r\n email: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RolePermission extends BaseEntity\r\n{\r\n static readonly typeName = 'RolePermission' as const;\r\n\r\n roleDisplayName?: string;\r\n roleId?: number;\r\n permissionDisplayName?: string;\r\n permissionId?: number;\r\n\r\n constructor(\r\n {\r\n roleDisplayName,\r\n roleId,\r\n permissionDisplayName,\r\n permissionId\r\n }:{\r\n roleDisplayName?: string;\r\n roleId?: number;\r\n permissionDisplayName?: string;\r\n permissionId?: number; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleDisplayName = roleDisplayName;\r\n this.roleId = roleId;\r\n this.permissionDisplayName = permissionDisplayName;\r\n this.permissionId = permissionId;\r\n }\r\n\r\n static readonly schema = {\r\n roleDisplayName: {\r\n type: 'string',\r\n },\r\n roleId: {\r\n type: 'number',\r\n },\r\n permissionDisplayName: {\r\n type: 'string',\r\n },\r\n permissionId: {\r\n type: 'number',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RolePermissionSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'RolePermissionSaveBody' as const;\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(); \r\n\r\n this.rolePermissionDTO = rolePermissionDTO;\r\n }\r\n\r\n static readonly schema = {\r\n rolePermissionDTO: {\r\n type: 'RolePermission',\r\n get nestedConstructor() { return RolePermission; },\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class AuthResult extends BaseEntity\r\n{\r\n static readonly typeName = 'AuthResult' as const;\r\n\r\n userId?: number;\r\n email?: string;\r\n accessToken?: string;\r\n refreshToken?: string;\r\n\r\n constructor(\r\n {\r\n userId,\r\n email,\r\n accessToken,\r\n refreshToken\r\n }:{\r\n userId?: number;\r\n email?: string;\r\n accessToken?: string;\r\n refreshToken?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.userId = userId;\r\n this.email = email;\r\n this.accessToken = accessToken;\r\n this.refreshToken = refreshToken;\r\n }\r\n\r\n static readonly schema = {\r\n userId: {\r\n type: 'number',\r\n },\r\n email: {\r\n type: 'string',\r\n },\r\n accessToken: {\r\n type: 'string',\r\n },\r\n refreshToken: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class VerificationTokenRequest extends BaseEntity\r\n{\r\n static readonly typeName = 'VerificationTokenRequest' as const;\r\n\r\n verificationCode?: string;\r\n browserId?: string;\r\n email?: string;\r\n\r\n constructor(\r\n {\r\n verificationCode,\r\n browserId,\r\n email\r\n }:{\r\n verificationCode?: string;\r\n browserId?: string;\r\n email?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.verificationCode = verificationCode;\r\n this.browserId = browserId;\r\n this.email = email;\r\n }\r\n\r\n static readonly schema = {\r\n verificationCode: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n email: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class ExternalProvider extends BaseEntity\r\n{\r\n static readonly typeName = 'ExternalProvider' as const;\r\n\r\n idToken?: string;\r\n browserId?: string;\r\n\r\n constructor(\r\n {\r\n idToken,\r\n browserId\r\n }:{\r\n idToken?: string;\r\n browserId?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.idToken = idToken;\r\n this.browserId = browserId;\r\n }\r\n\r\n static readonly schema = {\r\n idToken: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class UserRole extends BaseEntity\r\n{\r\n static readonly typeName = 'UserRole' as const;\r\n\r\n roleId?: number;\r\n userId?: number;\r\n\r\n constructor(\r\n {\r\n roleId,\r\n userId\r\n }:{\r\n roleId?: number;\r\n userId?: number; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleId = roleId;\r\n this.userId = userId;\r\n }\r\n\r\n static readonly schema = {\r\n roleId: {\r\n type: 'number',\r\n },\r\n userId: {\r\n type: 'number',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class UserRoleSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'UserRoleSaveBody' as const;\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(); \r\n\r\n this.userRoleDTO = userRoleDTO;\r\n }\r\n\r\n static readonly schema = {\r\n userRoleDTO: {\r\n type: 'UserRole',\r\n get nestedConstructor() { return UserRole; },\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class LoginVerificationToken extends BaseEntity\r\n{\r\n static readonly typeName = 'LoginVerificationToken' as const;\r\n\r\n email?: string;\r\n userId?: number;\r\n browserId?: string;\r\n expireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n userId,\r\n browserId,\r\n expireAt\r\n }:{\r\n email?: string;\r\n userId?: number;\r\n browserId?: string;\r\n expireAt?: Date; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.email = email;\r\n this.userId = userId;\r\n this.browserId = browserId;\r\n this.expireAt = expireAt;\r\n }\r\n\r\n static readonly schema = {\r\n email: {\r\n type: 'string',\r\n },\r\n userId: {\r\n type: 'number',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n expireAt: {\r\n type: 'Date',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class Login extends BaseEntity\r\n{\r\n static readonly typeName = 'Login' as const;\r\n\r\n email?: string;\r\n browserId?: string;\r\n\r\n constructor(\r\n {\r\n email,\r\n browserId\r\n }:{\r\n email?: string;\r\n browserId?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.email = email;\r\n this.browserId = browserId;\r\n }\r\n\r\n static readonly schema = {\r\n email: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RefreshTokenRequest extends BaseEntity\r\n{\r\n static readonly typeName = 'RefreshTokenRequest' as const;\r\n\r\n refreshToken?: string;\r\n browserId?: string;\r\n\r\n constructor(\r\n {\r\n refreshToken,\r\n browserId\r\n }:{\r\n refreshToken?: string;\r\n browserId?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.refreshToken = refreshToken;\r\n this.browserId = browserId;\r\n }\r\n\r\n static readonly schema = {\r\n refreshToken: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class Role extends BaseEntity\r\n{\r\n static readonly typeName = 'Role' as const;\r\n\r\n name?: string;\r\n description?: string;\r\n version?: number;\r\n id?: number;\r\n createdAt?: Date;\r\n modifiedAt?: Date;\r\n\r\n constructor(\r\n {\r\n name,\r\n description,\r\n version,\r\n id,\r\n createdAt,\r\n modifiedAt\r\n }:{\r\n name?: string;\r\n description?: string;\r\n version?: number;\r\n id?: number;\r\n createdAt?: Date;\r\n modifiedAt?: Date; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.name = name;\r\n this.description = description;\r\n this.version = version;\r\n this.id = id;\r\n this.createdAt = createdAt;\r\n this.modifiedAt = modifiedAt;\r\n }\r\n\r\n static readonly schema = {\r\n name: {\r\n type: 'string',\r\n },\r\n description: {\r\n type: 'string',\r\n },\r\n version: {\r\n type: 'number',\r\n },\r\n id: {\r\n type: 'number',\r\n },\r\n createdAt: {\r\n type: 'Date',\r\n },\r\n modifiedAt: {\r\n type: 'Date',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RoleMainUIForm extends BaseEntity\r\n{\r\n static readonly typeName = 'RoleMainUIForm' as const;\r\n\r\n roleDTO?: Role;\r\n usersNamebookDTOList?: Namebook[];\r\n permissionsIds?: number[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n usersNamebookDTOList = [],\r\n permissionsIds = []\r\n }:{\r\n roleDTO?: Role;\r\n usersNamebookDTOList?: Namebook[];\r\n permissionsIds?: number[]; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleDTO = roleDTO;\r\n this.usersNamebookDTOList = usersNamebookDTOList;\r\n this.permissionsIds = permissionsIds;\r\n }\r\n\r\n static readonly schema = {\r\n roleDTO: {\r\n type: 'Role',\r\n get nestedConstructor() { return Role; },\r\n isMainDTOForMainUIFormDTO: true,\r\n },\r\n usersNamebookDTOList: {\r\n type: 'Namebook[]',\r\n get nestedConstructor() { return Namebook; },\r\n },\r\n permissionsIds: {\r\n type: 'number[]',\r\n },\r\n } as const;\r\n}\r\n\r\nexport class RoleSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'RoleSaveBody' as const;\r\n\r\n roleDTO?: Role;\r\n selectedPermissionsIds?: number[];\r\n selectedUsersIds?: number[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n selectedPermissionsIds = [],\r\n selectedUsersIds = []\r\n }:{\r\n roleDTO?: Role;\r\n selectedPermissionsIds?: number[];\r\n selectedUsersIds?: number[]; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleDTO = roleDTO;\r\n this.selectedPermissionsIds = selectedPermissionsIds;\r\n this.selectedUsersIds = selectedUsersIds;\r\n }\r\n\r\n static readonly schema = {\r\n roleDTO: {\r\n type: 'Role',\r\n get nestedConstructor() { return Role; },\r\n isSaveBodyMainDTO: true,\r\n },\r\n selectedPermissionsIds: {\r\n type: 'number[]',\r\n },\r\n selectedUsersIds: {\r\n type: 'number[]',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class Permission extends BaseEntity\r\n{\r\n static readonly typeName = 'Permission' as const;\r\n\r\n name?: string;\r\n nameLatin?: string;\r\n description?: string;\r\n descriptionLatin?: string;\r\n code?: string;\r\n id?: number;\r\n\r\n constructor(\r\n {\r\n name,\r\n nameLatin,\r\n description,\r\n descriptionLatin,\r\n code,\r\n id\r\n }:{\r\n name?: string;\r\n nameLatin?: string;\r\n description?: string;\r\n descriptionLatin?: string;\r\n code?: string;\r\n id?: number; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.name = name;\r\n this.nameLatin = nameLatin;\r\n this.description = description;\r\n this.descriptionLatin = descriptionLatin;\r\n this.code = code;\r\n this.id = id;\r\n }\r\n\r\n static readonly schema = {\r\n name: {\r\n type: 'string',\r\n },\r\n nameLatin: {\r\n type: 'string',\r\n },\r\n description: {\r\n type: 'string',\r\n },\r\n descriptionLatin: {\r\n type: 'string',\r\n },\r\n code: {\r\n type: 'string',\r\n },\r\n id: {\r\n type: 'number',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class PermissionSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'PermissionSaveBody' as const;\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(); \r\n\r\n this.permissionDTO = permissionDTO;\r\n }\r\n\r\n static readonly schema = {\r\n permissionDTO: {\r\n type: 'Permission',\r\n get nestedConstructor() { return Permission; },\r\n },\r\n } as const;\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n@Component({\n selector: 'card-skeleton',\n templateUrl: './card-skeleton.component.html',\n styles: [],\n imports: [SkeletonModule]\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 { 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 styleUrl: './panel-body.component.scss',\r\n standalone: false\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}","<!-- 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 style=\"overflow: auto;\">\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 standalone: false\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 standalone: false\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: 8px;\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \r\n <div [style]=\"(showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : '')\">{{title}}</div>\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: '8px',\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: 21px' : 'font-size: 16px;'\"></i> \r\n <div [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\">{{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 styleUrl: './spiderly-panel.component.scss',\r\n standalone: false\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() toggler: 'header' | 'icon' | null = 'icon';\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 'panel-header-cursor-pointer': toggler === 'header' && toggleable\r\n}\"\r\n[toggleable]=\"toggleable\"\r\n[toggler]=\"toggler\"\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>\r\n <ng-content select=\"panel-header\"></ng-content>\r\n <ng-content select=\"[panelHeader]\"></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 <!-- https://github.com/primefaces/primeng/issues/13934 -->\r\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\" [tabindex]=\"undefined\"></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 { 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 { MenuModule } from 'primeng/menu';\r\nimport { PanelModule } from 'primeng/panel';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MenuModule,\r\n PanelModule\r\n ],\r\n exports: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n ],\r\n declarations: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyPanelsModule {}","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\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 logoPath = 'assets/images/logo/logo.svg';\r\n\r\n constructor(\r\n ) {\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 { Filter } from '../entities/filter';\r\nimport { Login, RefreshTokenRequest, AuthResult, Role, UserBase, ExternalProvider, VerificationTokenRequest, RoleSaveBody, RoleMainUIForm } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { PaginatedResult } from '../entities/paginated-result';\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 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 getCurrentUserBase = (): Observable<UserBase> => { \r\n return this.http.get<UserBase>(`${this.config.apiUrl}/Security/GetCurrentUserBase`, 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 getPaginatedRoleList = (dto: Filter): Observable<PaginatedResult> => { \r\n return this.http.post<PaginatedResult>(`${this.config.apiUrl}/Security/GetPaginatedRoleList`, dto, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n exportRoleListToExcel = (dto: Filter): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/ExportRoleListToExcel`, 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","// When we call it, inside the console, it will show SpiderlyError: ...\r\nexport class SpiderlyError extends Error {\r\n constructor(message: string) {\r\n super(message);\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, 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 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 { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../components/spiderly-form-control/spiderly-form-control';\r\nimport { BaseEntity, SchemaAwareConstructor } from '../entities/base-entity';\r\nimport { SpiderlyError } from '../errors/spiderly-error';\r\nimport { capitalizeFirstChar } from './helper-functions';\r\nimport { SpiderlyMessageService } from './spiderly-message.service';\r\nimport { TranslateLabelsAbstractService } from './translate-labels-abstract.service';\r\nimport { ValidatorAbstractService } from './validator-abstract.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 initFormGroup = <T extends BaseEntity>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n targetClass: SchemaAwareConstructor<T>,\r\n initialValues?: T, \r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n if (!formGroup)\r\n throw new SpiderlyError('You need to instantiate the form group.')\r\n\r\n if (!targetClass)\r\n throw new SpiderlyError('You need to pass targetClass.')\r\n\r\n if (!initialValues)\r\n initialValues = {} as T;\r\n\r\n Object.keys(targetClass.schema).forEach((formControlName) => {\r\n const propSchema = targetClass.schema[formControlName];\r\n let propInitialValue = initialValues[formControlName];\r\n \r\n const existingControl = formGroup.get(formControlName);\r\n\r\n if (\r\n propSchema.type.endsWith('[]') &&\r\n propSchema.nestedConstructor &&\r\n propSchema.type !== 'Namebook[]'\r\n ) {\r\n if (existingControl instanceof SpiderlyFormArray) {\r\n this.initFormArray(existingControl, propSchema.nestedConstructor, propInitialValue);\r\n }\r\n else {\r\n const control = new SpiderlyFormArray<T>([], this.translocoService, this);\r\n this.initFormArray(control, propSchema.nestedConstructor, propInitialValue);\r\n \r\n control.label = formControlName;\r\n control.labelForDisplay = this.getTranslatedLabel(formControlName);\r\n \r\n formGroup.setControl(formControlName, control);\r\n }\r\n }\r\n else if (\r\n propSchema.nestedConstructor &&\r\n propSchema.type !== 'Namebook[]'\r\n ) {\r\n if (existingControl instanceof SpiderlyFormGroup) {\r\n this.initFormGroup(existingControl, propSchema.nestedConstructor, propInitialValue)\r\n }\r\n else{\r\n const control = new SpiderlyFormGroup({});\r\n this.initFormGroup(control, propSchema.nestedConstructor, propInitialValue)\r\n formGroup.setControl(formControlName, control);\r\n }\r\n }\r\n else {\r\n // HACK: Because on the backend id type is not nullable on generated DTOs, we need to do this, it's ugly hack and we should make it better.\r\n if (formControlName === 'id' && !propInitialValue) {\r\n propInitialValue = 0;\r\n }\r\n\r\n if (existingControl instanceof SpiderlyFormControl) {\r\n existingControl.setValue(propInitialValue); \r\n }\r\n else {\r\n let control: SpiderlyFormControl;\r\n\r\n if (updateOnChangeControls?.includes(formControlName as keyof T) ||\r\n (formControlName.endsWith('Id') && formControlName.length > 2) ||\r\n propSchema.type === 'Date' ||\r\n propSchema.type === 'Namebook[]'\r\n ){\r\n control = new SpiderlyFormControl(propInitialValue, { updateOn: 'change' });\r\n }\r\n else{\r\n control = new SpiderlyFormControl(propInitialValue, { updateOn: 'blur' });\r\n }\r\n \r\n control.label = formControlName;\r\n control.labelForDisplay = this.getTranslatedLabel(formControlName);\r\n control.parentClassName = targetClass.typeName;\r\n \r\n this.validatorService.setValidator(control, targetClass.typeName);\r\n\r\n formGroup.setControl(formControlName, control);\r\n }\r\n }\r\n });\r\n\r\n formGroup.targetClass = targetClass;\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 addNewFormGroupToFormArray<T extends BaseEntity>(\r\n formArray: SpiderlyFormArray<T>, \r\n targetClass: SchemaAwareConstructor<T>,\r\n initialValues: T,\r\n index: number,\r\n ) : SpiderlyFormGroup {\r\n let helperFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, targetClass, initialValues);\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 removeFormControlFromTheFormArray(formArray: SpiderlyFormArray, index: number) {\r\n if(index == null)\r\n throw new SpiderlyError('Can not pass null index.');\r\n\r\n formArray.removeAt(index);\r\n }\r\n\r\n initFormArray<T extends BaseEntity>(\r\n formArray: SpiderlyFormArray<T>,\r\n targetClass: SchemaAwareConstructor<T>,\r\n initialValues: T[] = [],\r\n )\r\n {\r\n if (!formArray)\r\n throw new SpiderlyError('You must pass a FormArray instance to be initialized or updated.');\r\n\r\n if (!targetClass)\r\n throw new SpiderlyError('You did not initialize targetClass');\r\n\r\n // formArray.required = required;\r\n formArray.formGroupInitialValues = {}; // When we need we can pass formGroupInitialValues to this method instead of assigning it to empty object\r\n formArray.targetClass = targetClass;\r\n\r\n initialValues.forEach((model, index) => {\r\n const existingControl = formArray.at(index);\r\n \r\n if (existingControl instanceof SpiderlyFormGroup) {\r\n this.initFormGroup(existingControl, targetClass, model);\r\n }\r\n else {\r\n let helperFormGroup: SpiderlyFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, targetClass, model);\r\n formArray.push(helperFormGroup);\r\n }\r\n });\r\n\r\n return formArray;\r\n }\r\n\r\n //#region Helpers\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 getSaveBodyMainDTOKey = (saveBodyClass: SchemaAwareConstructor<any>) => {\r\n const schema = saveBodyClass.schema;\r\n return Object.keys(schema).find(k => schema[k].isSaveBodyMainDTO === true);\r\n }\r\n\r\n mapMainUIFormToSaveBody = <T extends BaseEntity>(mainUIFormClass: SchemaAwareConstructor<T>, mainUIFormValues: T) => {\r\n let saveBody = {};\r\n\r\n Object.keys(mainUIFormClass.schema).forEach(propName => {\r\n const property = mainUIFormClass.schema[propName];\r\n const value = mainUIFormValues[propName];\r\n \r\n // Handle ordered one-to-many (e.g., \"orderedItemsMainUIFormDTO\" -> \"orderedItemsSaveBodyDTO\")\r\n if (propName.startsWith('ordered') && propName.endsWith('MainUIFormDTO')) {\r\n const newKey = propName.replace('MainUIFormDTO', 'SaveBodyDTO');\r\n // Recursively map nested DTOs\r\n const relatedEntity = property.nestedConstructor;\r\n saveBody[newKey] = value?.map(item => \r\n this.mapMainUIFormToSaveBody(relatedEntity, item)\r\n ) ?? [];\r\n }\r\n // Handle multi-select (e.g., \"itemsIds\" -> \"selectedItemsIds\")\r\n else if (propName.endsWith('Ids')) {\r\n saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];\r\n }\r\n // Handle multi-autocomplete (e.g., \"itemsNamebookDTOList\" -> \"selectedItemsIds\")\r\n else if (propName.endsWith('NamebookDTOList')) {\r\n saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];\r\n }\r\n // Handle the main DTO object (e.g., \"entityDTO\")\r\n else{\r\n saveBody[propName] = value;\r\n }\r\n });\r\n\r\n return saveBody;\r\n }\r\n\r\n isControlValid(\r\n control: SpiderlyFormControl | SpiderlyFormGroup | SpiderlyFormArray, \r\n controlNamesFromHtml?: string[]\r\n ): boolean {\r\n let invalid = false;\r\n\r\n if (control instanceof SpiderlyFormControl) {\r\n if (\r\n control.invalid &&\r\n (controlNamesFromHtml == null || controlNamesFromHtml?.includes(control.label))\r\n ) {\r\n control.markAsDirty();\r\n invalid = true;\r\n }\r\n }\r\n else if (control instanceof SpiderlyFormGroup) {\r\n Object.keys(control.controls).forEach(key => {\r\n const nestedControl = control.controls[key];\r\n if (!this.isControlValid(nestedControl, control.controlNamesFromHtml)) {\r\n invalid = true;\r\n }\r\n });\r\n }\r\n else if (control instanceof SpiderlyFormArray){\r\n control.controls.forEach((nestedControl: SpiderlyFormControl | SpiderlyFormGroup | SpiderlyFormArray) => {\r\n if (!this.isControlValid(nestedControl)) {\r\n invalid = true;\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}\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();\r\n\r\n this.image = image;\r\n this.companyName = companyName;\r\n }\r\n\r\n static readonly typeName = 'InitCompanyAuthDialogDetails' as const;\r\n}","import { Inject, Injectable, OnDestroy, PLATFORM_ID } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, 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, RefreshTokenRequest, UserBase } 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\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthBaseService implements OnDestroy {\r\n private readonly apiUrl: string = 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<UserBase | 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 @Inject(PLATFORM_ID) protected platformId: Object\r\n ) {\r\n if (isPlatformBrowser(platformId)) {\r\n window.addEventListener('storage', this.storageEventListener);\r\n }\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(authResult => {\r\n this.onAfterLoginExternal();\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.getCurrentUserBase().subscribe((user: UserBase) => {\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 onAfterLoginExternal = () => {\r\n this.navigateToDashboard();\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 })\r\n )\r\n .subscribe();\r\n }\r\n\r\n onAfterLogout = () => {\r\n this._currentUserPermissionCodes.next(null);\r\n this.router.navigate([this.config.loginSlug]);\r\n }\r\n\r\n refreshToken(): Observable<AuthResult> {\r\n const 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 const body = 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(): boolean {\r\n const expired = this.getTokenRemainingTime() < 5000;\r\n \r\n return 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 if (isPlatformBrowser(this.platformId)) {\r\n return localStorage.getItem(this.config.accessTokenKey);\r\n }\r\n\r\n return null;\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 initCompanyAuthDialogDetails = (): Observable<InitCompanyAuthDialogDetails> => {\r\n return of(\r\n new InitCompanyAuthDialogDetails ({\r\n image: this.config.logoPath, \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 if (isPlatformBrowser(this.platformId)) {\r\n window.removeEventListener('storage', this.storageEventListener.bind(this));\r\n }\r\n \r\n this.onAfterNgOnDestroy();\r\n }\r\n\r\n onAfterNgOnDestroy = () => {};\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { firstValueFrom, forkJoin } from 'rxjs';\r\nimport { SpiderlyMultiAutocompleteComponent } from '../../controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nimport { SpiderlyMultiSelectComponent } from '../../controls/spiderly-multiselect/spiderly-multiselect.component';\r\nimport { SpiderlyTextareaComponent } from '../../controls/spiderly-textarea/spiderly-textarea.component';\r\nimport { SpiderlyTextboxComponent } from '../../controls/spiderly-textbox/spiderly-textbox.component';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { IsAuthorizedForSaveEvent } from '../../entities/is-authorized-for-save-event';\r\nimport { LastMenuIconIndexClicked } from '../../entities/last-menu-icon-index-clicked';\r\nimport { Namebook } from '../../entities/namebook';\r\nimport { RoleMainUIForm, RoleSaveBody } from '../../entities/security-entities';\r\nimport { SpiderlyButton } from '../../entities/spiderly-button';\r\nimport { ApiSecurityService } from '../../services/api.service.security';\r\nimport { AuthBaseService } from '../../services/auth-base.service';\r\nimport { BaseFormService } from '../../services/base-form.service';\r\nimport { CardSkeletonComponent } from '../card-skeleton/card-skeleton.component';\r\nimport { SpiderlyReturnButtonComponent } from '../spiderly-buttons/return-button/return-button.component';\r\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { SpiderlyFormArray, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyPanelsModule } from '../spiderly-panels/spiderly-panels.module';\r\n\r\n@Component({\r\n selector: 'role-base-details',\r\n templateUrl: 'role-base-details.component.html',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\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() onAfterFormGroupInit = new EventEmitter<void>();\r\n @Input() getCrudMenuForOrderedData: (formArray: SpiderlyFormArray, modelConstructor: BaseEntity, lastMenuIconIndexClicked: LastMenuIconIndexClicked, adjustFormArrayManually: boolean) => MenuItem[];\r\n @Input() parentFormGroup: SpiderlyFormGroup<RoleMainUIForm>;\r\n @Input() additionalButtons: SpiderlyButton[] = [];\r\n @Input() panelTitle: string;\r\n @Input() showBigPanelTitle: boolean = true;\r\n @Input() panelIcon: string;\r\n\r\n @Input() handleAdditionalSaveAuthorization: () => Promise<boolean> = () => Promise.resolve(true);\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\r\n usersForRoleOptions: Namebook[];\r\n permissionsForRoleOptions: Namebook[];\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.parentFormGroup.initSaveBody = () => { \r\n let saveBody = new RoleSaveBody();\r\n saveBody = this.baseFormService.mapMainUIFormToSaveBody(RoleMainUIForm, this.parentFormGroup.getRawValue());\r\n return saveBody;\r\n }\r\n\r\n this.parentFormGroup.saveObservableMethod = this.apiService.saveRole;\r\n\r\n this.route.params.subscribe(async (params) => {\r\n this.modelId = params['id'];\r\n\r\n 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(async ({ mainUIFormDTO }) => {\r\n this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm, mainUIFormDTO);\r\n await this.handleAuthorizationForSave();\r\n this.loading = false;\r\n this.onAfterFormGroupInit.next();\r\n });\r\n }\r\n else{\r\n this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm);\r\n await this.handleAuthorizationForSave();\r\n this.loading = false;\r\n this.onAfterFormGroupInit.next();\r\n }\r\n });\r\n }\r\n\r\n handleAuthorizationForSave = async () => {\r\n const currentUserPermissionCodes = await firstValueFrom(this.authService.currentUserPermissionCodes$);\r\n const isAdditionallyAuthorizedForSave = await this.handleAdditionalSaveAuthorization(); \r\n\r\n this.isAuthorizedForSave =\r\n (currentUserPermissionCodes.includes('InsertRole') && this.modelId <= 0) || \r\n (currentUserPermissionCodes.includes('UpdateRole') && this.modelId > 0) ||\r\n isAdditionallyAuthorizedForSave;\r\n\r\n if (this.isAuthorizedForSave) { \r\n this.parentFormGroup.enable();\r\n }\r\n else{\r\n this.parentFormGroup.disable();\r\n }\r\n\r\n this.onIsAuthorizedForSaveChange.next(\r\n new IsAuthorizedForSaveEvent({\r\n isAuthorizedForSave: this.isAuthorizedForSave,\r\n })\r\n );\r\n };\r\n\r\n searchUsersForRole(event: AutoCompleteCompleteEvent) {\r\n this.apiService.getUsersAutocompleteListForRole(50, event?.query ?? '').subscribe(no => {\r\n this.usersForRoleOptions = no;\r\n });\r\n }\r\n\r\n save(){\r\n this.onSave.next();\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header [title]=\"panelTitle\" [showBigTitle]=\"showBigPanelTitle\" [icon]=\"panelIcon\"></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]=\"parentFormGroup.controls.roleDTO.getControl('name')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"parentFormGroup.controls.roleDTO.getControl('description')\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"parentFormGroup.controls.usersNamebookDTOList\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"parentFormGroup.controls.permissionsIds\" [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 { HttpClient } from '@angular/common/http';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { BaseEntity, SchemaAwareConstructor } from '../../entities/base-entity';\r\nimport { SpiderlyError } from '../../errors/spiderly-error';\r\nimport { getParentUrl } from '../../services/helper-functions';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { BaseFormService } from './../../services/base-form.service';\r\n\r\n@Component({\r\n selector: 'base-form',\r\n template: '',\r\n styles: [],\r\n standalone: false\r\n})\r\nexport class BaseFormCopy<T extends BaseEntity = any> implements OnInit { \r\n parentFormGroup = new SpiderlyFormGroup<T>({} as any);\r\n mainUIFormClass: SchemaAwareConstructor<any>;\r\n saveBodyClass: SchemaAwareConstructor<any>;\r\n saveBody: any;\r\n successfulSaveToastDescription: string = this.translocoService.translate('SuccessfulSaveToastDescription');\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\r\n //#region Model\r\n\r\n // onSave method is here only because of the hooks, we should move everything except them to the BaseFromService\r\n onSave = (reroute: boolean = true) => {\r\n if (!this.saveBodyClass)\r\n throw new SpiderlyError('You did not initialize saveBodyClass');\r\n\r\n if (!this.mainUIFormClass)\r\n throw new SpiderlyError('You did not initialize mainUIFormClass');\r\n\r\n this.saveBody = this.parentFormGroup.initSaveBody();\r\n \r\n this.onBeforeSave(this.saveBody);\r\n\r\n this.saveBody = this.saveBody ?? this.parentFormGroup.getRawValue();\r\n\r\n const isValid = this.baseFormService.isControlValid(this.parentFormGroup);\r\n\r\n if(isValid){\r\n this.parentFormGroup.saveObservableMethod(this.saveBody).subscribe(res => {\r\n this.messageService.successMessage(this.successfulSaveToastDescription);\r\n\r\n this.baseFormService.initFormGroup(this.parentFormGroup, this.mainUIFormClass, res);\r\n\r\n if (reroute) {\r\n const saveBodyMainDTOKey = this.baseFormService.getSaveBodyMainDTOKey(this.saveBodyClass);\r\n const savedObjectId = res[saveBodyMainDTOKey]?.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 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 //#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 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 //#endregion\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, KeyValueDiffers, OnInit, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { VerificationTokenRequest } from '../../../entities/security-entities';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyPanelsModule } from '../../spiderly-panels/spiderly-panels.module';\r\n\r\n@Component({\r\n selector: 'verification-wrapper',\r\n templateUrl: './verification-wrapper.component.html',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpiderlyControlsModule,\r\n SpiderlyPanelsModule,\r\n ButtonModule,\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.baseFormService.initFormGroup(this.verificationTokenRequestFormGroup, VerificationTokenRequest, model, ['verificationCode']);\r\n }\r\n\r\n codeSubmit(){\r\n let isValid: boolean = this.baseFormService.isControlValid(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 style=\"font-size: 17.5px\">{{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]=\"verificationTokenRequestFormGroup.getControl('verificationCode')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\" type=\"submit\"></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({\n selector: 'login-verification',\n templateUrl: './login-verification.component.html',\n imports: [\n VerificationWrapperComponent\n ]\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 { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\r\nimport { createFakeGoogleWrapper } from \"../../../services/helper-functions\";\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 SpiderlyButtonComponent\r\n ]\r\n})\r\nexport class GoogleButtonComponent {\r\n @Input() label: string;\r\n @Output() loginWithGoogle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n handleGoogleLogin() {\r\n this.loginWithGoogle.emit(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>\r\n <spiderly-button (onClick)=\"handleGoogleLogin()\" [label]=\"label\" [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})\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(--p-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\" title=\"{{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)\" [label]=\"t('ContinueWithGoogle')\"></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 { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { Login } from '../../../entities/security-entities';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { AuthComponent } from '../partials/auth.component';\r\nimport { LoginVerificationComponent } from '../partials/login-verification.component';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AuthComponent,\r\n SpiderlyControlsModule,\r\n LoginVerificationComponent,\r\n TranslocoDirective,\r\n ]\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\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.baseFormService.initFormGroup(this.loginFormGroup, Login, model, ['email']);\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.isControlValid(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]=\"loginFormGroup\" 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]=\"loginFormGroup.getControl('email')\"></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('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\" type=\"submit\"></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 { 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\n\r\n@Component({\r\n selector: 'index-card',\r\n templateUrl: './index-card.component.html',\r\n imports: [\r\n CommonModule,\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 ngOnInit(){\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\n\r\n@Component({\r\n selector: 'info-card',\r\n templateUrl: './info-card.component.html',\r\n styleUrl: './info-card.component.scss',\r\n imports: [\r\n CommonModule,\r\n SpiderlyPanelsModule\r\n ]\r\n})\r\nexport class InfoCardComponent {\r\n @Input() header = '';\r\n @Input() showSmallIcon = true;\r\n @Input() icon = 'pi pi-info-circle';\r\n @Input() textColor = '';\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 info-card\">\r\n <div class=\"info-card__content\">\r\n <div>\r\n <div class=\"info-card__header\">\r\n <i *ngIf=\"showSmallIcon\" class=\"{{icon}} info-card__icon\"></i>\r\n {{header}}\r\n </div>\r\n <div class=\"info-card__body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"info-card__background-icon\">\r\n <i class=\"{{icon}}\"></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\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n selector: 'not-found',\r\n templateUrl: './not-found.component.html',\r\n imports: [\r\n RouterModule,\r\n ButtonModule,\r\n ]\r\n})\r\nexport class NotFoundComponent { \r\n companyName = this.config.companyName;\r\n logoPath: string = this.config.logoPath;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\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(--p-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\">\r\n <img \r\n [src]=\"logoPath\" \r\n alt=\"{{companyName}} Logo\" \r\n title=\"{{companyName}} Logo\" \r\n height=\"60\"\r\n class=\"mb-4\"\r\n >\r\n </div>\r\n <h1 class=\"mb-4\">\r\n <div class=\"font-bold text-5xl lg:text-6xl spiderly-gradient-title\">404</div>\r\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\r\n </h1>\r\n <div class=\"text-600 text-lg mb-5\">\r\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\r\n </div>\r\n <div>\r\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\r\n </div>\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})\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>","export enum MatchModeCodes\r\n{\r\n StartsWith,\r\n Contains,\r\n Equals,\r\n LessThan,\r\n GreaterThan,\r\n In,\r\n}","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 { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\n\r\n@Component({\r\n selector: 'spiderly-delete-confirmation',\r\n templateUrl: './spiderly-delete-confirmation.component.html',\r\n styles: [],\r\n imports: [\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n ConfirmDialogModule,\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: 12px; justify-content: right; margin-top: 28px;\">\r\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancel')\" 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 { CommonModule, formatDate } from '@angular/common';\r\nimport { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { Table, TableFilterEvent, TableLazyLoadEvent, TableModule } from 'primeng/table';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { firstValueFrom, Observable } from 'rxjs';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { Filter } from '../../entities/filter';\r\nimport { LazyLoadSelectedIdsResult } from '../../entities/lazy-load-selected-ids-result';\r\nimport { PaginatedResult } from '../../entities/paginated-result';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\r\nimport { exportListToExcel, getHtmlImgDisplayString64 } from '../../services/helper-functions';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { SpiderlyDeleteConfirmationComponent } from '../spiderly-delete-dialog/spiderly-delete-confirmation.component';\r\nimport { SpiderlyFormControl } from '../spiderly-form-control/spiderly-form-control';\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 imports: [\r\n FormsModule,\r\n CommonModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n DatePickerModule,\r\n CheckboxModule,\r\n TooltipModule,\r\n ]\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[]; // Pass only when hasLazyLoad === false\r\n @Input() rows: number = 10;\r\n @Input() cols: Column[];\r\n @Input() showPaginator: boolean = true; // Pass only when hasLazyLoad === false\r\n @Input() showCardWrapper: boolean = false;\r\n @Input() readonly: boolean = false;\r\n @Input() idField = 'id';\r\n totalRecords: number;\r\n @Output() onTotalRecordsChange: EventEmitter<number> = new EventEmitter();\r\n \r\n @Input() getPaginatedListObservableMethod: (tableFilter: Filter) => Observable<PaginatedResult>;\r\n @Input() exportListToExcelObservableMethod: (tableFilter: Filter) => 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[] = []; // Only for showing checkboxes, we will not send this to the backend\r\n currentPageSelectedItemsFromDb: number[] = []; // 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<Filter> = new EventEmitter();\r\n rowsSelectedNumber: number = 0;\r\n isAllSelected: boolean = null;\r\n fakeIsAllSelected: boolean = false; // 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: Filter) => 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[]; // 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[] = []; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getAlreadySelectedItemIds: (additionalIndexes?: any) => number[]; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n selectedItems: any[] = []; // Pass only when hasLazyLoad === false\r\n @Input() getAlreadySelectedItems: (additionalIndexes?: any) => any[]; // 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: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\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: Filter = event as unknown as Filter;\r\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getPaginatedListObservableMethod(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[this.idField])];\r\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\r\n this.fakeSelectedItems = [...idsToInsert]; // 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]; // 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); // 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): any {\r\n switch (filterType) {\r\n case 'text':\r\n return MatchModeCodes.Contains;\r\n case 'date':\r\n return MatchModeCodes.Equals;\r\n case 'multiselect':\r\n return MatchModeCodes.In;\r\n case 'boolean':\r\n return MatchModeCodes.Equals;\r\n case 'numeric':\r\n return MatchModeCodes.Equals\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';\r\n case 'Delete':\r\n return 'pi pi-trash';\r\n default:\r\n return `${action.icon} ${action.styleClass}`;\r\n }\r\n }\r\n\r\n getStyleForAction(action: Action): string{\r\n switch(action.field){\r\n case 'Delete':\r\n return 'cursor: pointer; color: var(--p-button-danger-background);';\r\n default:\r\n return `cursor: pointer; ${action.style}`;\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[this.idField]);\r\n case 'Delete':\r\n return this.deleteObject(rowData[this.idField]);\r\n default:\r\n return action.onClick(rowData[this.idField]);\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: make decimal pipe\r\n return rowData[col.field];\r\n case 'blob':\r\n return getHtmlImgDisplayString64(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 filter: Filter = this.lastLazyLoadEvent as unknown as Filter;\r\n filter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n exportListToExcel(this.exportListToExcelObservableMethod, filter);\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[this.idField])];\r\n this.selectedItemIds = [...this.items.map(x => x[this.idField])]\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); // 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); // Splice is mutating the array\r\n }\r\n if (fakeIndex !== -1) {\r\n this.fakeSelectedItems.splice(fakeIndex, 1); // Splice is mutating the array\r\n }\r\n if (nonLazyLoadIndex !== -1) {\r\n this.selectedItemIds.splice(nonLazyLoadIndex, 1); // 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 // 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 styleClass?: 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 styleClass,\r\n onClick,\r\n }:{\r\n name?: string;\r\n field?: string;\r\n icon?: string;\r\n style?: string;\r\n styleClass?: 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.styleClass = styleClass;\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; // Made specificaly for multiautocomplete, maybe for something more in the future\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\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; // 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\" [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}}\" style=\"font-size: 20px;\"></i>\r\n <div style=\"margin: 0px; font-size: 17.5px;\">{{tableTitle}}</div>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" 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\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" 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-columnFilter *ngIf=\"col.filterType != null && col.filterType !== 'blob'\" [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-template *ngIf=\"isDropOrMulti(col.filterType)\" 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=\"code\" [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-template *ngIf=\"col.filterType == 'date'\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-datepicker \r\n [ngModel]=\"value\" \r\n [showTime]=\"col.showTime\"\r\n (onSelect)=\"filter($event)\"\r\n ></p-datepicker>\r\n </ng-template>\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[idField], rowData.index)\" [ngModel]=\"isRowSelected(rowData[idField])\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [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)\" [style]=\"getStyleForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"col.filterType === 'blob'\">\r\n <img width=\"45\" [src]=\"getRowData(rowData, col)\" alt=\"\">\r\n </ng-container>\r\n <ng-container *ngIf=\"col.filterType !== 'blob'\">\r\n {{getRowData(rowData, col)}}\r\n </ng-container>\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 { Component, ContentChild, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { Table, TableFilterEvent, TableLazyLoadEvent, TableModule } from 'primeng/table';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { PaginatedResult } from '../../entities/paginated-result';\r\nimport { Filter } from '../../entities/filter';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\r\nimport { Action } from '../spiderly-data-table/spiderly-data-table.component';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\n\r\n@Component({\r\n selector: 'spiderly-data-view',\r\n templateUrl: './spiderly-data-view.component.html',\r\n styleUrl: 'spiderly-data-view.component.scss',\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n CheckboxModule,\r\n TooltipModule,\r\n DatePickerModule,\r\n InputTextModule,\r\n InputNumberModule,\r\n SelectModule,\r\n ]\r\n})\r\nexport class SpiderlyDataViewComponent<T> implements OnInit {\r\n @ViewChild('dt') table: Table;\r\n /**\r\n * List of items in the table.\r\n * Should be provided only when `hasLazyLoad === false`.\r\n */\r\n @Input() items: T[];\r\n @Input() rows: number = 10;\r\n @Input() filters: DataViewFilter<T>[] = [];\r\n totalRecords: number;\r\n @Output() onLazyLoad: EventEmitter<Filter> = new EventEmitter();\r\n\r\n @Input() showCardWrapper: boolean = true;\r\n /**\r\n * Whether to display additional data on the right side of the paginator.\r\n * Defaults to `false`.\r\n */\r\n @Input() showPaginatorRightData: boolean = false;\r\n @Input() showTotalRecordsNumber: boolean = false;\r\n @Input() applyFiltersIcon: string = 'pi pi-filter';\r\n @Input() clearFiltersIcon: string = 'pi pi-filter-slash';\r\n \r\n @Input() getPaginatedListObservableMethod: (filter: Filter) => Observable<PaginatedResult>;\r\n\r\n lastLazyLoadEvent: TableLazyLoadEvent;\r\n loading: boolean = true;\r\n\r\n matchModeDateOptions: SelectItem[] = [];\r\n matchModeNumberOptions: SelectItem[] = [];\r\n \r\n @ContentChild('cardBody', { read: TemplateRef }) cardBody!: TemplateRef<any>;\r\n\r\n constructor(\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: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n }\r\n \r\n lazyLoad(event: TableLazyLoadEvent) {\r\n this.lastLazyLoadEvent = event;\r\n \r\n const transformedFilter: { [K in keyof T]?: { value: any; matchMode: MatchModeCodes }[] } = {};\r\n\r\n for (const key in event.filters) {\r\n const filterMeta = event.filters[key];\r\n\r\n if (Array.isArray(filterMeta)) {\r\n transformedFilter[key] = filterMeta;\r\n } \r\n else {\r\n transformedFilter[key] = [{\r\n value: filterMeta.value,\r\n matchMode: filterMeta.matchMode\r\n }];\r\n }\r\n }\r\n\r\n let tableFilter = event as unknown as Filter<T>;\r\n\r\n tableFilter.filters = transformedFilter;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getPaginatedListObservableMethod(tableFilter).subscribe({\r\n next: async (res) => { \r\n this.items = res.data;\r\n this.totalRecords = res.totalRecords;\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 filter(event: TableFilterEvent){\r\n }\r\n \r\n getDefaultMatchMode(filterType: string): any {\r\n switch (filterType) {\r\n case 'text':\r\n return MatchModeCodes.Contains;\r\n case 'date':\r\n return MatchModeCodes.Equals;\r\n case 'multiselect':\r\n return MatchModeCodes.In;\r\n case 'boolean':\r\n return MatchModeCodes.Equals;\r\n case 'numeric':\r\n return MatchModeCodes.Equals\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getMatchModeOptions(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return [];\r\n case 'date':\r\n return this.matchModeDateOptions;\r\n case 'multiselect':\r\n return [];\r\n case 'boolean':\r\n return [];\r\n case 'numeric':\r\n return this.matchModeNumberOptions;\r\n default:\r\n return [];\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 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 applyFilters = () => {\r\n this.table._filter();\r\n }\r\n\r\n clearFilters() {\r\n this.table.clear();\r\n }\r\n}\r\n\r\nexport interface DataViewCardBody<T> {\r\n $implicit: T;\r\n item: T;\r\n index: number;\r\n}\r\n\r\nexport interface DataViewFilter<T extends BaseEntity> {\r\n label?: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future\r\n type?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\r\n placeholder?: string;\r\n showMatchModes?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n}","<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table \r\n #dt \r\n [value]=\"items\" \r\n [rows]=\"rows\" \r\n [rowHover]=\"false\" \r\n responsiveLayout=\"scroll\" \r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\" \r\n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \r\n [loading]=\"(items === undefined || loading === true)\" \r\n dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"\r\n [filterDelay]=\"500\"\r\n [paginator]=\"true\"\r\n > \r\n <ng-template #caption>\r\n <div *ngIf=\"filters.length !== 0\">\r\n <div class=\"data-view-grid\">\r\n @for (filter of filters; track $index) {\r\n <div>\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\r\n <div>\r\n <label>\r\n {{filter.label}}\r\n </label>\r\n </div>\r\n\r\n <p-columnFilter *ngIf=\"filter.type != null\" [type]=\"filter.type\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.placeholder\" \r\n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.type)\" [matchModeOptions]=\"getMatchModeOptions(filter.type)\" \r\n >\r\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'100%'}\">\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 </div>\r\n }\r\n </div>\r\n <div style=\"display: flex; gap: 12px;\">\r\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" [icon]=\"applyFiltersIcon\"></spiderly-button>\r\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" [icon]=\"clearFiltersIcon\"></spiderly-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #body let-rowData let-index=\"rowIndex\">\r\n <tr style=\"padding: 0; margin-bottom: 0;\">\r\n <td style=\"display: block; border: 0; padding: 0;\">\r\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n {{t('NoRecordsFound')}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showTotalRecordsNumber\" pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showPaginatorRightData\" pTemplate=\"paginatorright\">\r\n <ng-content select=\"[PAGINATORRIGHT]\"></ng-content>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>","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: 8px;\">\r\n <i style=\"font-size: 21px;\" class=\"{{icon}} primary-color\"></i>\r\n <div style=\"margin: 0; font-size: 17.5px;\">{{title}}</div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { BaseEntity } from \"./base-entity\";\r\nimport { UserBase } 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?: UserBase;\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?: UserBase,\r\n } = {}\r\n ) {\r\n super();\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\r\n static readonly typeName = 'InitTopBarData' as const;\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 { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { Namebook } from '../entities/namebook';\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(--p-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), // 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<Namebook[]> => {\r\n return of();\r\n }\r\n\r\n partnersAutocompleteButtonClick = (selectedPartner: Namebook) => {}\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 { 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, RouterModule } 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 { 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 { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { Namebook } from '../../../entities/namebook';\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 imports: [\r\n CommonModule,\r\n RouterModule,\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 = new SpiderlyFormControl<Namebook>(null, { updateOn: 'change' });\r\n\r\n partnerOptions: Namebook[];\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.item.visible = this.item.visible ?? true;\r\n\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 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.value);\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 <!-- 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 change selector to 'menu', because other style will apply to it\r\n templateUrl: './sidebar-menu.component.html',\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({\n selector: 'sidebar',\n templateUrl: './sidebar.component.html',\n imports: [\n SidebarMenuComponent\n ]\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 { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { UserBase } from '../../../entities/security-entities';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { SpiderlyButtonComponent } from \"../../spiderly-buttons/spiderly-button/spiderly-button.component\";\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\n\r\n@Component({\r\n selector: 'spiderly-profile-avatar',\r\n templateUrl: './profile-avatar.component.html',\r\n styleUrl: './profile-avatar.component.scss',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AvatarModule,\r\n BadgeModule,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n]\r\n})\r\nexport class ProfileAvatarComponent {\r\n @Input() isSideMenuLayout = true;\r\n @Input() routeOnLargeProfileAvatarClick = true;\r\n @Input() showLoginButton = true;\r\n @Input() routeToLoginPage = true;\r\n @Input() loginButtonOutlined = false;\r\n @Input() loginButtonSeverity: 'success' | 'info' | 'warn' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined = 'primary';\r\n @Input() loginButtonSize: 'small' | 'large' | undefined;\r\n @Output() onLoginButtonClick = new EventEmitter();\r\n @Input() menuItems: ProfileAvatarModalMenuItem[] = [];\r\n\r\n private initTopBarSubscription: Subscription | null = null;\r\n\r\n currentUser: UserBase;\r\n userProfilePath: string;\r\n unreadNotificationsCount: number;\r\n avatarLabel: string;\r\n showProfileIcon = false;\r\n\r\n notificationMenuItem: ProfileAvatarModalMenuItem =\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('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 protected router: Router,\r\n private translocoService: TranslocoService,\r\n public config: ConfigBaseService,\r\n ) { \r\n }\r\n\r\n async ngOnInit(){\r\n if (this.menuItems.length === 0) {\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('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\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.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 if (this.routeOnLargeProfileAvatarClick) {\r\n this.router.navigateByUrl(this.userProfilePath);\r\n }\r\n }\r\n\r\n loginButtonClick() {\r\n if (this.routeToLoginPage) {\r\n this.router.navigateByUrl(this.config.loginSlug);\r\n }\r\n \r\n this.onLoginButtonClick.next(null);\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}\r\n\r\nexport interface ProfileAvatarModalMenuItem {\r\n label?: string;\r\n icon?: string;\r\n showSeparator?: boolean;\r\n onClick?: () => void;\r\n showNotificationBadge?: boolean;\r\n}","<ng-container *transloco=\"let t\">\r\n <div\r\n *ngIf=\"this.currentUser != null\"\r\n #topbarmenu\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(--p-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 \r\n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \r\n style=\"width: 280px; position: absolute; padding: 15px; background: var(--p-content-background);\" \r\n class=\"card\"\r\n [ngClass]=\"{\r\n 'side-menu-profile-dialog': isSideMenuLayout,\r\n 'top-menu-profile-dialog': !isSideMenuLayout,\r\n }\r\n \"\r\n >\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(--p-primary-color)', 'color': '#fff', 'margin': 'auto', 'cursor': routeOnLargeProfileAvatarClick ? 'pointer' : '' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div style=\"font-size: 15px;\">{{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: 8px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}}\" \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 style=\"font-size: 15px;\"> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"this.currentUser == null && this.showLoginButton\">\r\n <spiderly-button \r\n [label]=\"t('Login')\" \r\n (onClick)=\"loginButtonClick()\" \r\n icon=\"pi pi-sign-in\" \r\n [outlined]=\"loginButtonOutlined\" \r\n [severity]=\"loginButtonSeverity\"\r\n [size]=\"loginButtonSize\"\r\n ></spiderly-button>\r\n </div>\r\n</ng-container>","import { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { filter } from 'rxjs';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ProfileAvatarComponent } from '../profile-avatar/profile-avatar.component';\r\n\r\n@Component({\r\n selector: 'spiderly-sidemenu-topbar',\r\n templateUrl: './sidemenu-topbar.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AvatarModule,\r\n BadgeModule,\r\n ProfileAvatarComponent,\r\n ]\r\n})\r\nexport class SideMenuTopBarComponent {\r\n companyName = this.config.companyName;\r\n @ViewChild('menubutton') menuButton!: ElementRef;\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n protected router: Router,\r\n private config: ConfigBaseService,\r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n async ngOnInit(){\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\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 class=\"profile-button\">\r\n <spiderly-profile-avatar\r\n ></spiderly-profile-avatar>\r\n </div>\r\n\r\n</div>\r\n ","import { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { ProfileAvatarComponent } from \"../profile-avatar/profile-avatar.component\";\r\nimport { MenubarModule } from \"primeng/menubar\";\r\nimport { SpiderlyMenuItem } from '../sidebar/sidebar-menu.component';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spiderly-topbar',\r\n templateUrl: './topbar.component.html',\r\n styleUrl: './topbar.component.scss',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n MenubarModule,\r\n AvatarModule,\r\n ProfileAvatarComponent,\r\n]\r\n})\r\nexport class TopBarComponent {\r\n @Input() menu: SpiderlyMenuItem[] = [];\r\n companyName = this.config.companyName;\r\n logoPath = this.config.logoPath;\r\n /**\r\n * Determines whether to show background color on hover\r\n * for root menu items. Defaults to `false`.\r\n */\r\n @Input() showHoverBgOnRootItems: boolean = false;\r\n\r\n private permissionSubscription: Subscription | null = null;\r\n\r\n constructor(\r\n private authService: AuthBaseService,\r\n private config: ConfigBaseService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\r\n this.hideMenuItemsBasedOnPermissions(this.menu, currentUserPermissionCodes);\r\n });\r\n }\r\n\r\n hideMenuItemsBasedOnPermissions = (menu: SpiderlyMenuItem[], currentUserPermissionCodes: string[]) => {\r\n menu.forEach(menuItem => {\r\n if (menuItem.items) {\r\n this.hideMenuItemsBasedOnPermissions(menuItem.items, currentUserPermissionCodes)\r\n }\r\n if (typeof menuItem.hasPermission === 'function') {\r\n menuItem.visible = menuItem.hasPermission(currentUserPermissionCodes) ?? false;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.permissionSubscription) {\r\n this.permissionSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"topbar-wrapper\">\r\n <nav class=\"topbar {{showHoverBgOnRootItems ? '' : 'show-hover-bg-on-root-items'}}\">\r\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\r\n <ng-template #start>\r\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\r\n </ng-template>\r\n <ng-template #end>\r\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\r\n <div>\r\n <ng-content select=\"[ACTIONS]\"></ng-content>\r\n </div>\r\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\r\n </div>\r\n </ng-template>\r\n </p-menubar>\r\n </nav>\r\n</div>","import { Component, ElementRef, Input, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AppSidebarComponent } from './sidebar/sidebar.component';\r\nimport { SideMenuTopBarComponent } from './sidemenu-topbar/sidemenu-topbar.component';\r\nimport { LayoutBaseService } from '../../services/app-layout-base.service';\r\nimport { SpiderlyMenuItem } from './sidebar/sidebar-menu.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FooterComponent } from '../footer/footer.component';\r\nimport { TopBarComponent } from './topbar/topbar.component';\r\n\r\n@Component({\r\n selector: 'spiderly-layout',\r\n templateUrl: './layout.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AppSidebarComponent,\r\n FooterComponent,\r\n SideMenuTopBarComponent,\r\n TopBarComponent,\r\n]\r\n})\r\nexport class SpiderlyLayoutComponent implements OnDestroy {\r\n @Input() menu: SpiderlyMenuItem[] = [];\r\n sideMenu: SpiderlyMenuItem[] = [];\r\n topMenu: SpiderlyMenuItem[] = [];\r\n @Input() isSideMenuLayout: boolean = true;\r\n /**\r\n * Determines whether to show background color on hover\r\n * for root top menu items. Defaults to `false`.\r\n */\r\n @Input() showHoverBgOnRootTopMenuItems: boolean = false;\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(SideMenuTopBarComponent) sidemenuTopbar!: SideMenuTopBarComponent;\r\n\r\n @ViewChild('topbarmenu') topbarmenu!: ElementRef;\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.sidemenuTopbar?.menuButton?.nativeElement.isSameNode(event.target) || \r\n this.sidemenuTopbar?.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 = !(\r\n this.topbarmenu?.nativeElement.isSameNode(event.target) || \r\n this.topbarmenu?.nativeElement.contains(event.target)\r\n );\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 ngOnInit() {\r\n if (this.isSideMenuLayout) {\r\n this.sideMenu = [...this.menu];\r\n }\r\n else{\r\n this.topMenu = [...this.menu[0].items];\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","<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\r\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\r\n <div class=\"layout-sidebar\">\r\n <sidebar [menu]=\"sideMenu\"></sidebar>\r\n </div>\r\n <div class=\"layout-main-container\">\r\n <div class=\"layout-main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <footer></footer>\r\n </div>\r\n <div class=\"layout-mask\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"isSideMenuLayout === false\">\r\n <spiderly-topbar [menu]=\"topMenu\" [showHoverBgOnRootItems]=\"showHoverBgOnRootTopMenuItems\">\r\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\r\n </spiderly-topbar>\r\n <main style=\"max-width: 1100px; margin: auto; padding: 18px;\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n</div>","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();\r\n\r\n this.code = code;\r\n this.displayName = displayName;\r\n }\r\n\r\n static readonly typeName = 'Codebook' as const;\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(); \r\n\r\n this.index = index;\r\n }\r\n\r\n static readonly typeName = 'LastMenuIconIndexClicked' as const;\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();\r\n\r\n this.selectedIds = selectedIds;\r\n this.totalRecordsSelected = totalRecordsSelected;\r\n }\r\n\r\n static readonly typeName = 'LazyLoadSelectedIdsResult' as const;\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 PrimengOption extends BaseEntity\r\n{\r\n label?: string;\r\n code?: any; // Can't be value: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294\r\n \r\n constructor(\r\n {\r\n label,\r\n code,\r\n }:{\r\n label?: string;\r\n code?: any;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.label = label;\r\n this.code = code;\r\n }\r\n\r\n static readonly typeName = 'PrimengOption' as const;\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();\r\n\r\n this.id = id;\r\n }\r\n\r\n static typeName = 'SimpleSaveResult' as const;\r\n}","export class FilterSortMeta\r\n{\r\n field: string;\r\n order: number;\r\n\r\n constructor(\r\n {\r\n field,\r\n order,\r\n }: {\r\n field?: string;\r\n order?: number;\r\n } = {}\r\n ) {\r\n this.field = field as string;\r\n this.order = order as number;\r\n }\r\n\r\n static schema = {\r\n field: {\r\n type: 'string',\r\n },\r\n order: {\r\n type: 'number',\r\n },\r\n } as const;\r\n\r\n static readonly typeName = 'FilterSortMeta' as const;\r\n}","import { BaseEntity } from \"./base-entity\";\r\nimport { FilterRule } from \"./filter-rule\";\r\nimport { FilterSortMeta } from \"./filter-sort-meta\";\r\n\r\nexport class Filter<T extends BaseEntity = any> extends BaseEntity {\r\n filters?: { [K in keyof T]?: FilterRule[] };\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: FilterSortMeta[];\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?: { [K in keyof T]?: FilterRule[] };\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: FilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n } = {}\r\n ) {\r\n super();\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\r\n static schema = {\r\n filters: {\r\n type: 'Object',\r\n // Note: 'filters' is a dynamic map (Dictionary), so we usually treat it as a generic Object\r\n // unless strict typing is required for the inner FilterRule[] values by the serializer.\r\n },\r\n first: {\r\n type: 'number',\r\n },\r\n rows: {\r\n type: 'number',\r\n },\r\n sortField: {\r\n type: 'string',\r\n },\r\n sortOrder: {\r\n type: 'number',\r\n },\r\n multiSortMeta: {\r\n type: 'FilterSortMeta[]',\r\n get nestedConstructor() { return FilterSortMeta; },\r\n },\r\n additionalFilterIdInt: {\r\n type: 'number',\r\n },\r\n additionalFilterIdLong: {\r\n type: 'number',\r\n },\r\n } as const;\r\n\r\n static readonly typeName = 'Filter' as const;\r\n}","import { MatchModeCodes } from \"../enums/match-mode-enum-codes\";\r\n\r\n/**\r\n * Represents a filter rule used for querying or filtering data collections.\r\n * \r\n * The `FilterRule` class is a generic structure that defines a single filtering condition,\r\n * including the match mode (comparison operator), the value to compare, and an optional logical operator.\r\n * \r\n * The allowed match modes are determined by the type parameter `T`:\r\n * - For `string`: supports `Contains`, `StartsWith`, and `Equals`.\r\n * - For `boolean`: supports `Equals`.\r\n * - For `Date`: supports `Equals`, `GreaterThan`, and `LessThan`.\r\n * - For `number`: supports `Equals`, `GreaterThan`, `LessThan`, and `In`.\r\n * - For other types: allows any value from `MatchModeCodes`.\r\n * \r\n * @template T The type of the value to filter by.\r\n */\r\nexport class FilterRule<T=any>\r\n{\r\n matchMode: AllowedMatchModes<T>;\r\n value: T;\r\n operator?: string;\r\n}\r\n\r\ntype AllowedMatchModes<T> = \r\n T extends string ? MatchModeCodes.Contains | MatchModeCodes.StartsWith | MatchModeCodes.Equals :\r\n T extends boolean ? MatchModeCodes.Equals :\r\n T extends Date ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan :\r\n T extends number ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan | MatchModeCodes.In :\r\n MatchModeCodes;","export class PaginatedResult<T = any> {\r\n data?: T[];\r\n totalRecords: number;\r\n}\r\n ","export 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();\r\n return false;\r\n } \r\n else {\r\n return true;\r\n }\r\n })\r\n );\r\n }\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 { HttpEvent, HttpInterceptorFn } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { Observable, finalize } from \"rxjs\";\r\n\r\nexport const httpLoadingInterceptor: HttpInterceptorFn = (req, next) => {\r\n const spinner = inject(NgxSpinnerService);\r\n \r\n const shouldSkipSpinner = req.params.has('X-Skip-Spinner'); // Using this for multiautocomplete, autocomplete, dropdown, table etc...\r\n\r\n if (!shouldSkipSpinner)\r\n spinner.show();\r\n\r\n return next(req).pipe(\r\n finalize(() => {\r\n if (!shouldSkipSpinner){\r\n spinner.hide();\r\n }\r\n })\r\n ) as Observable<HttpEvent<any>>;\r\n}","import { HttpEvent, HttpResponse, HttpInterceptorFn, HttpRequest, HttpParams } from '@angular/common/http';\r\nimport { tap } from 'rxjs';\r\n\r\nexport const jsonHttpInterceptor: HttpInterceptorFn = (req, next) => {\r\n const cleanedBody = getCleanRequestBody(req.body);\r\n const clonedRequest: HttpRequest<any> = req.clone({\r\n body: cleanedBody\r\n });\r\n\r\n return next(clonedRequest)\r\n .pipe(\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n convertToDate(event.body);\r\n }\r\n }\r\n ));\r\n}\r\n\r\nconst getCleanRequestBody = (obj: unknown): unknown => {\r\n if (\r\n obj === null || \r\n obj === undefined ||\r\n obj instanceof FormData || \r\n obj instanceof Blob || \r\n obj instanceof File ||\r\n obj instanceof ArrayBuffer\r\n ) {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map(item => getCleanRequestBody(item));\r\n }\r\n\r\n if (obj instanceof Date) {\r\n return obj.toISOString();\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n const newObj: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n newObj[key] = getCleanRequestBody((obj as any)[key]);\r\n }\r\n return newObj;\r\n }\r\n\r\n return obj;\r\n};\r\n\r\n/**\r\n * @see https://stackoverflow.com/a/54733846/1306679\r\n */\r\nconst convertToDate = (\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 const dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\r\n\r\n if (typeof object === 'string') {\r\n if (dateRegex.test(object)) {\r\n const date = new Date(object);\r\n parent[key] = date;\r\n }\r\n } else if (Array.isArray(object)) {\r\n for (let i = 0; i < object.length; i++)\r\n convertToDate(object[i], object, i);\r\n } else {\r\n for (const key of Object.keys(object as Record<string, unknown>)) {\r\n convertToDate(\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}","import { inject, PLATFORM_ID } from '@angular/core';\r\nimport { HttpInterceptorFn } from '@angular/common/http';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nexport const jwtInterceptor: HttpInterceptorFn = (req, next) => {\r\n const config = inject(ConfigBaseService);\r\n const platformId = inject(PLATFORM_ID);\r\n\r\n let accessToken = null;\r\n if (isPlatformBrowser(platformId)) {\r\n accessToken = localStorage.getItem('access_token');\r\n }\r\n\r\n const isApiUrl = req.url.startsWith(config.apiUrl);\r\n\r\n if (accessToken && isApiUrl) {\r\n req = req.clone({\r\n setHeaders: { Authorization: `Bearer ${accessToken}` },\r\n });\r\n }\r\n\r\n return next(req);\r\n}","import { inject } from '@angular/core';\r\nimport { HttpRequest, HttpErrorResponse, HttpInterceptorFn } 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\nexport const unauthorizedInterceptor: HttpInterceptorFn = (req, next) => {\r\n const messageService = inject(SpiderlyMessageService);\r\n const translocoService = inject(TranslocoService);\r\n const config = inject(ConfigBaseService);\r\n\r\n const handleAuthError = (err: HttpErrorResponse, request: HttpRequest<any>): Observable<any> => {\r\n if (!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 setTimeout(() => { // Had problem when the server is shut down, and try to refresh token, warning message didn't appear\r\n messageService.warningMessage( \r\n translocoService.translate('ServerLostConnectionDetails'),\r\n translocoService.translate('ServerLostConnectionTitle'),\r\n );\r\n }, 100);\r\n return of(err.message);\r\n } \r\n else if (err.status == 400) {\r\n messageService.warningMessage(\r\n errorResponse.message ?? translocoService.translate('BadRequestDetails'),\r\n translocoService.translate('Warning'),\r\n );\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 401) {\r\n messageService.warningMessage(\r\n errorResponse.message ?? translocoService.translate('LoginRequired'),\r\n translocoService.translate('Warning'),\r\n );\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 403) {\r\n messageService.warningMessage(\r\n translocoService.translate('PermissionErrorDetails'),\r\n translocoService.translate('PermissionErrorTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 404) {\r\n messageService.warningMessage(\r\n translocoService.translate('NotFoundDetails'),\r\n translocoService.translate('NotFoundTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 419) { // Access token expired\r\n return of(err.message);\r\n } \r\n else {\r\n messageService.errorMessage(\r\n translocoService.translate('UnexpectedErrorDetails'),\r\n 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 return next(req).pipe(\r\n catchError((err) => {\r\n return handleAuthError(err, req);\r\n })\r\n );\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { AuthBaseService } from './auth-base.service';\r\nimport { AuthResult } from '../entities/security-entities';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nexport function authInitializer(authService: AuthBaseService, platformId): () => Observable<AuthResult> {\r\n if (isPlatformBrowser(platformId)) {\r\n return () => {\r\n return authService.refreshToken();\r\n };\r\n }\r\n return () => {\r\n return of();\r\n };\r\n}","import { ConfigBaseService } from './config-base.service';\r\nimport { 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(\r\n private http: HttpClient,\r\n private config: ConfigBaseService,\r\n ) {}\r\n\r\n getTranslation(lang: string) {\r\n return this.http.get(`${this.config.frontendUrl}/assets/i18n/${lang}.json`);\r\n }\r\n\r\n}","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[templateType]',\r\n})\r\nexport class SpiderlyTemplateTypeDirective<T> {\r\n @Input() templateType?: T;\r\n\r\n static ngTemplateContextGuard<T>(\r\n dir: SpiderlyTemplateTypeDirective<T>,\r\n ctx: unknown\r\n ): ctx is T {\r\n return true;\r\n }\r\n}","/*\r\n * Public API Surface of spiderly\r\n */\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-colorpicker/spiderly-colorpicker.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/verification-wrapper.component';\r\nexport * from './lib/components/auth/login/login.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-data-view/spiderly-data-view.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/sidemenu-topbar/sidemenu-topbar.component';\r\nexport * from './lib/components/layout/layout.component';\r\nexport * from './lib/components/layout/topbar/topbar.component';\r\nexport * from './lib/components/layout/profile-avatar/profile-avatar.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/filter';\r\nexport * from './lib/entities/filter-rule';\r\nexport * from './lib/entities/filter-sort-meta';\r\nexport * from './lib/entities/paginated-result';\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\nexport * from './lib/enums/match-mode-enum-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\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\r\nexport * from './lib/directives/template-type.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ValidatorAbstractService","i6","i4","i5","i2","i3","i1","i2.ConfigBaseService","i1.TranslateLabelsAbstractService","i3.SpiderlyMessageService","map","i1.ApiSecurityService","i3.BaseFormService","i4.AuthBaseService","i7.PanelHeaderComponent","i8.PanelBodyComponent","i9.PanelFooterComponent","i10.SpiderlyPanelComponent","i2.SpiderlyMessageService","i5.BaseFormService","i7.SpiderlyTextboxComponent","i8.SpiderlyButtonComponent","i9.PanelHeaderComponent","i10.PanelBodyComponent","i11.PanelFooterComponent","i12.SpiderlyPanelComponent","i1.AuthBaseService","i1.ConfigBaseService","i2.AuthBaseService","i6.AuthBaseService","i7.ConfigBaseService","i8","i9.SpiderlyTextboxComponent","i10.SpiderlyButtonComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","i10","i11","i13","i14","i15","i4.SpiderlyButtonComponent","i7","delay","i3.AuthBaseService","i1.LayoutBaseService","i3.SidebarMenuService","i5.ApiSecurityService","i6.ConfigBaseService","i8.SpiderlyAutocompleteComponent","i4.ConfigBaseService","filter","i5.ConfigBaseService","i3.ConfigBaseService","i1.SpiderlyMessageService","finalize","tap"],"mappings":"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"}
|