verben-authentication-ui 1.1.0 → 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 +42 -48
- 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
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ErrorResponse, } from 'verben-authentication-ui/src/lib/models';
|
|
3
|
+
import { BaseDataPageService, } from 'verben-authentication-ui/src/lib/base';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "verben-authentication-ui/src/lib/services";
|
|
6
|
+
import * as i2 from "verben-authentication-ui/src/lib/base";
|
|
7
|
+
/**
|
|
8
|
+
* Service for access-request API operations.
|
|
9
|
+
*
|
|
10
|
+
* The auth API pluralises names and appends a `/{sortParam}/{sortOrder}` suffix
|
|
11
|
+
* to every read, so the base URL seams are overridden accordingly. It also
|
|
12
|
+
* carries an approve/reject workflow and a bespoke delete-by-email endpoint that
|
|
13
|
+
* have no analog in the generic CRUD base.
|
|
14
|
+
*
|
|
15
|
+
* Kept publicly exported under its original name for backward compatibility.
|
|
16
|
+
*/
|
|
17
|
+
export class UserAccessRequestService extends BaseDataPageService {
|
|
18
|
+
defaultSort = 'CreatedAt/Asc';
|
|
19
|
+
constructor(server, filterHandler, sortHandler) {
|
|
20
|
+
super(server, filterHandler, sortHandler);
|
|
21
|
+
}
|
|
22
|
+
getEndpoint() {
|
|
23
|
+
return 'UserAccessRequest';
|
|
24
|
+
}
|
|
25
|
+
// ===== URL seams =====
|
|
26
|
+
listUrl(skip, limit) {
|
|
27
|
+
return `GetUserAccessRequests/${skip}/${limit}/${this.defaultSort}`;
|
|
28
|
+
}
|
|
29
|
+
searchTermUrl(term, skip, limit) {
|
|
30
|
+
return `GetUserAccessRequestWithParam/${term}/${skip}/${limit}/${this.defaultSort}`;
|
|
31
|
+
}
|
|
32
|
+
filterSearchUrl(skip, limit) {
|
|
33
|
+
return `SearchUserAccessRequest/${skip}/${limit}/${this.defaultSort}`;
|
|
34
|
+
}
|
|
35
|
+
saveUrl() {
|
|
36
|
+
return 'SaveUserAccessRequests';
|
|
37
|
+
}
|
|
38
|
+
// ===== Delete (bespoke: by email, also removes the associated signup) =====
|
|
39
|
+
async deleteItems(emails) {
|
|
40
|
+
for (const email of emails) {
|
|
41
|
+
const res = await this.server.get(`DeleteUserRequestWithUser/${email}`, this.baseUrl);
|
|
42
|
+
if (res instanceof ErrorResponse) {
|
|
43
|
+
return res;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
// ===== Workflow =====
|
|
49
|
+
/** Approve (isApproval=true) or reject (false) the given requests. */
|
|
50
|
+
processRequests(requests, isApproval) {
|
|
51
|
+
return this.server.post(`UserAccessRequestAction/${isApproval}`, requests);
|
|
52
|
+
}
|
|
53
|
+
// ===== Lookups =====
|
|
54
|
+
async getRoles() {
|
|
55
|
+
const res = await this.server.get('GetRoles/0/0');
|
|
56
|
+
if (res instanceof ErrorResponse) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
return res.Result ?? [];
|
|
60
|
+
}
|
|
61
|
+
async getTags() {
|
|
62
|
+
const res = await this.server.get('GetTags/0/0');
|
|
63
|
+
if (res instanceof ErrorResponse) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
return res.Result ?? [];
|
|
67
|
+
}
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestService, deps: [{ token: i1.HttpWebRequestService }, { token: i2.FilterHandlerService }, { token: i2.SortHandlerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestService });
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestService, decorators: [{
|
|
72
|
+
type: Injectable
|
|
73
|
+
}], ctorParameters: () => [{ type: i1.HttpWebRequestService }, { type: i2.FilterHandlerService }, { type: i2.SortHandlerService }] });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hY2Nlc3MtcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcXVlc3QtYXBwcm92YWwvdXNlci1hY2Nlc3MtcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLGFBQWEsR0FLZCxNQUFNLHlDQUF5QyxDQUFDO0FBRWpELE9BQU8sRUFDTCxtQkFBbUIsR0FHcEIsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQUUvQzs7Ozs7Ozs7O0dBU0c7QUFFSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQXNDO0lBQ2pFLFdBQVcsR0FBRyxlQUFlLENBQUM7SUFFL0MsWUFDRSxNQUE2QixFQUM3QixhQUFtQyxFQUNuQyxXQUErQjtRQUUvQixLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELHdCQUF3QjtJQUVMLE9BQU8sQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNwRCxPQUFPLHlCQUF5QixJQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRWtCLGFBQWEsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEtBQWE7UUFDeEUsT0FBTyxpQ0FBaUMsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RGLENBQUM7SUFFa0IsZUFBZSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzVELE9BQU8sMkJBQTJCLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFa0IsT0FBTztRQUN4QixPQUFPLHdCQUF3QixDQUFDO0lBQ2xDLENBQUM7SUFFRCw2RUFBNkU7SUFFcEUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFnQjtRQUN6QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQy9CLDZCQUE2QixLQUFLLEVBQUUsRUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1lBQ0YsSUFBSSxHQUFHLFlBQVksYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx1QkFBdUI7SUFFdkIsc0VBQXNFO0lBQ3RFLGVBQWUsQ0FDYixRQUE2QixFQUM3QixVQUFtQjtRQUVuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQiwyQkFBMkIsVUFBVSxFQUFFLEVBQ3ZDLFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFzQjtJQUV0QixLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQW9CLGNBQWMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksR0FBRyxZQUFZLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBbUIsYUFBYSxDQUFDLENBQUM7UUFDbkUsSUFBSSxHQUFHLFlBQVksYUFBYSxFQUFFLENBQUM7WUFDakMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO3dHQTdFVSx3QkFBd0I7NEdBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVycm9yUmVzcG9uc2UsXG4gIFBhZ2VkUmVzdWx0LFxuICBSb2xlLFxuICBUYWcsXG4gIFVzZXJBY2Nlc3NSZXF1ZXN0LFxufSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgQmFzZURhdGFQYWdlU2VydmljZSxcbiAgRmlsdGVySGFuZGxlclNlcnZpY2UsXG4gIFNvcnRIYW5kbGVyU2VydmljZSxcbn0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvYmFzZSc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgYWNjZXNzLXJlcXVlc3QgQVBJIG9wZXJhdGlvbnMuXG4gKlxuICogVGhlIGF1dGggQVBJIHBsdXJhbGlzZXMgbmFtZXMgYW5kIGFwcGVuZHMgYSBgL3tzb3J0UGFyYW19L3tzb3J0T3JkZXJ9YCBzdWZmaXhcbiAqIHRvIGV2ZXJ5IHJlYWQsIHNvIHRoZSBiYXNlIFVSTCBzZWFtcyBhcmUgb3ZlcnJpZGRlbiBhY2NvcmRpbmdseS4gSXQgYWxzb1xuICogY2FycmllcyBhbiBhcHByb3ZlL3JlamVjdCB3b3JrZmxvdyBhbmQgYSBiZXNwb2tlIGRlbGV0ZS1ieS1lbWFpbCBlbmRwb2ludCB0aGF0XG4gKiBoYXZlIG5vIGFuYWxvZyBpbiB0aGUgZ2VuZXJpYyBDUlVEIGJhc2UuXG4gKlxuICogS2VwdCBwdWJsaWNseSBleHBvcnRlZCB1bmRlciBpdHMgb3JpZ2luYWwgbmFtZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJBY2Nlc3NSZXF1ZXN0U2VydmljZSBleHRlbmRzIEJhc2VEYXRhUGFnZVNlcnZpY2U8VXNlckFjY2Vzc1JlcXVlc3Q+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U29ydCA9ICdDcmVhdGVkQXQvQXNjJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzZXJ2ZXI6IEh0dHBXZWJSZXF1ZXN0U2VydmljZSxcbiAgICBmaWx0ZXJIYW5kbGVyOiBGaWx0ZXJIYW5kbGVyU2VydmljZSxcbiAgICBzb3J0SGFuZGxlcjogU29ydEhhbmRsZXJTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihzZXJ2ZXIsIGZpbHRlckhhbmRsZXIsIHNvcnRIYW5kbGVyKTtcbiAgfVxuXG4gIGdldEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdVc2VyQWNjZXNzUmVxdWVzdCc7XG4gIH1cblxuICAvLyA9PT09PSBVUkwgc2VhbXMgPT09PT1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbGlzdFVybChza2lwOiBudW1iZXIsIGxpbWl0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgR2V0VXNlckFjY2Vzc1JlcXVlc3RzLyR7c2tpcH0vJHtsaW1pdH0vJHt0aGlzLmRlZmF1bHRTb3J0fWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2VhcmNoVGVybVVybCh0ZXJtOiBzdHJpbmcsIHNraXA6IG51bWJlciwgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBHZXRVc2VyQWNjZXNzUmVxdWVzdFdpdGhQYXJhbS8ke3Rlcm19LyR7c2tpcH0vJHtsaW1pdH0vJHt0aGlzLmRlZmF1bHRTb3J0fWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlsdGVyU2VhcmNoVXJsKHNraXA6IG51bWJlciwgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBTZWFyY2hVc2VyQWNjZXNzUmVxdWVzdC8ke3NraXB9LyR7bGltaXR9LyR7dGhpcy5kZWZhdWx0U29ydH1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNhdmVVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1NhdmVVc2VyQWNjZXNzUmVxdWVzdHMnO1xuICB9XG5cbiAgLy8gPT09PT0gRGVsZXRlIChiZXNwb2tlOiBieSBlbWFpbCwgYWxzbyByZW1vdmVzIHRoZSBhc3NvY2lhdGVkIHNpZ251cCkgPT09PT1cblxuICBvdmVycmlkZSBhc3luYyBkZWxldGVJdGVtcyhlbWFpbHM6IHN0cmluZ1tdKTogUHJvbWlzZTxib29sZWFuIHwgRXJyb3JSZXNwb25zZT4ge1xuICAgIGZvciAoY29uc3QgZW1haWwgb2YgZW1haWxzKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5nZXQoXG4gICAgICAgIGBEZWxldGVVc2VyUmVxdWVzdFdpdGhVc2VyLyR7ZW1haWx9YCxcbiAgICAgICAgdGhpcy5iYXNlVXJsLFxuICAgICAgKTtcbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gPT09PT0gV29ya2Zsb3cgPT09PT1cblxuICAvKiogQXBwcm92ZSAoaXNBcHByb3ZhbD10cnVlKSBvciByZWplY3QgKGZhbHNlKSB0aGUgZ2l2ZW4gcmVxdWVzdHMuICovXG4gIHByb2Nlc3NSZXF1ZXN0cyhcbiAgICByZXF1ZXN0czogVXNlckFjY2Vzc1JlcXVlc3RbXSxcbiAgICBpc0FwcHJvdmFsOiBib29sZWFuLFxuICApOiBQcm9taXNlPFVzZXJBY2Nlc3NSZXF1ZXN0W10gfCBFcnJvclJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyLnBvc3Q8VXNlckFjY2Vzc1JlcXVlc3RbXT4oXG4gICAgICBgVXNlckFjY2Vzc1JlcXVlc3RBY3Rpb24vJHtpc0FwcHJvdmFsfWAsXG4gICAgICByZXF1ZXN0cyxcbiAgICApO1xuICB9XG5cbiAgLy8gPT09PT0gTG9va3VwcyA9PT09PVxuXG4gIGFzeW5jIGdldFJvbGVzKCk6IFByb21pc2U8Um9sZVtdPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0PFBhZ2VkUmVzdWx0PFJvbGU+PignR2V0Um9sZXMvMC8wJyk7XG4gICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5SZXN1bHQgPz8gW107XG4gIH1cblxuICBhc3luYyBnZXRUYWdzKCk6IFByb21pc2U8VGFnW10+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5nZXQ8UGFnZWRSZXN1bHQ8VGFnPj4oJ0dldFRhZ3MvMC8wJyk7XG4gICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5SZXN1bHQgPz8gW107XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { BaseDataPageState } from 'verben-authentication-ui/src/lib/base';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* State for the access-request approval page.
|
|
7
|
+
* Adds the roles list used by the form's role dropdown.
|
|
8
|
+
*/
|
|
9
|
+
export class UserAccessRequestState extends BaseDataPageState {
|
|
10
|
+
roles$ = new BehaviorSubject([]);
|
|
11
|
+
getRoles$() {
|
|
12
|
+
return this.roles$.asObservable();
|
|
13
|
+
}
|
|
14
|
+
getRolesValue() {
|
|
15
|
+
return this.roles$.getValue();
|
|
16
|
+
}
|
|
17
|
+
setRoles(roles) {
|
|
18
|
+
this.roles$.next(roles);
|
|
19
|
+
}
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestState, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestState });
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestState, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hY2Nlc3MtcmVxdWVzdC5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0LWFwcHJvdmFsL3VzZXItYWNjZXNzLXJlcXVlc3Quc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQUUxRTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsaUJBQW9DO0lBQ3RFLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUVqRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO3dHQWJVLHNCQUFzQjs0R0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSb2xlLCBVc2VyQWNjZXNzUmVxdWVzdCB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBCYXNlRGF0YVBhZ2VTdGF0ZSB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2Jhc2UnO1xuXG4vKipcbiAqIFN0YXRlIGZvciB0aGUgYWNjZXNzLXJlcXVlc3QgYXBwcm92YWwgcGFnZS5cbiAqIEFkZHMgdGhlIHJvbGVzIGxpc3QgdXNlZCBieSB0aGUgZm9ybSdzIHJvbGUgZHJvcGRvd24uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyQWNjZXNzUmVxdWVzdFN0YXRlIGV4dGVuZHMgQmFzZURhdGFQYWdlU3RhdGU8VXNlckFjY2Vzc1JlcXVlc3Q+IHtcbiAgcHJpdmF0ZSByb2xlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJvbGVbXT4oW10pO1xuXG4gIGdldFJvbGVzJCgpOiBPYnNlcnZhYmxlPFJvbGVbXT4ge1xuICAgIHJldHVybiB0aGlzLnJvbGVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldFJvbGVzVmFsdWUoKTogUm9sZVtdIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldFJvbGVzKHJvbGVzOiBSb2xlW10pOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVzJC5uZXh0KHJvbGVzKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { UserAccessRequestStatusBadgeComponent } from '../user-access-request-status-badge/user-access-request-status-badge.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
/**
|
|
7
|
+
* Presentational card for a single access request in the card view.
|
|
8
|
+
*/
|
|
9
|
+
export class UserRequestApprovalCardComponent {
|
|
10
|
+
request;
|
|
11
|
+
selected = false;
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestApprovalCardComponent, isStandalone: true, selector: "lib-user-request-approval-card", inputs: { request: "request", selected: "selected" }, ngImport: i0, template: "<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", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: UserAccessRequestStatusBadgeComponent, selector: "lib-user-access-request-status-badge", inputs: ["status"] }] });
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalCardComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ selector: 'lib-user-request-approval-card', standalone: true, imports: [CommonModule, UserAccessRequestStatusBadgeComponent], template: "<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", styles: [":host{display:block}\n"] }]
|
|
18
|
+
}], propDecorators: { request: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}], selected: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}] } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0LWFwcHJvdmFsLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcXVlc3QtYXBwcm92YWwvdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWNhcmQvdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcXVlc3QtYXBwcm92YWwvdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWNhcmQvdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGdGQUFnRixDQUFDOzs7QUFFdkk7O0dBRUc7QUFRSCxNQUFNLE9BQU8sZ0NBQWdDO0lBQ2xDLE9BQU8sQ0FBcUI7SUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQzt3R0FGZixnQ0FBZ0M7NEZBQWhDLGdDQUFnQyxnSkNmN0MsdzFCQWtCQSwrRURQWSxZQUFZLDZIQUFFLHFDQUFxQzs7NEZBSWxELGdDQUFnQztrQkFQNUMsU0FBUzsrQkFDRSxnQ0FBZ0MsY0FDOUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHFDQUFxQyxDQUFDOzhCQUtyRCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyQWNjZXNzUmVxdWVzdCB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBVc2VyQWNjZXNzUmVxdWVzdFN0YXR1c0JhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vdXNlci1hY2Nlc3MtcmVxdWVzdC1zdGF0dXMtYmFkZ2UvdXNlci1hY2Nlc3MtcmVxdWVzdC1zdGF0dXMtYmFkZ2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBQcmVzZW50YXRpb25hbCBjYXJkIGZvciBhIHNpbmdsZSBhY2Nlc3MgcmVxdWVzdCBpbiB0aGUgY2FyZCB2aWV3LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBVc2VyQWNjZXNzUmVxdWVzdFN0YXR1c0JhZGdlQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcmVxdWVzdC1hcHByb3ZhbC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWNhcmQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyUmVxdWVzdEFwcHJvdmFsQ2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHJlcXVlc3QhOiBVc2VyQWNjZXNzUmVxdWVzdDtcbiAgQElucHV0KCkgc2VsZWN0ZWQgPSBmYWxzZTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGN1cnNvci1wb2ludGVyIHctZnVsbCBiZy1zZWNvbmRhcnkgcm91bmRlZC14bFwiPlxuICA8ZGl2IGNsYXNzPVwidy0zIHJvdW5kZWQteGwgcm91bmRlZC10ci1ub25lIHJvdW5kZWQtYnItbm9uZVwiXG4gICAgW25nQ2xhc3NdPVwic2VsZWN0ZWQgPyAnYmctcHJpbWFyeScgOiAnYmctc2Vjb25kYXJ5LTIwMCdcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZsZXgtMSBmbGV4IGl0ZW1zLWVuZCBnYXAteS0yIGdhcC14LTQgcC00XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtMSBzcGFjZS15LTJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LVt2YXIoLS12Ym4tY29sb3ItdGV4dCldIGZsZXgtMSB0cnVuY2F0ZVwiPlxuICAgICAgICB7eyByZXF1ZXN0LkZpcnN0TmFtZSB9fSB7eyByZXF1ZXN0Lkxhc3ROYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8cCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG15LTEgZ2FwLTFcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1bMTBweF0gZm9udC1saWdodFwiPk1lZGl1bTo8L2xhYmVsPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdHJ1bmNhdGVcIj57eyByZXF1ZXN0LlNpZ251cFR5cGUgfX08L3NwYW4+XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXktMVwiPlxuICAgICAgPGxpYi11c2VyLWFjY2Vzcy1yZXF1ZXN0LXN0YXR1cy1iYWRnZSBbc3RhdHVzXT1cInJlcXVlc3QuUmVxdWVzdFN0YXR1c1wiPjwvbGliLXVzZXItYWNjZXNzLXJlcXVlc3Qtc3RhdHVzLWJhZGdlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, effect, input, Output } from '@angular/core';
|
|
3
|
+
import { FormControl, ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
4
|
+
import { UserAccessRequestStatus, } from 'verben-authentication-ui/src/lib/models';
|
|
5
|
+
import { DropDownModule, VerbenaButtonModule, VerbenaInputModule, VerbenaTextareaModule, VerbenDialogueModule, } from 'verben-ng-ui';
|
|
6
|
+
import { USER_ACCESS_REQUEST_CONFIG } from '../user-access-request.config';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/forms";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
import * as i3 from "verben-ng-ui";
|
|
11
|
+
/**
|
|
12
|
+
* Form for approving/rejecting a single access request.
|
|
13
|
+
* Identity fields are read-only; the role must be chosen before approval.
|
|
14
|
+
*/
|
|
15
|
+
export class UserRequestApprovalFormComponent {
|
|
16
|
+
fb;
|
|
17
|
+
request = input();
|
|
18
|
+
roles = input([]);
|
|
19
|
+
showDelete = input(false);
|
|
20
|
+
approve = new EventEmitter();
|
|
21
|
+
reject = new EventEmitter();
|
|
22
|
+
deleteRequest = new EventEmitter();
|
|
23
|
+
switchToTable = new EventEmitter();
|
|
24
|
+
form;
|
|
25
|
+
showDeleteDialogue = false;
|
|
26
|
+
showRejectDialogue = false;
|
|
27
|
+
/**
|
|
28
|
+
* Rejection reason. Deliberately outside `form` — that group's validity gates
|
|
29
|
+
* Approve, and a required comment there would gate Approve too.
|
|
30
|
+
*/
|
|
31
|
+
rejectComment = new FormControl('', [Validators.required]);
|
|
32
|
+
constructor(fb) {
|
|
33
|
+
this.fb = fb;
|
|
34
|
+
this.form = this.fb.group(USER_ACCESS_REQUEST_CONFIG.formGroupConfig.controls);
|
|
35
|
+
effect(() => {
|
|
36
|
+
const request = this.request();
|
|
37
|
+
if (request && this.form) {
|
|
38
|
+
this.form.patchValue({
|
|
39
|
+
MailAddress: request.MailAddress || '',
|
|
40
|
+
FirstName: request.FirstName || '',
|
|
41
|
+
LastName: request.LastName || '',
|
|
42
|
+
OtherName: request.OtherName || '',
|
|
43
|
+
PhoneNumber: request.PhoneNumber || '',
|
|
44
|
+
RoleID: request.RoleID || '',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
isPending() {
|
|
50
|
+
return this.request()?.RequestStatus === UserAccessRequestStatus.Pending;
|
|
51
|
+
}
|
|
52
|
+
canProcess() {
|
|
53
|
+
return this.isPending() && this.form.valid;
|
|
54
|
+
}
|
|
55
|
+
canReject() {
|
|
56
|
+
return this.isPending();
|
|
57
|
+
}
|
|
58
|
+
canDelete() {
|
|
59
|
+
return this.showDelete() && this.isPending();
|
|
60
|
+
}
|
|
61
|
+
onApprove() {
|
|
62
|
+
const request = this.request();
|
|
63
|
+
if (request && this.canProcess()) {
|
|
64
|
+
this.approve.emit({ request, roleId: this.form.get('RoleID')?.value });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
onDelete() {
|
|
68
|
+
const request = this.request();
|
|
69
|
+
if (request) {
|
|
70
|
+
this.deleteRequest.emit(request);
|
|
71
|
+
}
|
|
72
|
+
this.closeDeleteDialogue();
|
|
73
|
+
}
|
|
74
|
+
toggleDeleteDialogue() {
|
|
75
|
+
this.showDeleteDialogue = !this.showDeleteDialogue;
|
|
76
|
+
}
|
|
77
|
+
closeDeleteDialogue() {
|
|
78
|
+
this.showDeleteDialogue = false;
|
|
79
|
+
}
|
|
80
|
+
// ===== Reject (requires a reason) =====
|
|
81
|
+
openRejectDialogue() {
|
|
82
|
+
if (!this.canReject())
|
|
83
|
+
return;
|
|
84
|
+
this.rejectComment.setValue('');
|
|
85
|
+
this.rejectComment.markAsUntouched();
|
|
86
|
+
this.showRejectDialogue = true;
|
|
87
|
+
}
|
|
88
|
+
closeRejectDialogue() {
|
|
89
|
+
this.showRejectDialogue = false;
|
|
90
|
+
}
|
|
91
|
+
canConfirmReject() {
|
|
92
|
+
return !!this.rejectComment.value?.trim();
|
|
93
|
+
}
|
|
94
|
+
confirmReject() {
|
|
95
|
+
const request = this.request();
|
|
96
|
+
if (!request || !this.canReject() || !this.canConfirmReject())
|
|
97
|
+
return;
|
|
98
|
+
this.reject.emit({ request, comment: this.rejectComment.value.trim() });
|
|
99
|
+
this.closeRejectDialogue();
|
|
100
|
+
}
|
|
101
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: UserRequestApprovalFormComponent, isStandalone: true, selector: "lib-user-request-approval-form", inputs: { request: { classPropertyName: "request", publicName: "request", isSignal: true, isRequired: false, transformFunction: null }, roles: { classPropertyName: "roles", publicName: "roles", isSignal: true, isRequired: false, transformFunction: null }, showDelete: { classPropertyName: "showDelete", publicName: "showDelete", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { approve: "approve", reject: "reject", deleteRequest: "deleteRequest", switchToTable: "switchToTable" }, ngImport: i0, template: "<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", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: "ngmodule", type: VerbenaInputModule }, { kind: "component", type: i3.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: "ngmodule", type: VerbenaButtonModule }, { kind: "component", type: i3.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: "ngmodule", type: VerbenaTextareaModule }, { kind: "component", type: i3.VerbenaTextareaComponent, selector: "verbena-textarea", inputs: ["disabled", "label", "required", "rows", "cols", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "value", "errorMessageColor"], outputs: ["valueChange"] }, { kind: "ngmodule", type: DropDownModule }, { kind: "component", type: i3.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "overlayWidth", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "refPageSize", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "ngmodule", type: VerbenDialogueModule }, { kind: "component", type: i3.VerbenDialogueComponent, selector: "verben-dialogue", inputs: ["dialogueWidth", "headerTemplate", "bodyTemplate", "footerTemplate", "showCloseIcon", "dismissOutsideClick", "closeOnEscape", "isVisible", "size", "backdropColor", "customClass", "disableFooter", "margin", "padding", "borderRadius", "dialogueBgColor", "width", "closeIconClass", "boxShadow", "enableTransition", "modalData", "mode", "position", "drawerWidth"], outputs: ["openModal", "closeModal"] }] });
|
|
103
|
+
}
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalFormComponent, decorators: [{
|
|
105
|
+
type: Component,
|
|
106
|
+
args: [{ selector: 'lib-user-request-approval-form', standalone: true, imports: [
|
|
107
|
+
CommonModule,
|
|
108
|
+
ReactiveFormsModule,
|
|
109
|
+
VerbenaInputModule,
|
|
110
|
+
VerbenaButtonModule,
|
|
111
|
+
VerbenaTextareaModule,
|
|
112
|
+
DropDownModule,
|
|
113
|
+
VerbenDialogueModule,
|
|
114
|
+
], template: "<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", styles: [":host{display:block;width:100%;height:100%}\n"] }]
|
|
115
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { approve: [{
|
|
116
|
+
type: Output
|
|
117
|
+
}], reject: [{
|
|
118
|
+
type: Output
|
|
119
|
+
}], deleteRequest: [{
|
|
120
|
+
type: Output
|
|
121
|
+
}], switchToTable: [{
|
|
122
|
+
type: Output
|
|
123
|
+
}] } });
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0LWFwcHJvdmFsLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcXVlc3QtYXBwcm92YWwvdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWZvcm0vdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcXVlc3QtYXBwcm92YWwvdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWZvcm0vdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFFTCxXQUFXLEVBRVgsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFHTCx1QkFBdUIsR0FDeEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFFM0U7OztHQUdHO0FBZ0JILE1BQU0sT0FBTyxnQ0FBZ0M7SUFvQnZCO0lBbkJwQixPQUFPLEdBQUcsS0FBSyxFQUFxQixDQUFDO0lBQ3JDLEtBQUssR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDMUIsVUFBVSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUV6QixPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtELENBQUM7SUFDN0UsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFtRCxDQUFDO0lBQzdFLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztJQUN0RCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVuRCxJQUFJLENBQVk7SUFDaEIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUUzQjs7O09BR0c7SUFDSCxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFM0QsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxlQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhGLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDbkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRTtvQkFDdEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTtvQkFDbEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRTtvQkFDaEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTtvQkFDbEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRTtvQkFDdEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRTtpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLEtBQUssdUJBQXVCLENBQUMsT0FBTyxDQUFDO0lBQzNFLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDN0MsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELHlDQUF5QztJQUV6QyxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFBRSxPQUFPO1FBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQzt3R0FuR1UsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0Msc2xCQzFDN0MsNDBKQXVGQSxzR0R4REksWUFBWSxrSUFDWixtQkFBbUIsNGtDQUNuQixrQkFBa0Isb3FCQUNsQixtQkFBbUIsa2VBQ25CLHFCQUFxQixvVEFDckIsY0FBYyxnbUJBQ2Qsb0JBQW9COzs0RkFLWCxnQ0FBZ0M7a0JBZjVDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsY0FBYzt3QkFDZCxvQkFBb0I7cUJBQ3JCO2dGQVNTLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZWZmZWN0LCBpbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgUm9sZSxcbiAgVXNlckFjY2Vzc1JlcXVlc3QsXG4gIFVzZXJBY2Nlc3NSZXF1ZXN0U3RhdHVzLFxufSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgRHJvcERvd25Nb2R1bGUsXG4gIFZlcmJlbmFCdXR0b25Nb2R1bGUsXG4gIFZlcmJlbmFJbnB1dE1vZHVsZSxcbiAgVmVyYmVuYVRleHRhcmVhTW9kdWxlLFxuICBWZXJiZW5EaWFsb2d1ZU1vZHVsZSxcbn0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IFVTRVJfQUNDRVNTX1JFUVVFU1RfQ09ORklHIH0gZnJvbSAnLi4vdXNlci1hY2Nlc3MtcmVxdWVzdC5jb25maWcnO1xuXG4vKipcbiAqIEZvcm0gZm9yIGFwcHJvdmluZy9yZWplY3RpbmcgYSBzaW5nbGUgYWNjZXNzIHJlcXVlc3QuXG4gKiBJZGVudGl0eSBmaWVsZHMgYXJlIHJlYWQtb25seTsgdGhlIHJvbGUgbXVzdCBiZSBjaG9zZW4gYmVmb3JlIGFwcHJvdmFsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWZvcm0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmVyYmVuYUlucHV0TW9kdWxlLFxuICAgIFZlcmJlbmFCdXR0b25Nb2R1bGUsXG4gICAgVmVyYmVuYVRleHRhcmVhTW9kdWxlLFxuICAgIERyb3BEb3duTW9kdWxlLFxuICAgIFZlcmJlbkRpYWxvZ3VlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1yZXF1ZXN0LWFwcHJvdmFsLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLXJlcXVlc3QtYXBwcm92YWwtZm9ybS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJSZXF1ZXN0QXBwcm92YWxGb3JtQ29tcG9uZW50IHtcbiAgcmVxdWVzdCA9IGlucHV0PFVzZXJBY2Nlc3NSZXF1ZXN0PigpO1xuICByb2xlcyA9IGlucHV0PFJvbGVbXT4oW10pO1xuICBzaG93RGVsZXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBPdXRwdXQoKSBhcHByb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlcXVlc3Q6IFVzZXJBY2Nlc3NSZXF1ZXN0OyByb2xlSWQ6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgcmVqZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlcXVlc3Q6IFVzZXJBY2Nlc3NSZXF1ZXN0OyBjb21tZW50OiBzdHJpbmcgfT4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJBY2Nlc3NSZXF1ZXN0PigpO1xuICBAT3V0cHV0KCkgc3dpdGNoVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG4gIHNob3dEZWxldGVEaWFsb2d1ZSA9IGZhbHNlO1xuICBzaG93UmVqZWN0RGlhbG9ndWUgPSBmYWxzZTtcblxuICAvKipcbiAgICogUmVqZWN0aW9uIHJlYXNvbi4gRGVsaWJlcmF0ZWx5IG91dHNpZGUgYGZvcm1gIOKAlCB0aGF0IGdyb3VwJ3MgdmFsaWRpdHkgZ2F0ZXNcbiAgICogQXBwcm92ZSwgYW5kIGEgcmVxdWlyZWQgY29tbWVudCB0aGVyZSB3b3VsZCBnYXRlIEFwcHJvdmUgdG9vLlxuICAgKi9cbiAgcmVqZWN0Q29tbWVudCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoVVNFUl9BQ0NFU1NfUkVRVUVTVF9DT05GSUcuZm9ybUdyb3VwQ29uZmlnIS5jb250cm9scyk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdCgpO1xuICAgICAgaWYgKHJlcXVlc3QgJiYgdGhpcy5mb3JtKSB7XG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBNYWlsQWRkcmVzczogcmVxdWVzdC5NYWlsQWRkcmVzcyB8fCAnJyxcbiAgICAgICAgICBGaXJzdE5hbWU6IHJlcXVlc3QuRmlyc3ROYW1lIHx8ICcnLFxuICAgICAgICAgIExhc3ROYW1lOiByZXF1ZXN0Lkxhc3ROYW1lIHx8ICcnLFxuICAgICAgICAgIE90aGVyTmFtZTogcmVxdWVzdC5PdGhlck5hbWUgfHwgJycsXG4gICAgICAgICAgUGhvbmVOdW1iZXI6IHJlcXVlc3QuUGhvbmVOdW1iZXIgfHwgJycsXG4gICAgICAgICAgUm9sZUlEOiByZXF1ZXN0LlJvbGVJRCB8fCAnJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCk/LlJlcXVlc3RTdGF0dXMgPT09IFVzZXJBY2Nlc3NSZXF1ZXN0U3RhdHVzLlBlbmRpbmc7XG4gIH1cblxuICBjYW5Qcm9jZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUGVuZGluZygpICYmIHRoaXMuZm9ybS52YWxpZDtcbiAgfVxuXG4gIGNhblJlamVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1BlbmRpbmcoKTtcbiAgfVxuXG4gIGNhbkRlbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93RGVsZXRlKCkgJiYgdGhpcy5pc1BlbmRpbmcoKTtcbiAgfVxuXG4gIG9uQXBwcm92ZSgpOiB2b2lkIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0KCk7XG4gICAgaWYgKHJlcXVlc3QgJiYgdGhpcy5jYW5Qcm9jZXNzKCkpIHtcbiAgICAgIHRoaXMuYXBwcm92ZS5lbWl0KHsgcmVxdWVzdCwgcm9sZUlkOiB0aGlzLmZvcm0uZ2V0KCdSb2xlSUQnKT8udmFsdWUgfSk7XG4gICAgfVxuICB9XG5cbiAgb25EZWxldGUoKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdCgpO1xuICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICB0aGlzLmRlbGV0ZVJlcXVlc3QuZW1pdChyZXF1ZXN0KTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZURlbGV0ZURpYWxvZ3VlKCk7XG4gIH1cblxuICB0b2dnbGVEZWxldGVEaWFsb2d1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEZWxldGVEaWFsb2d1ZSA9ICF0aGlzLnNob3dEZWxldGVEaWFsb2d1ZTtcbiAgfVxuXG4gIGNsb3NlRGVsZXRlRGlhbG9ndWUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGVsZXRlRGlhbG9ndWUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vID09PT09IFJlamVjdCAocmVxdWlyZXMgYSByZWFzb24pID09PT09XG5cbiAgb3BlblJlamVjdERpYWxvZ3VlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5SZWplY3QoKSkgcmV0dXJuO1xuICAgIHRoaXMucmVqZWN0Q29tbWVudC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5yZWplY3RDb21tZW50Lm1hcmtBc1VudG91Y2hlZCgpO1xuICAgIHRoaXMuc2hvd1JlamVjdERpYWxvZ3VlID0gdHJ1ZTtcbiAgfVxuXG4gIGNsb3NlUmVqZWN0RGlhbG9ndWUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93UmVqZWN0RGlhbG9ndWUgPSBmYWxzZTtcbiAgfVxuXG4gIGNhbkNvbmZpcm1SZWplY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZWplY3RDb21tZW50LnZhbHVlPy50cmltKCk7XG4gIH1cblxuICBjb25maXJtUmVqZWN0KCk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3QoKTtcbiAgICBpZiAoIXJlcXVlc3QgfHwgIXRoaXMuY2FuUmVqZWN0KCkgfHwgIXRoaXMuY2FuQ29uZmlybVJlamVjdCgpKSByZXR1cm47XG4gICAgdGhpcy5yZWplY3QuZW1pdCh7IHJlcXVlc3QsIGNvbW1lbnQ6IHRoaXMucmVqZWN0Q29tbWVudC52YWx1ZSEudHJpbSgpIH0pO1xuICAgIHRoaXMuY2xvc2VSZWplY3REaWFsb2d1ZSgpO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHgtMyBwYi0zIHJvdW5kZWQteGwgaC1mdWxsIHctZnVsbCByZWxhdGl2ZSBzcGFjZS15LTRcIj5cbiAgPHZlcmJlbmEtaW5wdXQgbmFtZT1cIk1haWxBZGRyZXNzXCIgbGFiZWw9XCJNYWlsIEFkZHJlc3M6XCIgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbEFkZHJlc3NcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+XG4gIDx2ZXJiZW5hLWlucHV0IGxhYmVsPVwiRmlyc3QgTmFtZTpcIiBuYW1lPVwiRmlyc3ROYW1lXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJGaXJzdE5hbWVcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+XG4gIDx2ZXJiZW5hLWlucHV0IGxhYmVsPVwiTGFzdCBOYW1lOlwiIG5hbWU9XCJMYXN0TmFtZVwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFzdE5hbWVcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+XG4gIDx2ZXJiZW5hLWlucHV0IGxhYmVsPVwiT3RoZXIgTmFtZTpcIiBuYW1lPVwiT3RoZXJOYW1lXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJPdGhlck5hbWVcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+XG5cbiAgPGRpdiBjbGFzcz1cInNwYWNlLXktMVwiPlxuICAgIDxsYWJlbCBmb3I9XCJyb2xlXCI+Um9sZTwvbGFiZWw+XG4gICAgPHZlcmJlbi1kcm9wLWRvd24gc3R5bGVDbGFzcz1cInctZnVsbFwiIHdpZHRoPVwiMTAwJVwiIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiIFtmaWx0ZXJdPVwidHJ1ZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlwiIFtvcHRpb25zXT1cInJvbGVzKClcIiBpZD1cInJvbGVcIiBvcHRpb25MYWJlbD1cIk5hbWVcIiBvcHRpb25WYWx1ZT1cIkNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJSb2xlSURcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cbiAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gYnV0dG9ucyAtLT5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIG15LTIgb3ZlcmZsb3ctYXV0b1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XG4gICAgICA8dmVyYmVuYS1idXR0b24gKGNsaWNrKT1cInN3aXRjaFRvVGFibGUuZW1pdCgpXCIgdGV4dD1cIlN3aXRjaCBUbyBUYWJsZVwiIHN0eWxlVHlwZT1cInlsdy1vdXRsaW5lXCI+PC92ZXJiZW5hLWJ1dHRvbj5cblxuICAgICAgPHZlcmJlbmEtYnV0dG9uICpuZ0lmPVwic2hvd0RlbGV0ZSgpXCIgd2lkdGg9XCIxMTRweFwiIGhlaWdodD1cIjM5cHhcIiAoY2xpY2spPVwidG9nZ2xlRGVsZXRlRGlhbG9ndWUoKVwiIHRleHQ9XCJEZWxldGVcIlxuICAgICAgICBzdHlsZVR5cGU9XCJkYW5nZXJcIiBib3JkZXJSYWRpdXM9XCIxMHB4XCIgW2Rpc2FibGVdPVwiIWNhbkRlbGV0ZSgpXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XG4gICAgICA8dmVyYmVuYS1idXR0b24gd2lkdGg9XCIxMTRweFwiIGhlaWdodD1cIjM5cHhcIiB0ZXh0PVwiUmVqZWN0XCIgc3R5bGVUeXBlPVwiZGFuZ2VyXCIgYm9yZGVyUmFkaXVzPVwiMTBweFwiXG4gICAgICAgIChjbGljayk9XCJvcGVuUmVqZWN0RGlhbG9ndWUoKVwiIFtkaXNhYmxlXT1cIiFjYW5SZWplY3QoKVwiPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvbiAoY2xpY2spPVwib25BcHByb3ZlKClcIiB0ZXh0PVwiQXBwcm92ZVwiIGJnQ29sb3I9XCJ2YXIoLS12Ym4tY29sb3Itc3VjY2VzcylcIiB0ZXh0Q29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCB2YXIoLS12Ym4tY29sb3Itc3VjY2VzcylcIiBib3JkZXJSYWRpdXM9XCIxMHB4XCIgcGQ9XCIxMHB4IDIwcHhcIiB3aWR0aD1cIjExNHB4XCIgaGVpZ2h0PVwiMzlweFwiXG4gICAgICAgIFtkaXNhYmxlXT1cIiFjYW5Qcm9jZXNzKClcIj48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cblxuPHZlcmJlbi1kaWFsb2d1ZSBbc2hvd0Nsb3NlSWNvbl09XCJmYWxzZVwiIFtkaXNtaXNzT3V0c2lkZUNsaWNrXT1cImZhbHNlXCIgW2Nsb3NlT25Fc2NhcGVdPVwidHJ1ZVwiIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgW21vZGVdPVwiJ2RpYWxvZ3VlJ1wiIFtjdXN0b21DbGFzc109XCInc2hvdy1yZXZlcnQtZGlhbG9ndWUnXCIgW2Rpc2FibGVGb290ZXJdPVwidHJ1ZVwiIFtpc1Zpc2libGVdPVwic2hvd0RlbGV0ZURpYWxvZ3VlXCJcbiAgW2JvZHlUZW1wbGF0ZV09XCJkZWxldGVCb2R5VGVtcGxhdGVcIiAoY2xvc2VNb2RhbCk9XCJjbG9zZURlbGV0ZURpYWxvZ3VlKClcIj5cbiAgPG5nLXRlbXBsYXRlICNkZWxldGVCb2R5VGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1ib2R5IGZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIgZm9udC1ib2xkIHRleHQtMnhsXCI+RGVsZXRlIFVzZXIgUmVxdWVzdDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGFpbmVyLWRpYWxvZ3VlIGZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHByb2NlZWQ/XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctYnV0dG9uLWNvbnRhaW5lciBmbGV4IGdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICA8dmVyYmVuYS1idXR0b24gd2lkdGg9XCIxMDAlXCIgW2ZvbnRXZWlnaHRdPVwiJ2JvbGQnXCIgW2JnQ29sb3JdPVwiJ3ZhcigtLXZibi1jb2xvci1zdXJmYWNlKSdcIlxuICAgICAgICAgICAgW2JvcmRlclJhZGl1c109XCInNHB4J1wiIFt0ZXh0Q29sb3JdPVwiJ3ZhcigtLXZibi1jb2xvci10ZXh0KSdcIiBbYm9yZGVyXT1cIicxcHggc29saWQgdmFyKC0tdmJuLWNvbG9yLXRleHQpJ1wiXG4gICAgICAgICAgICBbdGV4dF09XCInQ2xvc2UnXCIgKGNsaWNrKT1cImNsb3NlRGVsZXRlRGlhbG9ndWUoKVwiPlxuICAgICAgICAgIDwvdmVyYmVuYS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgPHZlcmJlbmEtYnV0dG9uIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwidmVyYmVuLXByaW1hcnktYnV0dG9uXCIgW3RleHRdPVwiJ1Byb2NlZWQnXCIgKGNsaWNrKT1cIm9uRGVsZXRlKClcIj5cbiAgICAgICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC92ZXJiZW4tZGlhbG9ndWU+XG5cbjx2ZXJiZW4tZGlhbG9ndWUgW3Nob3dDbG9zZUljb25dPVwiZmFsc2VcIiBbZGlzbWlzc091dHNpZGVDbGlja109XCJmYWxzZVwiIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIiBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gIFttb2RlXT1cIidkaWFsb2d1ZSdcIiBbY3VzdG9tQ2xhc3NdPVwiJ3Nob3ctcmV2ZXJ0LWRpYWxvZ3VlJ1wiIFtkaXNhYmxlRm9vdGVyXT1cInRydWVcIiBbaXNWaXNpYmxlXT1cInNob3dSZWplY3REaWFsb2d1ZVwiXG4gIFtib2R5VGVtcGxhdGVdPVwicmVqZWN0Qm9keVRlbXBsYXRlXCIgKGNsb3NlTW9kYWwpPVwiY2xvc2VSZWplY3REaWFsb2d1ZSgpXCI+XG4gIDxuZy10ZW1wbGF0ZSAjcmVqZWN0Qm9keVRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctYm9keSBmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGZvbnQtYm9sZCB0ZXh0LTJ4bFwiPlJlamVjdCBVc2VyIFJlcXVlc3Q8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lci1kaWFsb2d1ZSBmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgIFBsZWFzZSBwcm92aWRlIGEgcmVhc29uIGZvciByZWplY3RpbmcgdGhpcyByZXF1ZXN0LlxuICAgICAgICA8dmVyYmVuYS10ZXh0YXJlYSBsYWJlbD1cIlJlYXNvblwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW3Jvd3NdPVwiNFwiIHdpZHRoPVwiMTAwJVwiIFtmb3JtQ29udHJvbF09XCJyZWplY3RDb21tZW50XCJcbiAgICAgICAgICBlcnJvck1lc3NhZ2VDb2xvcj1cInZhcigtLXZibi1jb2xvci1kYW5nZXIpXCI+XG4gICAgICAgIDwvdmVyYmVuYS10ZXh0YXJlYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1idXR0b24tY29udGFpbmVyIGZsZXggZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgIDx2ZXJiZW5hLWJ1dHRvbiB3aWR0aD1cIjEwMCVcIiBbZm9udFdlaWdodF09XCInYm9sZCdcIiBbYmdDb2xvcl09XCIndmFyKC0tdmJuLWNvbG9yLXN1cmZhY2UpJ1wiXG4gICAgICAgICAgICBbYm9yZGVyUmFkaXVzXT1cIic0cHgnXCIgW3RleHRDb2xvcl09XCIndmFyKC0tdmJuLWNvbG9yLXRleHQpJ1wiIFtib3JkZXJdPVwiJzFweCBzb2xpZCB2YXIoLS12Ym4tY29sb3ItdGV4dCknXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIidDbG9zZSdcIiAoY2xpY2spPVwiY2xvc2VSZWplY3REaWFsb2d1ZSgpXCI+XG4gICAgICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICA8dmVyYmVuYS1idXR0b24gd2lkdGg9XCIxMDAlXCIgY2xhc3M9XCJ2ZXJiZW4tcHJpbWFyeS1idXR0b25cIiBbdGV4dF09XCInUHJvY2VlZCdcIiAoY2xpY2spPVwiY29uZmlybVJlamVjdCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlXT1cIiFjYW5Db25maXJtUmVqZWN0KClcIj5cbiAgICAgICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC92ZXJiZW4tZGlhbG9ndWU+XG4iXX0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { DataTableModule, SvgModule } from 'verben-ng-ui';
|
|
4
|
+
import { UserAccessRequestStatusBadgeComponent } from '../user-access-request-status-badge/user-access-request-status-badge.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "verben-ng-ui";
|
|
8
|
+
/**
|
|
9
|
+
* Table view for access requests. Row actions open the form (to approve/reject
|
|
10
|
+
* with a role) or delete the request.
|
|
11
|
+
*/
|
|
12
|
+
export class UserRequestApprovalTableComponent {
|
|
13
|
+
requests = [];
|
|
14
|
+
columns = [];
|
|
15
|
+
isLoading = false;
|
|
16
|
+
showDelete = false;
|
|
17
|
+
view = new EventEmitter();
|
|
18
|
+
delete = new EventEmitter();
|
|
19
|
+
onView(request) {
|
|
20
|
+
this.view.emit(request);
|
|
21
|
+
}
|
|
22
|
+
onDelete(request) {
|
|
23
|
+
this.delete.emit(request);
|
|
24
|
+
}
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestApprovalTableComponent, isStandalone: true, selector: "lib-user-request-approval-table", inputs: { requests: "requests", columns: "columns", isLoading: "isLoading", showDelete: "showDelete" }, outputs: { view: "view", delete: "delete" }, ngImport: i0, template: "<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", styles: [".table-container{width:100%}.table-container.loading{opacity:.6;pointer-events:none}.empty-state{padding:2rem;text-align:center;color:var(--vbn-color-text-muted)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: DataTableModule }, { kind: "component", type: i2.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "useVirtualScroll", "virtualScrollItemSize", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i2.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "ngmodule", type: SvgModule }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: UserAccessRequestStatusBadgeComponent, selector: "lib-user-access-request-status-badge", inputs: ["status"] }] });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalTableComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'lib-user-request-approval-table', standalone: true, imports: [CommonModule, DataTableModule, SvgModule, UserAccessRequestStatusBadgeComponent], template: "<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", styles: [".table-container{width:100%}.table-container.loading{opacity:.6;pointer-events:none}.empty-state{padding:2rem;text-align:center;color:var(--vbn-color-text-muted)}\n"] }]
|
|
31
|
+
}], propDecorators: { requests: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], columns: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], isLoading: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], showDelete: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], view: [{
|
|
40
|
+
type: Output
|
|
41
|
+
}], delete: [{
|
|
42
|
+
type: Output
|
|
43
|
+
}] } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0LWFwcHJvdmFsLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0LWFwcHJvdmFsL3VzZXItcmVxdWVzdC1hcHByb3ZhbC10YWJsZS91c2VyLXJlcXVlc3QtYXBwcm92YWwtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcXVlc3QtYXBwcm92YWwvdXNlci1yZXF1ZXN0LWFwcHJvdmFsLXRhYmxlL3VzZXItcmVxdWVzdC1hcHByb3ZhbC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQW9CLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7Ozs7QUFFdkk7OztHQUdHO0FBUUgsTUFBTSxPQUFPLGlDQUFpQztJQUNuQyxRQUFRLEdBQXdCLEVBQUUsQ0FBQztJQUNuQyxPQUFPLEdBQTBDLEVBQUUsQ0FBQztJQUNwRCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbEIsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO0lBQzdDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztJQUV6RCxNQUFNLENBQUMsT0FBMEI7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUEwQjtRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO3dHQWZVLGlDQUFpQzs0RkFBakMsaUNBQWlDLGdQQ2pCOUMsay9DQXFDQSw2TkR4QlksWUFBWSxxTEFBRSxlQUFlLCtaQUFFLFNBQVMsNEtBQUUscUNBQXFDOzs0RkFJOUUsaUNBQWlDO2tCQVA3QyxTQUFTOytCQUNFLGlDQUFpQyxjQUMvQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxxQ0FBcUMsQ0FBQzs4QkFLakYsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXJBY2Nlc3NSZXF1ZXN0IH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IENvbHVtbkRlZmluaXRpb24sIERhdGFUYWJsZU1vZHVsZSwgU3ZnTW9kdWxlIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IFVzZXJBY2Nlc3NSZXF1ZXN0U3RhdHVzQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi91c2VyLWFjY2Vzcy1yZXF1ZXN0LXN0YXR1cy1iYWRnZS91c2VyLWFjY2Vzcy1yZXF1ZXN0LXN0YXR1cy1iYWRnZS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFRhYmxlIHZpZXcgZm9yIGFjY2VzcyByZXF1ZXN0cy4gUm93IGFjdGlvbnMgb3BlbiB0aGUgZm9ybSAodG8gYXBwcm92ZS9yZWplY3RcbiAqIHdpdGggYSByb2xlKSBvciBkZWxldGUgdGhlIHJlcXVlc3QuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi11c2VyLXJlcXVlc3QtYXBwcm92YWwtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEYXRhVGFibGVNb2R1bGUsIFN2Z01vZHVsZSwgVXNlckFjY2Vzc1JlcXVlc3RTdGF0dXNCYWRnZUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLXJlcXVlc3QtYXBwcm92YWwtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLXJlcXVlc3QtYXBwcm92YWwtdGFibGUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyUmVxdWVzdEFwcHJvdmFsVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoKSByZXF1ZXN0czogVXNlckFjY2Vzc1JlcXVlc3RbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBDb2x1bW5EZWZpbml0aW9uPFVzZXJBY2Nlc3NSZXF1ZXN0PltdID0gW107XG4gIEBJbnB1dCgpIGlzTG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RGVsZXRlID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJBY2Nlc3NSZXF1ZXN0PigpO1xuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyQWNjZXNzUmVxdWVzdD4oKTtcblxuICBvblZpZXcocmVxdWVzdDogVXNlckFjY2Vzc1JlcXVlc3QpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcuZW1pdChyZXF1ZXN0KTtcbiAgfVxuXG4gIG9uRGVsZXRlKHJlcXVlc3Q6IFVzZXJBY2Nlc3NSZXF1ZXN0KTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUuZW1pdChyZXF1ZXN0KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImlzTG9hZGluZ1wiPlxuICA8bGliLWRhdGEtdGFibGUgW2RhdGFdPVwicmVxdWVzdHNcIiBbY29sdW1uc109XCJjb2x1bW5zXCIgZGF0YUtleT1cIk1haWxBZGRyZXNzXCI+XG4gICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJzZWxlY3RcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXNTZWxlY3RlZD1cImlzU2VsZWN0ZWRcIiBsZXQtdG9nZ2xlUm93U2VsZWN0aW9uPVwidG9nZ2xlUm93U2VsZWN0aW9uXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24oKVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBDcmVhdGVkIC0tPlxuICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiY3JlYXRlZEF0XCI+XG4gICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXZhbHVlPnt7IHZhbHVlIHwgZGF0ZSB9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFN0YXR1cyAtLT5cbiAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cInN0YXR1c1wiPlxuICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC12YWx1ZT5cbiAgICAgICAgPGxpYi11c2VyLWFjY2Vzcy1yZXF1ZXN0LXN0YXR1cy1iYWRnZSBbc3RhdHVzXT1cInZhbHVlXCI+PC9saWItdXNlci1hY2Nlc3MtcmVxdWVzdC1zdGF0dXMtYmFkZ2U+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiYWN0aW9uc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTZcIj5cbiAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25WaWV3KHJvdylcIiBpY29uPVwiZWRpdFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnICpuZ0lmPVwic2hvd0RlbGV0ZVwiIChjbGljayk9XCJvbkRlbGV0ZShyb3cpXCIgaWNvbj1cImRlbGV0ZVwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2xpYi1kYXRhLXRhYmxlPlxuXG4gIDxkaXYgKm5nSWY9XCJyZXF1ZXN0cy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZ1wiIGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICA8cD5ObyBhY2Nlc3MgcmVxdWVzdHMgZm91bmQ8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|