@memberjunction/ng-explorer-settings 6.1.4 → 6.2.0-edge.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.
Files changed (77) hide show
  1. package/dist/lib/account-info/account-info.component.d.ts +1 -1
  2. package/dist/lib/account-info/account-info.component.js +2 -2
  3. package/dist/lib/account-info/account-info.component.js.map +1 -1
  4. package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts +93 -10
  5. package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -1
  6. package/dist/lib/application-management/application-dialog/application-dialog.component.js +232 -80
  7. package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
  8. package/dist/lib/application-management/application-management.component.d.ts +94 -11
  9. package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
  10. package/dist/lib/application-management/application-management.component.js +231 -67
  11. package/dist/lib/application-management/application-management.component.js.map +1 -1
  12. package/dist/lib/application-settings/application-settings.component.d.ts +4 -4
  13. package/dist/lib/application-settings/application-settings.component.js +10 -10
  14. package/dist/lib/application-settings/application-settings.component.js.map +1 -1
  15. package/dist/lib/entity-permissions/entity-permissions.component.d.ts +88 -10
  16. package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
  17. package/dist/lib/entity-permissions/entity-permissions.component.js +219 -63
  18. package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
  19. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +44 -6
  20. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -1
  21. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +117 -43
  22. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
  23. package/dist/lib/notification-preferences/notification-preferences.component.d.ts +25 -3
  24. package/dist/lib/notification-preferences/notification-preferences.component.d.ts.map +1 -1
  25. package/dist/lib/notification-preferences/notification-preferences.component.js +62 -18
  26. package/dist/lib/notification-preferences/notification-preferences.component.js.map +1 -1
  27. package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +32 -4
  28. package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -1
  29. package/dist/lib/role-management/role-dialog/role-dialog.component.js +84 -30
  30. package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
  31. package/dist/lib/role-management/role-management-agent-context.d.ts +12 -4
  32. package/dist/lib/role-management/role-management-agent-context.d.ts.map +1 -1
  33. package/dist/lib/role-management/role-management-agent-context.js +26 -10
  34. package/dist/lib/role-management/role-management-agent-context.js.map +1 -1
  35. package/dist/lib/role-management/role-management.component.d.ts +95 -11
  36. package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
  37. package/dist/lib/role-management/role-management.component.js +259 -91
  38. package/dist/lib/role-management/role-management.component.js.map +1 -1
  39. package/dist/lib/settings/settings.component.d.ts +87 -11
  40. package/dist/lib/settings/settings.component.d.ts.map +1 -1
  41. package/dist/lib/settings/settings.component.js +211 -65
  42. package/dist/lib/settings/settings.component.js.map +1 -1
  43. package/dist/lib/shared/settings-card.component.d.ts +24 -4
  44. package/dist/lib/shared/settings-card.component.d.ts.map +1 -1
  45. package/dist/lib/shared/settings-card.component.js +46 -6
  46. package/dist/lib/shared/settings-card.component.js.map +1 -1
  47. package/dist/lib/sql-logging/sql-logging.component.d.ts +172 -18
  48. package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
  49. package/dist/lib/sql-logging/sql-logging.component.js +320 -108
  50. package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
  51. package/dist/lib/user-app-config/user-app-config-content.component.js +3 -3
  52. package/dist/lib/user-app-config/user-app-config-content.component.js.map +1 -1
  53. package/dist/lib/user-app-config/user-app-config-reorder.d.ts +4 -0
  54. package/dist/lib/user-app-config/user-app-config-reorder.d.ts.map +1 -1
  55. package/dist/lib/user-app-config/user-app-config-reorder.js +11 -3
  56. package/dist/lib/user-app-config/user-app-config-reorder.js.map +1 -1
  57. package/dist/lib/user-management/transaction-group-refusals.d.ts +45 -0
  58. package/dist/lib/user-management/transaction-group-refusals.d.ts.map +1 -0
  59. package/dist/lib/user-management/transaction-group-refusals.js +49 -0
  60. package/dist/lib/user-management/transaction-group-refusals.js.map +1 -0
  61. package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +44 -6
  62. package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -1
  63. package/dist/lib/user-management/user-dialog/user-dialog.component.js +134 -45
  64. package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
  65. package/dist/lib/user-management/user-management-agent-context.d.ts +10 -0
  66. package/dist/lib/user-management/user-management-agent-context.d.ts.map +1 -1
  67. package/dist/lib/user-management/user-management-agent-context.js +26 -6
  68. package/dist/lib/user-management/user-management-agent-context.js.map +1 -1
  69. package/dist/lib/user-management/user-management.component.d.ts +174 -16
  70. package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
  71. package/dist/lib/user-management/user-management.component.js +501 -177
  72. package/dist/lib/user-management/user-management.component.js.map +1 -1
  73. package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts +97 -15
  74. package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts.map +1 -1
  75. package/dist/lib/user-profile-settings/user-profile-settings.component.js +280 -116
  76. package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
  77. package/package.json +20 -20
@@ -20,8 +20,12 @@ export type UserStatusFilter = (typeof VALID_USER_STATUS_FILTERS)[number];
20
20
  */
21
21
  export declare const USER_AGENT_CONTEXT_NAME_LIST_CAP = 25;
22
22
  /** Type-guard for a user-status filter string. Keeps the SwitchUserStatusFilter tool tolerant. */
23
+ export declare function IsValidUserStatusFilter(value: unknown): value is UserStatusFilter;
24
+ /** @deprecated Use {@link IsValidUserStatusFilter}. */
23
25
  export declare function isValidUserStatusFilter(value: unknown): value is UserStatusFilter;
24
26
  /** Cap a list of names to {@link USER_AGENT_CONTEXT_NAME_LIST_CAP}. Pure + deterministic. */
27
+ export declare function CapUserNames(names: readonly string[]): string[];
28
+ /** @deprecated Use {@link CapUserNames}. */
25
29
  export declare function capUserNames(names: readonly string[]): string[];
26
30
  /**
27
31
  * A minimal, NON-SENSITIVE descriptor of a user, supplied by the component so the pure
@@ -57,12 +61,16 @@ export type NamedLookupResult<T> = {
57
61
  * Pure + deterministic over the supplied candidate list. On a miss, returns a clear error
58
62
  * listing a sample of available names so the agent can correct itself.
59
63
  */
64
+ export declare function ResolveUserByIDOrName(input: string, candidates: readonly UserNameCandidate[]): NamedLookupResult<UserNameCandidate>;
65
+ /** @deprecated Use {@link ResolveUserByIDOrName}. */
60
66
  export declare function resolveUserByIDOrName(input: string, candidates: readonly UserNameCandidate[]): NamedLookupResult<UserNameCandidate>;
61
67
  /**
62
68
  * Resolve an agent-supplied role reference (id or display name) against the loaded roles,
63
69
  * tolerantly: exact ID → exact name → first contains. Backs FilterUsersByRole so the agent
64
70
  * can say either the role name or the role id.
65
71
  */
72
+ export declare function ResolveRoleByIDOrName(input: string, candidates: readonly RoleNameCandidate[]): NamedLookupResult<RoleNameCandidate>;
73
+ /** @deprecated Use {@link ResolveRoleByIDOrName}. */
66
74
  export declare function resolveRoleByIDOrName(input: string, candidates: readonly RoleNameCandidate[]): NamedLookupResult<RoleNameCandidate>;
