dattatable 2.9.37 → 2.9.38

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 (57) hide show
  1. package/build/common/installRequired.d.ts +1 -1
  2. package/build/common/installRequired.js +30 -33
  3. package/build/common/listSecurity.d.ts +2 -1
  4. package/build/common/listSecurity.js +61 -28
  5. package/dist/dattatable.js +2 -2
  6. package/dist/dattatable.min.js +1 -1
  7. package/docs/assets/search.js +1 -1
  8. package/docs/classes/AuditLog.html +2 -2
  9. package/docs/classes/CanvasForm.html +2 -2
  10. package/docs/classes/Comments.html +2 -2
  11. package/docs/classes/Dashboard.html +4 -4
  12. package/docs/classes/DataTable.html +3 -3
  13. package/docs/classes/Documents.html +6 -6
  14. package/docs/classes/FilterSlideout.html +2 -2
  15. package/docs/classes/Footer.html +2 -2
  16. package/docs/classes/Header.html +2 -2
  17. package/docs/classes/InstallationRequired.html +3 -3
  18. package/docs/classes/ItemForm.html +4 -4
  19. package/docs/classes/List.html +4 -4
  20. package/docs/classes/ListSecurity.html +3 -2
  21. package/docs/classes/LoadingDialog.html +2 -2
  22. package/docs/classes/Modal.html +2 -2
  23. package/docs/classes/Navigation.html +3 -3
  24. package/docs/classes/Timeout.html +2 -2
  25. package/docs/enums/ActionButtonTypes.html +2 -2
  26. package/docs/functions/formatBytes.html +1 -1
  27. package/docs/functions/formatDateValue.html +1 -1
  28. package/docs/functions/formatTimeValue.html +1 -1
  29. package/docs/functions/getContextInfo.html +1 -1
  30. package/docs/functions/getFileExt.html +1 -1
  31. package/docs/functions/waitForTheme.html +1 -1
  32. package/docs/interfaces/IAuditLogItem.html +2 -2
  33. package/docs/interfaces/IAuditLogItemCreation.html +2 -2
  34. package/docs/interfaces/IAuditLogProps.html +2 -2
  35. package/docs/interfaces/IAuditLogViewProps.html +2 -2
  36. package/docs/interfaces/ICommentsItem.html +2 -2
  37. package/docs/interfaces/IDashboardProps.html +2 -2
  38. package/docs/interfaces/IDataTable.html +2 -2
  39. package/docs/interfaces/IDataTableProps.html +2 -2
  40. package/docs/interfaces/IDocumentsProps.html +2 -2
  41. package/docs/interfaces/IFilterItem.html +2 -2
  42. package/docs/interfaces/IFilterProps.html +2 -2
  43. package/docs/interfaces/IFooterProps.html +2 -2
  44. package/docs/interfaces/IHeaderProps.html +2 -2
  45. package/docs/interfaces/IInstallProps.html +2 -2
  46. package/docs/interfaces/IItemFormCreateProps.html +2 -2
  47. package/docs/interfaces/IItemFormEditProps.html +2 -2
  48. package/docs/interfaces/IItemFormTab.html +2 -2
  49. package/docs/interfaces/IItemFormTabInfo.html +2 -2
  50. package/docs/interfaces/IItemFormViewProps.html +2 -2
  51. package/docs/interfaces/IListProps.html +2 -2
  52. package/docs/interfaces/IListSecurity.html +2 -2
  53. package/docs/interfaces/IListSecurityItem.html +2 -2
  54. package/docs/interfaces/IShowDialogProps.html +2 -2
  55. package/docs/variables/DattaTable.html +1 -1
  56. package/docs/variables/ListSecurityDefaultGroups.html +1 -1
  57. package/package.json +1 -1
@@ -22,10 +22,10 @@ export declare class InstallationRequired {
22
22
  private static _customActionsExist;
23
23
  static get CustomActionsExist(): boolean;
24
24
  private static checkCustomActions;
25
- private static isOwnerOrAdmin;
26
25
  private static _listsExist;
27
26
  static get ListsExist(): boolean;
28
27
  private static checkLists;
28
+ private static checkUserPermissions;
29
29
  static requiresInstall(props: IInstallProps): PromiseLike<boolean>;
30
30
  static showDialog(props?: IShowDialogProps): void;
31
31
  private static showErrorDialog;
@@ -107,37 +107,6 @@ var InstallationRequired = /** @class */ (function () {
107
107
  });
108
108
  });
109
109
  };
110
- // Determines if the user is an owner or admin
111
- InstallationRequired.isOwnerOrAdmin = function () {
112
- // Return a promise
113
- return new Promise(function (resolve) {
114
- // Get the current user
115
- (0, gd_sprest_bs_1.Web)().CurrentUser().execute(function (user) {
116
- // See if they are an admin
117
- if (user.IsSiteAdmin) {
118
- // Resolve the request
119
- resolve(true);
120
- }
121
- else {
122
- // See if the user is part of the owner's group
123
- (0, gd_sprest_bs_1.Web)().AssociatedOwnerGroup().Users().getById(user.Id).execute(
124
- // Is an owner
125
- function () {
126
- // Resolve the request
127
- resolve(true);
128
- },
129
- // Not an owner
130
- function () {
131
- // Resolve the request
132
- resolve(false);
133
- });
134
- }
135
- }, function () {
136
- // Resolve the request
137
- resolve(false);
138
- });
139
- });
140
- };
141
110
  Object.defineProperty(InstallationRequired, "ListsExist", {
142
111
  get: function () { return this._listsExist; },
143
112
  enumerable: false,
@@ -204,6 +173,34 @@ var InstallationRequired = /** @class */ (function () {
204
173
  });
205
174
  });
206
175
  };
176
+ // Determines if the user is an owner or admin
177
+ InstallationRequired.checkUserPermissions = function () {
178
+ // Return a promise
179
+ return new Promise(function (resolve) {
180
+ // Get the current user information
181
+ (0, gd_sprest_bs_1.Web)().CurrentUser().execute(
182
+ // Success
183
+ function (user) {
184
+ // Get the current user permissions
185
+ (0, gd_sprest_bs_1.Web)().getUserEffectivePermissions(user.LoginName).execute(
186
+ // Success
187
+ function (permissions) {
188
+ // See if the user has manage web rights
189
+ resolve(gd_sprest_bs_1.Helper.hasPermissions(permissions.GetUserEffectivePermissions, gd_sprest_bs_1.SPTypes.BasePermissionTypes.ManageLists));
190
+ },
191
+ // Error
192
+ function () {
193
+ // Resolve the request
194
+ resolve(false);
195
+ });
196
+ },
197
+ // Error
198
+ function () {
199
+ // Resolve the request
200
+ resolve(false);
201
+ });
202
+ });
203
+ };
207
204
  // Checks the configuration to see if an installation is required
