verben-authentication-ui 1.0.37 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -1
- package/esm2022/src/lib/base/core/base-data-page.facade.mjs +215 -0
- package/esm2022/src/lib/base/core/base-data-page.service.mjs +103 -0
- package/esm2022/src/lib/base/core/base-data-page.state.mjs +203 -0
- package/esm2022/src/lib/base/handlers/filter-handler.service.mjs +53 -0
- package/esm2022/src/lib/base/handlers/search-handler.service.mjs +31 -0
- package/esm2022/src/lib/base/handlers/sort-handler.service.mjs +49 -0
- package/esm2022/src/lib/base/models/api-payload.mjs +4 -0
- package/esm2022/src/lib/base/models/page-config.interface.mjs +2 -0
- package/esm2022/src/lib/base/public-api.mjs +14 -6
- package/esm2022/src/lib/base/utils/column-helpers.mjs +45 -0
- package/esm2022/src/lib/components/button/button.component.mjs +3 -3
- package/esm2022/src/lib/components/forgot-password/forgot-password.component.mjs +2 -2
- package/esm2022/src/lib/components/mail/mail.component.mjs +3 -3
- package/esm2022/src/lib/components/mail-validation/mail-validation.component.mjs +5 -5
- package/esm2022/src/lib/components/o-auth/o-auth.component.mjs +3 -3
- package/esm2022/src/lib/components/otp-input/otp-input.component.mjs +2 -2
- package/esm2022/src/lib/components/reset-password/reset-password.component.mjs +2 -2
- package/esm2022/src/lib/components/role-control/base-table-style.mjs +6 -6
- package/esm2022/src/lib/components/role-control/role-control.component.mjs +3 -3
- package/esm2022/src/lib/components/sign-in/sign-in.component.mjs +4 -4
- package/esm2022/src/lib/components/sign-up/sign-up.component.mjs +6 -6
- package/esm2022/src/lib/components/sso/base-table-style.mjs +6 -6
- package/esm2022/src/lib/components/sso/sso-form/sso-form.component.mjs +3 -3
- package/esm2022/src/lib/components/sso/sso.component.mjs +3 -3
- package/esm2022/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +4 -4
- package/esm2022/src/lib/components/two-factor-auth-setup/two-factor-auth-setup.component.mjs +5 -5
- package/esm2022/src/lib/components/user-management/public-api.mjs +2 -1
- package/esm2022/src/lib/components/user-management/user-management-card/user-management-card.component.mjs +23 -0
- package/esm2022/src/lib/components/user-management/user-management-form/user-management-form.component.mjs +53 -91
- package/esm2022/src/lib/components/user-management/user-management-table/user-management-table.component.mjs +68 -0
- package/esm2022/src/lib/components/user-management/user-management.component.mjs +98 -509
- package/esm2022/src/lib/components/user-management/user-management.module.mjs +11 -80
- package/esm2022/src/lib/components/user-management/user-status-badge/user-status-badge.component.mjs +8 -6
- package/esm2022/src/lib/components/user-management/user.config.mjs +94 -0
- package/esm2022/src/lib/components/user-management/user.facade.mjs +118 -0
- package/esm2022/src/lib/components/user-management/user.service.mjs +60 -0
- package/esm2022/src/lib/components/user-management/user.state.mjs +33 -0
- package/esm2022/src/lib/components/user-request/user-request.component.mjs +8 -8
- package/esm2022/src/lib/components/user-request-approval/public-api.mjs +2 -2
- package/esm2022/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.mjs +8 -6
- package/esm2022/src/lib/components/user-request-approval/user-access-request.config.mjs +79 -0
- package/esm2022/src/lib/components/user-request-approval/user-access-request.facade.mjs +123 -0
- package/esm2022/src/lib/components/user-request-approval/user-access-request.service.mjs +74 -0
- package/esm2022/src/lib/components/user-request-approval/user-access-request.state.mjs +26 -0
- package/esm2022/src/lib/components/user-request-approval/user-request-approval-card/user-request-approval-card.component.mjs +23 -0
- package/esm2022/src/lib/components/user-request-approval/user-request-approval-form/user-request-approval-form.component.mjs +124 -0
- package/esm2022/src/lib/components/user-request-approval/user-request-approval-table/user-request-approval-table.component.mjs +44 -0
- package/esm2022/src/lib/components/user-request-approval/user-request-approval.component.mjs +101 -273
- package/esm2022/src/lib/components/user-request-approval/user-request-approval.module.mjs +10 -74
- package/fesm2022/verben-authentication-ui-src-lib-base.mjs +596 -214
- package/fesm2022/verben-authentication-ui-src-lib-base.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-button.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-button.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-forgot-password.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-forgot-password.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-mail-validation.mjs +4 -4
- package/fesm2022/verben-authentication-ui-src-lib-components-mail-validation.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-mail.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-mail.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-o-auth.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-o-auth.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-otp-input.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-otp-input.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-reset-password.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-reset-password.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-role-control.mjs +7 -7
- package/fesm2022/verben-authentication-ui-src-lib-components-role-control.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs +3 -3
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-up.mjs +5 -5
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-up.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-sso.mjs +9 -9
- package/fesm2022/verben-authentication-ui-src-lib-components-sso.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs +3 -3
- package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-setup.mjs +4 -4
- package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-setup.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-user-management.mjs +468 -831
- package/fesm2022/verben-authentication-ui-src-lib-components-user-management.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request-approval.mjs +509 -952
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request-approval.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request.mjs +7 -7
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request.mjs.map +1 -1
- package/package.json +36 -42
- package/src/lib/base/README.md +99 -0
- package/src/lib/base/core/base-data-page.facade.d.ts +65 -0
- package/src/lib/base/core/base-data-page.service.d.ts +43 -0
- package/src/lib/base/core/base-data-page.state.d.ts +68 -0
- package/src/lib/base/handlers/filter-handler.service.d.ts +13 -0
- package/src/lib/base/handlers/search-handler.service.d.ts +20 -0
- package/src/lib/base/handlers/sort-handler.service.d.ts +13 -0
- package/src/lib/base/models/api-payload.d.ts +2 -0
- package/src/lib/base/models/page-config.interface.d.ts +21 -0
- package/src/lib/base/public-api.d.ts +9 -5
- package/src/lib/base/utils/column-helpers.d.ts +16 -0
- package/src/lib/components/user-management/public-api.d.ts +1 -0
- package/src/lib/components/user-management/user-management-card/user-management-card.component.d.ts +11 -0
- package/src/lib/components/user-management/user-management-form/user-management-form.component.d.ts +12 -14
- package/src/lib/components/user-management/user-management-table/user-management-table.component.d.ts +30 -0
- package/src/lib/components/user-management/user-management.component.d.ts +28 -124
- package/src/lib/components/user-management/user-management.module.d.ts +8 -8
- package/src/lib/components/user-management/user-status-badge/user-status-badge.component.d.ts +1 -1
- package/src/lib/components/user-management/user.config.d.ts +13 -0
- package/src/lib/components/user-management/user.facade.d.ts +42 -0
- package/src/lib/components/user-management/user.service.d.ts +26 -0
- package/src/lib/components/user-management/user.state.d.ts +19 -0
- package/src/lib/components/user-request-approval/public-api.d.ts +1 -1
- package/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.d.ts +1 -1
- package/src/lib/components/user-request-approval/user-access-request.config.d.ts +13 -0
- package/src/lib/components/user-request-approval/user-access-request.facade.d.ts +36 -0
- package/src/lib/components/user-request-approval/user-access-request.service.d.ts +30 -0
- package/src/lib/components/user-request-approval/user-access-request.state.d.ts +16 -0
- package/src/lib/components/user-request-approval/user-request-approval-card/user-request-approval-card.component.d.ts +11 -0
- package/src/lib/components/user-request-approval/user-request-approval-form/user-request-approval-form.component.d.ts +47 -0
- package/src/lib/components/user-request-approval/user-request-approval-table/user-request-approval-table.component.d.ts +20 -0
- package/src/lib/components/user-request-approval/user-request-approval.component.d.ts +29 -68
- package/src/lib/components/user-request-approval/user-request-approval.module.d.ts +7 -6
- package/esm2022/src/lib/base/base-data.component.mjs +0 -80
- package/esm2022/src/lib/base/base-data.facade.mjs +0 -130
- package/esm2022/src/lib/base/base-data.service.mjs +0 -21
- package/esm2022/src/lib/base/base-data.state.mjs +0 -74
- package/esm2022/src/lib/base/models.mjs +0 -2
- package/esm2022/src/lib/components/user-management/base-table-style.mjs +0 -53
- package/esm2022/src/lib/components/user-management/services/user-management.service.mjs +0 -110
- package/esm2022/src/lib/components/user-management/user-management.columns.mjs +0 -53
- package/esm2022/src/lib/components/user-request-approval/access-request.columns.mjs +0 -29
- package/esm2022/src/lib/components/user-request-approval/base-table-style.mjs +0 -53
- package/esm2022/src/lib/components/user-request-approval/facades/user-access-request.facade.mjs +0 -260
- package/esm2022/src/lib/components/user-request-approval/helper.mjs +0 -56
- package/esm2022/src/lib/components/user-request-approval/services/user-access-request.service.mjs +0 -92
- package/esm2022/src/lib/components/user-request-approval/states/user-access-request.state.mjs +0 -92
- package/esm2022/src/lib/components/user-request-approval/user-request-form/user-request-form.component.mjs +0 -105
- package/esm2022/src/lib/components/user-request-process/index.mjs +0 -2
- package/esm2022/src/lib/components/user-request-process/public-api.mjs +0 -3
- package/esm2022/src/lib/components/user-request-process/user-request-process.component.mjs +0 -11
- package/esm2022/src/lib/components/user-request-process/user-request-process.module.mjs +0 -18
- package/esm2022/src/lib/components/user-request-process/verben-authentication-ui-src-lib-components-user-request-process.mjs +0 -5
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request-process.mjs +0 -34
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request-process.mjs.map +0 -1
- package/src/lib/base/base-data.component.d.ts +0 -32
- package/src/lib/base/base-data.facade.d.ts +0 -27
- package/src/lib/base/base-data.service.d.ts +0 -14
- package/src/lib/base/base-data.state.d.ts +0 -28
- package/src/lib/base/models.d.ts +0 -11
- package/src/lib/components/user-management/base-table-style.d.ts +0 -1
- package/src/lib/components/user-management/services/user-management.service.d.ts +0 -44
- package/src/lib/components/user-management/user-management.columns.d.ts +0 -3
- package/src/lib/components/user-request-approval/access-request.columns.d.ts +0 -3
- package/src/lib/components/user-request-approval/base-table-style.d.ts +0 -1
- package/src/lib/components/user-request-approval/facades/user-access-request.facade.d.ts +0 -39
- package/src/lib/components/user-request-approval/helper.d.ts +0 -7
- package/src/lib/components/user-request-approval/services/user-access-request.service.d.ts +0 -64
- package/src/lib/components/user-request-approval/states/user-access-request.state.d.ts +0 -35
- package/src/lib/components/user-request-approval/user-request-form/user-request-form.component.d.ts +0 -34
- package/src/lib/components/user-request-process/index.d.ts +0 -1
- package/src/lib/components/user-request-process/public-api.d.ts +0 -2
- package/src/lib/components/user-request-process/user-request-process.component.d.ts +0 -5
- package/src/lib/components/user-request-process/user-request-process.module.d.ts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-authentication-ui-src-lib-components-user-request-approval.mjs","sources":["../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/access-request.columns.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/base-table-style.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/helper.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/services/user-access-request.service.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/states/user-access-request.state.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/facades/user-access-request.facade.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-form/user-request-form.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-form/user-request-form.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval.module.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/verben-authentication-ui-src-lib-components-user-request-approval.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<UserAccessRequest>[] = [\n {\n id: 'createdAt',\n header: 'CREATED',\n accessorKey: 'CreatedAt',\n },\n {\n id: 'user',\n header: 'NAME',\n accessorFn: (row) => `${row.FirstName} ${row.LastName}`,\n },\n {\n id: 'mail',\n header: 'E-MAIL',\n accessorKey: 'MailAddress',\n },\n {\n id: 'role',\n header: 'ROLE',\n accessorFn: (row) => row.Role?.Name,\n },\n {\n id: 'status',\n header: 'STATUS',\n accessorKey: 'RequestStatus',\n },\n { id: 'actions', header: 'Actions', accessorKey: 'MailAddress' },\n];\n","export const baseStyle: any = {\n width: '100%',\n fontFamily: '\"Fraunces\", serif',\n fontSize: '125%',\n whiteSpace: 'nowrap',\n margin: '0',\n border: '1px solid #D4A007',\n borderRadius: '16px',\n borderCollapse: 'separate',\n borderSpacing: '0',\n // tableLayout: 'fixed',\n overflow: 'hidden',\n rows: {\n even: {\n backgroundColor: '#FDFDFD',\n },\n odd: {\n backgroundColor: '#F1F4FB',\n },\n height: '68px',\n },\n cells: {\n padding: '0.5rem 1rem',\n },\n header: {\n // stickyTop: true,\n // zIndex: 2,\n backgroundColor: '#EFF2FB',\n fontWeight: 'bold',\n textAlign: 'left',\n padding: '12px 16px',\n height: '40px',\n },\n footer: {\n // stickyBottom: true,\n // zIndex: 2,\n padding: '3px',\n },\n // body: {\n // background: '#fff',\n // padding: '4px 5px',\n // textAlign: 'center',\n // },\n // firstColumn: {\n // stickyLeft: true,\n // zIndex: 1,\n // },\n lastColumn: {\n // stickyRight: true,\n // zIndex: 1,\n },\n};\n","import { DataFilterType } from 'verben-ng-ui';\nimport { SearchPropertyValueType } from 'verben-authentication-ui/src/lib/models';\n\nexport const roles: { id: string; name: string }[] = [\n { id: 'admin', name: 'Admin' },\n { id: 'manager', name: 'Manager' },\n { id: 'staff', name: 'Staff' },\n];\n\n// export const mockData: UserAccessRequest[] = new Array(10)\n// .fill(1)\n// .map((id, i) => ({\n// FirstName: `First ${id + i}`,\n// LastName: `Last ${id + i}`,\n// OtherName: `Other ${id + i}`,\n// Id: id + i,\n// id: (id + i).toString(),\n// MailAddress: `user${id + i}@mail.com`,\n// PhoneNumber: `+23480000000${id + i}`,\n// RequestStatus: randomEnum(UserAccessRequestStatus),\n// RoleID: roles[Math.floor(Math.random() * roles.length)].id,\n// Password: '1234567',\n// ExpireOn: new Date(),\n// IsSeeded: false,\n// OTPExpireOn: new Date(),\n// Tenants: [],\n// SignupType: OAuthType.InApp,\n// CreatedAt: new Date(),\n// UpdatedAt: new Date(),\n// DataState: ObjectState.New,\n// TenantId: `Tenant${id + i}`,\n// Code: '',\n// ServiceName: '',\n// }));\n\nfunction randomEnum<T extends object>(anEnum: T): T[keyof T] {\n const enumValues = Object.values(anEnum) as unknown as T[keyof T][];\n const randomIndex = Math.floor(Math.random() * enumValues.length);\n return enumValues[randomIndex];\n}\n\nexport function convertDataFilterTypeToSearchPropertyValueType(\n type: DataFilterType\n) {\n switch (type) {\n case DataFilterType.String:\n return SearchPropertyValueType.String;\n case DataFilterType.Integer:\n return SearchPropertyValueType.Int;\n case DataFilterType.Decimal:\n return SearchPropertyValueType.Decimal;\n case DataFilterType.Credit:\n return SearchPropertyValueType.Float;\n case DataFilterType.Date:\n return SearchPropertyValueType.Date;\n case DataFilterType.Bool:\n return SearchPropertyValueType.Bool;\n case DataFilterType.Number:\n return SearchPropertyValueType.Int;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, from } from 'rxjs';\nimport { HttpWebRequestService } from 'verben-authentication-ui/src/lib/services';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { Paged } from 'verben-authentication-ui/src/lib/models';\nimport { Role } from 'verben-authentication-ui/src/lib/models';\nimport { Tag } from 'verben-authentication-ui/src/lib/models';\nimport { SearchPropertyValue } from 'verben-authentication-ui/src/lib/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserAccessRequestService {\n constructor(private httpService: HttpWebRequestService) {}\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getUserAccessRequests(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string,\n ): Promise<Paged<UserAccessRequest>> {\n const url = `GetUserAccessRequests/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<UserAccessRequest>>;\n }\n\n getRoles(): Promise<Paged<Role>> {\n const url = `GetRoles/0/0`;\n return this.httpService.get(url) as Promise<Paged<Role>>;\n }\n\n getTags(): Promise<Paged<Tag>> {\n const url = `GetTags/0/0`;\n return this.httpService.get(url) as Promise<Paged<Tag>>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param param Search parameter\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getUserAccessRequestWithParam(\n param: string,\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string,\n ): Promise<Paged<UserAccessRequest>> {\n const url = `GetUserAccessRequestWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<UserAccessRequest>>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param params Filter parameters\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getUserAccessRequestByFilterParams(\n params: SearchPropertyValue[],\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string,\n ): Promise<Paged<UserAccessRequest>> {\n const url = `SearchUserAccessRequest/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.post(url, params) as Promise<\n Paged<UserAccessRequest>\n >;\n }\n\n /**\n * Save multiple user access requests\n * @param requests Array of user access requests to save\n * @returns Promise containing the save operation result\n */\n saveUserAccessRequests(requests: UserAccessRequest[]): Promise<any> {\n const url = `SaveUserAccessRequests`;\n return this.httpService.post(url, requests);\n }\n\n /**\n * Approve or reject multiple user access requests\n * @param requests Array of user access requests to save\n * @param isApproval True for approval, false for decline\n * @returns Promise containing the save operation result\n */\n processUserAccessRequests(\n requests: UserAccessRequest[],\n isApproval: boolean,\n ): Promise<any> {\n const url = `UserAccessRequestAction/${isApproval}`;\n return this.httpService.post(url, requests);\n }\n\n /**\n * Delete multiple user access requests\n * @param requestIds Array of request IDs to delete\n * @returns Observable containing the delete operation result\n */\n deleteUserAccessRequests(requestIds: string[]): Observable<any> {\n const url = `DeleteUserAccessRequests`;\n return this.httpService.delete(`${url}?data=${requestIds.join(',')}`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { QueryParams } from 'verben-authentication-ui/src/lib/models';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { Role } from 'verben-authentication-ui/src/lib/models';\nimport { SortDirection } from 'verben-authentication-ui/src/lib/models';\nimport { IDataFilter } from 'verben-ng-ui';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserAccessRequestState {\n private updating$ = new BehaviorSubject<boolean>(false);\n private requests$ = new BehaviorSubject<UserAccessRequest[]>([]);\n private roles$ = new BehaviorSubject<Role[]>([]);\n private searchTerm$ = new BehaviorSubject<string>('');\n private queryParams$ = new BehaviorSubject<QueryParams<UserAccessRequest>>({\n skip: 0,\n limit: 20,\n sortParam: 'CreatedAt',\n sortOrder: SortDirection.Asc,\n });\n private filterParams$ = new BehaviorSubject<IDataFilter[]>([]);\n\n isUpdating$(): Observable<boolean> {\n return this.updating$.asObservable();\n }\n\n setUpdating(isUpdating: boolean): void {\n this.updating$.next(isUpdating);\n }\n\n getRequests$(): Observable<UserAccessRequest[]> {\n return this.requests$.asObservable();\n }\n\n setRequests(requests: UserAccessRequest[]): void {\n this.requests$.next(requests);\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.filterParams$.asObservable();\n }\n\n setFilterParams(params: IDataFilter[]): void {\n this.filterParams$.next(params);\n }\n\n getRoles$(): Observable<Role[]> {\n return this.roles$.asObservable();\n }\n\n setRoles(roles: Role[]): void {\n this.roles$.next(roles);\n }\n\n appendRequests(newRequests: UserAccessRequest[]): void {\n const currentRequests = this.requests$.getValue();\n this.requests$.next([...currentRequests, ...newRequests]);\n }\n\n getSearchTerm$(): Observable<string> {\n return this.searchTerm$.asObservable();\n }\n\n getSearchTermValue(): string {\n return this.searchTerm$.getValue();\n }\n\n setSearchTerm(term: string): void {\n this.searchTerm$.next(term);\n }\n\n getQueryParams$(): Observable<QueryParams<UserAccessRequest>> {\n return this.queryParams$.asObservable();\n }\n\n getQueryParamsValue(): QueryParams<UserAccessRequest> {\n return this.queryParams$.getValue();\n }\n\n updateQueryParams(params: Partial<QueryParams<UserAccessRequest>>): void {\n this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });\n }\n\n resetPagination(): void {\n const currentParams = this.queryParams$.getValue();\n this.queryParams$.next({ ...currentParams, skip: 0 });\n }\n\n addRequest(request: UserAccessRequest): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next([...currentValue, request]);\n }\n\n updateRequest(updatedRequest: UserAccessRequest): void {\n const requests = this.requests$.getValue();\n const index = requests.findIndex((r) => r.Code === updatedRequest.Code);\n if (index !== -1) {\n requests[index] = updatedRequest;\n this.requests$.next([...requests]);\n }\n }\n\n removeRequest(requestId: string): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next(currentValue.filter((r) => r.Id !== requestId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n Subject,\n catchError,\n debounceTime,\n distinctUntilChanged,\n from,\n lastValueFrom,\n takeUntil,\n tap,\n throwError,\n} from 'rxjs';\nimport { UserAccessRequestState } from '../states/user-access-request.state';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { QueryParams } from 'verben-authentication-ui/src/lib/models';\nimport { UserAccessRequestService } from '../services/user-access-request.service';\nimport { UserAccessRequestStatus } from 'verben-authentication-ui/src/lib/models';\nimport { SearchOperator } from 'verben-authentication-ui/src/lib/models';\nimport { SearchPropertySign } from 'verben-authentication-ui/src/lib/models';\n\nimport { Role } from 'verben-authentication-ui/src/lib/models';\nimport { UtilService } from 'verben-authentication-ui/src/lib/services';\nimport { IDataFilter } from 'verben-ng-ui';\nimport { convertDataFilterTypeToSearchPropertyValueType } from '../helper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserAccessRequestFacade {\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n constructor(\n private userAccessRequestService: UserAccessRequestService,\n private userAccessRequestState: UserAccessRequestState,\n private utilService: UtilService\n ) {\n // Set up debounced search handling\n this.searchSubject\n .pipe(\n debounceTime(1000),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe((searchTerm) => {\n this.handleSearch(searchTerm);\n });\n\n this.isUpdating$().subscribe((loading) => {\n this.utilService.sendBI(loading);\n });\n\n this.getFilterParams$().subscribe((params) => {\n if (params.length) {\n } else {\n this.loadRequests();\n }\n });\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n isUpdating$(): Observable<boolean> {\n return this.userAccessRequestState.isUpdating$();\n }\n\n getRequests$(): Observable<UserAccessRequest[]> {\n return this.userAccessRequestState.getRequests$();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.userAccessRequestState.getFilterParams$();\n }\n\n getRoles$(): Observable<Role[]> {\n return this.userAccessRequestState.getRoles$();\n }\n\n getQueryParams$(): Observable<QueryParams<UserAccessRequest>> {\n return this.userAccessRequestState.getQueryParams$();\n }\n\n getSearchTerm$(): Observable<string> {\n return this.userAccessRequestState.getSearchTerm$();\n }\n\n // Search handling\n search(term: string): void {\n this.searchSubject.next(term);\n }\n\n private async handleSearch(searchTerm: string): Promise<void> {\n this.userAccessRequestState.setSearchTerm(searchTerm);\n this.userAccessRequestState.resetPagination();\n\n try {\n this.userAccessRequestState.setUpdating(true);\n if (searchTerm.trim()) {\n await this.loadRequestsWithParam(searchTerm);\n } else {\n await this.loadRequests();\n }\n } catch (error) {\n console.error('Search failed:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async filter(filterParams: IDataFilter[]): Promise<void> {\n this.userAccessRequestState.resetPagination();\n this.userAccessRequestState.setFilterParams(filterParams);\n }\n\n // Load more handling\n async loadMore(): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n const currentParams = this.userAccessRequestState.getQueryParamsValue();\n const searchTerm = this.userAccessRequestState.getSearchTermValue();\n\n // Update skip value\n const newSkip = currentParams.skip + currentParams.limit;\n this.userAccessRequestState.updateQueryParams({ skip: newSkip });\n\n // Load and append data\n const response = searchTerm\n ? await this.userAccessRequestService.getUserAccessRequestWithParam(\n searchTerm,\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n )\n : await this.userAccessRequestService.getUserAccessRequests(\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n );\n\n this.userAccessRequestState.appendRequests(response.Result);\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async loadRequests(): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n const params = this.userAccessRequestState.getQueryParamsValue();\n\n const requests =\n await this.userAccessRequestService.getUserAccessRequests(\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n this.userAccessRequestState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async loadRoles(): Promise<void> {\n try {\n // this.userAccessRequestState.setUpdating(true);\n // const params = this.userAccessRequestState.getQueryParamsValue();\n\n const requests = await this.userAccessRequestService.getRoles();\n\n this.userAccessRequestState.setRoles(requests.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n // this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async loadRequestsWithParam(param: string): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n const params = this.userAccessRequestState.getQueryParamsValue();\n\n const requests =\n await this.userAccessRequestService.getUserAccessRequestWithParam(\n param,\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n this.userAccessRequestState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async loadRequestsByFilterParams(filterParams: IDataFilter[]): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n const params = this.userAccessRequestState.getQueryParamsValue();\n\n const requests =\n await this.userAccessRequestService.getUserAccessRequestByFilterParams(\n filterParams.map((filter) => ({\n PropertyName: filter.name,\n EntityValue: filter.value,\n type: convertDataFilterTypeToSearchPropertyValueType(filter.type),\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n })),\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n this.userAccessRequestState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n updateQueryParams(params: Partial<QueryParams<UserAccessRequest>>): void {\n this.userAccessRequestState.updateQueryParams(params);\n this.loadRequests();\n }\n\n async addRequest(request: Partial<UserAccessRequest>): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n const newRequest = { ...request } as UserAccessRequest;\n this.userAccessRequestState.addRequest(newRequest);\n\n await this.userAccessRequestService.saveUserAccessRequests([newRequest]);\n await this.loadRequests(); // Reload to get server-side changes\n } catch (error) {\n console.error('Failed to add request:', error);\n this.userAccessRequestState.removeRequest(request.Id!);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async updateRequest(request: UserAccessRequest): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n await this.userAccessRequestService.saveUserAccessRequests([request]);\n this.userAccessRequestState.updateRequest(request);\n this.utilService.showSuccess('Request updated successfully');\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async deleteRequest(requestId: string): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n await lastValueFrom(\n this.userAccessRequestService.deleteUserAccessRequests([requestId])\n );\n this.userAccessRequestState.removeRequest(requestId);\n } catch (error) {\n console.error('Failed to delete request:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n\n async approveRequest(request: UserAccessRequest): Promise<void> {\n try {\n this.userAccessRequestState.setUpdating(true);\n const response =\n await this.userAccessRequestService.processUserAccessRequests(\n [request],\n true\n );\n // console.log(response);\n const data = (response as UserAccessRequest[])?.[0];\n if (data) {\n this.userAccessRequestState.updateRequest(data);\n this.utilService.showSuccess('Request approved successfully');\n }\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.userAccessRequestState.setUpdating(false);\n }\n }\n}\n\nenum DateFilterTypes {\n Before = SearchPropertySign.LT,\n On = SearchPropertySign.EQ,\n After = SearchPropertySign.GT,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { Role } from 'verben-authentication-ui/src/lib/models';\nimport { UserAccessRequestStatus } from 'verben-authentication-ui/src/lib/models';\n\ninterface UserFormData {\n MailAddress: string;\n Name: string;\n PhoneNumber: string;\n}\n\n@Component({\n selector: 'lib-user-request-form',\n templateUrl: './user-request-form.component.html',\n styleUrl: './user-request-form.component.css',\n})\nexport class UserRequestFormComponent {\n @Input() roles: Role[] = [];\n @Input() showDelete: boolean = false;\n @Input()\n get currentData(): CardData | null {\n return this._currentData;\n }\n set currentData(value: CardData | null) {\n this._currentData = value;\n console.log(value?.data);\n if (value?.data) {\n this.form.patchValue({\n MailAddress: value.data.MailAddress || '',\n FirstName: value.data.FirstName || '',\n LastName: value.data.LastName || '',\n OtherName: value.data.OtherName || '',\n PhoneNumber: value.data.PhoneNumber || '',\n RoleID: value.data.RoleID || '',\n });\n } else {\n this.form.reset();\n }\n }\n\n showDialogue: boolean = false;\n private _currentData: CardData | null = null;\n\n @Output() switchView = new EventEmitter<undefined>();\n @Output() onApproval = new EventEmitter<{ email: string; role: string }>();\n @Output() onDeleteRequest = new EventEmitter<{ email: string }>();\n\n form: FormGroup;\n\n // roles: WritableSignal<Role[]> = signal([]);\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group({\n MailAddress: ['', { readonly: true }],\n FirstName: ['', { readonly: true }],\n LastName: ['', { readonly: true }],\n OtherName: ['', { readonly: true }],\n PhoneNumber: ['', { readonly: true }],\n RoleID: ['', { validators: [Validators.required] }],\n });\n }\n\n ngOnInit(): void {\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n // try {\n // this.userAccessRequestFacade.loadRoles();\n // } catch (error) {\n // // Handle error\n // }\n console.log(this.currentData?.data);\n }\n\n onSave(): void {\n if (this.form.valid) {\n // Emit save event with form value\n console.log('Form saved:', this.form.value);\n }\n }\n\n onDelete(): void {\n // Emit delete event\n this.onDeleteRequest.emit({ email: this.form.get('MailAddress')?.value });\n this.onModalClose('');\n }\n\n canDelete(): boolean {\n return (\n this.currentData?.data?.RequestStatus == UserAccessRequestStatus.Pending\n );\n }\n\n disableProcessing(): boolean {\n return (\n this.currentData?.data?.RequestStatus !==\n UserAccessRequestStatus.Pending || !this.form.valid\n );\n }\n\n toggleModal() {\n this.showDialogue = !this.showDialogue;\n }\n\n onModalOpen(event: any) {}\n\n onModalClose(event: any) {\n this.showDialogue = false;\n }\n}\n","<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n>\n <verbena-input\n name=\"MailAddress\"\n label=\"Mail Address:\"\n formControlName=\"MailAddress\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"First Name:\"\n name=\"FirstName\"\n type=\"text\"\n formControlName=\"FirstName\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"Last Name:\"\n name=\"LastName\"\n type=\"text\"\n formControlName=\"LastName\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"OtherName:\"\n name=\"OtherName\"\n type=\"text\"\n formControlName=\"OtherName\"\n [readOnly]=\"true\"\n />\n <!-- <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n [readOnly]=\"true\"\n /> -->\n\n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n formControlName=\"RoleID\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between my-2 overflow-auto\">\n <div class=\"flex gap-2\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n\n <verbena-button\n *ngIf=\"showDelete\"\n width=\"114px\"\n height=\"39px\"\n (click)=\"toggleModal()\"\n text=\"Delete\"\n styleType=\"danger\"\n borderRadius=\"10px\"\n ></verbena-button>\n </div>\n\n <div class=\"flex gap-2\">\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Reject\"\n styleType=\"danger\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n\n <verbena-button\n (click)=\"\n onApproval.emit({\n email: form.get('MailAddress')?.value,\n role: form.get('RoleID')?.value,\n })\n \"\n text=\"Approve\"\n bgColor=\"#28a745\"\n textColor=\"white\"\n border=\"1px solid #28a745\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n </div>\n</form>\n\n<verben-dialogue\n [showCloseIcon]=\"false\"\n [dismissOutsideClick]=\"false\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'show-revert-dialogue'\"\n [disableFooter]=\"true\"\n (openModal)=\"onModalOpen($event)\"\n [isVisible]=\"showDialogue\"\n [bodyTemplate]=\"bodyTemplate\"\n (closeModal)=\"onModalClose($event)\"\n>\n <ng-template #bodyTemplate>\n <div class=\"dialog-body flex flex-col gap-4\">\n <div class=\"header font-bold text-2xl\">Delete User Request</div>\n <div class=\"form-container-dialogue flex flex-col gap-2\">\n Are you sure you want to proceed ?\n </div>\n <div class=\"dialog-button-container flex gap-2\">\n <div class=\"flex-1\">\n <verbena-button\n width=\"100%\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#ffffff'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [border]=\"'1px solid #000'\"\n [text]=\"'Close'\"\n (click)=\"onModalClose($event)\"\n >\n </verbena-button>\n </div>\n <div class=\"flex-1\">\n <verbena-button\n width=\"100%\"\n class=\"verben-primary-button\"\n [text]=\"'Proceed'\"\n (click)=\"onDelete()\"\n >\n </verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n</verben-dialogue>\n","import { Component, Input } from '@angular/core';\nimport { UserAccessRequestStatus } from 'verben-authentication-ui/src/lib/models';\n\n@Component({\n selector: 'lib-user-access-request-status-badge',\n templateUrl: './user-access-request-status-badge.component.html',\n styleUrl: './user-access-request-status-badge.component.css',\n})\nexport class UserAccessRequestStatusBadgeComponent {\n @Input() status: UserAccessRequestStatus = UserAccessRequestStatus.Pending;\n\n badgeConfig() {\n switch (this.status) {\n case UserAccessRequestStatus.Approved:\n return { bgColor: '#CAE1CC', textColor: '#4ABB54', label: 'Approved' };\n case UserAccessRequestStatus.Declined:\n return { bgColor: '#FFDFDF', textColor: '#EB5757', label: 'Rejected' };\n default:\n return { bgColor: '#827C7C', textColor: '#C3C3C3', label: 'Pending' };\n }\n }\n}\n","<verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"badgeConfig().bgColor\"\n [textColor]=\"badgeConfig().textColor\"\n fontSize=\"12px\"\n [text]=\"badgeConfig().label\"\n [pd]=\"'2px 6px'\"\n></verbena-badge>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n Input,\n OnInit,\n Signal,\n signal,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { columns } from './access-request.columns';\nimport { baseStyle } from './base-table-style';\nimport {\n ErrorResponse,\n UserAccessRequest,\n} from 'verben-authentication-ui/src/lib/models';\nimport { Role } from 'verben-authentication-ui/src/lib/models';\nimport {\n CardData,\n CardDataViewComponent,\n ColumnDefinition,\n DataFilterType,\n DataViewComponent,\n IDataFilter,\n} from 'verben-ng-ui';\nimport { UserAccessRequestFacade } from './facades/user-access-request.facade';\nimport {\n EnvironmentService,\n HttpWebRequestService,\n UtilService,\n} from 'verben-authentication-ui/src/lib/services';\n\ninterface UserFormData {\n MailAddress: string;\n Name: string;\n PhoneNumber: string;\n}\n\n@Component({\n selector: 'lib-user-request-approval',\n templateUrl: './user-request-approval.component.html',\n styleUrl: './user-request-approval.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UserRequestApprovalComponent implements OnInit {\n @Input() showDelete: boolean = false;\n @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n @ViewChild('vdv') dataView!: DataViewComponent;\n\n columns: ColumnDefinition<UserAccessRequest>[] = columns;\n // visibleColumnDef: WritableSignal<ColumnDefinition<UserAccessRequest>[]> =\n // signal(columns);\n visibleColumnDef = this.columns;\n data: WritableSignal<UserAccessRequest[]> = signal([]);\n styles = baseStyle;\n currentData: CardData | null = null;\n isGridView = true;\n selected: CardData | null = null;\n\n cardData: Signal<CardData[]> = computed(() =>\n this.data()?.map(\n ({\n FirstName,\n LastName,\n MailAddress,\n PhoneNumber,\n RoleID,\n RequestStatus,\n Role,\n SignupType,\n }) => ({\n selected: false,\n title: `${FirstName} ${LastName}`,\n data: {\n FirstName,\n LastName,\n MailAddress,\n PhoneNumber,\n RoleID,\n RequestStatus,\n Role,\n SignupType,\n } as Partial<UserAccessRequest>,\n body: [{ title: 'Role', value: Role?.Name ?? '' }],\n children: [],\n }),\n ),\n );\n\n roles: WritableSignal<Role[]> = signal([]);\n\n constructor(\n private cdr: ChangeDetectorRef,\n // private service: UserRequestApprovalService,\n private utilService: UtilService,\n private envService: EnvironmentService,\n private server: HttpWebRequestService,\n private userAccessRequestFacade: UserAccessRequestFacade,\n ) {}\n\n async ngOnInit() {\n // this.data = this.service.getMockUserRequests();\n this.userAccessRequestFacade.getRequests$().subscribe((data) => {\n this.data.set(data);\n });\n\n this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n this.roles.set(data);\n });\n\n try {\n this.userAccessRequestFacade.loadRequests();\n this.userAccessRequestFacade.loadRoles();\n } catch (error) {\n // Handle error\n }\n }\n\n ngOnDestroy() {\n this.userAccessRequestFacade.destroy();\n }\n\n handleSearch(event: { key: string; value: string }) {\n this.userAccessRequestFacade.search(event.value);\n }\n\n async loadMore() {\n try {\n await this.userAccessRequestFacade.loadMore();\n } catch (error) {\n // Handle error\n }\n }\n\n // To search with parameter:\n async searchRequests(param: string) {\n try {\n await this.userAccessRequestFacade.loadRequestsWithParam(param);\n } catch (error) {\n // Handle error\n }\n }\n\n async onApprove(approvalData: { email: string; role: string }) {\n const data = this.data().find(\n ({ MailAddress }) => MailAddress === approvalData.email,\n );\n\n if (data) {\n await this.userAccessRequestFacade.approveRequest({\n ...data,\n RoleID: approvalData.role,\n });\n }\n }\n\n async onDelete(deletionData: { email: string }) {\n const data = this.data().find(\n ({ MailAddress }) => MailAddress === deletionData.email,\n );\n\n this.utilService.sendBI(true);\n const res = await this.server.get(\n `DeleteUserRequestWithUser/${deletionData.email}`,\n this.envService.environment.AuthenticationAPI,\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n } else {\n if (data) {\n this.data.update((items) => items.filter((x) => x.Code !== data.Code));\n }\n this.cardDataView.clearData();\n }\n }\n\n openDetailView(mailAddress: string) {\n const cardItem = this.getCardDataByMailAddress(mailAddress);\n if (cardItem && this.cardDataView) {\n this.dataView.toggleView();\n // First reset all selections\n this.cardData().forEach((item) => {\n item.selected = false;\n if (item.children) {\n item.children.forEach((child) => (child.selected = false));\n }\n });\n\n // Set the selected item\n cardItem.selected = true;\n this.currentData = this.cardDataView.onItemClick(cardItem);\n\n // Force change detection if needed\n // this.changeDetectorRef.detectChanges();\n }\n }\n\n getCardDataByMailAddress(mailAddress: string): CardData | undefined {\n return this.cardData().find(({ data }) => data.MailAddress === mailAddress);\n }\n\n onViewChange(isGridView: boolean): void {\n this.isGridView = isGridView;\n // Reset selection when switching views\n if (this.currentData) {\n this.cardDataView?.clearData();\n this.currentData = null;\n }\n\n console.log('SELECTED', this.selected);\n\n if (this.selected) {\n this.cardDataView.onItemClick(this.selected);\n }\n }\n\n openFormView(index: number) {\n const item = this.cardData()[index];\n console.log('ITEM = ', item);\n }\n\n handleExport(exportedData: Partial<any>[]) {\n console.log('Exported data:', exportedData);\n this.downloadCSV(exportedData);\n }\n\n /**\n * @param data Simple csv export for testing\n */\n private downloadCSV(data: Partial<any>[]) {\n const headers = Object.keys(data[0]);\n const csvContent = [\n headers.join(','),\n ...data.map((row) => headers.map((header) => row[header]).join(',')),\n ].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', 'export.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n onSelectionChange(selectedRows: UserAccessRequest[]) {\n console.log('Selection changed:', selectedRows);\n // Handle the selection change\n }\n\n /**\n * Copied over from card view doc until I understand usage\n */\n selectedColumnCount: number = 0;\n selectedFilterTableCount: number = 0;\n isOPen: boolean = true;\n selectedSortCount: number = 0;\n showColumn: boolean = false;\n showSort: boolean = false;\n selectedAll: boolean = false;\n visibleColumns: IDataFilter[] = columns.map((col) => ({\n checked: true,\n name: typeof col.header === 'string' ? col.header : col.id,\n type: DataFilterType.Bool,\n }));\n filterArray: IDataFilter[] = [\n {\n name: 'Name',\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: 'MailAddress',\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: 'PhoneNumber',\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: 'CreatedAt',\n type: DataFilterType.Date,\n checked: false,\n },\n ];\n\n sortOptions: IDataFilter[] = [\n {\n name: 'Name',\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: 'MailAddress',\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: 'PhoneNumber',\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: 'CreatedAt',\n type: DataFilterType.Date,\n checked: true,\n },\n ];\n clearData() {\n this.currentData = {} as CardData;\n }\n\n onColumnChange(event: boolean) {\n this.showColumn = event;\n }\n onSortChange(event: boolean) {\n this.showSort = event;\n console.log(event);\n }\n onColumnsUpdated(updatedColumns: IDataFilter[]) {\n console.log(updatedColumns);\n const updatedColumnDef: ColumnDefinition<UserAccessRequest>[] = [];\n updatedColumns.forEach((col) => {\n const matchingCol = this.columns.find(\n (column) => column.header === col.name || column.id === col.name,\n );\n if (matchingCol) {\n updatedColumnDef.push(matchingCol);\n }\n });\n\n console.log(updatedColumnDef);\n this.visibleColumnDef = [...updatedColumnDef];\n this.cdr.markForCheck();\n\n this.onColumnChange(false);\n this.selectedColumnCount = updatedColumns.length;\n }\n onSortUpdated(updatedSorts: IDataFilter[]) {\n this.onSortChange(false);\n this.selectedSortCount = updatedSorts.length;\n console.log(updatedSorts);\n }\n\n onStateChange(event: { key: string; value: boolean }): void {\n console.log(`State changed for ${event.key}:`, event.value);\n }\n\n onFilterSet(event: IDataFilter[]): void {\n console.log(event);\n this.userAccessRequestFacade.filter(event);\n }\n}\n","<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: false,\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"0\"\n [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"visibleColumnDef\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <lib-user-access-request-status-badge\n [status]=\"value\"\n ></lib-user-access-request-status-badge>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-deleteRow>\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"openDetailView(value)\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n <!-- <button (click)=\"openDetailView(value)\">Open</button>\n <button (click)=\"selected = cardData[rowIndex]; vdv.toggleView()\">\n Switch\n </button> -->\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <!-- <ng-template #header>\n <strong>Actions</strong>\n </ng-template> -->\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"MailAddress\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate\"\n >{{ item.title }}</span\n >\n\n <p class=\"flex items-center my-1 gap-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Medium:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.SignupType\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <!-- <p class=\"grid\">\n <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Medium:</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.SignupType\n }}</span>\n </p> -->\n\n <lib-user-access-request-status-badge\n [status]=\"item.data.RequestStatus\"\n ></lib-user-access-request-status-badge>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-user-request-form\n [roles]=\"roles()\"\n [showDelete]=\"showDelete\"\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onDeleteRequest)=\"onDelete($event)\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true,\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterSet($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"visibleColumnDef\"\n [data]=\"data()\"\n (exportDataEvent)=\"handleExport($event)\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserRequestApprovalComponent } from './user-request-approval.component';\nimport {\n CardDataViewModule,\n CardModule,\n DataExportModule,\n DataTableModule,\n DataViewModule,\n DataXportModule,\n DropDownModule,\n SortTableModule,\n SvgModule,\n TableFilterModule,\n VerbenaBadgeModule,\n VerbenaButtonModule,\n VerbenaInputModule,\n VerbenDialogueModule,\n VisibleColumnModule,\n} from 'verben-ng-ui';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { UserRequestFormComponent } from './user-request-form/user-request-form.component';\nimport { UserAccessRequestStatusBadgeComponent } from './user-access-request-status-badge/user-access-request-status-badge.component';\n\n@NgModule({\n declarations: [\n UserRequestApprovalComponent,\n UserRequestFormComponent,\n UserAccessRequestStatusBadgeComponent,\n ],\n imports: [\n CommonModule,\n VerbenDialogueModule,\n DataTableModule,\n CardModule,\n SvgModule,\n DataViewModule,\n CardDataViewModule,\n SortTableModule,\n VisibleColumnModule,\n TableFilterModule,\n DataExportModule,\n DataXportModule,\n FormsModule,\n ReactiveFormsModule,\n VerbenaInputModule,\n VerbenaButtonModule,\n VerbenaBadgeModule,\n DropDownModule,\n ],\n providers: [],\n exports: [\n UserRequestApprovalComponent,\n UserAccessRequestStatusBadgeComponent,\n ],\n})\nexport class LibUserRequestApprovalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UserAccessRequestService","i2.UserAccessRequestState","i3","i1","i2","i2.UserAccessRequestFacade","i5.UserRequestFormComponent","i6.UserAccessRequestStatusBadgeComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verben-authentication-ui-src-lib-components-user-request-approval.mjs","sources":["../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval-card/user-request-approval-card.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval-card/user-request-approval-card.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request.config.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval-form/user-request-approval-form.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval-form/user-request-approval-form.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval-table/user-request-approval-table.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval-table/user-request-approval-table.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request.state.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request.service.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-access-request.facade.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval.component.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval.component.html","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/user-request-approval.module.ts","../../../projects/verben-authentication-ui/src/lib/components/user-request-approval/verben-authentication-ui-src-lib-components-user-request-approval.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserAccessRequestStatus } from 'verben-authentication-ui/src/lib/models';\nimport { VerbenaBadgeModule } from 'verben-ng-ui';\n\n@Component({\n selector: 'lib-user-access-request-status-badge',\n standalone: true,\n imports: [CommonModule, VerbenaBadgeModule],\n templateUrl: './user-access-request-status-badge.component.html',\n styleUrl: './user-access-request-status-badge.component.css',\n})\nexport class UserAccessRequestStatusBadgeComponent {\n @Input() status: UserAccessRequestStatus = UserAccessRequestStatus.Pending;\n\n badgeConfig() {\n switch (this.status) {\n case UserAccessRequestStatus.Approved:\n return { bgColor: 'var(--vbn-color-success-bg)', textColor: 'var(--vbn-color-success)', label: 'Approved' };\n case UserAccessRequestStatus.Declined:\n return { bgColor: 'var(--vbn-color-error-bg)', textColor: 'var(--vbn-color-error)', label: 'Rejected' };\n default:\n return { bgColor: 'var(--vbn-color-text-muted)', textColor: 'var(--vbn-color-border)', label: 'Pending' };\n }\n }\n}\n","<verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"badgeConfig().bgColor\"\n [textColor]=\"badgeConfig().textColor\"\n fontSize=\"12px\"\n [text]=\"badgeConfig().label\"\n [pd]=\"'2px 6px'\"\n></verbena-badge>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { UserAccessRequestStatusBadgeComponent } from '../user-access-request-status-badge/user-access-request-status-badge.component';\n\n/**\n * Presentational card for a single access request in the card view.\n */\n@Component({\n selector: 'lib-user-request-approval-card',\n standalone: true,\n imports: [CommonModule, UserAccessRequestStatusBadgeComponent],\n templateUrl: './user-request-approval-card.component.html',\n styleUrls: ['./user-request-approval-card.component.css'],\n})\nexport class UserRequestApprovalCardComponent {\n @Input() request!: UserAccessRequest;\n @Input() selected = false;\n}\n","<div class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"selected ? 'bg-primary' : 'bg-secondary-200'\"></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span class=\"font-semibold text-[var(--vbn-color-text)] flex-1 truncate\">\n {{ request.FirstName }} {{ request.LastName }}\n </span>\n <p class=\"flex items-center my-1 gap-1\">\n <label class=\"text-[10px] font-light\">Medium:</label>\n <span class=\"text-sm truncate\">{{ request.SignupType }}</span>\n </p>\n </div>\n <div class=\"grid gap-y-1\">\n <lib-user-access-request-status-badge [status]=\"request.RequestStatus\"></lib-user-access-request-status-badge>\n </div>\n </div>\n</div>\n","import { FormBuilder, Validators } from '@angular/forms';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { BasePageConfig } from 'verben-authentication-ui/src/lib/base';\nimport { CardData, ColumnDefinition } from 'verben-ng-ui';\n\nconst fb = new FormBuilder();\n\n/**\n * Column definitions for the access-request table.\n * Single source of truth for table, filter, sort, and export.\n */\nexport const USER_ACCESS_REQUEST_COLUMNS: ColumnDefinition<UserAccessRequest>[] = [\n {\n id: 'select',\n header: '',\n canExport: false,\n },\n {\n id: 'createdAt',\n header: 'CREATED',\n accessorKey: 'CreatedAt',\n },\n {\n id: 'user',\n header: 'NAME',\n accessorFn: (row) => `${row.FirstName} ${row.LastName}`,\n },\n {\n id: 'mail',\n header: 'E-MAIL',\n accessorKey: 'MailAddress',\n },\n {\n id: 'role',\n header: 'ROLE',\n accessorFn: (row) => row.Role?.Name ?? '',\n },\n {\n id: 'status',\n header: 'STATUS',\n accessorKey: 'RequestStatus',\n },\n {\n id: 'actions',\n header: 'ACTIONS',\n canExport: false,\n },\n];\n\n/**\n * Page configuration for access-request approval.\n * Create/import are disabled — this is an approval workflow, not CRUD create.\n */\nexport const USER_ACCESS_REQUEST_CONFIG: BasePageConfig<UserAccessRequest> = {\n endpoint: 'UserAccessRequest',\n pageSize: 20,\n columns: USER_ACCESS_REQUEST_COLUMNS,\n cardDataMapper: (request: UserAccessRequest): CardData => ({\n selected: false,\n title: `${request.FirstName} ${request.LastName}`,\n data: request,\n body: [{ title: 'Role', value: request.Role?.Name ?? '' }],\n children: [],\n }),\n searchDebounceTime: 500,\n\n formGroupConfig: {\n controls: {\n MailAddress: fb.control(''),\n FirstName: fb.control(''),\n LastName: fb.control(''),\n OtherName: fb.control(''),\n PhoneNumber: fb.control(''),\n RoleID: fb.control('', [Validators.required]),\n },\n },\n\n enableCreate: false,\n enableImport: false,\n enableExport: true,\n enableFilter: true,\n enableSort: true,\n enableSearch: true,\n enableCardView: true,\n enableTableRowEdit: false,\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, effect, input, Output } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {\n Role,\n UserAccessRequest,\n UserAccessRequestStatus,\n} from 'verben-authentication-ui/src/lib/models';\nimport {\n DropDownModule,\n VerbenaButtonModule,\n VerbenaInputModule,\n VerbenaTextareaModule,\n VerbenDialogueModule,\n} from 'verben-ng-ui';\nimport { USER_ACCESS_REQUEST_CONFIG } from '../user-access-request.config';\n\n/**\n * Form for approving/rejecting a single access request.\n * Identity fields are read-only; the role must be chosen before approval.\n */\n@Component({\n selector: 'lib-user-request-approval-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n VerbenaInputModule,\n VerbenaButtonModule,\n VerbenaTextareaModule,\n DropDownModule,\n VerbenDialogueModule,\n ],\n templateUrl: './user-request-approval-form.component.html',\n styleUrls: ['./user-request-approval-form.component.css'],\n})\nexport class UserRequestApprovalFormComponent {\n request = input<UserAccessRequest>();\n roles = input<Role[]>([]);\n showDelete = input<boolean>(false);\n\n @Output() approve = new EventEmitter<{ request: UserAccessRequest; roleId: string }>();\n @Output() reject = new EventEmitter<{ request: UserAccessRequest; comment: string }>();\n @Output() deleteRequest = new EventEmitter<UserAccessRequest>();\n @Output() switchToTable = new EventEmitter<void>();\n\n form: FormGroup;\n showDeleteDialogue = false;\n showRejectDialogue = false;\n\n /**\n * Rejection reason. Deliberately outside `form` — that group's validity gates\n * Approve, and a required comment there would gate Approve too.\n */\n rejectComment = new FormControl('', [Validators.required]);\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group(USER_ACCESS_REQUEST_CONFIG.formGroupConfig!.controls);\n\n effect(() => {\n const request = this.request();\n if (request && this.form) {\n this.form.patchValue({\n MailAddress: request.MailAddress || '',\n FirstName: request.FirstName || '',\n LastName: request.LastName || '',\n OtherName: request.OtherName || '',\n PhoneNumber: request.PhoneNumber || '',\n RoleID: request.RoleID || '',\n });\n }\n });\n }\n\n private isPending(): boolean {\n return this.request()?.RequestStatus === UserAccessRequestStatus.Pending;\n }\n\n canProcess(): boolean {\n return this.isPending() && this.form.valid;\n }\n\n canReject(): boolean {\n return this.isPending();\n }\n\n canDelete(): boolean {\n return this.showDelete() && this.isPending();\n }\n\n onApprove(): void {\n const request = this.request();\n if (request && this.canProcess()) {\n this.approve.emit({ request, roleId: this.form.get('RoleID')?.value });\n }\n }\n\n onDelete(): void {\n const request = this.request();\n if (request) {\n this.deleteRequest.emit(request);\n }\n this.closeDeleteDialogue();\n }\n\n toggleDeleteDialogue(): void {\n this.showDeleteDialogue = !this.showDeleteDialogue;\n }\n\n closeDeleteDialogue(): void {\n this.showDeleteDialogue = false;\n }\n\n // ===== Reject (requires a reason) =====\n\n openRejectDialogue(): void {\n if (!this.canReject()) return;\n this.rejectComment.setValue('');\n this.rejectComment.markAsUntouched();\n this.showRejectDialogue = true;\n }\n\n closeRejectDialogue(): void {\n this.showRejectDialogue = false;\n }\n\n canConfirmReject(): boolean {\n return !!this.rejectComment.value?.trim();\n }\n\n confirmReject(): void {\n const request = this.request();\n if (!request || !this.canReject() || !this.canConfirmReject()) return;\n this.reject.emit({ request, comment: this.rejectComment.value!.trim() });\n this.closeRejectDialogue();\n }\n}\n","<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\">\n <verbena-input name=\"MailAddress\" label=\"Mail Address:\" formControlName=\"MailAddress\" [readOnly]=\"true\" />\n <verbena-input label=\"First Name:\" name=\"FirstName\" type=\"text\" formControlName=\"FirstName\" [readOnly]=\"true\" />\n <verbena-input label=\"Last Name:\" name=\"LastName\" type=\"text\" formControlName=\"LastName\" [readOnly]=\"true\" />\n <verbena-input label=\"Other Name:\" name=\"OtherName\" type=\"text\" formControlName=\"OtherName\" [readOnly]=\"true\" />\n\n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n <verben-drop-down styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" [filter]=\"true\" [showClear]=\"true\"\n placeholder=\"\" [options]=\"roles()\" id=\"role\" optionLabel=\"Name\" optionValue=\"Code\" formControlName=\"RoleID\"\n class=\"form-control\">\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between my-2 overflow-auto\">\n <div class=\"flex gap-2\">\n <verbena-button (click)=\"switchToTable.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"></verbena-button>\n\n <verbena-button *ngIf=\"showDelete()\" width=\"114px\" height=\"39px\" (click)=\"toggleDeleteDialogue()\" text=\"Delete\"\n styleType=\"danger\" borderRadius=\"10px\" [disable]=\"!canDelete()\"></verbena-button>\n </div>\n\n <div class=\"flex gap-2\">\n <verbena-button width=\"114px\" height=\"39px\" text=\"Reject\" styleType=\"danger\" borderRadius=\"10px\"\n (click)=\"openRejectDialogue()\" [disable]=\"!canReject()\"></verbena-button>\n\n <verbena-button (click)=\"onApprove()\" text=\"Approve\" bgColor=\"var(--vbn-color-success)\" textColor=\"white\"\n border=\"1px solid var(--vbn-color-success)\" borderRadius=\"10px\" pd=\"10px 20px\" width=\"114px\" height=\"39px\"\n [disable]=\"!canProcess()\"></verbena-button>\n </div>\n </div>\n</form>\n\n<verben-dialogue [showCloseIcon]=\"false\" [dismissOutsideClick]=\"false\" [closeOnEscape]=\"true\" [size]=\"'medium'\"\n [mode]=\"'dialogue'\" [customClass]=\"'show-revert-dialogue'\" [disableFooter]=\"true\" [isVisible]=\"showDeleteDialogue\"\n [bodyTemplate]=\"deleteBodyTemplate\" (closeModal)=\"closeDeleteDialogue()\">\n <ng-template #deleteBodyTemplate>\n <div class=\"dialog-body flex flex-col gap-4\">\n <div class=\"header font-bold text-2xl\">Delete User Request</div>\n <div class=\"form-container-dialogue flex flex-col gap-2\">\n Are you sure you want to proceed?\n </div>\n <div class=\"dialog-button-container flex gap-2\">\n <div class=\"flex-1\">\n <verbena-button width=\"100%\" [fontWeight]=\"'bold'\" [bgColor]=\"'var(--vbn-color-surface)'\"\n [borderRadius]=\"'4px'\" [textColor]=\"'var(--vbn-color-text)'\" [border]=\"'1px solid var(--vbn-color-text)'\"\n [text]=\"'Close'\" (click)=\"closeDeleteDialogue()\">\n </verbena-button>\n </div>\n <div class=\"flex-1\">\n <verbena-button width=\"100%\" class=\"verben-primary-button\" [text]=\"'Proceed'\" (click)=\"onDelete()\">\n </verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n</verben-dialogue>\n\n<verben-dialogue [showCloseIcon]=\"false\" [dismissOutsideClick]=\"false\" [closeOnEscape]=\"true\" [size]=\"'medium'\"\n [mode]=\"'dialogue'\" [customClass]=\"'show-revert-dialogue'\" [disableFooter]=\"true\" [isVisible]=\"showRejectDialogue\"\n [bodyTemplate]=\"rejectBodyTemplate\" (closeModal)=\"closeRejectDialogue()\">\n <ng-template #rejectBodyTemplate>\n <div class=\"dialog-body flex flex-col gap-4\">\n <div class=\"header font-bold text-2xl\">Reject User Request</div>\n <div class=\"form-container-dialogue flex flex-col gap-2\">\n Please provide a reason for rejecting this request.\n <verbena-textarea label=\"Reason\" [required]=\"true\" [rows]=\"4\" width=\"100%\" [formControl]=\"rejectComment\"\n errorMessageColor=\"var(--vbn-color-danger)\">\n </verbena-textarea>\n </div>\n <div class=\"dialog-button-container flex gap-2\">\n <div class=\"flex-1\">\n <verbena-button width=\"100%\" [fontWeight]=\"'bold'\" [bgColor]=\"'var(--vbn-color-surface)'\"\n [borderRadius]=\"'4px'\" [textColor]=\"'var(--vbn-color-text)'\" [border]=\"'1px solid var(--vbn-color-text)'\"\n [text]=\"'Close'\" (click)=\"closeRejectDialogue()\">\n </verbena-button>\n </div>\n <div class=\"flex-1\">\n <verbena-button width=\"100%\" class=\"verben-primary-button\" [text]=\"'Proceed'\" (click)=\"confirmReject()\"\n [disable]=\"!canConfirmReject()\">\n </verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n</verben-dialogue>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { ColumnDefinition, DataTableModule, SvgModule } from 'verben-ng-ui';\nimport { UserAccessRequestStatusBadgeComponent } from '../user-access-request-status-badge/user-access-request-status-badge.component';\n\n/**\n * Table view for access requests. Row actions open the form (to approve/reject\n * with a role) or delete the request.\n */\n@Component({\n selector: 'lib-user-request-approval-table',\n standalone: true,\n imports: [CommonModule, DataTableModule, SvgModule, UserAccessRequestStatusBadgeComponent],\n templateUrl: './user-request-approval-table.component.html',\n styleUrls: ['./user-request-approval-table.component.css'],\n})\nexport class UserRequestApprovalTableComponent {\n @Input() requests: UserAccessRequest[] = [];\n @Input() columns: ColumnDefinition<UserAccessRequest>[] = [];\n @Input() isLoading = false;\n @Input() showDelete = false;\n\n @Output() view = new EventEmitter<UserAccessRequest>();\n @Output() delete = new EventEmitter<UserAccessRequest>();\n\n onView(request: UserAccessRequest): void {\n this.view.emit(request);\n }\n\n onDelete(request: UserAccessRequest): void {\n this.delete.emit(request);\n }\n}\n","<div class=\"table-container\" [class.loading]=\"isLoading\">\n <lib-data-table [data]=\"requests\" [columns]=\"columns\" dataKey=\"MailAddress\">\n <!-- Select -->\n <ng-container libColumn=\"select\">\n <ng-template #cell let-isSelected=\"isSelected\" let-toggleRowSelection=\"toggleRowSelection\">\n <input type=\"checkbox\" [checked]=\"isSelected\" (change)=\"toggleRowSelection()\" />\n </ng-template>\n </ng-container>\n\n <!-- Created -->\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>{{ value | date }}</ng-template>\n </ng-container>\n\n <!-- Status -->\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <lib-user-access-request-status-badge [status]=\"value\"></lib-user-access-request-status-badge>\n </ng-template>\n </ng-container>\n\n <!-- Actions -->\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-row=\"row\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"onView(row)\" icon=\"edit\" [width]=\"15\" [height]=\"15\" class=\"cursor-pointer\"></verben-svg>\n <verben-svg *ngIf=\"showDelete\" (click)=\"onDelete(row)\" icon=\"delete\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n\n <div *ngIf=\"requests.length === 0 && !isLoading\" class=\"empty-state\">\n <p>No access requests found</p>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { Role, UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { BaseDataPageState } from 'verben-authentication-ui/src/lib/base';\n\n/**\n * State for the access-request approval page.\n * Adds the roles list used by the form's role dropdown.\n */\n@Injectable()\nexport class UserAccessRequestState extends BaseDataPageState<UserAccessRequest> {\n private roles$ = new BehaviorSubject<Role[]>([]);\n\n getRoles$(): Observable<Role[]> {\n return this.roles$.asObservable();\n }\n\n getRolesValue(): Role[] {\n return this.roles$.getValue();\n }\n\n setRoles(roles: Role[]): void {\n this.roles$.next(roles);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ErrorResponse,\n PagedResult,\n Role,\n Tag,\n UserAccessRequest,\n} from 'verben-authentication-ui/src/lib/models';\nimport { HttpWebRequestService } from 'verben-authentication-ui/src/lib/services';\nimport {\n BaseDataPageService,\n FilterHandlerService,\n SortHandlerService,\n} from 'verben-authentication-ui/src/lib/base';\n\n/**\n * Service for access-request API operations.\n *\n * The auth API pluralises names and appends a `/{sortParam}/{sortOrder}` suffix\n * to every read, so the base URL seams are overridden accordingly. It also\n * carries an approve/reject workflow and a bespoke delete-by-email endpoint that\n * have no analog in the generic CRUD base.\n *\n * Kept publicly exported under its original name for backward compatibility.\n */\n@Injectable()\nexport class UserAccessRequestService extends BaseDataPageService<UserAccessRequest> {\n private readonly defaultSort = 'CreatedAt/Asc';\n\n constructor(\n server: HttpWebRequestService,\n filterHandler: FilterHandlerService,\n sortHandler: SortHandlerService,\n ) {\n super(server, filterHandler, sortHandler);\n }\n\n getEndpoint(): string {\n return 'UserAccessRequest';\n }\n\n // ===== URL seams =====\n\n protected override listUrl(skip: number, limit: number): string {\n return `GetUserAccessRequests/${skip}/${limit}/${this.defaultSort}`;\n }\n\n protected override searchTermUrl(term: string, skip: number, limit: number): string {\n return `GetUserAccessRequestWithParam/${term}/${skip}/${limit}/${this.defaultSort}`;\n }\n\n protected override filterSearchUrl(skip: number, limit: number): string {\n return `SearchUserAccessRequest/${skip}/${limit}/${this.defaultSort}`;\n }\n\n protected override saveUrl(): string {\n return 'SaveUserAccessRequests';\n }\n\n // ===== Delete (bespoke: by email, also removes the associated signup) =====\n\n override async deleteItems(emails: string[]): Promise<boolean | ErrorResponse> {\n for (const email of emails) {\n const res = await this.server.get(\n `DeleteUserRequestWithUser/${email}`,\n this.baseUrl,\n );\n if (res instanceof ErrorResponse) {\n return res;\n }\n }\n return true;\n }\n\n // ===== Workflow =====\n\n /** Approve (isApproval=true) or reject (false) the given requests. */\n processRequests(\n requests: UserAccessRequest[],\n isApproval: boolean,\n ): Promise<UserAccessRequest[] | ErrorResponse> {\n return this.server.post<UserAccessRequest[]>(\n `UserAccessRequestAction/${isApproval}`,\n requests,\n );\n }\n\n // ===== Lookups =====\n\n async getRoles(): Promise<Role[]> {\n const res = await this.server.get<PagedResult<Role>>('GetRoles/0/0');\n if (res instanceof ErrorResponse) {\n return [];\n }\n return res.Result ?? [];\n }\n\n async getTags(): Promise<Tag[]> {\n const res = await this.server.get<PagedResult<Tag>>('GetTags/0/0');\n if (res instanceof ErrorResponse) {\n return [];\n }\n return res.Result ?? [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n ErrorResponse,\n ObjectState,\n OAuthType,\n Role,\n Status,\n UserAccessRequest,\n UserAccessRequestStatus,\n} from 'verben-authentication-ui/src/lib/models';\nimport { UtilService } from 'verben-authentication-ui/src/lib/services';\nimport {\n BaseDataPageFacade,\n SearchHandlerService,\n} from 'verben-authentication-ui/src/lib/base';\nimport { ColumnDefinition } from 'verben-ng-ui';\nimport { USER_ACCESS_REQUEST_CONFIG } from './user-access-request.config';\nimport { UserAccessRequestService } from './user-access-request.service';\nimport { UserAccessRequestState } from './user-access-request.state';\n\n/**\n * Facade for the access-request approval page.\n * Adds the approve/reject workflow on top of the generic base facade.\n */\n@Injectable()\nexport class UserAccessRequestFacade extends BaseDataPageFacade<UserAccessRequest> {\n private requestService: UserAccessRequestService;\n private blankRequest?: UserAccessRequest;\n\n constructor(\n state: UserAccessRequestState,\n service: UserAccessRequestService,\n searchHandler: SearchHandlerService,\n utilService: UtilService,\n ) {\n super(state, service, searchHandler, utilService, USER_ACCESS_REQUEST_CONFIG);\n this.requestService = service;\n }\n\n // ===== Custom observables =====\n\n get roles$(): Observable<Role[]> {\n return (this.state as UserAccessRequestState).getRoles$();\n }\n\n // ===== View management =====\n\n /**\n * Select the request to show in the form. The form template binds to\n * currentCardData(), so route selection through selectCard (reusing the\n * matching card from the loaded list when present) rather than a separate\n * selected-request stream that nothing reads.\n */\n openForm(request?: UserAccessRequest): void {\n if (!request) {\n this.selectCard(null);\n return;\n }\n const existing = this.cardData().find(\n (card) => card.data?.MailAddress === request.MailAddress,\n );\n this.selectCard(existing ?? this.getConfig().cardDataMapper(request));\n }\n\n closeForm(): void {\n this.selectCard(null);\n }\n\n handleColumnsUpdated(columns: ColumnDefinition<UserAccessRequest>[]): void {\n this.updateVisibleColumns(columns);\n }\n\n // ===== Roles =====\n\n async loadRoles(): Promise<void> {\n const roles = await this.requestService.getRoles();\n (this.state as UserAccessRequestState).setRoles(roles);\n }\n\n // ===== Approval workflow =====\n\n async approveRequest(request: UserAccessRequest, roleId: string): Promise<boolean> {\n return this.process({ ...request, RoleID: roleId }, true, 'Request approved');\n }\n\n async rejectRequest(request: UserAccessRequest, comment?: string): Promise<boolean> {\n return this.process({ ...request, Comment: comment }, false, 'Request rejected');\n }\n\n private async process(\n request: UserAccessRequest,\n isApproval: boolean,\n successMessage: string,\n ): Promise<boolean> {\n this.state.setUpdating(true);\n const result = await this.requestService.processRequests([request], isApproval);\n this.state.setUpdating(false);\n\n if (result instanceof ErrorResponse) {\n this.utilService.showError(result.ErrorMsg);\n return false;\n }\n\n this.utilService.showSuccess(successMessage);\n const updated = result[0] ?? {\n ...request,\n RequestStatus: isApproval\n ? UserAccessRequestStatus.Approved\n : UserAccessRequestStatus.Declined,\n };\n this.state.updateItem(updated);\n this.closeForm();\n return true;\n }\n\n async deleteRequest(request: UserAccessRequest): Promise<boolean> {\n // Delete is keyed by email (DeleteUserRequestWithUser/{email}), which does\n // not match the list's Id/Code key, so call the service directly and let\n // refresh() reconcile the list rather than the base facade's key-based\n // removeItem (which would be a no-op for an email).\n this.state.setUpdating(true);\n const result = await this.requestService.deleteItems([request.MailAddress]);\n this.state.setUpdating(false);\n\n if (result instanceof ErrorResponse) {\n this.utilService.showError(result.ErrorMsg);\n return false;\n }\n\n this.closeForm();\n await this.refresh();\n return true;\n }\n\n // ===== Empty placeholder for the form when nothing is selected =====\n\n get emptyRequest(): UserAccessRequest {\n return (this.blankRequest ??= this.createEmptyRequest());\n }\n\n private createEmptyRequest(): UserAccessRequest {\n return {\n id: Date.now().toString(),\n Id: '',\n Code: '',\n TenantId: '',\n ServiceName: '',\n CreatedAt: new Date(),\n UpdatedAt: new Date(),\n DataState: ObjectState.New,\n Password: '',\n FirstName: '',\n LastName: '',\n MailAddress: '',\n IsSeeded: false,\n Status: Status.Active,\n SignupType: OAuthType.InApp,\n RequestStatus: UserAccessRequestStatus.Pending,\n } as UserAccessRequest;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n inject,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { UserAccessRequest } from 'verben-authentication-ui/src/lib/models';\nimport { SearchHandlerService } from 'verben-authentication-ui/src/lib/base';\nimport {\n CardData,\n CardDataViewComponent,\n CardDataViewModule,\n DataColumnsModule,\n DataFilterModule,\n DataSortModule,\n DataViewComponent,\n DataViewModule,\n DataXportModule,\n FilterCondition,\n SortCondition,\n} from 'verben-ng-ui';\nimport { UserRequestApprovalCardComponent } from './user-request-approval-card/user-request-approval-card.component';\nimport { UserRequestApprovalFormComponent } from './user-request-approval-form/user-request-approval-form.component';\nimport { UserRequestApprovalTableComponent } from './user-request-approval-table/user-request-approval-table.component';\nimport { UserAccessRequestFacade } from './user-access-request.facade';\nimport { UserAccessRequestService } from './user-access-request.service';\nimport { UserAccessRequestState } from './user-access-request.state';\n\n/**\n * Access-request approval page. Lists requests in table/card views and drives\n * the approve/reject/delete workflow through the facade.\n */\n@Component({\n selector: 'lib-user-request-approval',\n standalone: true,\n imports: [\n CommonModule,\n DataViewModule,\n DataColumnsModule,\n DataFilterModule,\n DataSortModule,\n DataXportModule,\n CardDataViewModule,\n UserRequestApprovalTableComponent,\n UserRequestApprovalCardComponent,\n UserRequestApprovalFormComponent,\n ],\n templateUrl: './user-request-approval.component.html',\n styleUrls: ['./user-request-approval.component.css'],\n providers: [\n UserAccessRequestFacade,\n UserAccessRequestState,\n UserAccessRequestService,\n SearchHandlerService,\n ],\n})\nexport class UserRequestApprovalComponent implements OnInit {\n @Input() showDelete = false;\n\n @ViewChild('vdv') vdv!: DataViewComponent;\n @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n\n private destroyRef = inject(DestroyRef);\n\n constructor(public facade: UserAccessRequestFacade) {}\n\n ngOnInit(): void {\n this.facade.cardSelectionCleared$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.clearCardView());\n this.facade.loadData();\n this.facade.loadRoles();\n }\n\n private clearCardView(): void {\n const view = this.cardDataView;\n if (!view) return;\n view.clearData();\n if (view.rightContent) {\n view.rightContent.parentData = null as unknown as CardData;\n }\n }\n\n // ===== Filter / Sort / Search =====\n\n onFilterApplied(filters: FilterCondition[]): void {\n this.facade.applyFilters(filters);\n }\n\n onSortApplied(sorts: SortCondition[]): void {\n this.facade.applySorts(sorts);\n }\n\n onSearch(term: string): void {\n this.facade.onSearch(term);\n }\n\n onColumnsUpdated(columns: any): void {\n this.facade.handleColumnsUpdated(columns);\n }\n\n onLoadMore(): void {\n this.facade.loadMore();\n }\n\n // ===== Table events =====\n\n onViewRequest(request: UserAccessRequest): void {\n this.facade.openForm(request);\n this.vdv.toggleView();\n }\n\n requestCardClicked(selectedCard: CardData): void {\n this.facade.selectCard(selectedCard);\n }\n\n onDeleteFromTable(request: UserAccessRequest): void {\n const name = `${request.FirstName} ${request.LastName}`.trim() || request.MailAddress;\n if (confirm(`Delete request from ${name}?`)) {\n this.facade.deleteRequest(request);\n }\n }\n\n // ===== Form events =====\n\n onApprove(event: { request: UserAccessRequest; roleId: string }): void {\n this.facade.approveRequest(event.request, event.roleId);\n this.vdv.toggleView();\n }\n\n onReject(event: { request: UserAccessRequest; comment: string }): void {\n this.facade.rejectRequest(event.request, event.comment);\n this.vdv.toggleView();\n }\n\n onDeleteRequest(request: UserAccessRequest): void {\n this.facade.deleteRequest(request);\n this.vdv.toggleView();\n }\n}\n","<div class=\"user-request-approval-page space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isCreate: false,\n isToggle: true,\n isImport: false,\n }\" [selectedColumnCount]=\"(facade.visibleColumns$ | async)?.length ?? 0\"\n [selectedSortCount]=\"(facade.sorts$ | async)?.length ?? 0\"\n [selectedFilterTableCount]=\"(facade.filters$ | async)?.length ?? 0\"\n (onSearchChange)=\"onSearch($event.value)\">\n\n <!-- Table View -->\n <div table-content>\n <lib-user-request-approval-table [requests]=\"(facade.items$ | async) ?? []\"\n [columns]=\"(facade.visibleColumns$ | async) ?? []\" [isLoading]=\"(facade.isLoading$ | async) ?? false\"\n [showDelete]=\"showDelete\" (view)=\"onViewRequest($event)\" (delete)=\"onDeleteFromTable($event)\">\n </lib-user-request-approval-table>\n </div>\n\n <!-- Card View -->\n <div card-content>\n <verben-card-data-view #vdcv [cardDataList]=\"facade.cardData()\" borderRadius=\"12px\" dataId=\"MailAddress\"\n [border]=\"'5px'\" rbgColor=\"var(--vbn-color-surface-alt)\" mg=\"20px\">\n\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"facade.cardData()\">\n <ng-template #card let-item>\n <div (click)=\"requestCardClicked(vdcv.onItemClick(item))\" class=\"cursor-pointer h-[max-content]\">\n <lib-user-request-approval-card [request]=\"item.data\" [selected]=\"item.selected\">\n </lib-user-request-approval-card>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-user-request-approval-form [request]=\"facade.currentCardData()?.data ?? facade.emptyRequest\"\n [roles]=\"(facade.roles$ | async) ?? []\" [showDelete]=\"showDelete\" (approve)=\"onApprove($event)\"\n (reject)=\"onReject($event)\" (deleteRequest)=\"onDeleteRequest($event)\"\n (switchToTable)=\"vdv.toggleView()\">\n </lib-user-request-approval-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div class=\"flex gap-2 items-center justify-end\">\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ (facade.items$ | async)?.length }} records loaded</span>\n <button class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\"\n [disabled]=\"(facade.isLoading$ | async) ?? false\" (click)=\"onLoadMore()\">Load More</button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n\n <!-- Column Selector -->\n <div column-content>\n <lib-data-columns [columns]=\"facade.getColumns()\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n\n <!-- Filter -->\n <div filter-content>\n <lib-data-filter [columns]=\"facade.getColumns()\" [data]=\"(facade.items$ | async) ?? []\"\n (filterApplied)=\"onFilterApplied($event)\"></lib-data-filter>\n </div>\n\n <!-- Sort -->\n <div sort-content>\n <lib-data-sort [columns]=\"facade.getColumns()\" [data]=\"(facade.items$ | async) ?? []\"\n (sortApplied)=\"onSortApplied($event)\"></lib-data-sort>\n </div>\n\n <!-- Export -->\n <div export-content>\n <lib-data-xport [columns]=\"facade.getColumns()\" [data]=\"(facade.items$ | async) ?? []\"></lib-data-xport>\n </div>\n </verben-data-view>\n\n <!-- Table View Load More -->\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end mt-4 px-4\">\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ (facade.items$ | async)?.length }} records loaded</span>\n <button class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\"\n [disabled]=\"(facade.isLoading$ | async) ?? false\" (click)=\"onLoadMore()\">Load More</button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { UserRequestApprovalComponent } from './user-request-approval.component';\nimport { UserAccessRequestStatusBadgeComponent } from './user-access-request-status-badge/user-access-request-status-badge.component';\n\n/**\n * Backward-compatibility shim. The components are standalone; this module keeps\n * the historical `LibUserRequestApprovalModule` name so existing NgModule-based\n * consumers keep working after the rebuild.\n */\n@NgModule({\n imports: [UserRequestApprovalComponent, UserAccessRequestStatusBadgeComponent],\n exports: [UserRequestApprovalComponent, UserAccessRequestStatusBadgeComponent],\n})\nexport class LibUserRequestApprovalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.UserAccessRequestState","i2.UserAccessRequestService","i3","i4","i1.UserAccessRequestFacade"],"mappings":"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"}
|
|
@@ -21,13 +21,13 @@ class UserRequestComponent {
|
|
|
21
21
|
route;
|
|
22
22
|
width = '500px';
|
|
23
23
|
headingTitle = 'Request an account';
|
|
24
|
-
headingClass = 'font-medium text-[2rem] leading-[48px] text-[
|
|
24
|
+
headingClass = 'font-medium text-[2rem] leading-[48px] text-[var(--vbn-color-text)]';
|
|
25
25
|
customClass = '';
|
|
26
|
-
bgColor = '
|
|
26
|
+
bgColor = 'var(--vbn-color-surface)';
|
|
27
27
|
boxShadow = '4px 4px 4px rgba(0, 0, 0, 0.25)';
|
|
28
28
|
border = '1px solid #66666680';
|
|
29
29
|
borderRadius = '24px';
|
|
30
|
-
textColor = '
|
|
30
|
+
textColor = 'var(--vbn-color-text)';
|
|
31
31
|
height = 'auto';
|
|
32
32
|
pd = '32px 48px';
|
|
33
33
|
isFormEditable = true;
|
|
@@ -37,9 +37,9 @@ class UserRequestComponent {
|
|
|
37
37
|
isCode = false;
|
|
38
38
|
text = 'Send Request';
|
|
39
39
|
color = 'black';
|
|
40
|
-
btnBorder = '1px solid
|
|
40
|
+
btnBorder = '1px solid var(--vbn-color-primary)';
|
|
41
41
|
btnBorderRadius = '40px';
|
|
42
|
-
btnBgColor = '
|
|
42
|
+
btnBgColor = 'var(--vbn-color-primary)';
|
|
43
43
|
btnWidth = '100%';
|
|
44
44
|
btnPd = '10px 20px';
|
|
45
45
|
termsLink = '';
|
|
@@ -272,11 +272,11 @@ class UserRequestComponent {
|
|
|
272
272
|
this.hidePassword = true;
|
|
273
273
|
}
|
|
274
274
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i2.UtilService }, { token: i2.EnvironmentService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestComponent, selector: "lib-user-request", inputs: { width: "width", headingTitle: "headingTitle", headingClass: "headingClass", customClass: "customClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", pd: "pd", text: "text", color: "color", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnBgColor: "btnBgColor", btnWidth: "btnWidth", btnPd: "btnPd", termsLink: "termsLink", privacyLink: "privacyLink", routerLink: "routerLink" }, outputs: { formSubmit: "formSubmit", googleClick: "googleClick", onSubmitSuccess: "onSubmitSuccess", appleClick: "appleClick", microsoftClick: "microsoftClick", onSubmitGoogleAuth: "onSubmitGoogleAuth", onSubmitResponseEnd: "onSubmitResponseEnd" }, ngImport: i0, template: "<section [ngStyle]=\"styles\" class=\"{{ customClass }}\">\n <h2 class=\"{{ headingClass }}\">\n {{ headingTitle }}\n </h2>\n\n <form\n [formGroup]=\"userRequestForm\"\n (ngSubmit)=\"submitForm()\"\n class=\"flex flex-col gap-5 mt-3\"\n >\n <verbena-input\n [label]=\"'First Name'\"\n [labelColor]=\"'
|
|
275
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestComponent, selector: "lib-user-request", inputs: { width: "width", headingTitle: "headingTitle", headingClass: "headingClass", customClass: "customClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", pd: "pd", text: "text", color: "color", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnBgColor: "btnBgColor", btnWidth: "btnWidth", btnPd: "btnPd", termsLink: "termsLink", privacyLink: "privacyLink", routerLink: "routerLink" }, outputs: { formSubmit: "formSubmit", googleClick: "googleClick", onSubmitSuccess: "onSubmitSuccess", appleClick: "appleClick", microsoftClick: "microsoftClick", onSubmitGoogleAuth: "onSubmitGoogleAuth", onSubmitResponseEnd: "onSubmitResponseEnd" }, ngImport: i0, template: "<section [ngStyle]=\"styles\" class=\"{{ customClass }}\">\n <h2 class=\"{{ headingClass }}\">\n {{ headingTitle }}\n </h2>\n\n <form\n [formGroup]=\"userRequestForm\"\n (ngSubmit)=\"submitForm()\"\n class=\"flex flex-col gap-5 mt-3\"\n >\n <verbena-input\n [label]=\"'First Name'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"FirstName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'Last Name'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"LastName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'E-mail Address'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"MailAddress\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [customErrorMessages]=\"{\n required: 'Email address is required',\n email: 'Email address must be valid',\n }\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"!hidePassword\"\n [label]=\"'Password'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [passwordToggle]=\"true\"\n formControlName=\"Password\"\n [required]=\"true\"\n [type]=\"'password'\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"!hidePassword\"\n [label]=\"'Confirm Password'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"ConfirmPassword\"\n [showBorder]=\"true\"\n [passwordToggle]=\"true\"\n [bgColor]=\"'white'\"\n [minLength]=\"userRequestForm.controls['Password'].value?.length\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [customErrorMessages]=\"{\n minLength: 'Confirm Password must match password',\n required: 'Confirm Password is required and must match password',\n password: 'Password does not match',\n }\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-button\n [class]=\"'mt-6'\"\n [disable]=\"!this.checkForm()\"\n [text]=\"text\"\n [bgColor]=\"btnBgColor\"\n [textColor]=\"color\"\n type=\"submit\"\n [buttonClass]=\"'cursor-not-allowed'\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [pd]=\"btnPd\"\n [ngClass]=\"{\n 'cursor-not-allowed': !checkForm(),\n }\"\n [width]=\"btnWidth\"\n buttonClass=\"font-medium text-[22px] leading-[33px]\"\n ></verbena-button>\n </form>\n\n <div class=\"mt-2\" *ngIf=\"AuthMechanisms !== null\">\n <verben-o-auth [authMechanisms]=\"AuthMechanisms\"></verben-o-auth>\n </div>\n</section>\n\n<!-- <button (click)=\"testDisable()\">Test</button> -->\n", styles: [".flex{display:flex}.items-center{align-items:center}.overflow-hidden{overflow:hidden}.justify-center{justify-content:center}.h-full{height:100%}.text-center{text-align:center}.underline{text-decoration:underline}.gap-5{gap:20px}.mt-4{margin-top:1rem}.space-y-4>:not([hidden])~:not([hidden]){margin-top:1rem}.gap-1>:not([hidden])~:not([hidden]){gap:.25rem}.pt-3{padding-top:.75rem}.mt-5{margin-top:1.25rem}.border{border-width:1px}.rounded-xl{border-radius:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.flex-col{flex-direction:column}.object-cover{object-fit:cover}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed!important}.accent{accent-color:var(--vbn-color-text)}.OR{color:var(--vbn-color-text-muted);gap:6px}.OR span{width:150px;border-top:2px solid #6666663d;display:block}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["disabled", "label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.OAuthComponent, selector: "verben-o-auth", inputs: ["authMechanisms"], outputs: ["emitMechanismFn"] }] });
|
|
276
276
|
}
|
|
277
277
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestComponent, decorators: [{
|
|
278
278
|
type: Component,
|
|
279
|
-
args: [{ selector: 'lib-user-request', template: "<section [ngStyle]=\"styles\" class=\"{{ customClass }}\">\n <h2 class=\"{{ headingClass }}\">\n {{ headingTitle }}\n </h2>\n\n <form\n [formGroup]=\"userRequestForm\"\n (ngSubmit)=\"submitForm()\"\n class=\"flex flex-col gap-5 mt-3\"\n >\n <verbena-input\n [label]=\"'First Name'\"\n [labelColor]=\"'
|
|
279
|
+
args: [{ selector: 'lib-user-request', template: "<section [ngStyle]=\"styles\" class=\"{{ customClass }}\">\n <h2 class=\"{{ headingClass }}\">\n {{ headingTitle }}\n </h2>\n\n <form\n [formGroup]=\"userRequestForm\"\n (ngSubmit)=\"submitForm()\"\n class=\"flex flex-col gap-5 mt-3\"\n >\n <verbena-input\n [label]=\"'First Name'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"FirstName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'Last Name'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"LastName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'E-mail Address'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"MailAddress\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [customErrorMessages]=\"{\n required: 'Email address is required',\n email: 'Email address must be valid',\n }\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"!hidePassword\"\n [label]=\"'Password'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [passwordToggle]=\"true\"\n formControlName=\"Password\"\n [required]=\"true\"\n [type]=\"'password'\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"!hidePassword\"\n [label]=\"'Confirm Password'\"\n [labelColor]=\"'var(--vbn-color-text-muted)'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"ConfirmPassword\"\n [showBorder]=\"true\"\n [passwordToggle]=\"true\"\n [bgColor]=\"'white'\"\n [minLength]=\"userRequestForm.controls['Password'].value?.length\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [customErrorMessages]=\"{\n minLength: 'Confirm Password must match password',\n required: 'Confirm Password is required and must match password',\n password: 'Password does not match',\n }\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-button\n [class]=\"'mt-6'\"\n [disable]=\"!this.checkForm()\"\n [text]=\"text\"\n [bgColor]=\"btnBgColor\"\n [textColor]=\"color\"\n type=\"submit\"\n [buttonClass]=\"'cursor-not-allowed'\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [pd]=\"btnPd\"\n [ngClass]=\"{\n 'cursor-not-allowed': !checkForm(),\n }\"\n [width]=\"btnWidth\"\n buttonClass=\"font-medium text-[22px] leading-[33px]\"\n ></verbena-button>\n </form>\n\n <div class=\"mt-2\" *ngIf=\"AuthMechanisms !== null\">\n <verben-o-auth [authMechanisms]=\"AuthMechanisms\"></verben-o-auth>\n </div>\n</section>\n\n<!-- <button (click)=\"testDisable()\">Test</button> -->\n", styles: [".flex{display:flex}.items-center{align-items:center}.overflow-hidden{overflow:hidden}.justify-center{justify-content:center}.h-full{height:100%}.text-center{text-align:center}.underline{text-decoration:underline}.gap-5{gap:20px}.mt-4{margin-top:1rem}.space-y-4>:not([hidden])~:not([hidden]){margin-top:1rem}.gap-1>:not([hidden])~:not([hidden]){gap:.25rem}.pt-3{padding-top:.75rem}.mt-5{margin-top:1.25rem}.border{border-width:1px}.rounded-xl{border-radius:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.flex-col{flex-direction:column}.object-cover{object-fit:cover}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed!important}.accent{accent-color:var(--vbn-color-text)}.OR{color:var(--vbn-color-text-muted);gap:6px}.OR span{width:150px;border-top:2px solid #6666663d;display:block}\n"] }]
|
|
280
280
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.HttpWebRequestService }, { type: i2.UtilService }, { type: i2.EnvironmentService }, { type: i3.ActivatedRoute }], propDecorators: { width: [{
|
|
281
281
|
type: Input
|
|
282
282
|
}], headingTitle: [{
|