@memberjunction/ng-explorer-settings 2.48.0 → 2.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/application-entities-grid/application-entities-grid.component.js +124 -132
- package/dist/lib/application-entities-grid/application-entities-grid.component.js.map +1 -1
- package/dist/lib/module.js +19 -19
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/settings/settings.component.js +54 -64
- package/dist/lib/settings/settings.component.js.map +1 -1
- package/dist/lib/single-application/single-application.component.js +49 -61
- package/dist/lib/single-application/single-application.component.js.map +1 -1
- package/dist/lib/single-role/single-role.component.js +52 -67
- package/dist/lib/single-role/single-role.component.js.map +1 -1
- package/dist/lib/single-user/single-user.component.js +45 -56
- package/dist/lib/single-user/single-user.component.js.map +1 -1
- package/dist/lib/user-roles-grid/user-roles-grid.component.js +124 -128
- package/dist/lib/user-roles-grid/user-roles-grid.component.js.map +1 -1
- package/package.json +13 -13
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { Component, Input } from '@angular/core';
|
|
11
2
|
import { Metadata, RunView } from '@memberjunction/core';
|
|
12
3
|
import * as i0 from "@angular/core";
|
|
@@ -111,19 +102,28 @@ function UserRolesGridComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
111
102
|
i0.ɵɵproperty("ngIf", !ctx_r1.isLoading);
|
|
112
103
|
} }
|
|
113
104
|
export class UserRolesGridComponent {
|
|
105
|
+
router;
|
|
106
|
+
/**
|
|
107
|
+
* The name of the role we are working with, required if Mode is 'Roles'
|
|
108
|
+
*/
|
|
109
|
+
RoleID;
|
|
110
|
+
/**
|
|
111
|
+
* The ID of the user we are working with, required if Mode is 'Users'
|
|
112
|
+
*/
|
|
113
|
+
UserID;
|
|
114
|
+
isLoading = false;
|
|
115
|
+
userRoles = [];
|
|
116
|
+
Mode = 'Users';
|
|
117
|
+
/**
|
|
118
|
+
* The role record we are working with, required if Mode is 'Roles'
|
|
119
|
+
*/
|
|
120
|
+
RoleRecord = null;
|
|
121
|
+
/**
|
|
122
|
+
* The user record we are working with, required if Mode is 'Users'
|
|
123
|
+
*/
|
|
124
|
+
UserRecord = null;
|
|
114
125
|
constructor(router) {
|
|
115
126
|
this.router = router;
|
|
116
|
-
this.isLoading = false;
|
|
117
|
-
this.userRoles = [];
|
|
118
|
-
this.Mode = 'Users';
|
|
119
|
-
/**
|
|
120
|
-
* The role record we are working with, required if Mode is 'Roles'
|
|
121
|
-
*/
|
|
122
|
-
this.RoleRecord = null;
|
|
123
|
-
/**
|
|
124
|
-
* The user record we are working with, required if Mode is 'Users'
|
|
125
|
-
*/
|
|
126
|
-
this.UserRecord = null;
|
|
127
127
|
}
|
|
128
128
|
get RoleName() {
|
|
129
129
|
const md = new Metadata();
|
|
@@ -137,124 +137,120 @@ export class UserRolesGridComponent {
|
|
|
137
137
|
if (changes && (changes.RoleRecord || changes.UserRecord))
|
|
138
138
|
this.Refresh();
|
|
139
139
|
}
|
|
140
|
-
Refresh() {
|
|
141
|
-
|
|
142
|
-
if (this.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (this.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
140
|
+
async Refresh() {
|
|
141
|
+
if (this.Mode === 'Roles')
|
|
142
|
+
if (!this.RoleID || this.RoleID.length === 0 || !this.RoleRecord)
|
|
143
|
+
throw new Error("RoleID and RoleRecord are required when Mode is 'Roles'");
|
|
144
|
+
if (this.Mode === 'Users')
|
|
145
|
+
if (!this.UserID || !this.UserRecord)
|
|
146
|
+
throw new Error("UserID and UserRecord are required when Mode is 'Users'");
|
|
147
|
+
const md = new Metadata();
|
|
148
|
+
this.isLoading = true;
|
|
149
|
+
const rv = new RunView();
|
|
150
|
+
const filter = this.Mode === 'Roles' ? `RoleID='${this.RoleID}'` : `UserID='${this.UserID}'`;
|
|
151
|
+
const result = await rv.RunView({
|
|
152
|
+
EntityName: 'User Roles',
|
|
153
|
+
ExtraFilter: filter,
|
|
154
|
+
ResultType: 'entity_object'
|
|
155
|
+
});
|
|
156
|
+
if (result.Success) {
|
|
157
|
+
// we have all of the saved permissions now
|
|
158
|
+
// the post-process we need to do now is to see if there are any roles that don't have any existing permissions and if so, we need to create
|
|
159
|
+
// new permission records for them. We won't actually consider those "Dirty" and save those unless the user actually selects one or more
|
|
160
|
+
// to turn on, we are just doing this to make the grid easy to manage from the user perspective.
|
|
161
|
+
const existingUserRoles = result.Results;
|
|
162
|
+
existingUserRoles.forEach(ur => {
|
|
163
|
+
ur.Selected = true; // flip this on for all records that come from the DB
|
|
164
|
+
ur.SavedUserID = ur.UserID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
165
|
+
ur.SavedUserName = ur.User; // stash this in an extra property so we can later set it if we have a delete operation
|
|
166
|
+
ur.SavedRoleID = ur.RoleID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
156
167
|
});
|
|
157
|
-
if (
|
|
158
|
-
// we
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
existingUserRoles.forEach(ur => {
|
|
164
|
-
ur.Selected = true; // flip this on for all records that come from the DB
|
|
165
|
-
ur.SavedUserID = ur.UserID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
166
|
-
ur.SavedUserName = ur.User; // stash this in an extra property so we can later set it if we have a delete operation
|
|
167
|
-
ur.SavedRoleID = ur.RoleID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
168
|
+
if (this.Mode === 'Roles') {
|
|
169
|
+
// for the mode of Roles, we want to bring in all of the possible users and then add any that are not in the existingUserRoles array
|
|
170
|
+
const userResult = await rv.RunView({
|
|
171
|
+
EntityName: 'Users',
|
|
172
|
+
ExtraFilter: 'IsActive=1',
|
|
173
|
+
ResultType: 'entity_object'
|
|
168
174
|
});
|
|
169
|
-
if (
|
|
170
|
-
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
ResultType: 'entity_object'
|
|
175
|
-
});
|
|
176
|
-
if (userResult.Success) {
|
|
177
|
-
const users = userResult.Results;
|
|
178
|
-
const usersNotInRole = users.filter(u => !existingUserRoles.some(p => p.UserID === u.ID));
|
|
179
|
-
for (const u of usersNotInRole) {
|
|
180
|
-
const ur = yield md.GetEntityObject('User Roles');
|
|
181
|
-
ur.NewRecord();
|
|
182
|
-
ur.RoleID = this.RoleID;
|
|
183
|
-
ur.SavedRoleID = this.RoleID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
184
|
-
ur.UserID = u.ID;
|
|
185
|
-
ur.Set('User', u.Name); // use weak typing to get around the readonly property
|
|
186
|
-
ur.SavedUserName = u.Name; // stash this in an extra property so we can later set it if we have a delete operation
|
|
187
|
-
ur.SavedUserID = u.ID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
188
|
-
ur.Selected = false;
|
|
189
|
-
existingUserRoles.push(ur);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
// finally sort the array
|
|
193
|
-
this.userRoles = existingUserRoles.sort((a, b) => a.User.localeCompare(b.User));
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
// for the mode of Users, we want to bring in all of the possible roles and then add any that are not in the existingUserRoles array
|
|
197
|
-
const roles = md.Roles;
|
|
198
|
-
const rolesNotInUser = roles.filter(r => !existingUserRoles.some(p => p.RoleID === r.ID));
|
|
199
|
-
for (const r of rolesNotInUser) {
|
|
200
|
-
const ur = yield md.GetEntityObject('User Roles');
|
|
175
|
+
if (userResult.Success) {
|
|
176
|
+
const users = userResult.Results;
|
|
177
|
+
const usersNotInRole = users.filter(u => !existingUserRoles.some(p => p.UserID === u.ID));
|
|
178
|
+
for (const u of usersNotInRole) {
|
|
179
|
+
const ur = await md.GetEntityObject('User Roles');
|
|
201
180
|
ur.NewRecord();
|
|
202
|
-
ur.RoleID =
|
|
203
|
-
ur.
|
|
204
|
-
ur.
|
|
205
|
-
ur.
|
|
206
|
-
ur.
|
|
207
|
-
ur.
|
|
181
|
+
ur.RoleID = this.RoleID;
|
|
182
|
+
ur.SavedRoleID = this.RoleID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
183
|
+
ur.UserID = u.ID;
|
|
184
|
+
ur.Set('User', u.Name); // use weak typing to get around the readonly property
|
|
185
|
+
ur.SavedUserName = u.Name; // stash this in an extra property so we can later set it if we have a delete operation
|
|
186
|
+
ur.SavedUserID = u.ID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
208
187
|
ur.Selected = false;
|
|
209
188
|
existingUserRoles.push(ur);
|
|
210
189
|
}
|
|
211
|
-
// finally sort the array
|
|
212
|
-
this.userRoles = existingUserRoles;
|
|
213
190
|
}
|
|
191
|
+
// finally sort the array
|
|
192
|
+
this.userRoles = existingUserRoles.sort((a, b) => a.User.localeCompare(b.User));
|
|
214
193
|
}
|
|
215
194
|
else {
|
|
216
|
-
|
|
195
|
+
// for the mode of Users, we want to bring in all of the possible roles and then add any that are not in the existingUserRoles array
|
|
196
|
+
const roles = md.Roles;
|
|
197
|
+
const rolesNotInUser = roles.filter(r => !existingUserRoles.some(p => p.RoleID === r.ID));
|
|
198
|
+
for (const r of rolesNotInUser) {
|
|
199
|
+
const ur = await md.GetEntityObject('User Roles');
|
|
200
|
+
ur.NewRecord();
|
|
201
|
+
ur.RoleID = r.ID;
|
|
202
|
+
ur.UserID = this.UserID;
|
|
203
|
+
ur.Set('User', this.UserRecord.Name); // use weak typing to get around the readonly property
|
|
204
|
+
ur.SavedUserName = this.UserRecord.Name; // stash this in an extra property so we can later set it if we have a delete operation
|
|
205
|
+
ur.SavedUserID = this.UserID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
206
|
+
ur.SavedRoleID = r.ID; // stash this in an extra property so we can later set it if we have a delete operation
|
|
207
|
+
ur.Selected = false;
|
|
208
|
+
existingUserRoles.push(ur);
|
|
209
|
+
}
|
|
210
|
+
// finally sort the array
|
|
211
|
+
this.userRoles = existingUserRoles;
|
|
217
212
|
}
|
|
218
|
-
|
|
219
|
-
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
throw new Error("Error loading user roles: " + result.ErrorMessage);
|
|
216
|
+
}
|
|
217
|
+
this.isLoading = false;
|
|
220
218
|
}
|
|
221
219
|
getRoleName(roleID) {
|
|
222
220
|
const md = new Metadata();
|
|
223
221
|
const role = md.Roles.find(r => r.ID === roleID);
|
|
224
222
|
return role ? role.Name : '';
|
|
225
223
|
}
|
|
226
|
-
saveUserRoles() {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
yield ur.Delete();
|
|
243
|
-
}
|
|
224
|
+
async saveUserRoles() {
|
|
225
|
+
// iterate through each permisison and for the ones that are dirty, add to transaction group then commit at once
|
|
226
|
+
const md = new Metadata();
|
|
227
|
+
const tg = await md.CreateTransactionGroup();
|
|
228
|
+
let itemCount = 0;
|
|
229
|
+
for (const ur of this.userRoles) {
|
|
230
|
+
if (this.IsReallyDirty(ur)) {
|
|
231
|
+
ur.TransactionGroup = tg;
|
|
232
|
+
itemCount++;
|
|
233
|
+
// now, we have to determine if we are going to save the record or delete it
|
|
234
|
+
// if ur.Selected === false and we are in the database, we need to delete
|
|
235
|
+
// otherwise, we need to save
|
|
236
|
+
if (ur.Selected)
|
|
237
|
+
await ur.Save();
|
|
238
|
+
else
|
|
239
|
+
await ur.Delete();
|
|
244
240
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
255
|
-
}
|
|
241
|
+
}
|
|
242
|
+
if (itemCount > 0) {
|
|
243
|
+
if (await tg.Submit()) {
|
|
244
|
+
// for any items in the above that were deleted, we would have had the User property wiped out so we need to go check to see if we have a null ID and if so, copy the UserName back into the User property
|
|
245
|
+
this.userRoles.forEach(ur => {
|
|
246
|
+
if (ur.User === null) {
|
|
247
|
+
ur.Set('User', ur.SavedUserName); // get around the read-only property
|
|
248
|
+
ur.UserID = ur.SavedUserID;
|
|
249
|
+
ur.RoleID = this.Mode === 'Roles' ? this.RoleID : ur.SavedRoleID;
|
|
250
|
+
}
|
|
251
|
+
});
|
|
256
252
|
}
|
|
257
|
-
}
|
|
253
|
+
}
|
|
258
254
|
}
|
|
259
255
|
cancelEdit() {
|
|
260
256
|
if (this.NumDirty > 0) {
|
|
@@ -303,15 +299,15 @@ export class UserRolesGridComponent {
|
|
|
303
299
|
else if ($event)
|
|
304
300
|
$event.stopPropagation();
|
|
305
301
|
}
|
|
302
|
+
static ɵfac = function UserRolesGridComponent_Factory(t) { return new (t || UserRolesGridComponent)(i0.ɵɵdirectiveInject(i1.Router)); };
|
|
303
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserRolesGridComponent, selectors: [["mj-user-roles-grid"]], inputs: { RoleID: "RoleID", UserID: "UserID", Mode: "Mode", RoleRecord: "RoleRecord", UserRecord: "UserRecord" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [[4, "ngIf"], ["class", "content", 4, "ngIf"], [1, "content"], ["kendoButton", "", 3, "click", "disabled"], ["class", "grid", 4, "ngIf"], [1, "grid"], [3, "click"], [4, "ngFor", "ngForOf"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModelChange", "click", "ngModel"]], template: function UserRolesGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
304
|
+
i0.ɵɵtemplate(0, UserRolesGridComponent_div_0_Template, 2, 0, "div", 0)(1, UserRolesGridComponent_div_1_Template, 6, 3, "div", 1);
|
|
305
|
+
} if (rf & 2) {
|
|
306
|
+
i0.ɵɵproperty("ngIf", ctx.isLoading);
|
|
307
|
+
i0.ɵɵadvance();
|
|
308
|
+
i0.ɵɵproperty("ngIf", !ctx.isLoading);
|
|
309
|
+
} }, dependencies: [i2.NgForOf, i2.NgIf, i3.CheckboxControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.ButtonComponent, i5.LoaderComponent], styles: ["button[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-top: 5px;\n width: 125px;\n}\n\n\n\n.grid[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-top: 5px;\n border-collapse: collapse;\n}\n\n\n\n.grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background-color: #f2f2f2;\n color: black;\n font-weight: bold;\n text-align: center;\n border: 1px solid gray;\n padding: 0 8px;\n cursor: pointer;\n}\n\n\n\n.grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n border: 1px solid gray;\n height: 36px;\n text-align: center;\n padding: 0 8px;\n}\n\n\n\n.grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-child, \n.grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child {\n min-width: 150px;\n text-align: left;\n}\n\n\n\n.grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:not(:first-child), \n.grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:not(:first-child) {\n width: 100px;\n}\n\n\n\n.grid[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(odd) {\n background-color: white;\n}\n\n.grid[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even) {\n background-color: #e7f4ff;\n}"] });
|
|
306
310
|
}
|
|
307
|
-
UserRolesGridComponent.ɵfac = function UserRolesGridComponent_Factory(t) { return new (t || UserRolesGridComponent)(i0.ɵɵdirectiveInject(i1.Router)); };
|
|
308
|
-
UserRolesGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserRolesGridComponent, selectors: [["mj-user-roles-grid"]], inputs: { RoleID: "RoleID", UserID: "UserID", Mode: "Mode", RoleRecord: "RoleRecord", UserRecord: "UserRecord" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [[4, "ngIf"], ["class", "content", 4, "ngIf"], [1, "content"], ["kendoButton", "", 3, "click", "disabled"], ["class", "grid", 4, "ngIf"], [1, "grid"], [3, "click"], [4, "ngFor", "ngForOf"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModelChange", "click", "ngModel"]], template: function UserRolesGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
309
|
-
i0.ɵɵtemplate(0, UserRolesGridComponent_div_0_Template, 2, 0, "div", 0)(1, UserRolesGridComponent_div_1_Template, 6, 3, "div", 1);
|
|
310
|
-
} if (rf & 2) {
|
|
311
|
-
i0.ɵɵproperty("ngIf", ctx.isLoading);
|
|
312
|
-
i0.ɵɵadvance();
|
|
313
|
-
i0.ɵɵproperty("ngIf", !ctx.isLoading);
|
|
314
|
-
} }, dependencies: [i2.NgForOf, i2.NgIf, i3.CheckboxControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.ButtonComponent, i5.LoaderComponent], styles: ["button[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-top: 5px;\n width: 125px;\n}\n\n\n\n.grid[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-top: 5px;\n border-collapse: collapse;\n}\n\n\n\n.grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background-color: #f2f2f2;\n color: black;\n font-weight: bold;\n text-align: center;\n border: 1px solid gray;\n padding: 0 8px;\n cursor: pointer;\n}\n\n\n\n.grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n border: 1px solid gray;\n height: 36px;\n text-align: center;\n padding: 0 8px;\n}\n\n\n\n.grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-child, \n.grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child {\n min-width: 150px;\n text-align: left;\n}\n\n\n\n.grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:not(:first-child), \n.grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:not(:first-child) {\n width: 100px;\n}\n\n\n\n.grid[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(odd) {\n background-color: white;\n}\n\n.grid[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(even) {\n background-color: #e7f4ff;\n}"] });
|
|
315
311
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserRolesGridComponent, [{
|
|
316
312
|
type: Component,
|
|
317
313
|
args: [{ selector: 'mj-user-roles-grid', template: "<div *ngIf=\"isLoading\"><kendo-loader></kendo-loader></div>\n<div class=\"content\" *ngIf=\"!isLoading\">\n <button [disabled]=\"NumDirty === 0\" kendoButton (click)=\"saveUserRoles()\">Save</button>\n <button [disabled]=\"NumDirty === 0\" kendoButton (click)=\"cancelEdit()\">Cancel</button>\n <table *ngIf=\"!isLoading\" class=\"grid\">\n <thead>\n <tr>\n <th *ngIf=\"Mode === 'Roles'\">User</th>\n <th *ngIf=\"Mode === 'Users'\">Role</th>\n <th (click)=\"flipAll()\">In Role</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let ur of userRoles\">\n <td *ngIf=\"Mode === 'Roles'\">{{ ur.User }}</td>\n <td *ngIf=\"Mode === 'Users'\">{{ getRoleName(ur.RoleID) }}</td>\n <td (click)=\"flipState($event, ur, true)\">\n <input type=\"checkbox\" kendoCheckBox [(ngModel)]=\"ur.Selected\" (click)=\"flipState($event, ur, false)\">\n </td>\n </tr>\n </tbody>\n </table> \n</div>", styles: ["button {\n margin-left: 5px;\n margin-top: 5px;\n width: 125px;\n}\n\n/* Styles for the table with the 'grid' class */\n.grid {\n margin-left: 5px;\n margin-top: 5px;\n border-collapse: collapse;\n}\n\n/* Styles for th elements within the table with the 'grid' class */\n.grid th {\n background-color: #f2f2f2;\n color: black;\n font-weight: bold;\n text-align: center;\n border: 1px solid gray;\n padding: 0 8px;\n cursor: pointer;\n}\n\n/* Styles for td elements within the table with the 'grid' class */\n.grid td {\n border: 1px solid gray;\n height: 36px;\n text-align: center;\n padding: 0 8px;\n}\n\n/* Styles for the first child th and td within the table with the 'grid' class */\n.grid th:first-child,\n.grid td:first-child {\n min-width: 150px;\n text-align: left;\n}\n\n/* Styles for non-first-child th and td elements within the table with the 'grid' class */\n.grid th:not(:first-child),\n.grid td:not(:first-child) {\n width: 100px;\n}\n\n/* Alternating row background colors for the table with the 'grid' class */\n.grid tr:nth-child(odd) {\n background-color: white;\n}\n\n.grid tr:nth-child(even) {\n background-color: #e7f4ff;\n}\n\n"] }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-roles-grid.component.js","sourceRoot":"","sources":["../../../src/lib/user-roles-grid/user-roles-grid.component.ts","../../../src/lib/user-roles-grid/user-roles-grid.component.html"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user-roles-grid.component.js","sourceRoot":"","sources":["../../../src/lib/user-roles-grid/user-roles-grid.component.ts","../../../src/lib/user-roles-grid/user-roles-grid.component.html"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-explorer-settings",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.50.0",
|
|
4
4
|
"description": "MemberJunction: Reusable Angular components for the settings section of the MJ Explorer App",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -25,18 +25,18 @@
|
|
|
25
25
|
"@angular/router": "18.0.2"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@memberjunction/core-entities": "2.
|
|
29
|
-
"@memberjunction/global": "2.
|
|
30
|
-
"@memberjunction/core": "2.
|
|
31
|
-
"@memberjunction/ng-container-directives": "2.
|
|
32
|
-
"@memberjunction/ng-shared": "2.
|
|
33
|
-
"@memberjunction/ng-notifications": "2.
|
|
34
|
-
"@memberjunction/ng-entity-permissions": "2.
|
|
35
|
-
"@memberjunction/ng-base-forms": "2.
|
|
36
|
-
"@memberjunction/ng-entity-form-dialog": "2.
|
|
37
|
-
"@memberjunction/ng-user-view-grid": "2.
|
|
38
|
-
"@memberjunction/ng-simple-record-list": "2.
|
|
39
|
-
"@memberjunction/ng-tabstrip": "2.
|
|
28
|
+
"@memberjunction/core-entities": "2.50.0",
|
|
29
|
+
"@memberjunction/global": "2.50.0",
|
|
30
|
+
"@memberjunction/core": "2.50.0",
|
|
31
|
+
"@memberjunction/ng-container-directives": "2.50.0",
|
|
32
|
+
"@memberjunction/ng-shared": "2.50.0",
|
|
33
|
+
"@memberjunction/ng-notifications": "2.50.0",
|
|
34
|
+
"@memberjunction/ng-entity-permissions": "2.50.0",
|
|
35
|
+
"@memberjunction/ng-base-forms": "2.50.0",
|
|
36
|
+
"@memberjunction/ng-entity-form-dialog": "2.50.0",
|
|
37
|
+
"@memberjunction/ng-user-view-grid": "2.50.0",
|
|
38
|
+
"@memberjunction/ng-simple-record-list": "2.50.0",
|
|
39
|
+
"@memberjunction/ng-tabstrip": "2.50.0",
|
|
40
40
|
"@progress/kendo-angular-dropdowns": "16.2.0",
|
|
41
41
|
"@progress/kendo-angular-grid": "16.2.0",
|
|
42
42
|
"@progress/kendo-angular-buttons": "16.2.0",
|