208
205
  InstallationRequired.requiresInstall = function (props) {
209
206
  var _this = this;
@@ -213,8 +210,8 @@ var InstallationRequired = /** @class */ (function () {
213
210
  this._report = [];
214
211
  // Return a promise
215
212
  return new Promise(function (resolve, reject) {
216
- // Ensure this is an admin or owner
217
- _this.isOwnerOrAdmin().then(function (hasPermissions) {
213
+ // Check the user permissions
214
+ _this.checkUserPermissions().then(function (hasPermissions) {
218
215
  // See if they are not an owner or admin
219
216
  if (!hasPermissions) {
220
217
  // Reject the request
@@ -39,6 +39,7 @@ export declare class ListSecurity {
39
39
  private removeUser;
40
40
  constructor(props: IListSecurity);
41
41
  addToGroup(userId: number, groupName: string): PromiseLike<void>;
42
+ private checkUserPermissions;
42
43
  private configureList;
43
44
  private configureLists;
44
45
  private createGroups;
@@ -50,5 +51,5 @@ export declare class ListSecurity {
50
51
  removeFromGroup(userId: number, groupName: string): PromiseLike<void>;
51
52
  private renderModal;
52
53
  private resetPermissions;
53
- show(createFl?: boolean, onComplete?: () => void): void;
54
+ show(createFl?: boolean, onComplete?: () => void, onError?: () => void): void;
54
55
  }
@@ -104,6 +104,25 @@ var ListSecurity = /** @class */ (function () {
104
104
  }, reject);
105
105
  });
106
106
  };
107
+ // Determines if the user is an owner or admin
108
+ ListSecurity.prototype.checkUserPermissions = function () {
109
+ var _this = this;
110
+ // Return a promise
111
+ return new Promise(function (resolve) {
112
+ // Get the current user permissions
113
+ (0, gd_sprest_bs_1.Web)().getUserEffectivePermissions(_this.CurrentUser.LoginName).execute(
114
+ // Success
115
+ function (permissions) {
116
+ // See if the user has manage web rights
117
+ resolve(gd_sprest_bs_1.Helper.hasPermissions(permissions.GetUserEffectivePermissions, gd_sprest_bs_1.SPTypes.BasePermissionTypes.ManageWeb));
118
+ },
119
+ // Error
120
+ function () {
121
+ // Resolve the request
122
+ resolve(false);
123
+ });
124
+ });
125
+ };
107
126
  // Configures a list
108
127
  ListSecurity.prototype.configureList = function (listInfo) {
109
128
  var _this = this;
@@ -560,41 +579,55 @@ var ListSecurity = /** @class */ (function () {
560
579
  });
561
580
  };
562
581
  // Shows the modal
563
- ListSecurity.prototype.show = function (createFl, onComplete) {
582
+ ListSecurity.prototype.show = function (createFl, onComplete, onError) {
564
583
  var _this = this;
565
584
  if (createFl === void 0) { createFl = true; }
566
585
  // Show a loading dialog
567
- loadingDialog_1.LoadingDialog.setHeader("Loading the Security Information");
568
- loadingDialog_1.LoadingDialog.setBody("Loading the security group information...");
586
+ loadingDialog_1.LoadingDialog.setHeader("Loading the User Permissions");
587
+ loadingDialog_1.LoadingDialog.setBody("Checking to see if the user can manage this web...");
569
588
  loadingDialog_1.LoadingDialog.show();
570
- // Create the groups
571
- this.createGroups(createFl).then(function () {
589
+ // Check the user permissions
590
+ this.checkUserPermissions().then(function (hasPermissions) {
591
+ // Ensure they have permissions
592
+ if (!hasPermissions) {
593
+ // Close the dialog
594
+ loadingDialog_1.LoadingDialog.hide();
595
+ // Call the event and do nothing
596
+ onError ? onError() : null;
597
+ return;
598
+ }
572
599
  // Update the loading dialog
573
- loadingDialog_1.LoadingDialog.setBody("Waiting for the permission types to be loaded...");
574
- // Ensure the permissions are loaded
575
- var loopId = setInterval(function () {
576
- // See if the permissions exist
577
- if (_this._ddlItems && _this._permissionTypes) {
578
- // Hide the loading dialog
579
- loadingDialog_1.LoadingDialog.hide();
580
- // Show the modal
581
- _this.renderModal(function () {
600
+ loadingDialog_1.LoadingDialog.setHeader("Loading the Security Information");
601
+ loadingDialog_1.LoadingDialog.setBody("Loading the security group information...");
602
+ // Create the groups
603
+ _this.createGroups(createFl).then(function () {
604
+ // Update the loading dialog
605
+ loadingDialog_1.LoadingDialog.setBody("Waiting for the permission types to be loaded...");
606
+ // Ensure the permissions are loaded
607
+ var loopId = setInterval(function () {
608
+ // See if the permissions exist
609
+ if (_this._ddlItems && _this._permissionTypes) {
582
610
  // Hide the loading dialog
583
611
  loadingDialog_1.LoadingDialog.hide();
584
- // Call the event
585
- onComplete ? onComplete() : null;
586
- });
587
- // Stop the loop
588
- clearInterval(loopId);
589
- }
590
- }, 10);
591
- }, function () {
592
- // Hide the loading dialog
593
- loadingDialog_1.LoadingDialog.hide();
594
- // Show an error
595
- modal_1.Modal.setHeader("Security Groups");
596
- modal_1.Modal.setBody("Error loading/creating the security groups. Please contact your admin.");
597
- modal_1.Modal.show();
612
+ // Show the modal
613
+ _this.renderModal(function () {
614
+ // Hide the loading dialog
615
+ loadingDialog_1.LoadingDialog.hide();
616
+ // Call the event
617
+ onComplete ? onComplete() : null;
618
+ });
619
+ // Stop the loop
620
+ clearInterval(loopId);
621
+ }
622
+ }, 10);
623
+ }, function () {
624
+ // Hide the loading dialog
625
+ loadingDialog_1.LoadingDialog.hide();
626
+ // Show an error
627
+ modal_1.Modal.setHeader("Security Groups");
628
+ modal_1.Modal.setBody("Error loading/creating the security groups. Please contact your admin.");
629
+ modal_1.Modal.show();
630
+ });
598
631
  });
599
632
  };
600
633
  return ListSecurity;
@@ -82,7 +82,7 @@ eval("\r\n/** Common Components */\r\nvar __createBinding = (this && this.__crea
82
82
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
83
83
 
84
84
  "use strict";
85
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.InstallationRequired = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.10.96/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 * Installation Required\r\n * Checks the SharePoint configuration file to see if an install is required.\r\n */\r\nvar InstallationRequired = /** @class */ (function () {\r\n function InstallationRequired() {\r\n }\r\n Object.defineProperty(InstallationRequired, \"CustomActionsExist\", {\r\n get: function () { return this._customActionsExist; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n // Checks the custom actions\r\n InstallationRequired.checkCustomActions = function (cfg) {\r\n var _this = this;\r\n // Clear the flag\r\n this._customActionsExist = true;\r\n // Method to check the web custom actions\r\n var checkWeb = function () {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure custom actions exist\r\n if (cfg._configuration.CustomActionCfg == null || cfg._configuration.CustomActionCfg.Web == null || cfg._configuration.CustomActionCfg.Web.length == 0) {\r\n // Resolve the request\r\n resolve(null);\r\n return;\r\n }\r\n // Load the web custom actions\r\n var web = (0, gd_sprest_bs_1.Web)();\r\n web.UserCustomActions().execute(function (webCustomActions) {\r\n // Parse the web custom actions\r\n for (var i = 0; i < cfg._configuration.CustomActionCfg.Web.length; i++) {\r\n var customAction = cfg._configuration.CustomActionCfg.Web[i];\r\n var found = false;\r\n // Parse the web custom actions\r\n for (var j = 0; j < webCustomActions.results.length; j++) {\r\n // See if they match\r\n if (customAction.Title == webCustomActions.results[j].Title) {\r\n // Set the flag\r\n found = true;\r\n }\r\n }\r\n // See if it was not found\r\n if (!found) {\r\n // Set the error\r\n _this._report.push(\"Web Custom Action '\" + customAction.Title + \"' is missing.\");\r\n // Set the flag\r\n _this._customActionsExist = false;\r\n }\r\n }\r\n // Resolve the request\r\n resolve(null);\r\n });\r\n });\r\n };\r\n // Method to check the site custom actions\r\n var checkSite = function () {\r\n return new Promise(function (resolve) {\r\n // Ensure custom actions exist\r\n if (cfg._configuration.CustomActionCfg == null || cfg._configuration.CustomActionCfg.Site == null || cfg._configuration.CustomActionCfg.Site.length == 0) {\r\n // Resolve the request\r\n resolve(null);\r\n return;\r\n }\r\n // Load the site custom actions\r\n (0, gd_sprest_bs_1.Site)().UserCustomActions().execute(function (siteCustomActions) {\r\n // Parse the site custom actions\r\n for (var i = 0; i < cfg._configuration.CustomActionCfg.Site.length; i++) {\r\n var customAction = cfg._configuration.CustomActionCfg.Site[i];\r\n var found = false;\r\n // Parse the web custom actions\r\n for (var j = 0; j < siteCustomActions.results.length; j++) {\r\n // See if they match\r\n if (customAction.Title == siteCustomActions.results[j].Title) {\r\n // Set the flag\r\n found = true;\r\n }\r\n }\r\n // See if it was not found\r\n if (!found) {\r\n // Set the error\r\n _this._report.push(\"Site Custom Action '\" + customAction.Title + \"' is missing.\");\r\n // Set the flag\r\n _this._customActionsExist = false;\r\n }\r\n }\r\n // Resolve the request\r\n resolve(null);\r\n });\r\n });\r\n };\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Check the site & web\r\n Promise.all([\r\n checkSite(),\r\n checkWeb()\r\n ]).then(function () {\r\n // Resolve the request\r\n resolve();\r\n });\r\n });\r\n };\r\n // Determines if the user is an owner or admin\r\n InstallationRequired.isOwnerOrAdmin = function () {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the current user\r\n (0, gd_sprest_bs_1.Web)().CurrentUser().execute(function (user) {\r\n // See if they are an admin\r\n if (user.IsSiteAdmin) {\r\n // Resolve the request\r\n resolve(true);\r\n }\r\n else {\r\n // See if the user is part of the owner's group\r\n (0, gd_sprest_bs_1.Web)().AssociatedOwnerGroup().Users().getById(user.Id).execute(\r\n // Is an owner\r\n function () {\r\n // Resolve the request\r\n resolve(true);\r\n }, \r\n // Not an owner\r\n function () {\r\n // Resolve the request\r\n resolve(false);\r\n });\r\n }\r\n }, function () {\r\n // Resolve the request\r\n resolve(false);\r\n });\r\n });\r\n };\r\n Object.defineProperty(InstallationRequired, \"ListsExist\", {\r\n get: function () { return this._listsExist; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n // Checks the lists\r\n InstallationRequired.checkLists = function (cfg) {\r\n var _this = this;\r\n // Clear the flag\r\n this._listsExist = true;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure lists exist\r\n if (cfg._configuration.ListCfg == null || cfg._configuration.ListCfg.length == 0) {\r\n // Resolve the request\r\n resolve(null);\r\n return;\r\n }\r\n // Parse the lists\r\n gd_sprest_bs_1.Helper.Executor(cfg._configuration.ListCfg, function (listCfg) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the list\r\n (0, gd_sprest_bs_1.Web)().Lists(listCfg.ListInformation.Title).query({\r\n Expand: [\"Fields\"]\r\n }).execute(\r\n // Success\r\n function (list) {\r\n // Parse the custom fields\r\n gd_sprest_bs_1.Helper.Executor(listCfg.CustomFields, function (cfg) {\r\n var exists = false;\r\n // Parse the list fields\r\n for (var i = 0; i < list.Fields.results.length; i++) {\r\n // See if the field exists\r\n if (list.Fields.results[i].InternalName == cfg.name) {\r\n // Set the flag\r\n exists = true;\r\n break;\r\n }\r\n }\r\n // See if the field doesn't exist\r\n if (!exists) {\r\n // Field doesn't exist\r\n _this._report.push(\"List '\" + listCfg.ListInformation.Title + \"' is missing a field: \" + cfg.name);\r\n }\r\n }).then(function () {\r\n // Resolve the promise\r\n resolve(null);\r\n });\r\n }, \r\n // Error\r\n function () {\r\n // List doesn't exist\r\n _this._report.push(\"List '\" + listCfg.ListInformation.Title + \"' does not exist\");\r\n // Set the flag\r\n _this._listsExist = false;\r\n // Resolve the promise\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve();\r\n });\r\n });\r\n };\r\n // Checks the configuration to see if an installation is required\r\n InstallationRequired.requiresInstall = function (props) {\r\n var _this = this;\r\n // Save the configuration\r\n this._cfg = props.cfg;\r\n // Clear the report\r\n this._report = [];\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Ensure this is an admin or owner\r\n _this.isOwnerOrAdmin().then(function (hasPermissions) {\r\n // See if they are not an owner or admin\r\n if (!hasPermissions) {\r\n // Reject the request\r\n reject();\r\n return;\r\n }\r\n // Ensure this is an array\r\n var cfgs = typeof (_this._cfg.length) === \"number\" ? _this._cfg : [_this._cfg];\r\n // Parse the configurations\r\n gd_sprest_bs_1.Helper.Executor(cfgs, function (cfg) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n var numbOfErrors = _this._report.length;\r\n // Check the configuration\r\n Promise.all([\r\n // Check the custom actions\r\n _this.checkCustomActions(cfg),\r\n // Check the lists\r\n _this.checkLists(cfg)\r\n ]).then(function () {\r\n // See if there are errors\r\n if (_this._report.length > numbOfErrors) {\r\n // Execute the event\r\n props.onError ? props.onError(cfg) : null;\r\n }\r\n // Execute the event and see if a promise was returned\r\n var returnVal = props.onCompleted ? props.onCompleted() : null;\r\n if (returnVal && typeof (returnVal[\"then\"]) === \"function\") {\r\n // Wait for the request to complete\r\n returnVal.then(function () {\r\n // Resolve the request\r\n resolve(_this._report.length > 0);\r\n });\r\n }\r\n else {\r\n // Resolve the request\r\n resolve(_this._report.length > 0);\r\n }\r\n });\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve(_this._report.length > 0);\r\n });\r\n });\r\n });\r\n };\r\n InstallationRequired.showDialog = function (props) {\r\n var _this = this;\r\n if (props === void 0) { props = {}; }\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Ensure the configuration exists\r\n if (this._cfg == null || this._report == null) {\r\n // Show the error dialog\r\n this.showErrorDialog();\r\n return;\r\n }\r\n // Set the header\r\n modal_1.Modal.setHeader(\"Installation Required\");\r\n // Set the body\r\n modal_1.Modal.setBody(gd_sprest_bs_1.Components.Card({\r\n body: [\r\n {\r\n text: this._report.length > 0 || (props.errors && props.errors.length > 0) ?\r\n \"An installation is required. The following were missing in your environment:\" :\r\n \"No errors were detected.\"\r\n },\r\n {\r\n onRender: function (el) {\r\n var items = props.errors || [];\r\n // Parse the report\r\n for (var i = 0; i < _this._report.length; i++) {\r\n // Add the item\r\n items.push({ content: _this._report[i] });\r\n }\r\n // Render a list\r\n gd_sprest_bs_1.Components.ListGroup({\r\n el: el,\r\n items: items\r\n });\r\n }\r\n }\r\n ]\r\n }).el);\r\n // Render the install button\r\n var btnInstall = null;\r\n gd_sprest_bs_1.Components.Tooltip({\r\n el: modal_1.Modal.FooterElement,\r\n content: \"Installs the SharePoint Assets\",\r\n btnProps: {\r\n assignTo: function (btn) { btnInstall = btn; },\r\n text: \"Install\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineSuccess,\r\n onClick: function () {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Installing the Solution\");\r\n loadingDialog_1.LoadingDialog.setBody(\"This will close after the assets are installed.\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Ensure this is an array\r\n var cfgs = typeof (_this._cfg.length) === \"number\" ? _this._cfg : [_this._cfg];\r\n // Parse the configurations\r\n gd_sprest_bs_1.Helper.Executor(cfgs, function (cfg) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n cfg.install().then(function () {\r\n // Hide the button\r\n btnInstall.hide();\r\n // Show the refresh button\r\n btnRefresh.show();\r\n // Call the event\r\n props.onInstalled ? props.onInstalled(cfg) : null;\r\n // Check the next configuration\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Close the dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Call the event\r\n props.onCompleted ? props.onCompleted() : null;\r\n });\r\n }\r\n }\r\n });\r\n // Render the refresh button\r\n var btnRefresh = null;\r\n gd_sprest_bs_1.Components.Tooltip({\r\n el: modal_1.Modal.FooterElement,\r\n content: \"Refresh the Page\",\r\n btnProps: {\r\n assignTo: function (btn) { btnRefresh = btn; },\r\n className: \"d-none\",\r\n text: \"Refresh\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n // Refresh the page\r\n window.location.reload();\r\n }\r\n }\r\n });\r\n // Call the events\r\n props.onHeaderRendered ? props.onHeaderRendered(modal_1.Modal.HeaderElement) : null;\r\n props.onBodyRendered ? props.onBodyRendered(modal_1.Modal.BodyElement) : null;\r\n props.onFooterRendered ? props.onFooterRendered(modal_1.Modal.FooterElement) : null;\r\n // Show the modal\r\n modal_1.Modal.show();\r\n };\r\n InstallationRequired.showErrorDialog = function () {\r\n // Set the header\r\n modal_1.Modal.setHeader(\"Not Configured\");\r\n // Set the body\r\n modal_1.Modal.setBody(\"The component has not been configured. The SPConfiguration definition hasn't been initialized.\");\r\n // Show the dialog\r\n modal_1.Modal.show();\r\n };\r\n InstallationRequired._cfg = null;\r\n InstallationRequired._report = null;\r\n // Custom Actions exists\r\n InstallationRequired._customActionsExist = null;\r\n // Lists exists\r\n InstallationRequired._listsExist = null;\r\n return InstallationRequired;\r\n}());\r\nexports.InstallationRequired = InstallationRequired;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/installRequired.js?");
85
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.InstallationRequired = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.10.96/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 * Installation Required\r\n * Checks the SharePoint configuration file to see if an install is required.\r\n */\r\nvar InstallationRequired = /** @class */ (function () {\r\n function InstallationRequired() {\r\n }\r\n Object.defineProperty(InstallationRequired, \"CustomActionsExist\", {\r\n get: function () { return this._customActionsExist; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n // Checks the custom actions\r\n InstallationRequired.checkCustomActions = function (cfg) {\r\n var _this = this;\r\n // Clear the flag\r\n this._customActionsExist = true;\r\n // Method to check the web custom actions\r\n var checkWeb = function () {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure custom actions exist\r\n if (cfg._configuration.CustomActionCfg == null || cfg._configuration.CustomActionCfg.Web == null || cfg._configuration.CustomActionCfg.Web.length == 0) {\r\n // Resolve the request\r\n resolve(null);\r\n return;\r\n }\r\n // Load the web custom actions\r\n var web = (0, gd_sprest_bs_1.Web)();\r\n web.UserCustomActions().execute(function (webCustomActions) {\r\n // Parse the web custom actions\r\n for (var i = 0; i < cfg._configuration.CustomActionCfg.Web.length; i++) {\r\n var customAction = cfg._configuration.CustomActionCfg.Web[i];\r\n var found = false;\r\n // Parse the web custom actions\r\n for (var j = 0; j < webCustomActions.results.length; j++) {\r\n // See if they match\r\n if (customAction.Title == webCustomActions.results[j].Title) {\r\n // Set the flag\r\n found = true;\r\n }\r\n }\r\n // See if it was not found\r\n if (!found) {\r\n // Set the error\r\n _this._report.push(\"Web Custom Action '\" + customAction.Title + \"' is missing.\");\r\n // Set the flag\r\n _this._customActionsExist = false;\r\n }\r\n }\r\n // Resolve the request\r\n resolve(null);\r\n });\r\n });\r\n };\r\n // Method to check the site custom actions\r\n var checkSite = function () {\r\n return new Promise(function (resolve) {\r\n // Ensure custom actions exist\r\n if (cfg._configuration.CustomActionCfg == null || cfg._configuration.CustomActionCfg.Site == null || cfg._configuration.CustomActionCfg.Site.length == 0) {\r\n // Resolve the request\r\n resolve(null);\r\n return;\r\n }\r\n // Load the site custom actions\r\n (0, gd_sprest_bs_1.Site)().UserCustomActions().execute(function (siteCustomActions) {\r\n // Parse the site custom actions\r\n for (var i = 0; i < cfg._configuration.CustomActionCfg.Site.length; i++) {\r\n var customAction = cfg._configuration.CustomActionCfg.Site[i];\r\n var found = false;\r\n // Parse the web custom actions\r\n for (var j = 0; j < siteCustomActions.results.length; j++) {\r\n // See if they match\r\n if (customAction.Title == siteCustomActions.results[j].Title) {\r\n // Set the flag\r\n found = true;\r\n }\r\n }\r\n // See if it was not found\r\n if (!found) {\r\n // Set the error\r\n _this._report.push(\"Site Custom Action '\" + customAction.Title + \"' is missing.\");\r\n // Set the flag\r\n _this._customActionsExist = false;\r\n }\r\n }\r\n // Resolve the request\r\n resolve(null);\r\n });\r\n });\r\n };\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Check the site & web\r\n Promise.all([\r\n checkSite(),\r\n checkWeb()\r\n ]).then(function () {\r\n // Resolve the request\r\n resolve();\r\n });\r\n });\r\n };\r\n Object.defineProperty(InstallationRequired, \"ListsExist\", {\r\n get: function () { return this._listsExist; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n // Checks the lists\r\n InstallationRequired.checkLists = function (cfg) {\r\n var _this = this;\r\n // Clear the flag\r\n this._listsExist = true;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure lists exist\r\n if (cfg._configuration.ListCfg == null || cfg._configuration.ListCfg.length == 0) {\r\n // Resolve the request\r\n resolve(null);\r\n return;\r\n }\r\n // Parse the lists\r\n gd_sprest_bs_1.Helper.Executor(cfg._configuration.ListCfg, function (listCfg) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the list\r\n (0, gd_sprest_bs_1.Web)().Lists(listCfg.ListInformation.Title).query({\r\n Expand: [\"Fields\"]\r\n }).execute(\r\n // Success\r\n function (list) {\r\n // Parse the custom fields\r\n gd_sprest_bs_1.Helper.Executor(listCfg.CustomFields, function (cfg) {\r\n var exists = false;\r\n // Parse the list fields\r\n for (var i = 0; i < list.Fields.results.length; i++) {\r\n // See if the field exists\r\n if (list.Fields.results[i].InternalName == cfg.name) {\r\n // Set the flag\r\n exists = true;\r\n break;\r\n }\r\n }\r\n // See if the field doesn't exist\r\n if (!exists) {\r\n // Field doesn't exist\r\n _this._report.push(\"List '\" + listCfg.ListInformation.Title + \"' is missing a field: \" + cfg.name);\r\n }\r\n }).then(function () {\r\n // Resolve the promise\r\n resolve(null);\r\n });\r\n }, \r\n // Error\r\n function () {\r\n // List doesn't exist\r\n _this._report.push(\"List '\" + listCfg.ListInformation.Title + \"' does not exist\");\r\n // Set the flag\r\n _this._listsExist = false;\r\n // Resolve the promise\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve();\r\n });\r\n });\r\n };\r\n // Determines if the user is an owner or admin\r\n InstallationRequired.checkUserPermissions = function () {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the current user information\r\n (0, gd_sprest_bs_1.Web)().CurrentUser().execute(\r\n // Success\r\n function (user) {\r\n // Get the current user permissions\r\n (0, gd_sprest_bs_1.Web)().getUserEffectivePermissions(user.LoginName).execute(\r\n // Success\r\n function (permissions) {\r\n // See if the user has manage web rights\r\n resolve(gd_sprest_bs_1.Helper.hasPermissions(permissions.GetUserEffectivePermissions, gd_sprest_bs_1.SPTypes.BasePermissionTypes.ManageLists));\r\n }, \r\n // Error\r\n function () {\r\n // Resolve the request\r\n resolve(false);\r\n });\r\n }, \r\n // Error\r\n function () {\r\n // Resolve the request\r\n resolve(false);\r\n });\r\n });\r\n };\r\n // Checks the configuration to see if an installation is required\r\n InstallationRequired.requiresInstall = function (props) {\r\n var _this = this;\r\n // Save the configuration\r\n this._cfg = props.cfg;\r\n // Clear the report\r\n this._report = [];\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Check the user permissions\r\n _this.checkUserPermissions().then(function (hasPermissions) {\r\n // See if they are not an owner or admin\r\n if (!hasPermissions) {\r\n // Reject the request\r\n reject();\r\n return;\r\n }\r\n // Ensure this is an array\r\n var cfgs = typeof (_this._cfg.length) === \"number\" ? _this._cfg : [_this._cfg];\r\n // Parse the configurations\r\n gd_sprest_bs_1.Helper.Executor(cfgs, function (cfg) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n var numbOfErrors = _this._report.length;\r\n // Check the configuration\r\n Promise.all([\r\n // Check the custom actions\r\n _this.checkCustomActions(cfg),\r\n // Check the lists\r\n _this.checkLists(cfg)\r\n ]).then(function () {\r\n // See if there are errors\r\n if (_this._report.length > numbOfErrors) {\r\n // Execute the event\r\n props.onError ? props.onError(cfg) : null;\r\n }\r\n // Execute the event and see if a promise was returned\r\n var returnVal = props.onCompleted ? props.onCompleted() : null;\r\n if (returnVal && typeof (returnVal[\"then\"]) === \"function\") {\r\n // Wait for the request to complete\r\n returnVal.then(function () {\r\n // Resolve the request\r\n resolve(_this._report.length > 0);\r\n });\r\n }\r\n else {\r\n // Resolve the request\r\n resolve(_this._report.length > 0);\r\n }\r\n });\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve(_this._report.length > 0);\r\n });\r\n });\r\n });\r\n };\r\n InstallationRequired.showDialog = function (props) {\r\n var _this = this;\r\n if (props === void 0) { props = {}; }\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Ensure the configuration exists\r\n if (this._cfg == null || this._report == null) {\r\n // Show the error dialog\r\n this.showErrorDialog();\r\n return;\r\n }\r\n // Set the header\r\n modal_1.Modal.setHeader(\"Installation Required\");\r\n // Set the body\r\n modal_1.Modal.setBody(gd_sprest_bs_1.Components.Card({\r\n body: [\r\n {\r\n text: this._report.length > 0 || (props.errors && props.errors.length > 0) ?\r\n \"An installation is required. The following were missing in your environment:\" :\r\n \"No errors were detected.\"\r\n },\r\n {\r\n onRender: function (el) {\r\n var items = props.errors || [];\r\n // Parse the report\r\n for (var i = 0; i < _this._report.length; i++) {\r\n // Add the item\r\n items.push({ content: _this._report[i] });\r\n }\r\n // Render a list\r\n gd_sprest_bs_1.Components.ListGroup({\r\n el: el,\r\n items: items\r\n });\r\n }\r\n }\r\n ]\r\n }).el);\r\n // Render the install button\r\n var btnInstall = null;\r\n gd_sprest_bs_1.Components.Tooltip({\r\n el: modal_1.Modal.FooterElement,\r\n content: \"Installs the SharePoint Assets\",\r\n btnProps: {\r\n assignTo: function (btn) { btnInstall = btn; },\r\n text: \"Install\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineSuccess,\r\n onClick: function () {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Installing the Solution\");\r\n loadingDialog_1.LoadingDialog.setBody(\"This will close after the assets are installed.\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Ensure this is an array\r\n var cfgs = typeof (_this._cfg.length) === \"number\" ? _this._cfg : [_this._cfg];\r\n // Parse the configurations\r\n gd_sprest_bs_1.Helper.Executor(cfgs, function (cfg) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n cfg.install().then(function () {\r\n // Hide the button\r\n btnInstall.hide();\r\n // Show the refresh button\r\n btnRefresh.show();\r\n // Call the event\r\n props.onInstalled ? props.onInstalled(cfg) : null;\r\n // Check the next configuration\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Close the dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Call the event\r\n props.onCompleted ? props.onCompleted() : null;\r\n });\r\n }\r\n }\r\n });\r\n // Render the refresh button\r\n var btnRefresh = null;\r\n gd_sprest_bs_1.Components.Tooltip({\r\n el: modal_1.Modal.FooterElement,\r\n content: \"Refresh the Page\",\r\n btnProps: {\r\n assignTo: function (btn) { btnRefresh = btn; },\r\n className: \"d-none\",\r\n text: \"Refresh\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n // Refresh the page\r\n window.location.reload();\r\n }\r\n }\r\n });\r\n // Call the events\r\n props.onHeaderRendered ? props.onHeaderRendered(modal_1.Modal.HeaderElement) : null;\r\n props.onBodyRendered ? props.onBodyRendered(modal_1.Modal.BodyElement) : null;\r\n props.onFooterRendered ? props.onFooterRendered(modal_1.Modal.FooterElement) : null;\r\n // Show the modal\r\n modal_1.Modal.show();\r\n };\r\n InstallationRequired.showErrorDialog = function () {\r\n // Set the header\r\n modal_1.Modal.setHeader(\"Not Configured\");\r\n // Set the body\r\n modal_1.Modal.setBody(\"The component has not been configured. The SPConfiguration definition hasn't been initialized.\");\r\n // Show the dialog\r\n modal_1.Modal.show();\r\n };\r\n InstallationRequired._cfg = null;\r\n InstallationRequired._report = null;\r\n // Custom Actions exists\r\n InstallationRequired._customActionsExist = null;\r\n // Lists exists\r\n InstallationRequired._listsExist = null;\r\n return InstallationRequired;\r\n}());\r\nexports.InstallationRequired = InstallationRequired;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/installRequired.js?");
86
86
 
87
87
  /***/ }),
88
88
 
@@ -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 = exports.ListSecurityDefaultGroups = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.10.96/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar methods_1 = __webpack_require__(/*! ./methods */ \"./build/common/methods.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 var _this = this;\r\n this._ddlItems = null;\r\n this._permissionTypes = null;\r\n this._props = null;\r\n this._requestDigest = null;\r\n // Current User\r\n this._currentUser = 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 context information\r\n (0, methods_1.getContextInfo)(this._props.webUrl).then(function (requestDigest) {\r\n // Set the request digest value\r\n _this._requestDigest = requestDigest;\r\n // Get the current user information\r\n _this.loadCurrentUser();\r\n // Get the permission types\r\n _this.getPermissionTypes();\r\n // Load the groups\r\n _this.loadGroups();\r\n });\r\n }\r\n Object.defineProperty(ListSecurity.prototype, \"CurrentUser\", {\r\n get: function () { return this._currentUser; },\r\n enumerable: false,\r\n configurable: true\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 ListSecurity.prototype.addUser = function (user, groupName) {\r\n // Ensure the group exists\r\n var key = groupName.toLowerCase();\r\n if (this._groupUsers[key]) {\r\n // Add the user to the group\r\n this._groupUsers[key].push(user);\r\n }\r\n };\r\n ListSecurity.prototype.removeUser = function (userId, groupName) {\r\n // Ensure the group exists\r\n var key = groupName.toLowerCase();\r\n if (this._groupUsers[key]) {\r\n // Find the idx of the user\r\n for (var i = 0; i < this._groupUsers[key].length; i++) {\r\n // See if this is the user\r\n var user = this._groupUsers[key][i];\r\n if (user.Id == userId) {\r\n // Remove the user\r\n this._groupUsers[key].splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n // Method to check if the user is w/in a group and add them otherwise\r\n ListSecurity.prototype.addToGroup = function (userId, groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if the user is in the group\r\n if (_this.isInGroup(userId, groupName)) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Add the user to the group\r\n _this._groups[groupName].Users().addUserById(userId).execute(function (user) {\r\n // Add the user to the group\r\n _this.addUser(user, groupName);\r\n // Resolve the request\r\n resolve();\r\n }, reject);\r\n });\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, { requestDigest: _this._requestDigest }).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 // Return a promise\r\n return new Promise(function (resolve, reject) {\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 }).then(resolve, reject);\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 () {\r\n // Check the next group\r\n resolve(null);\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, { requestDigest: _this._requestDigest }).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 }).then(resolve, reject);\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, { requestDigest: _this._requestDigest }).AssociatedOwnerGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n _this.setGroup(group.Title.toLowerCase(), group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).AssociatedMemberGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n _this.setGroup(group.Title.toLowerCase(), group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).AssociatedVisitorGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n _this.setGroup(group.Title.toLowerCase(), group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).SiteGroups().getByName(groupName).query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).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 current user\r\n ListSecurity.prototype.loadCurrentUser = function () {\r\n var _this = this;\r\n // Load the current user\r\n (0, gd_sprest_bs_1.Web)(this._props.webUrl, { requestDigest: this._requestDigest }).CurrentUser().execute(\r\n // Success\r\n function (user) {\r\n // Set the user\r\n _this._currentUser = user;\r\n }, \r\n // Error\r\n function () {\r\n // Log\r\n console.error(\"Unable to load the current user\");\r\n // Set the information from the context info\r\n _this._currentUser = {\r\n Email: gd_sprest_bs_1.ContextInfo.userEmail,\r\n Id: gd_sprest_bs_1.ContextInfo.userId,\r\n LoginName: gd_sprest_bs_1.ContextInfo.userLoginName,\r\n Title: gd_sprest_bs_1.ContextInfo.userDisplayName,\r\n UserPrincipalName: gd_sprest_bs_1.ContextInfo.userPrincipalName\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 var groupNames = [];\r\n // Parse the security groups\r\n var groups = this._props.groups || [];\r\n for (var i = 0; i < groups.length; i++) {\r\n // Add the group name\r\n groupNames.push(groups[i].Title);\r\n }\r\n // Parse the list items\r\n var loadDefaultOwner = false;\r\n var loadDefaultMember = false;\r\n var loadDefaultVisitor = false;\r\n for (var i = 0; i < this._props.listItems.length; i++) {\r\n // See if this item uses a default group name\r\n switch (this._props.listItems[i].groupName) {\r\n // Members Group\r\n case exports.ListSecurityDefaultGroups.Members:\r\n loadDefaultMember = true;\r\n break;\r\n // Owners Group\r\n case exports.ListSecurityDefaultGroups.Owners:\r\n loadDefaultOwner = true;\r\n break;\r\n // Visitors Group\r\n case exports.ListSecurityDefaultGroups.Visitors:\r\n loadDefaultVisitor = true;\r\n break;\r\n }\r\n }\r\n // Append the group names\r\n loadDefaultMember ? groupNames.push(exports.ListSecurityDefaultGroups.Members) : null;\r\n loadDefaultOwner ? groupNames.push(exports.ListSecurityDefaultGroups.Owners) : null;\r\n loadDefaultVisitor ? groupNames.push(exports.ListSecurityDefaultGroups.Visitors) : null;\r\n // Parse the security groups\r\n gd_sprest_bs_1.Helper.Executor(groupNames, function (groupName) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Load the group\r\n _this.getGroupId(groupName).then(resolve, resolve);\r\n });\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 // Method remove a user from a specified group\r\n ListSecurity.prototype.removeFromGroup = function (userId, groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if the user is not in the group\r\n if (!_this.isInGroup(userId, groupName)) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Remove the user from the group\r\n _this._groups[groupName].Users().removeById(userId).execute(function () {\r\n // Add the user to the group\r\n _this.removeUser(userId, groupName);\r\n // Resolve the request\r\n resolve();\r\n }, reject);\r\n });\r\n };\r\n // Render the modal\r\n ListSecurity.prototype.renderModal = function (onComplete) {\r\n var _this = this;\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Set the size\r\n modal_1.Modal.setType(gd_sprest_bs_1.Components.ModalTypes.XLarge);\r\n // Set the header\r\n modal_1.Modal.setHeader(\"List Security\");\r\n // Get the default groups\r\n var defaultGroups = {};\r\n defaultGroups[exports.ListSecurityDefaultGroups.Members] = this.getGroup(exports.ListSecurityDefaultGroups.Members);\r\n defaultGroups[exports.ListSecurityDefaultGroups.Owners] = this.getGroup(exports.ListSecurityDefaultGroups.Owners);\r\n defaultGroups[exports.ListSecurityDefaultGroups.Visitors] = this.getGroup(exports.ListSecurityDefaultGroups.Visitors);\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 // Set the group name\r\n var groupName = listItem.groupName;\r\n if (defaultGroups[groupName]) {\r\n // Set the group name\r\n groupName = defaultGroups[groupName].Title;\r\n }\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: 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 className: \"list-security-form\",\r\n el: modal_1.Modal.BodyElement,\r\n rows: rows\r\n });\r\n // Gets the list names\r\n var getListNames = 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].value\r\n });\r\n }\r\n // Return the list names\r\n return lists;\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: \"Configure the list to inherit permissions from the web\",\r\n btnProps: {\r\n text: \"Inherit\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n // Reset the list permissions\r\n _this.resetPermissions(getListNames(), false).then(onComplete);\r\n }\r\n }\r\n },\r\n {\r\n content: \"Configure 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 // Configure the lists\r\n _this.configureLists(getListNames()).then(onComplete);\r\n }\r\n }\r\n },\r\n {\r\n content: \"Close this modal\",\r\n btnProps: {\r\n text: \"Close\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineSecondary,\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 });\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, breakInheritance) {\r\n var _this = this;\r\n if (breakInheritance === void 0) { breakInheritance = true; }\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, { requestDigest: _this._requestDigest }).Lists(listName);\r\n // Reset the permissions\r\n list.resetRoleInheritance().execute();\r\n // Revert to the default\r\n if (breakInheritance) {\r\n list.breakRoleInheritance(false, true).execute(true);\r\n }\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, onComplete) {\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(function () {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Call the event\r\n onComplete ? onComplete() : null;\r\n });\r\n // Stop the loop\r\n clearInterval(loopId);\r\n }\r\n }, 10);\r\n }, function () {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Show an error\r\n modal_1.Modal.setHeader(\"Security Groups\");\r\n modal_1.Modal.setBody(\"Error loading/creating the security groups. Please contact your admin.\");\r\n modal_1.Modal.show();\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.96/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar methods_1 = __webpack_require__(/*! ./methods */ \"./build/common/methods.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 var _this = this;\r\n this._ddlItems = null;\r\n this._permissionTypes = null;\r\n this._props = null;\r\n this._requestDigest = null;\r\n // Current User\r\n this._currentUser = 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 context information\r\n (0, methods_1.getContextInfo)(this._props.webUrl).then(function (requestDigest) {\r\n // Set the request digest value\r\n _this._requestDigest = requestDigest;\r\n // Get the current user information\r\n _this.loadCurrentUser();\r\n // Get the permission types\r\n _this.getPermissionTypes();\r\n // Load the groups\r\n _this.loadGroups();\r\n });\r\n }\r\n Object.defineProperty(ListSecurity.prototype, \"CurrentUser\", {\r\n get: function () { return this._currentUser; },\r\n enumerable: false,\r\n configurable: true\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 ListSecurity.prototype.addUser = function (user, groupName) {\r\n // Ensure the group exists\r\n var key = groupName.toLowerCase();\r\n if (this._groupUsers[key]) {\r\n // Add the user to the group\r\n this._groupUsers[key].push(user);\r\n }\r\n };\r\n ListSecurity.prototype.removeUser = function (userId, groupName) {\r\n // Ensure the group exists\r\n var key = groupName.toLowerCase();\r\n if (this._groupUsers[key]) {\r\n // Find the idx of the user\r\n for (var i = 0; i < this._groupUsers[key].length; i++) {\r\n // See if this is the user\r\n var user = this._groupUsers[key][i];\r\n if (user.Id == userId) {\r\n // Remove the user\r\n this._groupUsers[key].splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n // Method to check if the user is w/in a group and add them otherwise\r\n ListSecurity.prototype.addToGroup = function (userId, groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if the user is in the group\r\n if (_this.isInGroup(userId, groupName)) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Add the user to the group\r\n _this._groups[groupName].Users().addUserById(userId).execute(function (user) {\r\n // Add the user to the group\r\n _this.addUser(user, groupName);\r\n // Resolve the request\r\n resolve();\r\n }, reject);\r\n });\r\n };\r\n // Determines if the user is an owner or admin\r\n ListSecurity.prototype.checkUserPermissions = function () {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the current user permissions\r\n (0, gd_sprest_bs_1.Web)().getUserEffectivePermissions(_this.CurrentUser.LoginName).execute(\r\n // Success\r\n function (permissions) {\r\n // See if the user has manage web rights\r\n resolve(gd_sprest_bs_1.Helper.hasPermissions(permissions.GetUserEffectivePermissions, gd_sprest_bs_1.SPTypes.BasePermissionTypes.ManageWeb));\r\n }, \r\n // Error\r\n function () {\r\n // Resolve the request\r\n resolve(false);\r\n });\r\n });\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, { requestDigest: _this._requestDigest }).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 // Return a promise\r\n return new Promise(function (resolve, reject) {\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 }).then(resolve, reject);\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 () {\r\n // Check the next group\r\n resolve(null);\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, { requestDigest: _this._requestDigest }).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 }).then(resolve, reject);\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, { requestDigest: _this._requestDigest }).AssociatedOwnerGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n _this.setGroup(group.Title.toLowerCase(), group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).AssociatedMemberGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n _this.setGroup(group.Title.toLowerCase(), group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).AssociatedVisitorGroup().query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n _this.setGroup(group.Title.toLowerCase(), group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).SiteGroups().getByName(groupName).query({\r\n Expand: [\"Users\"]\r\n }).execute(function (group) {\r\n _this.setGroup(key, group);\r\n resolve(group.Id);\r\n }, 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, { requestDigest: _this._requestDigest }).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 current user\r\n ListSecurity.prototype.loadCurrentUser = function () {\r\n var _this = this;\r\n // Load the current user\r\n (0, gd_sprest_bs_1.Web)(this._props.webUrl, { requestDigest: this._requestDigest }).CurrentUser().execute(\r\n // Success\r\n function (user) {\r\n // Set the user\r\n _this._currentUser = user;\r\n }, \r\n // Error\r\n function () {\r\n // Log\r\n console.error(\"Unable to load the current user\");\r\n // Set the information from the context info\r\n _this._currentUser = {\r\n Email: gd_sprest_bs_1.ContextInfo.userEmail,\r\n Id: gd_sprest_bs_1.ContextInfo.userId,\r\n LoginName: gd_sprest_bs_1.ContextInfo.userLoginName,\r\n Title: gd_sprest_bs_1.ContextInfo.userDisplayName,\r\n UserPrincipalName: gd_sprest_bs_1.ContextInfo.userPrincipalName\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 var groupNames = [];\r\n // Parse the security groups\r\n var groups = this._props.groups || [];\r\n for (var i = 0; i < groups.length; i++) {\r\n // Add the group name\r\n groupNames.push(groups[i].Title);\r\n }\r\n // Parse the list items\r\n var loadDefaultOwner = false;\r\n var loadDefaultMember = false;\r\n var loadDefaultVisitor = false;\r\n for (var i = 0; i < this._props.listItems.length; i++) {\r\n // See if this item uses a default group name\r\n switch (this._props.listItems[i].groupName) {\r\n // Members Group\r\n case exports.ListSecurityDefaultGroups.Members:\r\n loadDefaultMember = true;\r\n break;\r\n // Owners Group\r\n case exports.ListSecurityDefaultGroups.Owners:\r\n loadDefaultOwner = true;\r\n break;\r\n // Visitors Group\r\n case exports.ListSecurityDefaultGroups.Visitors:\r\n loadDefaultVisitor = true;\r\n break;\r\n }\r\n }\r\n // Append the group names\r\n loadDefaultMember ? groupNames.push(exports.ListSecurityDefaultGroups.Members) : null;\r\n loadDefaultOwner ? groupNames.push(exports.ListSecurityDefaultGroups.Owners) : null;\r\n loadDefaultVisitor ? groupNames.push(exports.ListSecurityDefaultGroups.Visitors) : null;\r\n // Parse the security groups\r\n gd_sprest_bs_1.Helper.Executor(groupNames, function (groupName) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Load the group\r\n _this.getGroupId(groupName).then(resolve, resolve);\r\n });\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 // Method remove a user from a specified group\r\n ListSecurity.prototype.removeFromGroup = function (userId, groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if the user is not in the group\r\n if (!_this.isInGroup(userId, groupName)) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Remove the user from the group\r\n _this._groups[groupName].Users().removeById(userId).execute(function () {\r\n // Add the user to the group\r\n _this.removeUser(userId, groupName);\r\n // Resolve the request\r\n resolve();\r\n }, reject);\r\n });\r\n };\r\n // Render the modal\r\n ListSecurity.prototype.renderModal = function (onComplete) {\r\n var _this = this;\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Set the size\r\n modal_1.Modal.setType(gd_sprest_bs_1.Components.ModalTypes.XLarge);\r\n // Set the header\r\n modal_1.Modal.setHeader(\"List Security\");\r\n // Get the default groups\r\n var defaultGroups = {};\r\n defaultGroups[exports.ListSecurityDefaultGroups.Members] = this.getGroup(exports.ListSecurityDefaultGroups.Members);\r\n defaultGroups[exports.ListSecurityDefaultGroups.Owners] = this.getGroup(exports.ListSecurityDefaultGroups.Owners);\r\n defaultGroups[exports.ListSecurityDefaultGroups.Visitors] = this.getGroup(exports.ListSecurityDefaultGroups.Visitors);\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 // Set the group name\r\n var groupName = listItem.groupName;\r\n if (defaultGroups[groupName]) {\r\n // Set the group name\r\n groupName = defaultGroups[groupName].Title;\r\n }\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: 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 className: \"list-security-form\",\r\n el: modal_1.Modal.BodyElement,\r\n rows: rows\r\n });\r\n // Gets the list names\r\n var getListNames = 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].value\r\n });\r\n }\r\n // Return the list names\r\n return lists;\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: \"Configure the list to inherit permissions from the web\",\r\n btnProps: {\r\n text: \"Inherit\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n // Reset the list permissions\r\n _this.resetPermissions(getListNames(), false).then(onComplete);\r\n }\r\n }\r\n },\r\n {\r\n content: \"Configure 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 // Configure the lists\r\n _this.configureLists(getListNames()).then(onComplete);\r\n }\r\n }\r\n },\r\n {\r\n content: \"Close this modal\",\r\n btnProps: {\r\n text: \"Close\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineSecondary,\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 });\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, breakInheritance) {\r\n var _this = this;\r\n if (breakInheritance === void 0) { breakInheritance = true; }\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, { requestDigest: _this._requestDigest }).Lists(listName);\r\n // Reset the permissions\r\n list.resetRoleInheritance().execute();\r\n // Revert to the default\r\n if (breakInheritance) {\r\n list.breakRoleInheritance(false, true).execute(true);\r\n }\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, onComplete, onError) {\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 User Permissions\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Checking to see if the user can manage this web...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Check the user permissions\r\n this.checkUserPermissions().then(function (hasPermissions) {\r\n // Ensure they have permissions\r\n if (!hasPermissions) {\r\n // Close the dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Call the event and do nothing\r\n onError ? onError() : null;\r\n return;\r\n }\r\n // Update the 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 // 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(function () {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Call the event\r\n onComplete ? onComplete() : null;\r\n });\r\n // Stop the loop\r\n clearInterval(loopId);\r\n }\r\n }, 10);\r\n }, function () {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Show an error\r\n modal_1.Modal.setHeader(\"Security Groups\");\r\n modal_1.Modal.setBody(\"Error loading/creating the security groups. Please contact your admin.\");\r\n modal_1.Modal.show();\r\n });\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