dattatable 2.9.2 → 2.9.4

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 (56) hide show
  1. package/build/common/listSecurity.d.ts +9 -3
  2. package/build/common/listSecurity.js +43 -49
  3. package/build/lib.d.ts +5 -0
  4. package/dist/dattatable.js +1 -1
  5. package/dist/dattatable.min.js +1 -1
  6. package/docs/assets/search.js +1 -1
  7. package/docs/classes/AuditLog.html +13 -13
  8. package/docs/classes/CanvasForm.html +17 -17
  9. package/docs/classes/Comments.html +12 -12
  10. package/docs/classes/Dashboard.html +20 -20
  11. package/docs/classes/DataTable.html +12 -12
  12. package/docs/classes/Documents.html +45 -45
  13. package/docs/classes/FilterSlideout.html +14 -14
  14. package/docs/classes/Footer.html +4 -4
  15. package/docs/classes/Header.html +4 -4
  16. package/docs/classes/InstallationRequired.html +12 -12
  17. package/docs/classes/ItemForm.html +47 -47
  18. package/docs/classes/List.html +47 -47
  19. package/docs/classes/ListSecurity.html +59 -44
  20. package/docs/classes/LoadingDialog.html +12 -12
  21. package/docs/classes/Modal.html +26 -26
  22. package/docs/classes/Navigation.html +6 -6
  23. package/docs/classes/Timeout.html +7 -7
  24. package/docs/enums/ActionButtonTypes.html +6 -6
  25. package/docs/functions/formatBytes.html +2 -1
  26. package/docs/functions/formatDateValue.html +2 -1
  27. package/docs/functions/formatTimeValue.html +2 -1
  28. package/docs/functions/getFileExt.html +2 -1
  29. package/docs/index.html +1 -0
  30. package/docs/interfaces/IAuditLogItem.html +9 -9
  31. package/docs/interfaces/IAuditLogItemCreation.html +7 -7
  32. package/docs/interfaces/IAuditLogProps.html +5 -5
  33. package/docs/interfaces/IAuditLogViewProps.html +6 -6
  34. package/docs/interfaces/ICommentsItem.html +6 -6
  35. package/docs/interfaces/IDashboardProps.html +14 -14
  36. package/docs/interfaces/IDataTable.html +8 -8
  37. package/docs/interfaces/IDataTableProps.html +6 -6
  38. package/docs/interfaces/IDocumentsProps.html +25 -25
  39. package/docs/interfaces/IFilterItem.html +5 -5
  40. package/docs/interfaces/IFilterProps.html +4 -4
  41. package/docs/interfaces/IFooterProps.html +6 -6
  42. package/docs/interfaces/IHeaderProps.html +5 -5
  43. package/docs/interfaces/IInstallProps.html +4 -4
  44. package/docs/interfaces/IItemFormCreateProps.html +14 -14
  45. package/docs/interfaces/IItemFormEditProps.html +15 -15
  46. package/docs/interfaces/IItemFormTab.html +8 -8
  47. package/docs/interfaces/IItemFormTabInfo.html +3 -3
  48. package/docs/interfaces/IItemFormViewProps.html +12 -12
  49. package/docs/interfaces/IListProps.html +11 -11
  50. package/docs/interfaces/IListSecurity.html +7 -7
  51. package/docs/interfaces/IListSecurityItem.html +4 -4
  52. package/docs/interfaces/IShowDialogProps.html +7 -7
  53. package/docs/modules.html +2 -0
  54. package/docs/variables/DattaTable.html +16 -6
  55. package/docs/variables/ListSecurityDefaultGroups.html +102 -0
  56. package/package.json +1 -1
@@ -14,6 +14,11 @@ export interface IListSecurityItem {
14
14
  listName: string;
15
15
  permission: number | string;
16
16
  }
