@memberjunction/ng-explorer-settings 2.70.0 → 2.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts +60 -0
  2. package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -0
  3. package/dist/lib/application-management/application-dialog/application-dialog.component.js +584 -0
  4. package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -0
  5. package/dist/lib/application-management/application-management.component.d.ts +4 -2
  6. package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
  7. package/dist/lib/application-management/application-management.component.js +79 -35
  8. package/dist/lib/application-management/application-management.component.js.map +1 -1
  9. package/dist/lib/entity-permissions/entity-permissions.component.d.ts +3 -1
  10. package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
  11. package/dist/lib/entity-permissions/entity-permissions.component.js +43 -66
  12. package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
  13. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +50 -0
  14. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -0
  15. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +464 -0
  16. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -0
  17. package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +38 -0
  18. package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -0
  19. package/dist/lib/role-management/role-dialog/role-dialog.component.js +329 -0
  20. package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -0
  21. package/dist/lib/role-management/role-management.component.d.ts +4 -0
  22. package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
  23. package/dist/lib/role-management/role-management.component.js +114 -72
  24. package/dist/lib/role-management/role-management.component.js.map +1 -1
  25. package/dist/lib/settings/settings.component.js +8 -8
  26. package/dist/lib/settings/settings.component.js.map +1 -1
  27. package/dist/lib/shared/components/settings-card/settings-card.component.d.ts.map +1 -1
  28. package/dist/lib/shared/components/settings-card/settings-card.component.js +11 -8
  29. package/dist/lib/shared/components/settings-card/settings-card.component.js.map +1 -1
  30. package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +44 -0
  31. package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -0
  32. package/dist/lib/user-management/user-dialog/user-dialog.component.js +470 -0
  33. package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -0
  34. package/dist/lib/user-management/user-management.component.d.ts +9 -0
  35. package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
  36. package/dist/lib/user-management/user-management.component.js +213 -98
  37. package/dist/lib/user-management/user-management.component.js.map +1 -1
  38. package/package.json +13 -13