67
75
  /**
68
76
  * The plain, component-supplied snapshot used to build the user-management agent context.
@@ -103,5 +111,7 @@ export interface UserManagementAgentContextInput {
103
111
  * stays unit-testable and decoupled from change-detection timing. Bounds every name list and
104
112
  * emits a companion total-count when truncated.
105
113
  */
114
+ export declare function BuildUserManagementAgentContext(input: UserManagementAgentContextInput): Record<string, unknown>;
115
+ /** @deprecated Use {@link BuildUserManagementAgentContext}. */
106
116
  export declare function buildUserManagementAgentContext(input: UserManagementAgentContextInput): Record<string, unknown>;
107
117
  //# sourceMappingURL=user-management-agent-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-management-agent-context.d.ts","sourceRoot":"","sources":["../../../src/lib/user-management/user-management-agent-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,wCAAyC,CAAC;AAChF,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAEjF;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/D;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,yDAAyD;AACzD,MAAM,MAAM,iBAAiB,CAAC,CAAC,IACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,iBAAiB,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAmBnI;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,iBAAiB,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAmBnI;AAkBD;;;GAGG;AACH,MAAM,WAAW,+BAA+B;IAC5C,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,qEAAqE;IACrE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+DAA+D;IAC/D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,4DAA4D;IAC5D,cAAc,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,+BAA+B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoB/G"}
1
+ {"version":3,"file":"user-management-agent-context.d.ts","sourceRoot":"","sources":["../../../src/lib/user-management/user-management-agent-context.ts"],"names":[],"mappings":"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"}
@@ -19,13 +19,21 @@ export const VALID_USER_STATUS_FILTERS = ['all', 'active', 'inactive'];
19
19
  */
20
20
  export const USER_AGENT_CONTEXT_NAME_LIST_CAP = 25;
21
21
  /** Type-guard for a user-status filter string. Keeps the SwitchUserStatusFilter tool tolerant. */