17
+ export declare const ListSecurityDefaultGroups: {
18
+ Members: string;
19
+ Owners: string;
20
+ Visitors: string;
21
+ };
17
22
  /**
18
23
  * List Security
19
24
  * This component is used for setting the security group/permissions for a list.
@@ -24,15 +29,16 @@ export declare class ListSecurity {
24
29
  private _props;
25
30
  private _groups;
26
31
  getGroup(groupName: string): Types.SP.Group;
27
- private setGroupId;
28
- private _users;
32
+ private setGroup;
33
+ private _groupUsers;
34
+ getGroupUsers(groupName: string): Types.SP.User[];
29
35
  constructor(props: IListSecurity);
30
36
  private configureList;
31
37
  private configureLists;
32
38
  private createGroups;
33
39
  private getGroupId;
34
40
  private getPermissionTypes;
35
- private isInGroup;
41
+ isInGroup(userId: number, groupName: string): boolean;
36
42
  private loadGroups;
37
43
  private renderModal;
38
44
  private resetPermissions;
@@ -1,9 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ListSecurity = void 0;
3
+ exports.ListSecurity = exports.ListSecurityDefaultGroups = void 0;
4
4
  var gd_sprest_bs_1 = require("gd-sprest-bs");
5
5
  var loadingDialog_1 = require("./loadingDialog");
6
6
  var modal_1 = require("./modal");
7
+ // List Security Default Groups
8
+ exports.ListSecurityDefaultGroups = {
9
+ Members: "member",
10
+ Owners: "owner",
11
+ Visitors: "visitor"
12
+ };
7
13
  /**
8
14
  * List Security
9
15
  * This component is used for setting the security group/permissions for a list.
@@ -16,6 +22,8 @@ var ListSecurity = /** @class */ (function () {
16
22
  this._props = null;
17
23
  // Security group information
18
24
  this._groups = {};
25
+ // Security group users
26
+ this._groupUsers = {};
19
27
  // Save the properties
20
28
  this._props = props;
21
29
  // Get the permission types
@@ -24,12 +32,17 @@ var ListSecurity = /** @class */ (function () {
24
32
  this.loadGroups();
25
33
  }
26
34
  ListSecurity.prototype.getGroup = function (groupName) { return this._groups[groupName.toLowerCase()]; };
27
- ListSecurity.prototype.setGroupId = function (key, group) {
35
+ ListSecurity.prototype.setGroup = function (key, group) {
28
36
  // Save the info
29
37
  this._groups[key] = group;
30
- // Return the group id
31
- return group.Id;
38
+ this._groupUsers[key] = [];
39
+ // See if the users exist
40
+ if (group.Users) {
41
+ // Set the users for this group
42
+ this._groupUsers[key] = group.Users.results || [];
43
+ }
32
44
  };
45
+ ListSecurity.prototype.getGroupUsers = function (groupName) { return this._groupUsers[groupName.toLowerCase()] || []; };
33
46
  // Configures a list
34
47
  ListSecurity.prototype.configureList = function (listInfo) {
35
48
  var _this = this;
@@ -126,7 +139,7 @@ var ListSecurity = /** @class */ (function () {
126
139
  // Successfully created the group
127
140
  function (group) {
128
141
  // Set the group id
129
- _this.setGroupId(groupInfo.Title.toLowerCase(), group);
142
+ _this.setGroup(groupInfo.Title.toLowerCase(), group);
130
143
  // Call the event
131
144
  _this._props.onGroupCreated ? _this._props.onGroupCreated(group) : null;
132
145
  // Check the next group
@@ -159,21 +172,29 @@ var ListSecurity = /** @class */ (function () {
159
172
  // Get the group information
160
173
  switch (key) {
161
174
  // Default owner's group
162
- case "owner":
163
- (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedOwnerGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);
175
+ case exports.ListSecurityDefaultGroups.Owners:
176
+ (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedOwnerGroup().query({
177
+ Expand: ["Users"]
178
+ }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);
164
179
  break;
165
180
  // Default member's group
166
- case "member":
167
- (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedMemberGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);
181
+ case exports.ListSecurityDefaultGroups.Members:
182
+ (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedMemberGroup().query({
183
+ Expand: ["Users"]
184
+ }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);
168
185
  break;
169
186
  // Default visitor's group
170
- case "visitor":
171
- (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedVisitorGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);
187
+ case exports.ListSecurityDefaultGroups.Visitors:
188
+ (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedVisitorGroup().query({
189
+ Expand: ["Users"]
190
+ }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);
172
191
  break;
173
192
  // Default
174
193
  default:
175
194
  // Get the group
176
- (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().getByName(groupName).execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);
195
+ (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().getByName(groupName).query({
196
+ Expand: ["Users"]
197
+ }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);
177
198
  break;
178
199
  }
179
200
  });
@@ -209,43 +230,16 @@ var ListSecurity = /** @class */ (function () {
209
230
  };
210
231
  // Method to see if a user is w/in a group
211
232
  ListSecurity.prototype.isInGroup = function (userId, groupName) {
212
- var _this = this;
213
- // Return a promise
214
- return new Promise(function (resolve) {
215
- // See if we have the user information
216
- if (_this._users[userId]) {
217
- var isInGroup = false;
218
- // Parse the groups
219
- for (var i = 0; i < _this._users[userId].length; i++) {
220
- var group = _this._users[userId][i];
221
- // See if this is the group name
222
- if (groupName == group.Title) {
223
- // Set the flag
224
- isInGroup = true;
225
- break;
226
- }
227
- }
228
- // Resolve the request
229
- resolve(isInGroup);
230
- return;
233
+ // See if we have the user information
234
+ var users = this.getGroupUsers(groupName);
235
+ for (var i = 0; i < users.length; i++) {
236
+ // See if the user is in this group
237
+ if (users[i].Id == userId) {
238
+ return true;
231
239
  }
232
- // Get the group information for this user
233
- (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteUsers(userId).Groups().execute(
234
- // Success
235
- function (groups) {
236
- // Save the user information
237
- _this._users[userId] = groups.results;
238
- // See if they are in the group
239
- _this.isInGroup(userId, groupName).then(resolve);
240
- },
241
- // Error
242
- function () {
243
- // Log
244
- console.error("Unable to get the user information for id: ".concat(userId));
245
- // Error get the user information
246
- resolve(false);
247
- });
248
- });
240
+ }
241
+ // Not in the group
242
+ return false;
249
243
  };
250
244
  // Loads the security groups
251
245
  ListSecurity.prototype.loadGroups = function () {
@@ -256,7 +250,7 @@ var ListSecurity = /** @class */ (function () {
256
250
  return _this.getGroupId(group.Title);
257
251
  }).then(function () {
258
252
  // Call the event
259
- _this._props.onGroupsLoaded ? _this._props.onGroupsLoaded() : null;
253
+ _this._props.onGroupsLoaded ? _this._props.onGroupsLoaded(_this._groups) : null;
260
254
  });
261
255
  };
262
256
  // Render the modal
package/build/lib.d.ts CHANGED
@@ -19,6 +19,11 @@ export declare const DattaTable: {
19
19
  InstallationRequired: typeof Common.InstallationRequired;
20
20
  ItemForm: typeof Common.ItemForm;
21
21
  List: typeof Common.List;
22
+ ListSecurityDefaultGroups: {
23
+ Members: string;
24
+ Owners: string;
25
+ Visitors: string;
26
+ };
22
27
  ListSecurity: typeof Common.ListSecurity;
23
28
  LoadingDialog: typeof Common.LoadingDialog;
24
29
  formatBytes: (bytes: number, decimals?: number) => string;
@@ -115,7 +115,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
115
115
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
116
116
 
117
117
  "use strict";
118
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ListSecurity = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.10.59/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar modal_1 = __webpack_require__(/*! ./modal */ \"./build/common/modal.js\");\r\n/**\r\n * List Security\r\n * This component is used for setting the security group/permissions for a list.\r\n */\r\nvar ListSecurity = /** @class */ (function () {\r\n // Constructor\r\n function ListSecurity(props) {\r\n this._ddlItems = null;\r\n this._permissionTypes = null;\r\n this._props = null;\r\n // Security group information\r\n this._groups = {};\r\n // Save the properties\r\n this._props = props;\r\n // Get the permission types\r\n this.getPermissionTypes();\r\n // Load the groups\r\n this.loadGroups();\r\n }\r\n ListSecurity.prototype.getGroup = function (groupName) { return this._groups[groupName.toLowerCase()]; };\r\n ListSecurity.prototype.setGroupId = function (key, group) {\r\n // Save the info\r\n this._groups[key] = group;\r\n // Return the group id\r\n return group.Id;\r\n };\r\n // Configures a list\r\n ListSecurity.prototype.configureList = function (listInfo) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure a permission exists\r\n var permissionId = _this._permissionTypes[listInfo.permission];\r\n if (permissionId > 0) {\r\n // Get the group id\r\n _this.getGroupId(listInfo.groupName).then(\r\n // Exists\r\n function (groupId) {\r\n // Add the group to the list\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listInfo.listName).RoleAssignments().addRoleAssignment(groupId, permissionId).execute(resolve, function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Error adding the group '\").concat(listInfo.groupName, \"' with permission \").concat(listInfo.permission, \" to the list.\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }, \r\n // Error\r\n function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Site Group '\").concat(listInfo.groupName, \"' doesn't exist\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }\r\n else {\r\n // Resolve the request\r\n resolve();\r\n }\r\n });\r\n };\r\n // Configures the lists\r\n ListSecurity.prototype.configureLists = function (lists) {\r\n var _this = this;\r\n var counter = 0;\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Configuring Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"This will close after the lists are configured...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Reset the lists\r\n this.resetPermissions(lists).then(function () {\r\n // Parse the lists\r\n gd_sprest_bs_1.Helper.Executor(lists, function (list) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Configuring \".concat(++counter, \" of \").concat(lists.length, \" lists...\"));\r\n // Configure the list\r\n _this.configureList(list).then(resolve);\r\n });\r\n });\r\n });\r\n };\r\n // Creates the security groups\r\n ListSecurity.prototype.createGroups = function (createFl) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if we aren't creating the groups\r\n if (!createFl) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Ensuring the security groups exist...\");\r\n // Parse the group names\r\n var groups = _this._props.groups || [];\r\n gd_sprest_bs_1.Helper.Executor(groups, function (groupInfo) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the group\r\n _this.getGroupId(groupInfo.Title).then(\r\n // Group exists\r\n function (group) {\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Group doesn't exist\r\n function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Creating the security group: \".concat(groupInfo.Title));\r\n // Create the properties\r\n var props = {\r\n Title: groupInfo.Title\r\n };\r\n // Call the event if it exists\r\n props = _this._props.onGroupCreating ? _this._props.onGroupCreating(props) : props;\r\n // Create the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().add(props).execute(\r\n // Successfully created the group\r\n function (group) {\r\n // Set the group id\r\n _this.setGroupId(groupInfo.Title.toLowerCase(), group);\r\n // Call the event\r\n _this._props.onGroupCreated ? _this._props.onGroupCreated(group) : null;\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Error creating the group\r\n function () {\r\n // Log to the console\r\n console.error(\"Site Group '\".concat(groupInfo.Title, \"' was unable to be created.\"));\r\n // Check the next group\r\n resolve(null);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n };\r\n // Gets the group id\r\n ListSecurity.prototype.getGroupId = function (groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n var key = groupName.toLowerCase();\r\n // See if we have already have it\r\n if (_this._groups[key]) {\r\n // Resolve the request\r\n resolve(_this._groups[key].Id);\r\n return;\r\n }\r\n // Get the group information\r\n switch (key) {\r\n // Default owner's group\r\n case \"owner\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedOwnerGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default member's group\r\n case \"member\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedMemberGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default visitor's group\r\n case \"visitor\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedVisitorGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default\r\n default:\r\n // Get the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().getByName(groupName).execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n }\r\n });\r\n };\r\n // Get the permission types\r\n ListSecurity.prototype.getPermissionTypes = function () {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the definitions\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).RoleDefinitions().query({\r\n OrderBy: [\"Name\"]\r\n }).execute(function (roleDefs) {\r\n // Clear the permissions and items\r\n _this._ddlItems = [{ text: \"No Permission\" }];\r\n _this._permissionTypes = {};\r\n // Parse the role definitions\r\n for (var i = 0; i < roleDefs.results.length; i++) {\r\n var roleDef = roleDefs.results[i];\r\n // Add the role and item\r\n var value = roleDef.RoleTypeKind > 0 ? roleDef.RoleTypeKind : roleDef.Name;\r\n _this._permissionTypes[value] = roleDef.Id;\r\n _this._ddlItems.push({\r\n data: roleDef,\r\n text: roleDef.Name,\r\n value: value.toString()\r\n });\r\n }\r\n // Resolve the request\r\n resolve();\r\n });\r\n });\r\n };\r\n // Method to see if a user is w/in a group\r\n ListSecurity.prototype.isInGroup = function (userId, groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // See if we have the user information\r\n if (_this._users[userId]) {\r\n var isInGroup = false;\r\n // Parse the groups\r\n for (var i = 0; i < _this._users[userId].length; i++) {\r\n var group = _this._users[userId][i];\r\n // See if this is the group name\r\n if (groupName == group.Title) {\r\n // Set the flag\r\n isInGroup = true;\r\n break;\r\n }\r\n }\r\n // Resolve the request\r\n resolve(isInGroup);\r\n return;\r\n }\r\n // Get the group information for this user\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteUsers(userId).Groups().execute(\r\n // Success\r\n function (groups) {\r\n // Save the user information\r\n _this._users[userId] = groups.results;\r\n // See if they are in the group\r\n _this.isInGroup(userId, groupName).then(resolve);\r\n }, \r\n // Error\r\n function () {\r\n // Log\r\n console.error(\"Unable to get the user information for id: \".concat(userId));\r\n // Error get the user information\r\n resolve(false);\r\n });\r\n });\r\n };\r\n // Loads the security groups\r\n ListSecurity.prototype.loadGroups = function () {\r\n var _this = this;\r\n // Parse the security groups\r\n gd_sprest_bs_1.Helper.Executor(this._props.groups, function (group) {\r\n // Load the group\r\n return _this.getGroupId(group.Title);\r\n }).then(function () {\r\n // Call the event\r\n _this._props.onGroupsLoaded ? _this._props.onGroupsLoaded() : null;\r\n });\r\n };\r\n // Render the modal\r\n ListSecurity.prototype.renderModal = function () {\r\n var _this = this;\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Set the header\r\n modal_1.Modal.setHeader(\"List Security\");\r\n // Parse the lists\r\n var rows = [];\r\n for (var i = 0; i < this._props.listItems.length; i++) {\r\n var listItem = this._props.listItems[i];\r\n // Add the row\r\n rows.push({\r\n isAutoSized: true,\r\n columns: [\r\n {\r\n control: {\r\n name: \"listName_\" + i,\r\n label: \"List Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.listName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"groupName_\" + i,\r\n label: \"Group Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.groupName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"permission_\" + i,\r\n label: \"Permission\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Dropdown,\r\n items: this._ddlItems,\r\n required: true,\r\n value: listItem.permission\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n // Render the form\r\n var form = gd_sprest_bs_1.Components.Form({\r\n el: modal_1.Modal.BodyElement,\r\n rows: rows\r\n });\r\n // Render the footer\r\n gd_sprest_bs_1.Components.TooltipGroup({\r\n el: modal_1.Modal.FooterElement,\r\n tooltips: [\r\n {\r\n content: \"Closes the modal\",\r\n btnProps: {\r\n text: \"Cancel\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineDanger,\r\n onClick: function () {\r\n // Close the modal\r\n modal_1.Modal.hide();\r\n }\r\n }\r\n },\r\n {\r\n content: \"Configures the security for the lists.\",\r\n btnProps: {\r\n text: \"Configure\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n var lists = [];\r\n // Get the form values\r\n var tableData = form.getValues();\r\n // Parse the # of rows\r\n for (var i = 0; i < rows.length; i++) {\r\n // Add the list information\r\n lists.push({\r\n groupName: tableData[\"groupName_\" + i],\r\n listName: tableData[\"listName_\" + i],\r\n permission: tableData[\"permission_\" + i]\r\n });\r\n }\r\n // Configure the lists\r\n _this.configureLists(lists);\r\n }\r\n }\r\n }\r\n ]\r\n });\r\n // Show the modal\r\n modal_1.Modal.show();\r\n };\r\n // Reset list permissions\r\n ListSecurity.prototype.resetPermissions = function (listItems) {\r\n var _this = this;\r\n // Parse the lists\r\n var lists = {};\r\n for (var i = 0; i < listItems.length; i++) {\r\n // Add the list\r\n lists[listItems[i].listName] = true;\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Parse the list keys\r\n for (var listName in lists) {\r\n var list = (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listName);\r\n // Reset the permissions\r\n list.resetRoleInheritance().execute();\r\n // Revert to the default\r\n list.breakRoleInheritance(false, true).execute(true);\r\n // Wait for the requests to complete\r\n list.done(resolve);\r\n }\r\n });\r\n };\r\n // Shows the modal\r\n ListSecurity.prototype.show = function (createFl) {\r\n var _this = this;\r\n if (createFl === void 0) { createFl = true; }\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Loading the Security Information\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Loading the security group information...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Create the groups\r\n this.createGroups(createFl).then(function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Waiting for the permission types to be loaded...\");\r\n // Ensure the permissions are loaded\r\n var loopId = setInterval(function () {\r\n // See if the permissions exist\r\n if (_this._ddlItems && _this._permissionTypes) {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Show the modal\r\n _this.renderModal();\r\n // Stop the loop\r\n clearInterval(loopId);\r\n }\r\n }, 10);\r\n });\r\n };\r\n return ListSecurity;\r\n}());\r\nexports.ListSecurity = ListSecurity;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/listSecurity.js?");
118
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ListSecurity = exports.ListSecurityDefaultGroups = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.10.59/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar modal_1 = __webpack_require__(/*! ./modal */ \"./build/common/modal.js\");\r\n// List Security Default Groups\r\nexports.ListSecurityDefaultGroups = {\r\n Members: \"member\",\r\n Owners: \"owner\",\r\n Visitors: \"visitor\"\r\n};\r\n/**\r\n * List Security\r\n * This component is used for setting the security group/permissions for a list.\r\n */\r\nvar ListSecurity = /** @class */ (function () {\r\n // Constructor\r\n function ListSecurity(props) {\r\n this._ddlItems = null;\r\n this._permissionTypes = null;\r\n this._props = null;\r\n // Security group information\r\n this._groups = {};\r\n // Security group users\r\n this._groupUsers = {};\r\n // Save the properties\r\n this._props = props;\r\n // Get the permission types\r\n this.getPermissionTypes();\r\n // Load the groups\r\n this.loadGroups();\r\n }\r\n ListSecurity.prototype.getGroup = function (groupName) { return this._groups[groupName.toLowerCase()]; };\r\n ListSecurity.prototype.setGroup = function (key, group) {\r\n // Save the info\r\n this._groups[key] = group;\r\n this._groupUsers[key] = [];\r\n // See if the users exist\r\n if (group.Users) {\r\n // Set the users for this group\r\n this._groupUsers[key] = group.Users.results || [];\r\n }\r\n };\r\n ListSecurity.prototype.getGroupUsers = function (groupName) { return this._groupUsers[groupName.toLowerCase()] || []; };\r\n // Configures a list\r\n ListSecurity.prototype.configureList = function (listInfo) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure a permission exists\r\n var permissionId = _this._permissionTypes[listInfo.permission];\r\n if (permissionId > 0) {\r\n // Get the group id\r\n _this.getGroupId(listInfo.groupName).then(\r\n // Exists\r\n function (groupId) {\r\n // Add the group to the list\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listInfo.listName).RoleAssignments().addRoleAssignment(groupId, permissionId).execute(resolve, function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Error adding the group '\").concat(listInfo.groupName, \"' with permission \").concat(listInfo.permission, \" to the list.\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }, \r\n // Error\r\n function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Site Group '\").concat(listInfo.groupName, \"' doesn't exist\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }\r\n else {\r\n // Resolve the request\r\n resolve();\r\n }\r\n });\r\n };\r\n // Configures the lists\r\n ListSecurity.prototype.configureLists = function (lists) {\r\n var _this = this;\r\n var counter = 0;\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Configuring Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"This will close after the lists are configured...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Reset the lists\r\n this.resetPermissions(lists).then(function () {\r\n // Parse the lists\r\n gd_sprest_bs_1.Helper.Executor(lists, function (list) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Configuring \".concat(++counter, \" of \").concat(lists.length, \" lists...\"));\r\n // Configure the list\r\n _this.configureList(list).then(resolve);\r\n });\r\n });\r\n });\r\n };\r\n // Creates the security groups\r\n ListSecurity.prototype.createGroups = function (createFl) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if we aren't creating the groups\r\n if (!createFl) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Ensuring the security groups exist...\");\r\n // Parse the group names\r\n var groups = _this._props.groups || [];\r\n gd_sprest_bs_1.Helper.Executor(groups, function (groupInfo) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the group\r\n _this.getGroupId(groupInfo.Title).then(\r\n // Group exists\r\n function (group) {\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Group doesn't exist\r\n function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Creating the security group: \".concat(groupInfo.Title));\r\n // Create the properties\r\n var props = {\r\n Title: groupInfo.Title\r\n };\r\n // Call the event if it exists\r\n props = _this._props.onGroupCreating ? _this._props.onGroupCreating(props) : props;\r\n // Create the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().add(props).execute(\r\n // Successfully created the group\r\n function (group) {\r\n // Set the group id\r\n _this.setGroup(groupInfo.Title.toLowerCase(), group);\r\n // Call the event\r\n _this._props.onGroupCreated ? _this._props.onGroupCreated(group) : null;\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Error creating the group\r\n function () {\r\n // Log to the console\r\n console.error(\"Site Group '\".concat(groupInfo.Title, \"' was unable to be created.\"));\r\n // Check the next group\r\n resolve(null);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n };\r\n // Gets the group id\r\n ListSecurity.prototype.getGroupId = function (groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n var key = groupName.toLowerCase();\r\n // See if we have already have it\r\n if (_this._groups[key]) {\r\n // Resolve the request\r\n resolve(_this._groups[key].Id);\r\n return;\r\n }\r\n // Get the group information\r\n switch (key) {\r\n // Default owner's group\r\n case exports.ListSecurityDefaultGroups.Owners:\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedOwnerGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);\r\n break;\r\n // Default member's group\r\n case exports.ListSecurityDefaultGroups.Members:\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedMemberGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);\r\n break;\r\n // Default visitor's group\r\n case exports.ListSecurityDefaultGroups.Visitors:\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedVisitorGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);\r\n break;\r\n // Default\r\n default:\r\n // Get the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().getByName(groupName).query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) { _this.setGroup(key, group); resolve(group.Id); }, reject);\r\n break;\r\n }\r\n });\r\n };\r\n // Get the permission types\r\n ListSecurity.prototype.getPermissionTypes = function () {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the definitions\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).RoleDefinitions().query({\r\n OrderBy: [\"Name\"]\r\n }).execute(function (roleDefs) {\r\n // Clear the permissions and items\r\n _this._ddlItems = [{ text: \"No Permission\" }];\r\n _this._permissionTypes = {};\r\n // Parse the role definitions\r\n for (var i = 0; i < roleDefs.results.length; i++) {\r\n var roleDef = roleDefs.results[i];\r\n // Add the role and item\r\n var value = roleDef.RoleTypeKind > 0 ? roleDef.RoleTypeKind : roleDef.Name;\r\n _this._permissionTypes[value] = roleDef.Id;\r\n _this._ddlItems.push({\r\n data: roleDef,\r\n text: roleDef.Name,\r\n value: value.toString()\r\n });\r\n }\r\n // Resolve the request\r\n resolve();\r\n });\r\n });\r\n };\r\n // Method to see if a user is w/in a group\r\n ListSecurity.prototype.isInGroup = function (userId, groupName) {\r\n // See if we have the user information\r\n var users = this.getGroupUsers(groupName);\r\n for (var i = 0; i < users.length; i++) {\r\n // See if the user is in this group\r\n if (users[i].Id == userId) {\r\n return true;\r\n }\r\n }\r\n // Not in the group\r\n return false;\r\n };\r\n // Loads the security groups\r\n ListSecurity.prototype.loadGroups = function () {\r\n var _this = this;\r\n // Parse the security groups\r\n gd_sprest_bs_1.Helper.Executor(this._props.groups, function (group) {\r\n // Load the group\r\n return _this.getGroupId(group.Title);\r\n }).then(function () {\r\n // Call the event\r\n _this._props.onGroupsLoaded ? _this._props.onGroupsLoaded(_this._groups) : null;\r\n });\r\n };\r\n // Render the modal\r\n ListSecurity.prototype.renderModal = function () {\r\n var _this = this;\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Set the header\r\n modal_1.Modal.setHeader(\"List Security\");\r\n // Parse the lists\r\n var rows = [];\r\n for (var i = 0; i < this._props.listItems.length; i++) {\r\n var listItem = this._props.listItems[i];\r\n // Add the row\r\n rows.push({\r\n isAutoSized: true,\r\n columns: [\r\n {\r\n control: {\r\n name: \"listName_\" + i,\r\n label: \"List Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.listName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"groupName_\" + i,\r\n label: \"Group Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.groupName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"permission_\" + i,\r\n label: \"Permission\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Dropdown,\r\n items: this._ddlItems,\r\n required: true,\r\n value: listItem.permission\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n // Render the form\r\n var form = gd_sprest_bs_1.Components.Form({\r\n el: modal_1.Modal.BodyElement,\r\n rows: rows\r\n });\r\n // Render the footer\r\n gd_sprest_bs_1.Components.TooltipGroup({\r\n el: modal_1.Modal.FooterElement,\r\n tooltips: [\r\n {\r\n content: \"Closes the modal\",\r\n btnProps: {\r\n text: \"Cancel\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineDanger,\r\n onClick: function () {\r\n // Close the modal\r\n modal_1.Modal.hide();\r\n }\r\n }\r\n },\r\n {\r\n content: \"Configures the security for the lists.\",\r\n btnProps: {\r\n text: \"Configure\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n var lists = [];\r\n // Get the form values\r\n var tableData = form.getValues();\r\n // Parse the # of rows\r\n for (var i = 0; i < rows.length; i++) {\r\n // Add the list information\r\n lists.push({\r\n groupName: tableData[\"groupName_\" + i],\r\n listName: tableData[\"listName_\" + i],\r\n permission: tableData[\"permission_\" + i]\r\n });\r\n }\r\n // Configure the lists\r\n _this.configureLists(lists);\r\n }\r\n }\r\n }\r\n ]\r\n });\r\n // Show the modal\r\n modal_1.Modal.show();\r\n };\r\n // Reset list permissions\r\n ListSecurity.prototype.resetPermissions = function (listItems) {\r\n var _this = this;\r\n // Parse the lists\r\n var lists = {};\r\n for (var i = 0; i < listItems.length; i++) {\r\n // Add the list\r\n lists[listItems[i].listName] = true;\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Parse the list keys\r\n for (var listName in lists) {\r\n var list = (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listName);\r\n // Reset the permissions\r\n list.resetRoleInheritance().execute();\r\n // Revert to the default\r\n list.breakRoleInheritance(false, true).execute(true);\r\n // Wait for the requests to complete\r\n list.done(resolve);\r\n }\r\n });\r\n };\r\n // Shows the modal\r\n ListSecurity.prototype.show = function (createFl) {\r\n var _this = this;\r\n if (createFl === void 0) { createFl = true; }\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Loading the Security Information\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Loading the security group information...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Create the groups\r\n this.createGroups(createFl).then(function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Waiting for the permission types to be loaded...\");\r\n // Ensure the permissions are loaded\r\n var loopId = setInterval(function () {\r\n // See if the permissions exist\r\n if (_this._ddlItems && _this._permissionTypes) {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Show the modal\r\n _this.renderModal();\r\n // Stop the loop\r\n clearInterval(loopId);\r\n }\r\n }, 10);\r\n });\r\n };\r\n return ListSecurity;\r\n}());\r\nexports.ListSecurity = ListSecurity;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/listSecurity.js?");
119
119
 
120
120
  /***/ }),
121
121