@@ -0,0 +1,329 @@
1
+ import { Component, Input, Output, EventEmitter, inject, HostListener, ViewEncapsulation } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';
4
+ import { Metadata } from '@memberjunction/core';
5
+ import { WindowModule } from '@progress/kendo-angular-dialog';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@progress/kendo-angular-dialog";
10
+ function RoleDialogComponent_kendo_window_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
11
+ i0.ɵɵelementStart(0, "div", 8)(1, "div", 28);
12
+ i0.ɵɵelement(2, "i", 29);
13
+ i0.ɵɵelementStart(3, "div");
14
+ i0.ɵɵtext(4);
15
+ i0.ɵɵelementEnd()()();
16
+ } if (rf & 2) {
17
+ const ctx_r1 = i0.ɵɵnextContext(2);
18
+ i0.ɵɵadvance(4);
19
+ i0.ɵɵtextInterpolate(ctx_r1.error);
20
+ } }
21
+ function RoleDialogComponent_kendo_window_0_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵtext(0, " Role name is required ");
23
+ } }
24
+ function RoleDialogComponent_kendo_window_0_Conditional_24_Conditional_3_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵtext(0, " Role name cannot exceed 50 characters ");
26
+ } }
27
+ function RoleDialogComponent_kendo_window_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 17);
29
+ i0.ɵɵelement(1, "i", 30);
30
+ i0.ɵɵtemplate(2, RoleDialogComponent_kendo_window_0_Conditional_24_Conditional_2_Template, 1, 0)(3, RoleDialogComponent_kendo_window_0_Conditional_24_Conditional_3_Template, 1, 0);
31
+ i0.ɵɵelementEnd();
32
+ } if (rf & 2) {
33
+ let tmp_2_0;
34
+ let tmp_3_0;
35
+ const ctx_r1 = i0.ɵɵnextContext(2);
36
+ i0.ɵɵadvance(2);
37
+ i0.ɵɵconditional(((tmp_2_0 = ctx_r1.roleForm.get("name")) == null ? null : tmp_2_0.errors == null ? null : tmp_2_0.errors["required"]) ? 2 : -1);
38
+ i0.ɵɵadvance();
39
+ i0.ɵɵconditional(((tmp_3_0 = ctx_r1.roleForm.get("name")) == null ? null : tmp_3_0.errors == null ? null : tmp_3_0.errors["maxlength"]) ? 3 : -1);
40
+ } }
41
+ function RoleDialogComponent_kendo_window_0_Conditional_31_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "div", 14)(1, "label", 31);
43
+ i0.ɵɵtext(2, "Directory ID");
44
+ i0.ɵɵelementEnd();
45
+ i0.ɵɵelement(3, "input", 32);
46
+ i0.ɵɵelementStart(4, "div", 20);
47
+ i0.ɵɵtext(5, " External directory identifier for syncing with Active Directory or other systems. ");
48
+ i0.ɵɵelementEnd()();
49
+ } }
50
+ function RoleDialogComponent_kendo_window_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelementStart(0, "div", 22);
52
+ i0.ɵɵelement(1, "i", 4);
53
+ i0.ɵɵelementStart(2, "div")(3, "strong");
54
+ i0.ɵɵtext(4, "System Role");
55
+ i0.ɵɵelementEnd();
56
+ i0.ɵɵelementStart(5, "p");
57
+ i0.ɵɵtext(6, "This is a system-defined role. Some properties may be limited for editing to maintain system integrity.");
58
+ i0.ɵɵelementEnd()()();
59
+ } }
60
+ function RoleDialogComponent_kendo_window_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementStart(0, "div", 23);
62
+ i0.ɵɵelement(1, "i", 33);
63
+ i0.ɵɵelementStart(2, "div")(3, "strong");
64
+ i0.ɵɵtext(4, "Custom Role");
65
+ i0.ɵɵelementEnd();
66
+ i0.ɵɵelementStart(5, "p");
67
+ i0.ɵɵtext(6, "This is a custom role that can be fully configured and modified.");
68
+ i0.ɵɵelementEnd()()();
69
+ } }
70
+ function RoleDialogComponent_kendo_window_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "div", 8)(1, "div", 9)(2, "div", 10)(3, "h3", 11);
72
+ i0.ɵɵelement(4, "i", 34);
73
+ i0.ɵɵtext(5, " Permissions ");
74
+ i0.ɵɵelementEnd();
75
+ i0.ɵɵelementStart(6, "p", 12);
76
+ i0.ɵɵtext(7, "Manage role permissions and access rights");
77
+ i0.ɵɵelementEnd()();
78
+ i0.ɵɵelementStart(8, "div", 13)(9, "div", 23);
79
+ i0.ɵɵelement(10, "i", 35);
80
+ i0.ɵɵelementStart(11, "div")(12, "strong");
81
+ i0.ɵɵtext(13, "Permission Management");
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵelementStart(14, "p");
84
+ i0.ɵɵtext(15, "Role permissions can be managed in the ");
85
+ i0.ɵɵelementStart(16, "strong");
86
+ i0.ɵɵtext(17, "Permissions");
87
+ i0.ɵɵelementEnd();
88
+ i0.ɵɵtext(18, " tab of the settings dashboard. Use that interface to configure specific access rights for this role.");
89
+ i0.ɵɵelementEnd()()()()()();
90
+ } }
91
+ function RoleDialogComponent_kendo_window_0_Conditional_49_Template(rf, ctx) { if (rf & 1) {
92
+ i0.ɵɵelement(0, "i", 36);
93
+ i0.ɵɵtext(1, " Saving... ");
94
+ } }
95
+ function RoleDialogComponent_kendo_window_0_Conditional_50_Template(rf, ctx) { if (rf & 1) {
96
+ i0.ɵɵelement(0, "i", 37);
97
+ i0.ɵɵtext(1);
98
+ } if (rf & 2) {
99
+ const ctx_r1 = i0.ɵɵnextContext(2);
100
+ i0.ɵɵadvance();
101
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.isEditMode ? "Update Role" : "Create Role", " ");
102
+ } }
103
+ function RoleDialogComponent_kendo_window_0_Template(rf, ctx) { if (rf & 1) {
104
+ const _r1 = i0.ɵɵgetCurrentView();
105
+ i0.ɵɵelementStart(0, "kendo-window", 1);
106
+ i0.ɵɵlistener("close", function RoleDialogComponent_kendo_window_0_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
107
+ i0.ɵɵelementStart(1, "kendo-window-titlebar")(2, "div", 2)(3, "h2", 3);
108
+ i0.ɵɵelement(4, "i", 4);
109
+ i0.ɵɵtext(5);
110
+ i0.ɵɵelementEnd();
111
+ i0.ɵɵelementStart(6, "p", 5);
112
+ i0.ɵɵtext(7);
113
+ i0.ɵɵelementEnd()()();
114
+ i0.ɵɵelementStart(8, "div", 6)(9, "form", 7);
115
+ i0.ɵɵlistener("ngSubmit", function RoleDialogComponent_kendo_window_0_Template_form_ngSubmit_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSubmit()); });
116
+ i0.ɵɵtemplate(10, RoleDialogComponent_kendo_window_0_Conditional_10_Template, 5, 1, "div", 8);
117
+ i0.ɵɵelementStart(11, "div", 8)(12, "div", 9)(13, "div", 10)(14, "h3", 11);
118
+ i0.ɵɵelement(15, "i", 4);
119
+ i0.ɵɵtext(16, " Role Information ");
120
+ i0.ɵɵelementEnd();
121
+ i0.ɵɵelementStart(17, "p", 12);
122
+ i0.ɵɵtext(18, "Define the role's basic properties and purpose");
123
+ i0.ɵɵelementEnd()();
124
+ i0.ɵɵelementStart(19, "div", 13)(20, "div", 14)(21, "label", 15);
125
+ i0.ɵɵtext(22, "Role Name");
126
+ i0.ɵɵelementEnd();
127
+ i0.ɵɵelement(23, "input", 16);
128
+ i0.ɵɵtemplate(24, RoleDialogComponent_kendo_window_0_Conditional_24_Template, 4, 2, "div", 17);
129
+ i0.ɵɵelementEnd();
130
+ i0.ɵɵelementStart(25, "div", 14)(26, "label", 18);
131
+ i0.ɵɵtext(27, "Description");
132
+ i0.ɵɵelementEnd();
133
+ i0.ɵɵelement(28, "textarea", 19);
134
+ i0.ɵɵelementStart(29, "div", 20);
135
+ i0.ɵɵtext(30, " Provide a clear description of what this role is for and what permissions it should have. ");
136
+ i0.ɵɵelementEnd()();
137
+ i0.ɵɵtemplate(31, RoleDialogComponent_kendo_window_0_Conditional_31_Template, 6, 0, "div", 14);
138
+ i0.ɵɵelementEnd()()();
139
+ i0.ɵɵelementStart(32, "div", 8)(33, "div", 9)(34, "div", 10)(35, "h3", 11);
140
+ i0.ɵɵelement(36, "i", 21);
141
+ i0.ɵɵtext(37, " Role Type ");
142
+ i0.ɵɵelementEnd();
143
+ i0.ɵɵelementStart(38, "p", 12);
144
+ i0.ɵɵtext(39, "System or custom role classification");
145
+ i0.ɵɵelementEnd()();
146
+ i0.ɵɵelementStart(40, "div", 13);
147
+ i0.ɵɵtemplate(41, RoleDialogComponent_kendo_window_0_Conditional_41_Template, 7, 0, "div", 22)(42, RoleDialogComponent_kendo_window_0_Conditional_42_Template, 7, 0, "div", 23);
148
+ i0.ɵɵelementEnd()()();
149
+ i0.ɵɵtemplate(43, RoleDialogComponent_kendo_window_0_Conditional_43_Template, 19, 0, "div", 8);
150
+ i0.ɵɵelementStart(44, "div", 24)(45, "button", 25);
151
+ i0.ɵɵlistener("click", function RoleDialogComponent_kendo_window_0_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
152
+ i0.ɵɵelement(46, "i", 26);
153
+ i0.ɵɵtext(47, " Cancel ");
154
+ i0.ɵɵelementEnd();
155
+ i0.ɵɵelementStart(48, "button", 27);
156
+ i0.ɵɵtemplate(49, RoleDialogComponent_kendo_window_0_Conditional_49_Template, 2, 0)(50, RoleDialogComponent_kendo_window_0_Conditional_50_Template, 2, 1);
157
+ i0.ɵɵelementEnd()()()()();
158
+ } if (rf & 2) {
159
+ let tmp_10_0;
160
+ let tmp_11_0;
161
+ const ctx_r1 = i0.ɵɵnextContext();
162
+ i0.ɵɵproperty("width", 700)("height", 600)("resizable", false)("draggable", true)("keepContent", true);
163
+ i0.ɵɵadvance(5);
164
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.isEditMode ? "Edit Role" : "Create New Role", " ");
165
+ i0.ɵɵadvance(2);
166
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.isEditMode ? "Update role information and permissions" : "Add a new role to the system", " ");
167
+ i0.ɵɵadvance(2);
168
+ i0.ɵɵproperty("formGroup", ctx_r1.roleForm);
169
+ i0.ɵɵadvance();
170
+ i0.ɵɵconditional(ctx_r1.error ? 10 : -1);
171
+ i0.ɵɵadvance(13);
172
+ i0.ɵɵclassProp("error", ((tmp_10_0 = ctx_r1.roleForm.get("name")) == null ? null : tmp_10_0.invalid) && ((tmp_10_0 = ctx_r1.roleForm.get("name")) == null ? null : tmp_10_0.touched));
173
+ i0.ɵɵadvance();
174
+ i0.ɵɵconditional(((tmp_11_0 = ctx_r1.roleForm.get("name")) == null ? null : tmp_11_0.invalid) && ((tmp_11_0 = ctx_r1.roleForm.get("name")) == null ? null : tmp_11_0.touched) ? 24 : -1);
175
+ i0.ɵɵadvance(7);
176
+ i0.ɵɵconditional(ctx_r1.isEditMode ? 31 : -1);
177
+ i0.ɵɵadvance(10);
178
+ i0.ɵɵconditional(ctx_r1.isSystemRole ? 41 : 42);
179
+ i0.ɵɵadvance(2);
180
+ i0.ɵɵconditional(ctx_r1.isEditMode ? 43 : -1);
181
+ i0.ɵɵadvance(5);
182
+ i0.ɵɵproperty("disabled", ctx_r1.roleForm.invalid || ctx_r1.isLoading);
183
+ i0.ɵɵadvance();
184
+ i0.ɵɵconditional(ctx_r1.isLoading ? 49 : 50);
185
+ } }
186
+ export class RoleDialogComponent {
187
+ data = null;
188
+ visible = false;
189
+ result = new EventEmitter();
190
+ fb = inject(FormBuilder);
191
+ metadata = new Metadata();
192
+ roleForm;
193
+ isLoading = false;
194
+ error = null;
195
+ constructor() {
196
+ this.roleForm = this.fb.group({
197
+ name: ['', [Validators.required, Validators.maxLength(50)]],
198
+ description: [''],
199
+ directoryId: ['']
200
+ });
201
+ }
202
+ ngOnInit() {
203
+ // Initial setup
204
+ }
205
+ ngOnChanges(changes) {
206
+ if (changes['data'] && this.data?.role && this.isEditMode) {
207
+ this.loadRoleData();
208
+ }
209
+ // Reset form if switching to create mode or dialog becomes visible
210
+ if (changes['visible'] && this.visible && !this.isEditMode) {
211
+ this.resetForm();
212
+ }
213
+ }
214
+ ngOnDestroy() {
215
+ // Cleanup if needed
216
+ }
217
+ resetForm() {
218
+ this.roleForm.reset({
219
+ name: '',
220
+ description: '',
221
+ directoryId: ''
222
+ });
223
+ this.error = null;
224
+ }
225
+ onEscapeKey(event) {
226
+ if (this.visible) {
227
+ this.onCancel();
228
+ }
229
+ }
230
+ get windowTitle() {
231
+ return this.isEditMode ? 'Edit Role' : 'Create New Role';
232
+ }
233
+ get isEditMode() {
234
+ return this.data?.mode === 'edit';
235
+ }
236
+ get isSystemRole() {
237
+ if (!this.data?.role)
238
+ return false;
239
+ const systemRoleNames = ['Administrator', 'User', 'Guest', 'Developer'];
240
+ return systemRoleNames.includes(this.data.role.Name || '');
241
+ }
242
+ loadRoleData() {
243
+ if (!this.data?.role)
244
+ return;
245
+ const role = this.data.role;
246
+ this.roleForm.patchValue({
247
+ name: role.Name,
248
+ description: role.Description,
249
+ directoryId: role.DirectoryID
250
+ });
251
+ // Disable name editing for system roles
252
+ if (this.isSystemRole) {
253
+ this.roleForm.get('name')?.disable();
254
+ }
255
+ }
256
+ async onSubmit() {
257
+ if (this.roleForm.invalid) {
258
+ this.markFormGroupTouched(this.roleForm);
259
+ return;
260
+ }
261
+ this.isLoading = true;
262
+ this.error = null;
263
+ try {
264
+ let role;
265
+ if (this.isEditMode && this.data?.role) {
266
+ // Edit existing role
267
+ role = this.data.role;
268
+ }
269
+ else {
270
+ // Create new role
271
+ role = await this.metadata.GetEntityObject('Roles');
272
+ role.NewRecord();
273
+ }
274
+ // Update role properties
275
+ const formValue = this.roleForm.value;
276
+ // Only update name if not a system role
277
+ if (!this.isSystemRole) {
278
+ role.Name = formValue.name;
279
+ }
280
+ role.Description = formValue.description;
281
+ role.DirectoryID = formValue.directoryId || null;
282
+ // Save role
283
+ const saveResult = await role.Save();
284
+ if (!saveResult) {
285
+ throw new Error(role.LatestResult?.Message || 'Failed to save role');
286
+ }
287
+ this.result.emit({ action: 'save', role });
288
+ }
289
+ catch (error) {
290
+ console.error('Error saving role:', error);
291
+ this.error = error.message || 'An unexpected error occurred';
292
+ }
293
+ finally {
294
+ this.isLoading = false;
295
+ }
296
+ }
297
+ onCancel() {
298
+ this.result.emit({ action: 'cancel' });
299
+ }
300
+ markFormGroupTouched(formGroup) {
301
+ Object.keys(formGroup.controls).forEach(key => {
302
+ const control = formGroup.get(key);
303
+ control?.markAsTouched();
304
+ });
305
+ }
306
+ static ɵfac = function RoleDialogComponent_Factory(t) { return new (t || RoleDialogComponent)(); };
307
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RoleDialogComponent, selectors: [["mj-role-dialog"]], hostBindings: function RoleDialogComponent_HostBindings(rf, ctx) { if (rf & 1) {
308
+ i0.ɵɵlistener("keydown.escape", function RoleDialogComponent_keydown_escape_HostBindingHandler($event) { return ctx.onEscapeKey($event); }, false, i0.ɵɵresolveDocument);
309
+ } }, inputs: { data: "data", visible: "visible" }, outputs: { result: "result" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 1, vars: 1, consts: [["kendoWindowContainer", "", 3, "width", "height", "resizable", "draggable", "keepContent", "close", 4, "ngIf"], ["kendoWindowContainer", "", 3, "close", "width", "height", "resizable", "draggable", "keepContent"], [1, "dialog-header"], [1, "dialog-title"], [1, "fa-solid", "fa-shield-halved"], [1, "dialog-subtitle"], [1, "dialog-content"], [3, "ngSubmit", "formGroup"], [1, "content-section"], [1, "form-section"], [1, "section-header"], [1, "section-title"], [1, "section-description"], [1, "form-grid"], [1, "form-field"], ["for", "name", 1, "field-label", "required"], ["id", "name", "type", "text", "formControlName", "name", "placeholder", "Sales Manager", 1, "field-input"], [1, "field-error"], ["for", "description", 1, "field-label"], ["id", "description", "formControlName", "description", "placeholder", "Describe the role's purpose and responsibilities...", "rows", "4", 1, "field-textarea"], [1, "field-hint"], [1, "fa-solid", "fa-cog"], [1, "alert", "alert-warning"], [1, "alert", "alert-info"], [1, "dialog-footer"], ["type", "button", 1, "btn", "btn-secondary", 3, "click"], [1, "fa-solid", "fa-times"], ["type", "submit", 1, "btn", "btn-primary", 3, "disabled"], [1, "alert", "alert-error"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-exclamation-circle"], ["for", "directoryId", 1, "field-label"], ["id", "directoryId", "type", "text", "formControlName", "directoryId", "placeholder", "External directory identifier", 1, "field-input"], [1, "fa-solid", "fa-user-tag"], [1, "fa-solid", "fa-key"], [1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-save"]], template: function RoleDialogComponent_Template(rf, ctx) { if (rf & 1) {
310
+ i0.ɵɵtemplate(0, RoleDialogComponent_kendo_window_0_Template, 51, 17, "kendo-window", 0);
311
+ } if (rf & 2) {
312
+ i0.ɵɵproperty("ngIf", ctx.visible);
313
+ } }, dependencies: [CommonModule, i1.NgIf, FormsModule, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, ReactiveFormsModule, i2.FormGroupDirective, i2.FormControlName, WindowModule, i3.WindowComponent, i3.WindowTitleBarComponent, i3.WindowContainerDirective], styles: ["/* Modern Dialog Styling - Matching Dashboard Design */\n:host ::ng-deep .k-window {\n border: none;\n border-radius: 12px;\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22);\n background: #ffffff;\n overflow: hidden;\n}\n\n:host ::ng-deep .k-window-titlebar {\n background: linear-gradient(135deg, #4caf50 0%, #43a047 100%);\n border: none;\n padding: 24px 32px;\n min-height: 70px;\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-title {\n display: none; /* Hide default title */\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-actions {\n position: absolute;\n top: 24px;\n right: 24px;\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-actions .k-button {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: #ffffff;\n border-radius: 6px;\n width: 32px;\n height: 32px;\n min-width: auto;\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-actions .k-button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n}\n\n:host ::ng-deep .k-window-content {\n padding: 0;\n background: #ffffff;\n}\n\n/* Custom Title Bar */\n.dialog-header {\n position: relative;\n color: #ffffff;\n}\n\n.dialog-header .dialog-title {\n font-size: 18px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 16px;\n margin: 0;\n}\n\n.dialog-header .dialog-title i {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.15);\n border-radius: 6px;\n font-size: 14px;\n}\n\n.dialog-header .dialog-subtitle {\n margin: 4px 0 0 0;\n font-size: 12px;\n opacity: 0.85;\n font-weight: 400;\n}\n\n/* Modal Content Areas */\n.dialog-content {\n padding: 0;\n background: #ffffff;\n}\n\n.dialog-content .content-section {\n padding: 32px;\n}\n\n.dialog-content .content-section:not(:last-child) {\n border-bottom: 1px solid #e0e0e0;\n}\n\n.dialog-footer {\n padding: 24px 32px;\n background: #fafafa;\n border-top: 1px solid #e0e0e0;\n display: flex;\n justify-content: flex-end;\n gap: 16px;\n}\n\n/* Form Sections */\n.form-section .section-header {\n margin-bottom: 24px;\n}\n\n.form-section .section-header .section-title {\n font-size: 16px;\n font-weight: 600;\n color: #212121;\n margin: 0 0 4px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.form-section .section-header .section-title i {\n color: #4caf50;\n font-size: 14px;\n}\n\n.form-section .section-header .section-description {\n font-size: 12px;\n color: #666666;\n margin: 0;\n}\n\n.form-grid {\n display: grid;\n gap: 24px;\n}\n\n.form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 24px;\n}\n\n@media (max-width: 640px) {\n .form-row {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n}\n\n/* Modern Form Fields */\n.form-field {\n margin-bottom: 24px;\n}\n\n.form-field:last-child {\n margin-bottom: 0;\n}\n\n.form-field .field-label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #212121;\n margin-bottom: 8px;\n}\n\n.form-field .field-label.required::after {\n content: ' *';\n color: #f44336;\n}\n\n.form-field .field-input,\n.form-field .field-select,\n.form-field .field-textarea {\n width: 100%;\n padding: 0 16px;\n border: 1px solid #bdbdbd;\n border-radius: 6px;\n font-size: 14px;\n background: #ffffff;\n transition: all 0.15s ease;\n}\n\n.form-field .field-input:focus,\n.form-field .field-select:focus,\n.form-field .field-textarea:focus {\n outline: none;\n border-color: #4caf50;\n box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.1);\n}\n\n.form-field .field-input.error,\n.form-field .field-select.error,\n.form-field .field-textarea.error {\n border-color: #f44336;\n}\n\n.form-field .field-input.error:focus,\n.form-field .field-select.error:focus,\n.form-field .field-textarea.error:focus {\n border-color: #f44336;\n box-shadow: 0 0 0 3px rgba(244, 67, 54, 0.1);\n}\n\n.form-field .field-input::placeholder,\n.form-field .field-select::placeholder,\n.form-field .field-textarea::placeholder {\n color: #9e9e9e;\n}\n\n.form-field .field-input,\n.form-field .field-select {\n height: 36px;\n}\n\n.form-field .field-textarea {\n min-height: 100px;\n padding: 16px;\n resize: vertical;\n line-height: 1.4;\n}\n\n.form-field .field-select {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23666' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");\n background-position: right 16px center;\n background-repeat: no-repeat;\n background-size: 16px;\n padding-right: calc(16px + 24px);\n appearance: none;\n cursor: pointer;\n}\n\n.form-field .field-error {\n margin-top: 8px;\n font-size: 11px;\n color: #f44336;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.form-field .field-error i {\n font-size: 10px;\n}\n\n.form-field .field-hint {\n margin-top: 8px;\n font-size: 11px;\n color: #666666;\n line-height: 1.4;\n}\n\n/* Alert Messages */\n.alert {\n padding: 16px 24px;\n border-radius: 8px;\n margin-bottom: 24px;\n display: flex;\n align-items: flex-start;\n gap: 16px;\n}\n\n.alert i {\n font-size: 16px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n.alert.alert-error {\n background: rgba(244, 67, 54, 0.1);\n border: 1px solid rgba(244, 67, 54, 0.2);\n color: #c62828;\n}\n\n.alert.alert-error i {\n color: #f44336;\n}\n\n.alert.alert-warning {\n background: rgba(255, 193, 7, 0.1);\n border: 1px solid rgba(255, 193, 7, 0.2);\n color: #b7800d;\n}\n\n.alert.alert-warning i {\n color: #ffc107;\n}\n\n.alert.alert-info {\n background: rgba(0, 188, 212, 0.1);\n border: 1px solid rgba(0, 188, 212, 0.2);\n color: #00838f;\n}\n\n.alert.alert-info i {\n color: #00bcd4;\n}\n\n/* Button Styles */\n.dialog-footer .btn {\n padding: 8px 24px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n min-height: 36px;\n}\n\n.dialog-footer .btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.dialog-footer .btn:disabled i.fa-spinner {\n animation: spin 1s linear infinite;\n}\n\n.dialog-footer .btn.btn-secondary {\n background: #ffffff;\n color: #666666;\n border-color: #bdbdbd;\n}\n\n.dialog-footer .btn.btn-secondary:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #757575;\n color: #212121;\n}\n\n.dialog-footer .btn.btn-primary {\n background: #4caf50;\n color: #ffffff;\n}\n\n.dialog-footer .btn.btn-primary:hover:not(:disabled) {\n background: #43a047;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.2);\n transform: translateY(-1px);\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n :host ::ng-deep .k-window {\n margin: 16px;\n max-width: none;\n width: calc(100vw - 24px) !important;\n height: calc(100vh - 24px) !important;\n }\n \n :host ::ng-deep .k-window-titlebar {\n padding: 16px 24px;\n min-height: 60px;\n }\n \n .dialog-content .content-section {\n padding: 24px 16px;\n }\n \n .dialog-footer {\n padding: 16px 24px;\n flex-direction: column-reverse;\n }\n \n .dialog-footer .btn {\n width: 100%;\n justify-content: center;\n }\n}"], encapsulation: 2 });
314
+ }
315
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RoleDialogComponent, [{
316
+ type: Component,
317
+ args: [{ selector: 'mj-role-dialog', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule, WindowModule], encapsulation: ViewEncapsulation.None, template: "<kendo-window\n *ngIf=\"visible\"\n [width]=\"700\"\n [height]=\"600\"\n [resizable]=\"false\"\n [draggable]=\"true\"\n [keepContent]=\"true\"\n (close)=\"onCancel()\"\n kendoWindowContainer>\n \n <kendo-window-titlebar>\n <div class=\"dialog-header\">\n <h2 class=\"dialog-title\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n {{ isEditMode ? 'Edit Role' : 'Create New Role' }}\n </h2>\n <p class=\"dialog-subtitle\">\n {{ isEditMode ? 'Update role information and permissions' : 'Add a new role to the system' }}\n </p>\n </div>\n </kendo-window-titlebar>\n\n <div class=\"dialog-content\">\n <form [formGroup]=\"roleForm\" (ngSubmit)=\"onSubmit()\">\n \n @if (error) {\n <div class=\"content-section\">\n <div class=\"alert alert-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div>{{ error }}</div>\n </div>\n </div>\n }\n\n <!-- Basic Information Section -->\n <div class=\"content-section\">\n <div class=\"form-section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n Role Information\n </h3>\n <p class=\"section-description\">Define the role's basic properties and purpose</p>\n </div>\n \n <div class=\"form-grid\">\n <div class=\"form-field\">\n <label class=\"field-label required\" for=\"name\">Role Name</label>\n <input \n id=\"name\"\n type=\"text\" \n class=\"field-input\" \n formControlName=\"name\"\n placeholder=\"Sales Manager\"\n [class.error]=\"roleForm.get('name')?.invalid && roleForm.get('name')?.touched\"\n />\n @if (roleForm.get('name')?.invalid && roleForm.get('name')?.touched) {\n <div class=\"field-error\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n @if (roleForm.get('name')?.errors?.['required']) {\n Role name is required\n }\n @if (roleForm.get('name')?.errors?.['maxlength']) {\n Role name cannot exceed 50 characters\n }\n </div>\n }\n </div>\n\n <div class=\"form-field\">\n <label class=\"field-label\" for=\"description\">Description</label>\n <textarea \n id=\"description\"\n class=\"field-textarea\" \n formControlName=\"description\"\n placeholder=\"Describe the role's purpose and responsibilities...\"\n rows=\"4\"\n ></textarea>\n <div class=\"field-hint\">\n Provide a clear description of what this role is for and what permissions it should have.\n </div>\n </div>\n\n @if (isEditMode) {\n <div class=\"form-field\">\n <label class=\"field-label\" for=\"directoryId\">Directory ID</label>\n <input \n id=\"directoryId\"\n type=\"text\" \n class=\"field-input\" \n formControlName=\"directoryId\"\n placeholder=\"External directory identifier\"\n />\n <div class=\"field-hint\">\n External directory identifier for syncing with Active Directory or other systems.\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Role Type Section -->\n <div class=\"content-section\">\n <div class=\"form-section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-cog\"></i>\n Role Type\n </h3>\n <p class=\"section-description\">System or custom role classification</p>\n </div>\n \n <div class=\"form-grid\">\n @if (isSystemRole) {\n <div class=\"alert alert-warning\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <div>\n <strong>System Role</strong>\n <p>This is a system-defined role. Some properties may be limited for editing to maintain system integrity.</p>\n </div>\n </div>\n } @else {\n <div class=\"alert alert-info\">\n <i class=\"fa-solid fa-user-tag\"></i>\n <div>\n <strong>Custom Role</strong>\n <p>This is a custom role that can be fully configured and modified.</p>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Permissions Preview Section -->\n @if (isEditMode) {\n <div class=\"content-section\">\n <div class=\"form-section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-key\"></i>\n Permissions\n </h3>\n <p class=\"section-description\">Manage role permissions and access rights</p>\n </div>\n \n <div class=\"form-grid\">\n <div class=\"alert alert-info\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <div>\n <strong>Permission Management</strong>\n <p>Role permissions can be managed in the <strong>Permissions</strong> tab of the settings dashboard. Use that interface to configure specific access rights for this role.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"dialog-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onCancel()\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n <button \n type=\"submit\" \n class=\"btn btn-primary\" \n [disabled]=\"roleForm.invalid || isLoading\"\n >\n @if (isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n {{ isEditMode ? 'Update Role' : 'Create Role' }}\n }\n </button>\n </div>\n </form>\n </div>\n</kendo-window>", styles: ["/* Modern Dialog Styling - Matching Dashboard Design */\n:host ::ng-deep .k-window {\n border: none;\n border-radius: 12px;\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22);\n background: #ffffff;\n overflow: hidden;\n}\n\n:host ::ng-deep .k-window-titlebar {\n background: linear-gradient(135deg, #4caf50 0%, #43a047 100%);\n border: none;\n padding: 24px 32px;\n min-height: 70px;\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-title {\n display: none; /* Hide default title */\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-actions {\n position: absolute;\n top: 24px;\n right: 24px;\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-actions .k-button {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: #ffffff;\n border-radius: 6px;\n width: 32px;\n height: 32px;\n min-width: auto;\n}\n\n:host ::ng-deep .k-window-titlebar .k-window-actions .k-button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n}\n\n:host ::ng-deep .k-window-content {\n padding: 0;\n background: #ffffff;\n}\n\n/* Custom Title Bar */\n.dialog-header {\n position: relative;\n color: #ffffff;\n}\n\n.dialog-header .dialog-title {\n font-size: 18px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 16px;\n margin: 0;\n}\n\n.dialog-header .dialog-title i {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.15);\n border-radius: 6px;\n font-size: 14px;\n}\n\n.dialog-header .dialog-subtitle {\n margin: 4px 0 0 0;\n font-size: 12px;\n opacity: 0.85;\n font-weight: 400;\n}\n\n/* Modal Content Areas */\n.dialog-content {\n padding: 0;\n background: #ffffff;\n}\n\n.dialog-content .content-section {\n padding: 32px;\n}\n\n.dialog-content .content-section:not(:last-child) {\n border-bottom: 1px solid #e0e0e0;\n}\n\n.dialog-footer {\n padding: 24px 32px;\n background: #fafafa;\n border-top: 1px solid #e0e0e0;\n display: flex;\n justify-content: flex-end;\n gap: 16px;\n}\n\n/* Form Sections */\n.form-section .section-header {\n margin-bottom: 24px;\n}\n\n.form-section .section-header .section-title {\n font-size: 16px;\n font-weight: 600;\n color: #212121;\n margin: 0 0 4px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.form-section .section-header .section-title i {\n color: #4caf50;\n font-size: 14px;\n}\n\n.form-section .section-header .section-description {\n font-size: 12px;\n color: #666666;\n margin: 0;\n}\n\n.form-grid {\n display: grid;\n gap: 24px;\n}\n\n.form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 24px;\n}\n\n@media (max-width: 640px) {\n .form-row {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n}\n\n/* Modern Form Fields */\n.form-field {\n margin-bottom: 24px;\n}\n\n.form-field:last-child {\n margin-bottom: 0;\n}\n\n.form-field .field-label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #212121;\n margin-bottom: 8px;\n}\n\n.form-field .field-label.required::after {\n content: ' *';\n color: #f44336;\n}\n\n.form-field .field-input,\n.form-field .field-select,\n.form-field .field-textarea {\n width: 100%;\n padding: 0 16px;\n border: 1px solid #bdbdbd;\n border-radius: 6px;\n font-size: 14px;\n background: #ffffff;\n transition: all 0.15s ease;\n}\n\n.form-field .field-input:focus,\n.form-field .field-select:focus,\n.form-field .field-textarea:focus {\n outline: none;\n border-color: #4caf50;\n box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.1);\n}\n\n.form-field .field-input.error,\n.form-field .field-select.error,\n.form-field .field-textarea.error {\n border-color: #f44336;\n}\n\n.form-field .field-input.error:focus,\n.form-field .field-select.error:focus,\n.form-field .field-textarea.error:focus {\n border-color: #f44336;\n box-shadow: 0 0 0 3px rgba(244, 67, 54, 0.1);\n}\n\n.form-field .field-input::placeholder,\n.form-field .field-select::placeholder,\n.form-field .field-textarea::placeholder {\n color: #9e9e9e;\n}\n\n.form-field .field-input,\n.form-field .field-select {\n height: 36px;\n}\n\n.form-field .field-textarea {\n min-height: 100px;\n padding: 16px;\n resize: vertical;\n line-height: 1.4;\n}\n\n.form-field .field-select {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23666' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");\n background-position: right 16px center;\n background-repeat: no-repeat;\n background-size: 16px;\n padding-right: calc(16px + 24px);\n appearance: none;\n cursor: pointer;\n}\n\n.form-field .field-error {\n margin-top: 8px;\n font-size: 11px;\n color: #f44336;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.form-field .field-error i {\n font-size: 10px;\n}\n\n.form-field .field-hint {\n margin-top: 8px;\n font-size: 11px;\n color: #666666;\n line-height: 1.4;\n}\n\n/* Alert Messages */\n.alert {\n padding: 16px 24px;\n border-radius: 8px;\n margin-bottom: 24px;\n display: flex;\n align-items: flex-start;\n gap: 16px;\n}\n\n.alert i {\n font-size: 16px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n.alert.alert-error {\n background: rgba(244, 67, 54, 0.1);\n border: 1px solid rgba(244, 67, 54, 0.2);\n color: #c62828;\n}\n\n.alert.alert-error i {\n color: #f44336;\n}\n\n.alert.alert-warning {\n background: rgba(255, 193, 7, 0.1);\n border: 1px solid rgba(255, 193, 7, 0.2);\n color: #b7800d;\n}\n\n.alert.alert-warning i {\n color: #ffc107;\n}\n\n.alert.alert-info {\n background: rgba(0, 188, 212, 0.1);\n border: 1px solid rgba(0, 188, 212, 0.2);\n color: #00838f;\n}\n\n.alert.alert-info i {\n color: #00bcd4;\n}\n\n/* Button Styles */\n.dialog-footer .btn {\n padding: 8px 24px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n min-height: 36px;\n}\n\n.dialog-footer .btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.dialog-footer .btn:disabled i.fa-spinner {\n animation: spin 1s linear infinite;\n}\n\n.dialog-footer .btn.btn-secondary {\n background: #ffffff;\n color: #666666;\n border-color: #bdbdbd;\n}\n\n.dialog-footer .btn.btn-secondary:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #757575;\n color: #212121;\n}\n\n.dialog-footer .btn.btn-primary {\n background: #4caf50;\n color: #ffffff;\n}\n\n.dialog-footer .btn.btn-primary:hover:not(:disabled) {\n background: #43a047;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.2);\n transform: translateY(-1px);\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n :host ::ng-deep .k-window {\n margin: 16px;\n max-width: none;\n width: calc(100vw - 24px) !important;\n height: calc(100vh - 24px) !important;\n }\n \n :host ::ng-deep .k-window-titlebar {\n padding: 16px 24px;\n min-height: 60px;\n }\n \n .dialog-content .content-section {\n padding: 24px 16px;\n }\n \n .dialog-footer {\n padding: 16px 24px;\n flex-direction: column-reverse;\n }\n \n .dialog-footer .btn {\n width: 100%;\n justify-content: center;\n }\n}"] }]
318
+ }], () => [], { data: [{
319
+ type: Input
320
+ }], visible: [{
321
+ type: Input
322
+ }], result: [{
323
+ type: Output
324
+ }], onEscapeKey: [{
325
+ type: HostListener,
326
+ args: ['document:keydown.escape', ['$event']]
327
+ }] }); })();
328
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RoleDialogComponent, { className: "RoleDialogComponent", filePath: "src/lib/role-management/role-dialog/role-dialog.component.ts", lineNumber: 26 }); })();
329
+ //# sourceMappingURL=role-dialog.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/role-management/role-dialog/role-dialog.component.ts","../../../../src/lib/role-management/role-dialog/role-dialog.component.html"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { OnInit, OnDestroy } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import { RoleEntity } from '@memberjunction/core-entities';
4
+ import { RoleDialogData, RoleDialogResult } from './role-dialog/role-dialog.component';
4
5
  import * as i0 from "@angular/core";