22
- export function isValidUserStatusFilter(value) {
22
+ export function IsValidUserStatusFilter(value) {
23
23
  return typeof value === 'string' && VALID_USER_STATUS_FILTERS.includes(value);
24
24
  }
25
+ /** @deprecated Use {@link IsValidUserStatusFilter}. */
26
+ export function isValidUserStatusFilter(value) {
27
+ return IsValidUserStatusFilter(value);
28
+ }
25
29
  /** Cap a list of names to {@link USER_AGENT_CONTEXT_NAME_LIST_CAP}. Pure + deterministic. */
26
- export function capUserNames(names) {
30
+ export function CapUserNames(names) {
27
31
  return names.slice(0, USER_AGENT_CONTEXT_NAME_LIST_CAP);
28
32
  }
33
+ /** @deprecated Use {@link CapUserNames}. */
34
+ export function capUserNames(names) {
35
+ return CapUserNames(names);
36
+ }
29
37
  /**
30
38
  * Resolve an agent-supplied user reference against the loaded users, tolerantly:
31
39
  * 1. exact ID match (case-insensitive)
@@ -35,7 +43,7 @@ export function capUserNames(names) {
35
43
  * Pure + deterministic over the supplied candidate list. On a miss, returns a clear error
36
44
  * listing a sample of available names so the agent can correct itself.
37
45
  */
38
- export function resolveUserByIDOrName(input, candidates) {
46
+ export function ResolveUserByIDOrName(input, candidates) {
39
47
  const needle = input.trim().toLowerCase();
40
48
  if (!needle) {
41
49
  return { ok: false, error: 'Provide a user ID or name to select.' };
@@ -55,12 +63,16 @@ export function resolveUserByIDOrName(input, candidates) {
55
63
  const sample = candidates.slice(0, 5).map(c => c.Name).join(', ');
56
64
  return { ok: false, error: `No user matches "${input}". Available users include: ${sample || '(none loaded)'}.` };
57
65
  }
66
+ /** @deprecated Use {@link ResolveUserByIDOrName}. */
67
+ export function resolveUserByIDOrName(input, candidates) {
68
+ return ResolveUserByIDOrName(input, candidates);
69
+ }
58
70
  /**
59
71
  * Resolve an agent-supplied role reference (id or display name) against the loaded roles,
60
72
  * tolerantly: exact ID → exact name → first contains. Backs FilterUsersByRole so the agent
61
73
  * can say either the role name or the role id.
62
74
  */
63
- export function resolveRoleByIDOrName(input, candidates) {
75
+ export function ResolveRoleByIDOrName(input, candidates) {
64
76
  const needle = input.trim().toLowerCase();
65
77
  if (!needle) {
66
78
  return { ok: false, error: 'Provide a role ID or name.' };
@@ -80,6 +92,10 @@ export function resolveRoleByIDOrName(input, candidates) {
80
92
  const sample = candidates.slice(0, 8).map(c => c.Name).join(', ');
81
93
  return { ok: false, error: `No role matches "${input}". Available roles: ${sample || '(none loaded)'}.` };
82
94
  }
95
+ /** @deprecated Use {@link ResolveRoleByIDOrName}. */
96
+ export function resolveRoleByIDOrName(input, candidates) {
97
+ return ResolveRoleByIDOrName(input, candidates);
98
+ }
83
99
  /** The lowercased forms a user can be matched against (display name, email, "First Last"). */
84
100
  function fullNameForms(c) {
85
101
  const forms = [];
@@ -100,7 +116,7 @@ function fullNameForms(c) {
100
116
  * stays unit-testable and decoupled from change-detection timing. Bounds every name list and
101
117
  * emits a companion total-count when truncated.
102
118
  */
103
- export function buildUserManagementAgentContext(input) {
119
+ export function BuildUserManagementAgentContext(input) {
104
120
  const context = {
105
121
  TotalUserCount: input.TotalUserCount,
106
122
  FilteredUserCount: input.FilteredUserCount,
@@ -119,12 +135,16 @@ export function buildUserManagementAgentContext(input) {
119
135
  appendBoundedList(context, 'VisibleColumns', 'VisibleColumnCount', input.VisibleColumns);
120
136
  return context;
121
137
  }
138
+ /** @deprecated Use {@link BuildUserManagementAgentContext}. */
139
+ export function buildUserManagementAgentContext(input) {
140
+ return BuildUserManagementAgentContext(input);
141
+ }
122
142
  /** Add a capped name list under `listKey`, plus a `countKey` total when the source was truncated. */
123
143
  function appendBoundedList(target, listKey, countKey, source) {
124
144
  if (source.length === 0) {
125
145
  return;
126
146
  }
127
- target[listKey] = capUserNames(source);
147
+ target[listKey] = CapUserNames(source);
128
148
  if (source.length > USER_AGENT_CONTEXT_NAME_LIST_CAP) {
129
149
  target[countKey] = source.length;
130
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user-management-agent-context.js","sourceRoot":"","sources":["../../../src/lib/user-management/user-management-agent-context.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Pure helpers for the User Management admin surface's AI-agent integration.\n *\n * 🔒 READ-ONLY / GOVERNANCE SURFACE. These helpers shape a non-sensitive snapshot of the\n * user-management screen into the key-value `AgentContext` object and back agent-supplied\n * user references with tolerant id→name→contains resolution. They are intentionally free of\n * Angular / component dependencies so they can be unit-tested in isolation (mirrors the\n * Data Explorer's {@link ../../../../dashboards/src/DataExplorer/data-explorer-agent-context}\n * pattern), and they NEVER surface passwords, tokens, or other secrets — only counts,\n * filter state, and display names/emails the user already sees on screen.\n */\n\n/** The three user-status filter values the surface supports. */\nexport const VALID_USER_STATUS_FILTERS = ['all', 'active', 'inactive'] as const;\nexport type UserStatusFilter = (typeof VALID_USER_STATUS_FILTERS)[number];\n\n/**\n * Upper bound on how many user/role display values we publish in a name-list context field\n * (VisibleUserNames, VisibleUserEmails, AvailableRoleNames, VisibleColumns). Keeps the\n * streamed note bounded even when hundreds of rows are loaded; a companion total-count field\n * reports the true number when the list is truncated.\n */\nexport const USER_AGENT_CONTEXT_NAME_LIST_CAP = 25;\n\n/** Type-guard for a user-status filter string. Keeps the SwitchUserStatusFilter tool tolerant. */\nexport function isValidUserStatusFilter(value: unknown): value is UserStatusFilter {\n return typeof value === 'string' && (VALID_USER_STATUS_FILTERS as readonly string[]).includes(value);\n}\n\n/** Cap a list of names to {@link USER_AGENT_CONTEXT_NAME_LIST_CAP}. Pure + deterministic. */\nexport function capUserNames(names: readonly string[]): string[] {\n return names.slice(0, USER_AGENT_CONTEXT_NAME_LIST_CAP);\n}\n\n/**\n * A minimal, NON-SENSITIVE descriptor of a user, supplied by the component so the pure\n * resolver can match agent input against what the user sees. Mirrors the salient slice of\n * `MJUserEntity` — never includes credentials.\n */\nexport interface UserNameCandidate {\n ID: string;\n Name: string;\n Email?: string | null;\n FirstName?: string | null;\n LastName?: string | null;\n}\n\n/** A minimal, NON-SENSITIVE descriptor of a role (id + display name). */\nexport interface RoleNameCandidate {\n ID: string;\n Name: string;\n}\n\n/** Outcome of a tolerant id→name→contains resolution. */\nexport type NamedLookupResult<T> =\n | { ok: true; match: T }\n | { ok: false; error: string };\n\n/**\n * Resolve an agent-supplied user reference against the loaded users, tolerantly:\n * 1. exact ID match (case-insensitive)\n * 2. exact display-name / email match (case-insensitive)\n * 3. first case-insensitive *contains* match on name, email, or \"First Last\"\n *\n * Pure + deterministic over the supplied candidate list. On a miss, returns a clear error\n * listing a sample of available names so the agent can correct itself.\n */\nexport function resolveUserByIDOrName(input: string, candidates: readonly UserNameCandidate[]): NamedLookupResult<UserNameCandidate> {\n const needle = input.trim().toLowerCase();\n if (!needle) {\n return { ok: false, error: 'Provide a user ID or name to select.' };\n }\n const byId = candidates.find(c => c.ID.toLowerCase() === needle);\n if (byId) {\n return { ok: true, match: byId };\n }\n const exact = candidates.find(c => fullNameForms(c).some(form => form === needle));\n if (exact) {\n return { ok: true, match: exact };\n }\n const contains = candidates.find(c => fullNameForms(c).some(form => form.includes(needle)));\n if (contains) {\n return { ok: true, match: contains };\n }\n const sample = candidates.slice(0, 5).map(c => c.Name).join(', ');\n return { ok: false, error: `No user matches \"${input}\". Available users include: ${sample || '(none loaded)'}.` };\n}\n\n/**\n * Resolve an agent-supplied role reference (id or display name) against the loaded roles,\n * tolerantly: exact ID → exact name → first contains. Backs FilterUsersByRole so the agent\n * can say either the role name or the role id.\n */\nexport function resolveRoleByIDOrName(input: string, candidates: readonly RoleNameCandidate[]): NamedLookupResult<RoleNameCandidate> {\n const needle = input.trim().toLowerCase();\n if (!needle) {\n return { ok: false, error: 'Provide a role ID or name.' };\n }\n const byId = candidates.find(c => c.ID.toLowerCase() === needle);\n if (byId) {\n return { ok: true, match: byId };\n }\n const exact = candidates.find(c => c.Name.toLowerCase() === needle);\n if (exact) {\n return { ok: true, match: exact };\n }\n const contains = candidates.find(c => c.Name.toLowerCase().includes(needle));\n if (contains) {\n return { ok: true, match: contains };\n }\n const sample = candidates.slice(0, 8).map(c => c.Name).join(', ');\n return { ok: false, error: `No role matches \"${input}\". Available roles: ${sample || '(none loaded)'}.` };\n}\n\n/** The lowercased forms a user can be matched against (display name, email, \"First Last\"). */\nfunction fullNameForms(c: UserNameCandidate): string[] {\n const forms: string[] = [];\n if (c.Name) {\n forms.push(c.Name.toLowerCase());\n }\n if (c.Email) {\n forms.push(c.Email.toLowerCase());\n }\n const combined = `${c.FirstName ?? ''} ${c.LastName ?? ''}`.trim().toLowerCase();\n if (combined) {\n forms.push(combined);\n }\n return forms;\n}\n\n/**\n * The plain, component-supplied snapshot used to build the user-management agent context.\n * NON-SENSITIVE by construction — counts, filter state, and on-screen display values only.\n */\nexport interface UserManagementAgentContextInput {\n /** Total users loaded (unfiltered). */\n TotalUserCount: number;\n /** Users currently visible after status/role/search filters. */\n FilteredUserCount: number;\n /** Count of active users (across the unfiltered set). */\n ActiveUserCount: number;\n /** Count of inactive users (across the unfiltered set). */\n InactiveUserCount: number;\n /** Active status filter. */\n StatusFilter: UserStatusFilter;\n /** Active role-filter id, or null when no role filter is applied. */\n RoleFilterId: string | null;\n /** Resolved display name for {@link RoleFilterId}, or null. */\n RoleFilterName: string | null;\n /** Current free-text search string. */\n SearchText: string;\n /** Display name of the currently selected user, or null. */\n SelectedUserId: string | null;\n /** Display name of the currently selected user, or null. NEVER a credential. */\n SelectedUserName: string | null;\n /** Display names of the currently visible (filtered) users, in list order. */\n VisibleUserNames: string[];\n /** Emails of the currently visible (filtered) users, in list order. */\n VisibleUserEmails: string[];\n /** Names of the roles available as filter options. */\n AvailableRoleNames: string[];\n /** Column/field labels currently shown in the user grid. */\n VisibleColumns: string[];\n}\n\n/**\n * Build the agent-visible context object for User Management. Pure (no `this`) so the shape\n * stays unit-testable and decoupled from change-detection timing. Bounds every name list and\n * emits a companion total-count when truncated.\n */\nexport function buildUserManagementAgentContext(input: UserManagementAgentContextInput): Record<string, unknown> {\n const context: Record<string, unknown> = {\n TotalUserCount: input.TotalUserCount,\n FilteredUserCount: input.FilteredUserCount,\n ActiveUserCount: input.ActiveUserCount,\n InactiveUserCount: input.InactiveUserCount,\n StatusFilter: input.StatusFilter,\n RoleFilterId: input.RoleFilterId,\n RoleFilterName: input.RoleFilterName,\n SearchText: input.SearchText,\n SelectedUserId: input.SelectedUserId,\n SelectedUserName: input.SelectedUserName,\n };\n\n appendBoundedList(context, 'VisibleUserNames', 'VisibleUserNameCount', input.VisibleUserNames);\n appendBoundedList(context, 'VisibleUserEmails', 'VisibleUserEmailCount', input.VisibleUserEmails);\n appendBoundedList(context, 'AvailableRoleNames', 'AvailableRoleCount', input.AvailableRoleNames);\n appendBoundedList(context, 'VisibleColumns', 'VisibleColumnCount', input.VisibleColumns);\n\n return context;\n}\n\n/** Add a capped name list under `listKey`, plus a `countKey` total when the source was truncated. */\nfunction appendBoundedList(target: Record<string, unknown>, listKey: string, countKey: string, source: readonly string[]): void {\n if (source.length === 0) {\n return;\n }\n target[listKey] = capUserNames(source);\n if (source.length > USER_AGENT_CONTEXT_NAME_LIST_CAP) {\n target[countKey] = source.length;\n }\n}\n"]}
1
+ {"version":3,"file":"user-management-agent-context.js","sourceRoot":"","sources":["../../../src/lib/user-management/user-management-agent-context.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Pure helpers for the User Management admin surface's AI-agent integration.\n *\n * 🔒 READ-ONLY / GOVERNANCE SURFACE. These helpers shape a non-sensitive snapshot of the\n * user-management screen into the key-value `AgentContext` object and back agent-supplied\n * user references with tolerant id→name→contains resolution. They are intentionally free of\n * Angular / component dependencies so they can be unit-tested in isolation (mirrors the\n * Data Explorer's {@link ../../../../dashboards/src/DataExplorer/data-explorer-agent-context}\n * pattern), and they NEVER surface passwords, tokens, or other secrets — only counts,\n * filter state, and display names/emails the user already sees on screen.\n */\n\n/** The three user-status filter values the surface supports. */\nexport const VALID_USER_STATUS_FILTERS = ['all', 'active', 'inactive'] as const;\nexport type UserStatusFilter = (typeof VALID_USER_STATUS_FILTERS)[number];\n\n/**\n * Upper bound on how many user/role display values we publish in a name-list context field\n * (VisibleUserNames, VisibleUserEmails, AvailableRoleNames, VisibleColumns). Keeps the\n * streamed note bounded even when hundreds of rows are loaded; a companion total-count field\n * reports the true number when the list is truncated.\n */\nexport const USER_AGENT_CONTEXT_NAME_LIST_CAP = 25;\n\n/** Type-guard for a user-status filter string. Keeps the SwitchUserStatusFilter tool tolerant. */\nexport function IsValidUserStatusFilter(value: unknown): value is UserStatusFilter {\n return typeof value === 'string' && (VALID_USER_STATUS_FILTERS as readonly string[]).includes(value);\n}\n\n/** @deprecated Use {@link IsValidUserStatusFilter}. */\nexport function isValidUserStatusFilter(value: unknown): value is UserStatusFilter {\n return IsValidUserStatusFilter(value);\n}\n\n/** Cap a list of names to {@link USER_AGENT_CONTEXT_NAME_LIST_CAP}. Pure + deterministic. */\nexport function CapUserNames(names: readonly string[]): string[] {\n return names.slice(0, USER_AGENT_CONTEXT_NAME_LIST_CAP);\n}\n\n/** @deprecated Use {@link CapUserNames}. */\nexport function capUserNames(names: readonly string[]): string[] {\n return CapUserNames(names);\n}\n\n/**\n * A minimal, NON-SENSITIVE descriptor of a user, supplied by the component so the pure\n * resolver can match agent input against what the user sees. Mirrors the salient slice of\n * `MJUserEntity` — never includes credentials.\n */\nexport interface UserNameCandidate {\n ID: string;\n Name: string;\n Email?: string | null;\n FirstName?: string | null;\n LastName?: string | null;\n}\n\n/** A minimal, NON-SENSITIVE descriptor of a role (id + display name). */\nexport interface RoleNameCandidate {\n ID: string;\n Name: string;\n}\n\n/** Outcome of a tolerant id→name→contains resolution. */\nexport type NamedLookupResult<T> =\n | { ok: true; match: T } // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it\n | { ok: false; error: string }; // case-violation-ok-legacy-back-compat: the PascalCase name is already declared on this type\n\n/**\n * Resolve an agent-supplied user reference against the loaded users, tolerantly:\n * 1. exact ID match (case-insensitive)\n * 2. exact display-name / email match (case-insensitive)\n * 3. first case-insensitive *contains* match on name, email, or \"First Last\"\n *\n * Pure + deterministic over the supplied candidate list. On a miss, returns a clear error\n * listing a sample of available names so the agent can correct itself.\n */\nexport function ResolveUserByIDOrName(input: string, candidates: readonly UserNameCandidate[]): NamedLookupResult<UserNameCandidate> {\n const needle = input.trim().toLowerCase();\n if (!needle) {\n return { ok: false, error: 'Provide a user ID or name to select.' };\n }\n const byId = candidates.find(c => c.ID.toLowerCase() === needle);\n if (byId) {\n return { ok: true, match: byId };\n }\n const exact = candidates.find(c => fullNameForms(c).some(form => form === needle));\n if (exact) {\n return { ok: true, match: exact };\n }\n const contains = candidates.find(c => fullNameForms(c).some(form => form.includes(needle)));\n if (contains) {\n return { ok: true, match: contains };\n }\n const sample = candidates.slice(0, 5).map(c => c.Name).join(', ');\n return { ok: false, error: `No user matches \"${input}\". Available users include: ${sample || '(none loaded)'}.` };\n}\n\n/** @deprecated Use {@link ResolveUserByIDOrName}. */\nexport function resolveUserByIDOrName(input: string, candidates: readonly UserNameCandidate[]): NamedLookupResult<UserNameCandidate> {\n return ResolveUserByIDOrName(input, candidates);\n}\n\n/**\n * Resolve an agent-supplied role reference (id or display name) against the loaded roles,\n * tolerantly: exact ID → exact name → first contains. Backs FilterUsersByRole so the agent\n * can say either the role name or the role id.\n */\nexport function ResolveRoleByIDOrName(input: string, candidates: readonly RoleNameCandidate[]): NamedLookupResult<RoleNameCandidate> {\n const needle = input.trim().toLowerCase();\n if (!needle) {\n return { ok: false, error: 'Provide a role ID or name.' };\n }\n const byId = candidates.find(c => c.ID.toLowerCase() === needle);\n if (byId) {\n return { ok: true, match: byId };\n }\n const exact = candidates.find(c => c.Name.toLowerCase() === needle);\n if (exact) {\n return { ok: true, match: exact };\n }\n const contains = candidates.find(c => c.Name.toLowerCase().includes(needle));\n if (contains) {\n return { ok: true, match: contains };\n }\n const sample = candidates.slice(0, 8).map(c => c.Name).join(', ');\n return { ok: false, error: `No role matches \"${input}\". Available roles: ${sample || '(none loaded)'}.` };\n}\n\n/** @deprecated Use {@link ResolveRoleByIDOrName}. */\nexport function resolveRoleByIDOrName(input: string, candidates: readonly RoleNameCandidate[]): NamedLookupResult<RoleNameCandidate> {\n return ResolveRoleByIDOrName(input, candidates);\n}\n\n/** The lowercased forms a user can be matched against (display name, email, \"First Last\"). */\nfunction fullNameForms(c: UserNameCandidate): string[] {\n const forms: string[] = [];\n if (c.Name) {\n forms.push(c.Name.toLowerCase());\n }\n if (c.Email) {\n forms.push(c.Email.toLowerCase());\n }\n const combined = `${c.FirstName ?? ''} ${c.LastName ?? ''}`.trim().toLowerCase();\n if (combined) {\n forms.push(combined);\n }\n return forms;\n}\n\n/**\n * The plain, component-supplied snapshot used to build the user-management agent context.\n * NON-SENSITIVE by construction — counts, filter state, and on-screen display values only.\n */\nexport interface UserManagementAgentContextInput {\n /** Total users loaded (unfiltered). */\n TotalUserCount: number;\n /** Users currently visible after status/role/search filters. */\n FilteredUserCount: number;\n /** Count of active users (across the unfiltered set). */\n ActiveUserCount: number;\n /** Count of inactive users (across the unfiltered set). */\n InactiveUserCount: number;\n /** Active status filter. */\n StatusFilter: UserStatusFilter;\n /** Active role-filter id, or null when no role filter is applied. */\n RoleFilterId: string | null;\n /** Resolved display name for {@link RoleFilterId}, or null. */\n RoleFilterName: string | null;\n /** Current free-text search string. */\n SearchText: string;\n /** Display name of the currently selected user, or null. */\n SelectedUserId: string | null;\n /** Display name of the currently selected user, or null. NEVER a credential. */\n SelectedUserName: string | null;\n /** Display names of the currently visible (filtered) users, in list order. */\n VisibleUserNames: string[];\n /** Emails of the currently visible (filtered) users, in list order. */\n VisibleUserEmails: string[];\n /** Names of the roles available as filter options. */\n AvailableRoleNames: string[];\n /** Column/field labels currently shown in the user grid. */\n VisibleColumns: string[];\n}\n\n/**\n * Build the agent-visible context object for User Management. Pure (no `this`) so the shape\n * stays unit-testable and decoupled from change-detection timing. Bounds every name list and\n * emits a companion total-count when truncated.\n */\nexport function BuildUserManagementAgentContext(input: UserManagementAgentContextInput): Record<string, unknown> {\n const context: Record<string, unknown> = {\n TotalUserCount: input.TotalUserCount,\n FilteredUserCount: input.FilteredUserCount,\n ActiveUserCount: input.ActiveUserCount,\n InactiveUserCount: input.InactiveUserCount,\n StatusFilter: input.StatusFilter,\n RoleFilterId: input.RoleFilterId,\n RoleFilterName: input.RoleFilterName,\n SearchText: input.SearchText,\n SelectedUserId: input.SelectedUserId,\n SelectedUserName: input.SelectedUserName,\n };\n\n appendBoundedList(context, 'VisibleUserNames', 'VisibleUserNameCount', input.VisibleUserNames);\n appendBoundedList(context, 'VisibleUserEmails', 'VisibleUserEmailCount', input.VisibleUserEmails);\n appendBoundedList(context, 'AvailableRoleNames', 'AvailableRoleCount', input.AvailableRoleNames);\n appendBoundedList(context, 'VisibleColumns', 'VisibleColumnCount', input.VisibleColumns);\n\n return context;\n}\n\n/** @deprecated Use {@link BuildUserManagementAgentContext}. */\nexport function buildUserManagementAgentContext(input: UserManagementAgentContextInput): Record<string, unknown> {\n return BuildUserManagementAgentContext(input);\n}\n\n/** Add a capped name list under `listKey`, plus a `countKey` total when the source was truncated. */\nfunction appendBoundedList(target: Record<string, unknown>, listKey: string, countKey: string, source: readonly string[]): void {\n if (source.length === 0) {\n return;\n }\n target[listKey] = CapUserNames(source);\n if (source.length > USER_AGENT_CONTEXT_NAME_LIST_CAP) {\n target[countKey] = source.length;\n }\n}\n"]}
@@ -19,31 +19,103 @@ interface FilterOptions {
19
19
  export declare class UserManagementComponent extends BaseDashboard implements OnDestroy {
20
20
  private cdr;
21
21
  private ngZone;
22
- users: MJUserEntity[];
23
- filteredUsers: MJUserEntity[];
24
- roles: MJRoleEntity[];
25
- selectedUser: MJUserEntity | null;
22
+ Users: MJUserEntity[];
23
+ /** @deprecated Use {@link Users}. */
24
+ get users(): MJUserEntity[];
25
+ /** @deprecated Use {@link Users}. */
26
+ set users(value: MJUserEntity[]);
27
+ FilteredUsers: MJUserEntity[];
28
+ /** @deprecated Use {@link FilteredUsers}. */
29
+ get filteredUsers(): MJUserEntity[];
30
+ /** @deprecated Use {@link FilteredUsers}. */
31
+ set filteredUsers(value: MJUserEntity[]);
32
+ Roles: MJRoleEntity[];
33
+ /** @deprecated Use {@link Roles}. */
34
+ get roles(): MJRoleEntity[];
35
+ /** @deprecated Use {@link Roles}. */
36
+ set roles(value: MJRoleEntity[]);
37
+ SelectedUser: MJUserEntity | null;
38
+ /** @deprecated Use {@link SelectedUser}. */
39
+ get selectedUser(): MJUserEntity | null;
40
+ /** @deprecated Use {@link SelectedUser}. */
41
+ set selectedUser(value: MJUserEntity | null);
26
42
  isLoading: boolean;
27
43
  error: string | null;
28
- selectedUserIds: Set<string>;
29
- showUserDialog: boolean;
30
- userDialogData: UserDialogData | null;
31
- showBulkActionConfirm: boolean;
32
- bulkActionType: 'enable' | 'disable' | 'delete' | null;
33
- showBulkRoleAssign: boolean;
34
- bulkRoleId: string;
35
- stats: UserStats;
36
- filters$: BehaviorSubject<FilterOptions>;
44
+ SelectedUserIds: Set<string>;
45
+ /** @deprecated Use {@link SelectedUserIds}. */
46
+ get selectedUserIds(): Set<string>;
47
+ /** @deprecated Use {@link SelectedUserIds}. */
48
+ set selectedUserIds(value: Set<string>);
49
+ ShowUserDialog: boolean;
50
+ /** @deprecated Use {@link ShowUserDialog}. */
51
+ get showUserDialog(): boolean;
52
+ /** @deprecated Use {@link ShowUserDialog}. */
53
+ set showUserDialog(value: boolean);
54
+ UserDialogData: UserDialogData | null;
55
+ /** @deprecated Use {@link UserDialogData}. */
56
+ get userDialogData(): UserDialogData | null;
57
+ /** @deprecated Use {@link UserDialogData}. */
58
+ set userDialogData(value: UserDialogData | null);
59
+ ShowBulkActionConfirm: boolean;
60
+ /** @deprecated Use {@link ShowBulkActionConfirm}. */
61
+ get showBulkActionConfirm(): boolean;
62
+ /** @deprecated Use {@link ShowBulkActionConfirm}. */
63
+ set showBulkActionConfirm(value: boolean);
64
+ BulkActionType: 'enable' | 'disable' | 'delete' | null;
65
+ /** @deprecated Use {@link BulkActionType}. */
66
+ get bulkActionType(): 'enable' | 'disable' | 'delete' | null;
67
+ /** @deprecated Use {@link BulkActionType}. */
68
+ set bulkActionType(value: 'enable' | 'disable' | 'delete' | null);
69
+ ShowBulkRoleAssign: boolean;
70
+ /** @deprecated Use {@link ShowBulkRoleAssign}. */
71
+ get showBulkRoleAssign(): boolean;
72
+ /** @deprecated Use {@link ShowBulkRoleAssign}. */
73
+ set showBulkRoleAssign(value: boolean);
74
+ BulkRoleId: string;
75
+ /** @deprecated Use {@link BulkRoleId}. */
76
+ get bulkRoleId(): string;
77
+ /** @deprecated Use {@link BulkRoleId}. */
78
+ set bulkRoleId(value: string);
79
+ Stats: UserStats;
80
+ /** @deprecated Use {@link Stats}. */
81
+ get stats(): UserStats;
82
+ /** @deprecated Use {@link Stats}. */
83
+ set stats(value: UserStats);
84
+ Filters$: BehaviorSubject<FilterOptions>;
85
+ /** @deprecated Use {@link Filters$}. */
86
+ get filters$(): BehaviorSubject<FilterOptions>;
87
+ /** @deprecated Use {@link Filters$}. */
88
+ set filters$(value: BehaviorSubject<FilterOptions>);
37
89
  showCreateDialog: boolean;
38
- showEditDialog: boolean;
39
- showDeleteConfirm: boolean;
90
+ ShowEditDialog: boolean;
91
+ /** @deprecated Use {@link ShowEditDialog}. */
92
+ get showEditDialog(): boolean;
93
+ /** @deprecated Use {@link ShowEditDialog}. */
94
+ set showEditDialog(value: boolean);
95
+ ShowDeleteConfirm: boolean;
96
+ /** @deprecated Use {@link ShowDeleteConfirm}. */
97
+ get showDeleteConfirm(): boolean;
98
+ /** @deprecated Use {@link ShowDeleteConfirm}. */
99
+ set showDeleteConfirm(value: boolean);
40
100
  private expandedUserIds;
41
101
  private userRoleMap;
42
- gridConfig: {
102
+ GridConfig: {
43
103
  pageSize: number;
44
104
  sortField: string;
45
105
  sortDirection: string;
46
106
  };
107
+ /** @deprecated Use {@link GridConfig}. */
108
+ get gridConfig(): {
109
+ pageSize: number;
110
+ sortField: string;
111
+ sortDirection: string;
112
+ };
113
+ /** @deprecated Use {@link GridConfig}. */
114
+ set gridConfig(value: {
115
+ pageSize: number;
116
+ sortField: string;
117
+ sortDirection: string;
118
+ });
47
119
  protected destroy$: Subject<void>;
48
120
  private get metadata();
49
121
  constructor(cdr: ChangeDetectorRef, ngZone: NgZone);
@@ -79,6 +151,8 @@ export declare class UserManagementComponent extends BaseDashboard implements On
79
151
  private handleRefreshTool;
80
152
  private handleExportTool;
81
153
  ngOnDestroy(): void;
154
+ LoadInitialData(): Promise<void>;
155
+ /** @deprecated Use {@link LoadInitialData}. */
82
156
  loadInitialData(): Promise<void>;
83
157
  private loadUsers;
84
158
  private loadRoles;
@@ -87,41 +161,91 @@ export declare class UserManagementComponent extends BaseDashboard implements On
87
161
  private setupFilterSubscription;
88
162
  private applyFilters;
89
163
  private calculateStats;
164
+ OnStatusFilterChange(status: 'all' | 'active' | 'inactive'): void;
165
+ /** @deprecated Use {@link OnStatusFilterChange}. */
90
166
  onStatusFilterChange(status: 'all' | 'active' | 'inactive'): void;
167
+ UpdateFilter(partial: Partial<FilterOptions>): void;
168
+ /** @deprecated Use {@link UpdateFilter}. */
91
169
  updateFilter(partial: Partial<FilterOptions>): void;
170
+ SelectUser(user: MJUserEntity): void;
171
+ /** @deprecated Use {@link SelectUser}. */
92
172
  selectUser(user: MJUserEntity): void;
93
173
  createNewUser(): void;
174
+ EditUser(user: MJUserEntity): void;
175
+ /** @deprecated Use {@link EditUser}. */
94
176
  editUser(user: MJUserEntity): void;
177
+ ConfirmDeleteUser(user: MJUserEntity): void;
178
+ /** @deprecated Use {@link ConfirmDeleteUser}. */
95
179
  confirmDeleteUser(user: MJUserEntity): void;
180
+ DeleteUser(): Promise<void>;
181
+ /** @deprecated Use {@link DeleteUser}. */
96
182
  deleteUser(): Promise<void>;
183
+ ToggleUserStatus(user: MJUserEntity): Promise<void>;
184
+ /** @deprecated Use {@link ToggleUserStatus}. */
97
185
  toggleUserStatus(user: MJUserEntity): Promise<void>;
186
+ ExportUsers(): void;
187
+ /** @deprecated Use {@link ExportUsers}. */
98
188
  exportUsers(): void;
99
189
  private escapeCSV;
190
+ RefreshData(): void;
191
+ /** @deprecated Use {@link RefreshData}. */
100
192
  refreshData(): void;
193
+ GetStatusIcon(user: MJUserEntity): string;
194
+ /** @deprecated Use {@link GetStatusIcon}. */
101
195
  getStatusIcon(user: MJUserEntity): string;
196
+ GetStatusClass(user: MJUserEntity): string;
197
+ /** @deprecated Use {@link GetStatusClass}. */
102
198
  getStatusClass(user: MJUserEntity): string;
199
+ GetUserTypeIcon(user: MJUserEntity): string;
200
+ /** @deprecated Use {@link GetUserTypeIcon}. */
103
201
  getUserTypeIcon(user: MJUserEntity): string;
202
+ GetUserInitials(user: MJUserEntity): string;
203
+ /** @deprecated Use {@link GetUserInitials}. */
104
204
  getUserInitials(user: MJUserEntity): string;
205
+ OnUserDialogResult(result: UserDialogResult): void;
206
+ /** @deprecated Use {@link OnUserDialogResult}. */
105
207
  onUserDialogResult(result: UserDialogResult): void;
208
+ get IsAllSelected(): boolean;
209
+ /** @deprecated Use {@link IsAllSelected}. */
106
210
  get isAllSelected(): boolean;
211
+ get IsIndeterminate(): boolean;
212
+ /** @deprecated Use {@link IsIndeterminate}. */
107
213
  get isIndeterminate(): boolean;
214
+ get HasSelection(): boolean;
215
+ /** @deprecated Use {@link HasSelection}. */
108
216
  get hasSelection(): boolean;
217
+ get SelectedCount(): number;
218
+ /** @deprecated Use {@link SelectedCount}. */
109
219
  get selectedCount(): number;
220
+ get HasActiveFilters(): boolean;
221
+ /** @deprecated Use {@link HasActiveFilters}. */
110
222
  get hasActiveFilters(): boolean;
223
+ get ActiveFilterCount(): number;
224
+ /** @deprecated Use {@link ActiveFilterCount}. */
111
225
  get activeFilterCount(): number;
226
+ ClearFilters(): void;
227
+ /** @deprecated Use {@link ClearFilters}. */
112
228
  clearFilters(): void;
113
229
  /**
114
230
  * FilterFieldConfig[] describing the popover's Role field. Driven off
115
231
  * `roles[]` so the dropdown stays in sync as roles load.
116
232
  */
233
+ get FilterFields(): FilterFieldConfig[];
234
+ /** @deprecated Use {@link FilterFields}. */
117
235
  get filterFields(): FilterFieldConfig[];
118
236
  /** Current popover field values keyed by FilterFieldConfig.key. */
237
+ get FilterValues(): Record<string, unknown>;
238
+ /** @deprecated Use {@link FilterValues}. */
119
239
  get filterValues(): Record<string, unknown>;
120
240
  /** Total active filters (Status + Role) — drives the Filter button badge. */
121
241
  get TotalActiveFilterCount(): number;
122
242
  /** Apply a value change from <mj-filter-panel>. */
243
+ OnFilterPanelChange(values: Record<string, unknown>): void;
244
+ /** @deprecated Use {@link OnFilterPanelChange}. */
123
245
  onFilterPanelChange(values: Record<string, unknown>): void;
124
246
  /** Clear all filters (Status + Role); search persists. */
247
+ ClearAllAppliedFilters(): void;
248
+ /** @deprecated Use {@link ClearAllAppliedFilters}. */
125
249
  clearAllAppliedFilters(): void;
126
250
  /** True when search and/or panel filters are narrowing the list — gates the
127
251
  * no-results empty-state "Reset filters" CTA. */
@@ -129,24 +253,58 @@ export declare class UserManagementComponent extends BaseDashboard implements On
129
253
  /** Reset everything narrowing the list (search + Status + Role) and refresh
130
254
  * immediately. Wired to the no-results empty-state CTA. Unlike
131
255
  * clearAllAppliedFilters(), this also clears the search box. */
256
+ ResetAllFiltersAndSearch(): void;
257
+ /** @deprecated Use {@link ResetAllFiltersAndSearch}. */
132
258
  resetAllFiltersAndSearch(): void;
259
+ ToggleSelectAll(): void;
260
+ /** @deprecated Use {@link ToggleSelectAll}. */
133
261
  toggleSelectAll(): void;
262
+ ToggleUserSelection(userId: string, event?: Event): void;
263
+ /** @deprecated Use {@link ToggleUserSelection}. */
134
264
  toggleUserSelection(userId: string, event?: Event): void;
265
+ IsUserSelected(userId: string): boolean;
266
+ /** @deprecated Use {@link IsUserSelected}. */
135
267
  isUserSelected(userId: string): boolean;
268
+ ClearSelection(): void;
269
+ /** @deprecated Use {@link ClearSelection}. */
136
270
  clearSelection(): void;
271
+ ConfirmBulkAction(action: 'enable' | 'disable' | 'delete'): void;
272
+ /** @deprecated Use {@link ConfirmBulkAction}. */
137
273
  confirmBulkAction(action: 'enable' | 'disable' | 'delete'): void;
274
+ CancelBulkAction(): void;
275
+ /** @deprecated Use {@link CancelBulkAction}. */
138
276
  cancelBulkAction(): void;
277
+ ExecuteBulkAction(): Promise<void>;
278
+ /** @deprecated Use {@link ExecuteBulkAction}. */
139
279
  executeBulkAction(): Promise<void>;
140
280
  private bulkSetUserStatus;
141
281
  private bulkDeleteUsers;
282
+ OpenBulkRoleAssign(): void;
283
+ /** @deprecated Use {@link OpenBulkRoleAssign}. */
142
284
  openBulkRoleAssign(): void;
285
+ CancelBulkRoleAssign(): void;
286
+ /** @deprecated Use {@link CancelBulkRoleAssign}. */
143
287
  cancelBulkRoleAssign(): void;
288
+ ExecuteBulkRoleAssign(): Promise<void>;
289
+ /** @deprecated Use {@link ExecuteBulkRoleAssign}. */
144
290
  executeBulkRoleAssign(): Promise<void>;
291
+ GetBulkActionMessage(): string;
292
+ /** @deprecated Use {@link GetBulkActionMessage}. */
145
293
  getBulkActionMessage(): string;
294
+ GetBulkActionTitle(): string;
295
+ /** @deprecated Use {@link GetBulkActionTitle}. */
146
296
  getBulkActionTitle(): string;
297
+ GetBulkActionButtonText(): string;
298
+ /** @deprecated Use {@link GetBulkActionButtonText}. */
147
299
  getBulkActionButtonText(): string;
300
+ ToggleUserExpansion(userId: string): void;
301
+ /** @deprecated Use {@link ToggleUserExpansion}. */
148
302
  toggleUserExpansion(userId: string): void;
303
+ IsUserExpanded(userId: string): boolean;
304
+ /** @deprecated Use {@link IsUserExpanded}. */
149
305
  isUserExpanded(userId: string): boolean;
306
+ GetUserRoles(userId: string): MJRoleEntity[];
307
+ /** @deprecated Use {@link GetUserRoles}. */
150
308
  getUserRoles(userId: string): MJRoleEntity[];
151
309
  /**
152
310
  * Names a user for an error message. Falls back to the raw ID rather than to a placeholder so a
@@ -1 +1 @@
1
- {"version":3,"file":"user-management.component.d.ts","sourceRoot":"","sources":["../../../src/lib/user-management/user-management.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-management.component.d.ts","sourceRoot":"","sources":["../../../src/lib/user-management/user-management.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAoB,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;;AAcvF,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAOa,uBAAwB,SAAQ,aAAc,YAAW,SAAS;IA0MjE,OAAO,CAAC,GAAG;IAAqB,OAAO,CAAC,MAAM;IAvMnD,KAAK,EAAE,YAAY,EAAE,CAAM;IAElC,qCAAqC;IACrC,IAAW,KAAK,IAAI,YAAY,EAAE,CAEjC;IACD,qCAAqC;IACrC,IAAW,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,EAErC;IACM,aAAa,EAAE,YAAY,EAAE,CAAM;IAE1C,6CAA6C;IAC7C,IAAW,aAAa,IAAI,YAAY,EAAE,CAEzC;IACD,6CAA6C;IAC7C,IAAW,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,EAE7C;IACM,KAAK,EAAE,YAAY,EAAE,CAAM;IAElC,qCAAqC;IACrC,IAAW,KAAK,IAAI,YAAY,EAAE,CAEjC;IACD,qCAAqC;IACrC,IAAW,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,EAErC;IACM,YAAY,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEhD,4CAA4C;IAC5C,IAAW,YAAY,IAAI,YAAY,GAAG,IAAI,CAE7C;IACD,4CAA4C;IAC5C,IAAW,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAEjD;IACM,SAAS,UAAS;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,eAAe,cAAqB;IAE3C,+CAA+C;IAC/C,IAAW,eAAe,gBAEzB;IACD,+CAA+C;IAC/C,IAAW,eAAe,CAAC,KAAK,aAAA,EAE/B;IAGM,cAAc,UAAS;IAE9B,8CAA8C;IAC9C,IAAW,cAAc,YAExB;IACD,8CAA8C;IAC9C,IAAW,cAAc,CAAC,KAAK,SAAA,EAE9B;IACM,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAEpD,8CAA8C;IAC9C,IAAW,cAAc,IAAI,cAAc,GAAG,IAAI,CAEjD;IACD,8CAA8C;IAC9C,IAAW,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,EAErD;IAGM,qBAAqB,UAAS;IAErC,qDAAqD;IACrD,IAAW,qBAAqB,YAE/B;IACD,qDAAqD;IACrD,IAAW,qBAAqB,CAAC,KAAK,SAAA,EAErC;IACM,cAAc,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAQ;IAErE,8CAA8C;IAC9C,IAAW,cAAc,IAAI,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAElE;IACD,8CAA8C;IAC9C,IAAW,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,EAEtE;IACM,kBAAkB,UAAS;IAElC,kDAAkD;IAClD,IAAW,kBAAkB,YAE5B;IACD,kDAAkD;IAClD,IAAW,kBAAkB,CAAC,KAAK,SAAA,EAElC;IACM,UAAU,EAAE,MAAM,CAAM;IAE/B,0CAA0C;IAC1C,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,0CAA0C;IAC1C,IAAW,UAAU,CAAC,KAAK,EAAE,MAAM,EAElC;IAGM,KAAK,EAAE,SAAS,CAKrB;IAEF,qCAAqC;IACrC,IAAW,KAAK,IAAI,SAAS,CAE5B;IACD,qCAAqC;IACrC,IAAW,KAAK,CAAC,KAAK,EAAE,SAAS,EAEhC;IAGM,QAAQ,iCAIZ;IAEH,wCAAwC;IACxC,IAAW,QAAQ,mCAElB;IACD,wCAAwC;IACxC,IAAW,QAAQ,CAAC,KAAK,gCAAA,EAExB;IAGM,gBAAgB,UAAS;IACzB,cAAc,UAAS;IAE9B,8CAA8C;IAC9C,IAAW,cAAc,YAExB;IACD,8CAA8C;IAC9C,IAAW,cAAc,CAAC,KAAK,SAAA,EAE9B;IACM,iBAAiB,UAAS;IAEjC,iDAAiD;IACjD,IAAW,iBAAiB,YAE3B;IACD,iDAAiD;IACjD,IAAW,iBAAiB,CAAC,KAAK,SAAA,EAEjC;IAGD,OAAO,CAAC,eAAe,CAAqB;IAG5C,OAAO,CAAC,WAAW,CAA+B;IAG3C,UAAU;;;;MAIf;IAEF,0CAA0C;IAC1C,IAAW,UAAU;;;;MAEpB;IACD,0CAA0C;IAC1C,IAAW,UAAU,CAAC,KAAK;;;;KAAA,EAE1B;IAED,UAAmB,QAAQ,gBAAuB;IAClD,OAAO,KAAK,QAAQ,GAAiC;gBACjC,GAAG,EAAE,iBAAiB,EAAU,MAAM,EAAE,MAAM;IAI5D,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,SAAS,CAAC,aAAa,IAAI,IAAI;IAK/B,SAAS,CAAC,QAAQ,IAAI,IAAI;IAoB1B,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,kBAAkB,CAA4B;IAEtD;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IA2DhC,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,8BAA8B;IAYtC,mGAAmG;IACnG,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,sBAAsB;YAMhB,iBAAiB;IAU/B,OAAO,CAAC,gBAAgB;IAQf,WAAW,IAAI,IAAI;IAMf,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC7C,+CAA+C;IAClC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAI/B,SAAS;YAUT,SAAS;YAWT,aAAa;IAU3B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,YAAY;IAmCpB,OAAO,CAAC,cAAc;IAUf,oBAAoB,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI;IAIxE,oDAAoD;IAC7C,oBAAoB,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI;IAIjE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAc1D,4CAA4C;IACrC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAInD,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAK3C,0CAA0C;IACnC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIpC,aAAa,IAAI,IAAI;IAQrB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IASzC,wCAAwC;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIlC,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKlD,iDAAiD;IAC1C,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BxC,0CAA0C;IAC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhE,gDAAgD;IACnC,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,WAAW,IAAI,IAAI;IA8C1B,2CAA2C;IACpC,WAAW,IAAI,IAAI;IAI1B,OAAO,CAAC,SAAS;IAOV,WAAW,IAAI,IAAI;IAI1B,2CAA2C;IACpC,WAAW,IAAI,IAAI;IAInB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAIhD,6CAA6C;IACtC,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAIzC,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAIjD,8CAA8C;IACvC,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI1C,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAWlD,+CAA+C;IACxC,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI3C,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAMlD,+CAA+C;IACxC,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI3C,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAUzD,kDAAkD;IAC3C,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAKzD,IAAW,aAAa,IAAI,OAAO,CAGlC;IAED,6CAA6C;IAC7C,IAAW,aAAa,IAAI,OAAO,CAElC;IAED,IAAW,eAAe,IAAI,OAAO,CAGpC;IAED,+CAA+C;IAC/C,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,4CAA4C;IAC5C,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,6CAA6C;IAC7C,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,gBAAgB,IAAI,OAAO,CAGrC;IAED,gDAAgD;IAChD,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAED,IAAW,iBAAiB,IAAI,MAAM,CAMrC;IAED,iDAAiD;IACjD,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAEM,YAAY,IAAI,IAAI;IAU3B,4CAA4C;IACrC,YAAY,IAAI,IAAI;IAY3B;;;OAGG;IACH,IAAW,YAAY,IAAI,iBAAiB,EAAE,CAyB7C;IAED,4CAA4C;IAC5C,IAAW,YAAY,IAAI,iBAAiB,EAAE,CAE7C;IAED,mEAAmE;IACnE,IAAW,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjD;IAED,4CAA4C;IAC5C,IAAW,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjD;IAED,6EAA6E;IAC7E,IAAW,sBAAsB,IAAI,MAAM,CAG1C;IAED,mDAAmD;IAC5C,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWjE,mDAAmD;IAC5C,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjE,0DAA0D;IACnD,sBAAsB,IAAI,IAAI;IAIrC,sDAAsD;IAC/C,sBAAsB,IAAI,IAAI;IAIrC;sDACkD;IAClD,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED;;qEAEiE;IAC1D,wBAAwB,IAAI,IAAI;IAMvC,wDAAwD;IACjD,wBAAwB,IAAI,IAAI;IAIhC,eAAe,IAAI,IAAI;IAU9B,+CAA+C;IACxC,eAAe,IAAI,IAAI;IAIvB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAW/D,mDAAmD;IAC5C,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAIxD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI9C,8CAA8C;IACvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,cAAc,IAAI,IAAI;IAI7B,8CAA8C;IACvC,cAAc,IAAI,IAAI;IAKtB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;IAMvE,iDAAiD;IAC1C,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;IAIhE,gBAAgB,IAAI,IAAI;IAK/B,gDAAgD;IACzC,gBAAgB,IAAI,IAAI;IAIlB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC/C,iDAAiD;IACpC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;YAIjC,iBAAiB;YAmBjB,eAAe;IAetB,kBAAkB,IAAI,IAAI;IAMjC,kDAAkD;IAC3C,kBAAkB,IAAI,IAAI;IAI1B,oBAAoB,IAAI,IAAI;IAKnC,oDAAoD;IAC7C,oBAAoB,IAAI,IAAI;IAItB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA2FnD,qDAAqD;IACxC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C,oBAAoB,IAAI,MAAM;IAcrC,oDAAoD;IAC7C,oBAAoB,IAAI,MAAM;IAI9B,kBAAkB,IAAI,MAAM;IAanC,kDAAkD;IAC3C,kBAAkB,IAAI,MAAM;IAI5B,uBAAuB,IAAI,MAAM;IAcxC,uDAAuD;IAChD,uBAAuB,IAAI,MAAM;IAKjC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQhD,mDAAmD;IAC5C,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI9C,8CAA8C;IACvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKvC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAcnD,4CAA4C;IACrC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAInD;;;OAGG;IACH,OAAO,CAAC,YAAY;yCA74CT,uBAAuB;2CAAvB,uBAAuB;CAi5CnC"}