5
6
  interface RoleStats {
6
7
  totalRoles: number;
@@ -18,6 +19,8 @@ export declare class RoleManagementComponent implements OnInit, OnDestroy {
18
19
  selectedRole: RoleEntity | null;
19
20
  isLoading: boolean;
20
21
  error: string | null;
22
+ showRoleDialog: boolean;
23
+ roleDialogData: RoleDialogData | null;
21
24
  stats: RoleStats;
22
25
  filters$: BehaviorSubject<FilterOptions>;
23
26
  showCreateDialog: boolean;
@@ -49,6 +52,7 @@ export declare class RoleManagementComponent implements OnInit, OnDestroy {
49
52
  getRoleTypeLabel(role: RoleEntity): string;
50
53
  getRoleTypeClass(role: RoleEntity): string;
51
54
  refreshData(): void;
55
+ onRoleDialogResult(result: RoleDialogResult): void;
52
56
  static ɵfac: i0.ɵɵFactoryDeclaration<RoleManagementComponent, never>;
53
57
  static ɵcmp: i0.ɵɵComponentDeclaration<RoleManagementComponent, "mj-role-management", never, {}, {}, never, never, true, never>;
54
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"role-management.component.d.ts","sourceRoot":"","sources":["../../../src/lib/role-management/role-management.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAW,eAAe,EAAE,MAAM,MAAM,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAc,MAAM,+BAA+B,CAAC;;AAGvE,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAWa,uBAAwB,YAAW,MAAM,EAAE,SAAS;IAExD,KAAK,EAAE,UAAU,EAAE,CAAM;IACzB,aAAa,EAAE,UAAU,EAAE,CAAM;IACjC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAQ;IACvC,SAAS,UAAS;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,KAAK,EAAE,SAAS,CAKrB;IAGK,QAAQ,iCAGZ;IAGI,gBAAgB,UAAS;IACzB,cAAc,UAAS;IACvB,iBAAiB,UAAS;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAa;IAE1D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,QAAQ,CAAkB;;IAIlC,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAKN,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAmB/B,SAAS;IAWvB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;IAWf,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAOvC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKlC,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAI3D,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAOnD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,aAAa,IAAI,IAAI;IAKrB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAKhC,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAKnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAOrC,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI1C,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI1C,WAAW,IAAI,IAAI;yCArMf,uBAAuB;2CAAvB,uBAAuB;CAwMnC"}
1
+ {"version":3,"file":"role-management.component.d.ts","sourceRoot":"","sources":["../../../src/lib/role-management/role-management.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAW,eAAe,EAAE,MAAM,MAAM,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAc,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAuB,cAAc,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;;AAG5G,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAaa,uBAAwB,YAAW,MAAM,EAAE,SAAS;IAExD,KAAK,EAAE,UAAU,EAAE,CAAM;IACzB,aAAa,EAAE,UAAU,EAAE,CAAM;IACjC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAQ;IACvC,SAAS,UAAS;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,cAAc,UAAS;IACvB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAG7C,KAAK,EAAE,SAAS,CAKrB;IAGK,QAAQ,iCAGZ;IAGI,gBAAgB,UAAS;IACzB,cAAc,UAAS;IACvB,iBAAiB,UAAS;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAa;IAE1D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,QAAQ,CAAkB;;IAIlC,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAKN,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAmB/B,SAAS;IAWvB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;IAWf,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAOvC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKlC,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAI3D,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAOnD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,aAAa,IAAI,IAAI;IAOrB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAQhC,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAKnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BjC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAOrC,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI1C,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI1C,WAAW,IAAI,IAAI;IAInB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;yCA/N9C,uBAAuB;2CAAvB,uBAAuB;CAwOnC"}