@adaptabletools/adaptable-cjs 22.0.0-canary.6 → 22.0.0-canary.8

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 (150) hide show
  1. package/index.css +63 -74
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableInterfaces/IAdaptable.d.ts +6 -6
  5. package/src/AdaptableOptions/ContainerOptions.d.ts +55 -15
  6. package/src/AdaptableState/AdaptableState.d.ts +2 -0
  7. package/src/AdaptableState/AlertState.d.ts +1 -2
  8. package/src/AdaptableState/Common/AdaptableColumnContext.d.ts +9 -0
  9. package/src/AdaptableState/Common/AdaptableObject.d.ts +4 -0
  10. package/src/AdaptableState/Common/AdaptableRowContext.d.ts +11 -0
  11. package/src/AdaptableState/Common/AdaptableRowContext.js +2 -0
  12. package/src/AdaptableState/Common/BaseContext.d.ts +2 -0
  13. package/src/AdaptableState/Common/DataUpdateConfig.d.ts +7 -0
  14. package/src/AdaptableState/Common/NamedObject.d.ts +10 -0
  15. package/src/AdaptableState/Common/NamedObject.js +2 -0
  16. package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
  17. package/src/AdaptableState/Common/Schedule.d.ts +2 -2
  18. package/src/AdaptableState/Common/SuspendableObject.d.ts +10 -0
  19. package/src/AdaptableState/Common/SuspendableObject.js +2 -0
  20. package/src/AdaptableState/Common/TransposeConfig.d.ts +11 -9
  21. package/src/AdaptableState/CustomSortState.d.ts +1 -1
  22. package/src/AdaptableState/FormatColumnState.d.ts +1 -1
  23. package/src/AdaptableState/InitialState.d.ts +9 -0
  24. package/src/AdaptableState/LayoutState.d.ts +2 -3
  25. package/src/AdaptableState/PlusMinusState.d.ts +1 -1
  26. package/src/AdaptableState/ShortcutState.d.ts +1 -1
  27. package/src/AdaptableState/StyledColumnState.d.ts +1 -1
  28. package/src/AdaptableState/UserInterfaceState.d.ts +14 -0
  29. package/src/AdaptableState/UserInterfaceState.js +2 -0
  30. package/src/Api/AlertApi.d.ts +6 -0
  31. package/src/Api/CustomSortApi.d.ts +6 -0
  32. package/src/Api/FlashingCellApi.d.ts +6 -0
  33. package/src/Api/FormatColumnApi.d.ts +10 -4
  34. package/src/Api/GridApi.d.ts +5 -9
  35. package/src/Api/Implementation/AlertApiImpl.d.ts +1 -0
  36. package/src/Api/Implementation/AlertApiImpl.js +5 -6
  37. package/src/Api/Implementation/ChartingApiImpl.js +2 -2
  38. package/src/Api/Implementation/CustomSortApiImpl.d.ts +1 -0
  39. package/src/Api/Implementation/CustomSortApiImpl.js +3 -0
  40. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +1 -0
  41. package/src/Api/Implementation/FlashingCellApiImpl.js +3 -0
  42. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +6 -5
  43. package/src/Api/Implementation/FormatColumnApiImpl.js +6 -5
  44. package/src/Api/Implementation/GridApiImpl.d.ts +2 -6
  45. package/src/Api/Implementation/GridApiImpl.js +9 -9
  46. package/src/Api/Implementation/LayoutApiImpl.d.ts +1 -0
  47. package/src/Api/Implementation/LayoutApiImpl.js +4 -1
  48. package/src/Api/Implementation/NamedQueryApiImpl.js +2 -2
  49. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +1 -0
  50. package/src/Api/Implementation/PlusMinusApiImpl.js +3 -0
  51. package/src/Api/Implementation/ScheduleApiImpl.d.ts +1 -0
  52. package/src/Api/Implementation/ScheduleApiImpl.js +3 -0
  53. package/src/Api/Implementation/ShortcutApiImpl.d.ts +1 -0
  54. package/src/Api/Implementation/ShortcutApiImpl.js +3 -0
  55. package/src/Api/Implementation/SystemStatusApiImpl.js +6 -9
  56. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +5 -0
  57. package/src/Api/Implementation/UserInterfaceApiImpl.js +13 -0
  58. package/src/Api/Internal/CalculatedColumnInternalApi.js +2 -2
  59. package/src/Api/Internal/FreeTextColumnInternalApi.js +2 -2
  60. package/src/Api/Internal/LayoutInternalApi.js +1 -1
  61. package/src/Api/Internal/NamedQueryInternalApi.js +4 -4
  62. package/src/Api/LayoutApi.d.ts +6 -0
  63. package/src/Api/PlusMinusApi.d.ts +6 -0
  64. package/src/Api/ScheduleApi.d.ts +6 -0
  65. package/src/Api/ShortcutApi.d.ts +6 -0
  66. package/src/Api/UserInterfaceApi.d.ts +17 -0
  67. package/src/Redux/ActionsReducers/FormatColumnRedux.d.ts +8 -0
  68. package/src/Redux/ActionsReducers/FormatColumnRedux.js +17 -1
  69. package/src/Redux/ActionsReducers/UserInterfaceRedux.d.ts +11 -0
  70. package/src/Redux/ActionsReducers/UserInterfaceRedux.js +26 -0
  71. package/src/Redux/Store/AdaptableStore.js +45 -16
  72. package/src/Strategy/BulkUpdateModule.js +8 -8
  73. package/src/Strategy/PlusMinusModule.js +1 -1
  74. package/src/Strategy/QuickSearchModule.js +1 -1
  75. package/src/Strategy/SettingsPanelModule.js +11 -7
  76. package/src/Strategy/SmartEditModule.js +10 -10
  77. package/src/Utilities/Services/DataService.js +1 -1
  78. package/src/Utilities/Services/Fdc3Service.js +4 -4
  79. package/src/Utilities/Services/ModuleService.js +1 -3
  80. package/src/Utilities/Services/ThemeService.js +2 -6
  81. package/src/Utilities/Services/ValidationService.js +1 -1
  82. package/src/Utilities/logDeprecation.js +3 -4
  83. package/src/Utilities/resolveContainerElement.d.ts +23 -0
  84. package/src/Utilities/resolveContainerElement.js +47 -0
  85. package/src/View/Alert/Wizard/isValidAlertRules.js +1 -1
  86. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +2 -2
  87. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +2 -2
  88. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
  89. package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +2 -2
  90. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +2 -2
  91. package/src/View/Components/CellPopup/index.js +1 -1
  92. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +1 -1
  93. package/src/View/Components/EntityRulesEditor/Utilities.js +5 -5
  94. package/src/View/Components/NewScopeComponent.js +3 -3
  95. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +2 -1
  96. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +1 -1
  97. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.d.ts +1 -1
  98. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +1 -8
  99. package/src/View/Components/Popups/AdaptablePopupConfirmation.js +1 -1
  100. package/src/View/Components/Popups/WindowPopups/WindowPopups.js +35 -0
  101. package/src/View/Components/WizardSummaryPage.js +1 -1
  102. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +3 -3
  103. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +1 -1
  104. package/src/View/Dashboard/CustomToolbar.js +1 -1
  105. package/src/View/DataChangeHistory/DataChangeHistoryViewPanel.js +1 -1
  106. package/src/View/FlashingCell/Wizard/isValidFlashingCellRules.js +1 -1
  107. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +1 -1
  108. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +3 -3
  109. package/src/View/Layout/LayoutViewPanel.js +1 -1
  110. package/src/View/Layout/TransposedPopup.js +144 -138
  111. package/src/View/Layout/Wizard/sections/AggregationsSection.js +1 -1
  112. package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
  113. package/src/View/Layout/Wizard/sections/GridFilterSection.js +1 -1
  114. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +3 -3
  115. package/src/View/Layout/Wizard/sections/RowSummarySection.js +1 -1
  116. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +2 -2
  117. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +5 -5
  118. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +1 -1
  119. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +1 -1
  120. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +11 -11
  121. package/src/View/StateManagement/handleExportState.js +1 -1
  122. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  123. package/src/View/UIHelper.d.ts +2 -1
  124. package/src/View/UIHelper.js +8 -14
  125. package/src/agGrid/Adaptable.js +11 -11
  126. package/src/agGrid/AdaptableAgGrid.d.ts +12 -8
  127. package/src/agGrid/AdaptableAgGrid.js +150 -82
  128. package/src/agGrid/AgGridAdapter.js +8 -8
  129. package/src/agGrid/AgGridColumnAdapter.js +1 -1
  130. package/src/agGrid/AgGridExportAdapter.js +5 -5
  131. package/src/agGrid/AgGridFloatingFilterAdapter.js +1 -1
  132. package/src/agGrid/AgGridMenuAdapter.js +9 -1
  133. package/src/agGrid/AgGridThemeAdapter.js +2 -2
  134. package/src/components/CheckBox/index.js +1 -1
  135. package/src/components/Dropdown/Arrows.js +1 -1
  136. package/src/components/ExpressionEditor/DataTableEditor.js +3 -3
  137. package/src/components/FormLayout/index.js +1 -1
  138. package/src/components/OverlayTrigger/index.js +1 -1
  139. package/src/components/Select/Select.js +1 -1
  140. package/src/components/Tree/TreeDropdown/index.js +1 -1
  141. package/src/env.js +2 -2
  142. package/src/metamodel/adaptable.metamodel.d.ts +62 -0
  143. package/src/metamodel/adaptable.metamodel.js +1 -1
  144. package/src/migration/AdaptableUpgradeHelper.js +2 -2
  145. package/src/migration/VersionUpgrade17.js +4 -4
  146. package/src/migration/VersionUpgrade20.js +4 -4
  147. package/src/types.d.ts +5 -2
  148. package/themes/dark.css +30 -29
  149. package/themes/light.css +4 -2
  150. package/tsconfig.cjs.tsbuildinfo +1 -1
@@ -10,6 +10,7 @@ const DocumentationLinkConstants_1 = require("../Utilities/Constants/Documentati
10
10
  const StringExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/StringExtensions"));
11
11
  const Emitter_1 = tslib_1.__importDefault(require("../Utilities/Emitter"));
12
12
  const DefaultAdaptableOptions_1 = require("../AdaptableOptions/DefaultAdaptableOptions");
13
+ const resolveContainerElement_1 = require("../Utilities/resolveContainerElement");
13
14
  const AgGridAdapter_1 = require("./AgGridAdapter");
14
15
  const GeneralConstants = tslib_1.__importStar(require("../Utilities/Constants/GeneralConstants"));
15
16
  const GeneralConstants_1 = require("../Utilities/Constants/GeneralConstants");
@@ -225,6 +226,8 @@ class AdaptableAgGrid {
225
226
  * Temporary, these are MIGRATION technical debts, and should be removed as soon as possible
226
227
  */
227
228
  adaptableStatusPanelKeys = [];
229
+ adaptableStatusPanelDefs = [];
230
+ hasAdaptableStatusBar;
228
231
  // see #no_additional_react_root
229
232
  _PRIVATE_adaptableJSXElement;
230
233
  _prevLayout;
@@ -363,7 +366,7 @@ class AdaptableAgGrid {
363
366
  this.adaptableOptions = this.normalizeAdaptableOptions(this.adaptableOptions);
364
367
  const { showLoadingScreen, loadingScreenDelay, loadingScreenText, loadingScreenTitle } = this.adaptableOptions.userInterfaceOptions.loadingScreenOptions;
365
368
  if (showLoadingScreen) {
366
- this.logger.info(`Show Loading Screen`);
369
+ this.logger.info('Showing loading screen');
367
370
  // it's important to use ensureLoadingScreenPortalElement
368
371
  // and not ensurePortalElement, because multiple adaptable instances share the same portal element
369
372
  // so when displaying the second one, the react root associated to the portal element
@@ -379,7 +382,7 @@ class AdaptableAgGrid {
379
382
  }), portalElement);
380
383
  }
381
384
  else {
382
- this.logger.consoleError(`Adaptable failed to show the loading screen!`);
385
+ this.logger.consoleError('Failed to create loading screen portal element.');
383
386
  }
384
387
  }
385
388
  this.forPlugins((plugin) => plugin.afterInitOptions(this, this.adaptableOptions));
@@ -438,7 +441,7 @@ class AdaptableAgGrid {
438
441
  // see #map_dateString_to_date
439
442
  this.agGridAdapter.patchColDefs(columnDefs, (colDef) => {
440
443
  if (colDef.cellDataType === 'dateString') {
441
- this.logger.consoleError(`AG Grid: Column '${colDef.colId}' specifies cellDataType='dateString' which is no longer supported. It has been automatically replaced with cellDataType='date'. Please update your column definition.`);
444
+ this.logger.consoleError(`Column "${colDef.colId}" uses cellDataType="dateString" which is no longer supported. It has been replaced with cellDataType="date". Please update your column definition.`);
442
445
  colDef.cellDataType = 'date';
443
446
  }
444
447
  });
@@ -469,8 +472,8 @@ class AdaptableAgGrid {
469
472
  const agGridApi = await this.initializeAgGrid(gridOptions, config.modules, config.renderAgGridFrameworkComponent);
470
473
  if (agGridApi === false) {
471
474
  this.midwayDestroy();
472
- this.logger.consoleError(`Adaptable failed to initialize AG Grid!`);
473
- return Promise.reject('Adaptable failed to initialize AG Grid!');
475
+ this.logger.consoleError('Failed to initialize AG Grid.');
476
+ return Promise.reject('Failed to initialize AG Grid.');
474
477
  }
475
478
  this.layoutManager = new src_1.LayoutManager({
476
479
  gridApi: agGridApi,
@@ -495,7 +498,7 @@ class AdaptableAgGrid {
495
498
  this.layoutManager.onColumnDefsChanged(() => {
496
499
  this.updateColumnModelAndRefreshGrid();
497
500
  });
498
- this.logger.info(`Hide Loading Screen`);
501
+ this.logger.info('Hiding loading screen');
499
502
  this.unmountLoadingScreen?.();
500
503
  perfInitAgGrid.end();
501
504
  initAgGridMarker.end();
@@ -506,7 +509,7 @@ class AdaptableAgGrid {
506
509
  this.lifecycleState = 'agGridReady';
507
510
  this.api.entitlementApi.internalApi.setModulesAgGridDepsInfos();
508
511
  this.ModuleService.logMissingAgGridDepsInfos();
509
- this.logger.info(`Registered AG Grid modules (incl. dependent modules): `, this.agGridModulesAdapter.getAgGridRegisteredModuleNames().sort());
512
+ this.logger.info('Registered AG Grid modules (including dependents):', this.agGridModulesAdapter.getAgGridRegisteredModuleNames().sort());
510
513
  /**
511
514
  * At this point AG Grid is initialized!
512
515
  */
@@ -596,10 +599,7 @@ class AdaptableAgGrid {
596
599
  const layoutState = state.Layout;
597
600
  // ensure that at least one Layout has been provided
598
601
  if (!layoutState || !layoutState.Layouts?.length) {
599
- this.logger
600
- .consoleError(`You have not defined any Layout in your InitialState.Layout.Layouts[] state!
601
-
602
- You need to define at least one Layout!`);
602
+ this.logger.consoleError('No Layouts defined in InitialState.Layout.Layouts[]. At least one Layout is required.');
603
603
  }
604
604
  // ensure CurrentLayout is valid
605
605
  if (!layoutState.CurrentLayout ||
@@ -762,21 +762,90 @@ You need to define at least one Layout!`);
762
762
  hideQuickFilter() {
763
763
  this.agGridAdapter.getAgGridApi().setGridOption('floatingFiltersHeight', 0);
764
764
  }
765
+ showAdaptableToolPanel() {
766
+ if (!this.hasAdaptableToolPanel) {
767
+ // don't re-add the ToolPanel if it's hidden by entitlement
768
+ if (this.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel')) {
769
+ return;
770
+ }
771
+ const currentSideBar = this.agGridAdapter.getGridOption('sideBar');
772
+ if (currentSideBar?.toolPanels) {
773
+ const updatedSideBar = {
774
+ ...currentSideBar,
775
+ toolPanels: [...currentSideBar.toolPanels, this.buildAdaptableToolPanelDef()],
776
+ };
777
+ this.agGridAdapter.setGridOption('sideBar', updatedSideBar);
778
+ this.hasAdaptableToolPanel = true;
779
+ }
780
+ }
781
+ }
782
+ hideAdaptableToolPanel() {
783
+ if (this.hasAdaptableToolPanel) {
784
+ // close the tool panel if it's currently open
785
+ this.api.toolPanelApi.closeAdapTableToolPanel();
786
+ const currentSideBar = this.agGridAdapter.getGridOption('sideBar');
787
+ if (currentSideBar?.toolPanels) {
788
+ const updatedSideBar = {
789
+ ...currentSideBar,
790
+ toolPanels: currentSideBar.toolPanels.filter((toolPanelDef) => {
791
+ if (typeof toolPanelDef === 'string') {
792
+ return toolPanelDef !== GeneralConstants.ADAPTABLE_TOOLPANEL_ID;
793
+ }
794
+ return toolPanelDef.id !== GeneralConstants.ADAPTABLE_TOOLPANEL_ID;
795
+ }),
796
+ };
797
+ this.agGridAdapter.setGridOption('sideBar', updatedSideBar);
798
+ }
799
+ this.hasAdaptableToolPanel = false;
800
+ }
801
+ }
802
+ buildAdaptableToolPanelDef() {
803
+ return {
804
+ id: GeneralConstants.ADAPTABLE_TOOLPANEL_ID,
805
+ toolPanel: GeneralConstants.ADAPTABLE_TOOLPANEL_COMPONENT,
806
+ labelDefault: GeneralConstants.ADAPTABLE,
807
+ labelKey: 'adaptable',
808
+ iconKey: 'menu',
809
+ width: UIHelper_1.default.getAdaptableToolPanelWidth(),
810
+ minWidth: UIHelper_1.default.getAdaptableToolPanelWidth(),
811
+ };
812
+ }
813
+ showAdaptableStatusBar() {
814
+ if (!this.hasAdaptableStatusBar && this.adaptableStatusPanelDefs.length > 0) {
815
+ const currentStatusBar = this.agGridAdapter.getGridOption('statusBar');
816
+ if (currentStatusBar) {
817
+ // filter out any Adaptable panels that may already exist to avoid duplicates
818
+ const existingNonAdaptablePanels = (currentStatusBar.statusPanels ?? []).filter((panel) => !this.adaptableStatusPanelKeys.includes(panel.key));
819
+ const updatedStatusBar = {
820
+ ...currentStatusBar,
821
+ statusPanels: [...existingNonAdaptablePanels, ...this.adaptableStatusPanelDefs],
822
+ };
823
+ this.agGridAdapter.setGridOption('statusBar', updatedStatusBar);
824
+ this.hasAdaptableStatusBar = true;
825
+ }
826
+ }
827
+ }
828
+ hideAdaptableStatusBar() {
829
+ if (this.hasAdaptableStatusBar) {
830
+ const currentStatusBar = this.agGridAdapter.getGridOption('statusBar');
831
+ if (currentStatusBar?.statusPanels) {
832
+ const updatedStatusBar = {
833
+ ...currentStatusBar,
834
+ statusPanels: currentStatusBar.statusPanels.filter((panel) => !this.adaptableStatusPanelKeys.includes(panel.key)),
835
+ };
836
+ this.agGridAdapter.setGridOption('statusBar', updatedStatusBar);
837
+ }
838
+ this.hasAdaptableStatusBar = false;
839
+ }
840
+ }
765
841
  normalizeAdaptableOptions(adaptableOptions) {
766
842
  if (this.hasAutogeneratedPrimaryKey) {
767
- this.logger
768
- .warn(`Autogenerated primary key (adaptableOptions.autogeneratedPrimaryKey = TRUE) should be used only as a last resort,
769
- when no unique column is available, as it limits some Adaptable functionalities!
770
-
771
- For more details see: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
843
+ this.logger.warn(`Autogenerated primary key is enabled (adaptableOptions.autogeneratedPrimaryKey = true). This should be a last resort as it limits some Adaptable features. See: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
772
844
  this.adaptableOptions.primaryKey = GeneralConstants_1.AUTOGENERATED_PK_COLUMN;
773
845
  return this.adaptableOptions;
774
846
  }
775
847
  if (StringExtensions_1.default.IsNullOrEmpty(adaptableOptions.primaryKey)) {
776
- this.logger.consoleError(`AdaptableOptions.primaryKey is required and cannot be empty or null!
777
- As a fallback, you can set adaptableOptions.autogeneratedPrimaryKey = TRUE
778
-
779
- For more details see: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
848
+ this.logger.consoleError(`adaptableOptions.primaryKey is required and must not be empty. As a fallback, set adaptableOptions.autogeneratedPrimaryKey = true. See: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
780
849
  }
781
850
  return adaptableOptions;
782
851
  }
@@ -808,7 +877,7 @@ You need to define at least one Layout!`);
808
877
  */
809
878
  this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'defaultColDef', (original_defaultColDef) => {
810
879
  if (original_defaultColDef?.headerValueGetter) {
811
- this.logger.warn(`defaultColDef.headerValueGetter and overrides the Adaptable custom header mechanism! We recommend using a ColumnOptions.columnHeader instead!`);
880
+ this.logger.warn('defaultColDef.headerValueGetter overrides the Adaptable header mechanism. Consider using ColumnOptions.columnHeader instead.');
812
881
  return original_defaultColDef;
813
882
  }
814
883
  // #customize_header
@@ -825,7 +894,7 @@ You need to define at least one Layout!`);
825
894
  */
826
895
  this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'defaultColGroupDef', (original_defaultColGroupDef) => {
827
896
  if (original_defaultColGroupDef?.headerValueGetter) {
828
- this.logger.warn(`defaultColGroupDef.headerValueGetter and overrides the Adaptable custom header mechanism! We recommend using a ColumnOptions.tableColumnHeader instead!`);
897
+ this.logger.warn('defaultColGroupDef.headerValueGetter overrides the Adaptable header mechanism. Consider using ColumnOptions.tableColumnHeader instead.');
829
898
  return original_defaultColGroupDef;
830
899
  }
831
900
  const defaultColGroupDef = { ...original_defaultColGroupDef };
@@ -845,12 +914,11 @@ You need to define at least one Layout!`);
845
914
  }
846
915
  if (original_autoGroupColumnDef?.filter === false) {
847
916
  // if user disables filter on autoGroupColumnDef, we respect that
848
- this.logger.info(`autoGroupColumnDef.filter is disabled as per user configuration.`);
917
+ this.logger.info('autoGroupColumnDef.filter is disabled via user configuration.');
849
918
  return original_autoGroupColumnDef;
850
919
  }
851
920
  if (typeof original_autoGroupColumnDef?.filter === 'object') {
852
- this.logger.consoleWarn(`autoGroupColumnDef.filter is set and overrides the Adaptable custom filter mechanism, so Adaptable will not be able to manage filtering for the Group Column!
853
- Please contact the Adaptable Support Team for further assistance and investigation.`);
921
+ this.logger.consoleWarn('autoGroupColumnDef.filter overrides the Adaptable filtering mechanism for the Group Column. Adaptable-managed filters will not apply to this column. Contact support for alternatives.');
854
922
  return original_autoGroupColumnDef;
855
923
  }
856
924
  const autoGroupColumnDef = { ...original_autoGroupColumnDef };
@@ -858,8 +926,7 @@ You need to define at least one Layout!`);
858
926
  // !! DO NOT REMOVE THIS !!
859
927
  // see https://github.com/ag-grid/ag-grid/blob/6f43ff257c2e285068eb425b655e58d6eeb89816/packages/ag-grid-enterprise/src/rowHierarchy/autoColService.ts#L225
860
928
  autoGroupColumnDef.filterValueGetter = (params) => {
861
- this.logger.consoleWarn(`An unexpected invocation of autoGroupColumnDef.filterValueGetter was detected. This execution path is not expected under normal operation.
862
- Please contact the Adaptable Support Team for further assistance and investigation.`, params);
929
+ this.logger.consoleWarn('Unexpected invocation of autoGroupColumnDef.filterValueGetter. This is not expected under normal operation. Please contact support.', params);
863
930
  return '';
864
931
  };
865
932
  // !! it is important that we always return the same component / handler instances
@@ -1173,16 +1240,7 @@ You need to define at least one Layout!`);
1173
1240
  return original_sideBar;
1174
1241
  }
1175
1242
  const isAdaptableToolPanelHidden = this.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel');
1176
- const adaptableToolPanelDef = {
1177
- id: GeneralConstants.ADAPTABLE_TOOLPANEL_ID,
1178
- toolPanel: GeneralConstants.ADAPTABLE_TOOLPANEL_COMPONENT,
1179
- labelDefault: GeneralConstants.ADAPTABLE,
1180
- labelKey: 'adaptable',
1181
- iconKey: 'menu',
1182
- width: UIHelper_1.default.getAdaptableToolPanelWidth(),
1183
- minWidth: UIHelper_1.default.getAdaptableToolPanelWidth(),
1184
- // maxWidth = undefined,
1185
- };
1243
+ const adaptableToolPanelDef = this.buildAdaptableToolPanelDef();
1186
1244
  const mapToolPanelDefs = (toolPanelDefs = []) => {
1187
1245
  // if it's an alias for the adaptable tool panel, map it to a ToolPanelDef, otherwise return it as it is
1188
1246
  return toolPanelDefs.map((toolPanelDef) => toolPanelDef === GeneralConstants.ADAPTABLE_TOOLPANEL_ID
@@ -1257,19 +1315,29 @@ You need to define at least one Layout!`);
1257
1315
  this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'statusBar', (original_statusBar) => {
1258
1316
  const statusPanels = (original_statusBar?.statusPanels ?? [])?.map((statusPanel) => {
1259
1317
  if (statusPanel.statusPanel === StatusBarState_1.ADAPTABLE_STATUS_PANEL) {
1318
+ if (!statusPanel.key) {
1319
+ this.logger.consoleWarn('AdaptableStatusPanel is missing a "key" property. This panel will not be managed by HideAdaptableUI. Please provide a unique key.');
1320
+ return statusPanel;
1321
+ }
1260
1322
  this.adaptableStatusPanelKeys.push(statusPanel.key);
1261
1323
  const context = {
1262
1324
  Key: statusPanel.key,
1263
1325
  };
1264
- return {
1326
+ const adaptablePanelDef = {
1265
1327
  ...statusPanel,
1266
1328
  statusPanel: (0, createAgStatusPanelComponent_1.createAgStatusPanelComponent)(AdaptableStatusBar_1.AdaptableStatusBar, this, context),
1267
1329
  };
1330
+ this.adaptableStatusPanelDefs.push(adaptablePanelDef);
1331
+ return adaptablePanelDef;
1268
1332
  }
1269
1333
  return statusPanel;
1270
1334
  });
1271
1335
  return { ...original_statusBar, statusPanels };
1272
1336
  });
1337
+ this.hasAdaptableStatusBar = this.adaptableStatusPanelKeys.length > 0;
1338
+ }
1339
+ else {
1340
+ this.hasAdaptableStatusBar = false;
1273
1341
  }
1274
1342
  /**
1275
1343
  * `getRowStyle`
@@ -1429,15 +1497,14 @@ You need to define at least one Layout!`);
1429
1497
  const rowData = agGridApi.getGridOption('rowData');
1430
1498
  this.initWithLazyData = rowData == undefined || rowData.length === 0;
1431
1499
  if (this.initWithLazyData) {
1432
- this.logger.info('initWithLazyData = TRUE');
1500
+ this.logger.info('Initializing with lazy data (no initial rowData).');
1433
1501
  }
1434
1502
  if (!this.getAgGridContainerElement()) {
1435
1503
  // initialize the agGridContainerElement from the AgGrid instance
1436
1504
  const gridRoot = this.agGridAdapter.getAgGridRootElement();
1437
1505
  const gridContainer = gridRoot?.closest('[class*="ag-theme"]');
1438
1506
  if (!gridContainer) {
1439
- this.logger.consoleError(`No AG Grid container could be derived from the Adaptable framework wrapper.
1440
- Please contact AdapTable Support and in the meantime provide a valid container element in 'ContainerOptions.agGridContainer'!`);
1507
+ this.logger.consoleError('Failed to derive AG Grid container from the framework wrapper. Please provide a valid container element via ContainerOptions.agGridContainer.');
1441
1508
  }
1442
1509
  this.DANGER_USE_GETTER_agGridContainerElement = gridContainer;
1443
1510
  }
@@ -1445,7 +1512,7 @@ You need to define at least one Layout!`);
1445
1512
  }
1446
1513
  const agGridContainer = this.getAgGridContainerElement();
1447
1514
  if (!agGridContainer) {
1448
- this.logger.consoleError('No AG Grid container element found in the DOM. Please provide a valid container element in `ContainerOptions.agGridContainer`');
1515
+ this.logger.consoleError('AG Grid container element not found in the DOM. Please provide a valid element via ContainerOptions.agGridContainer.');
1449
1516
  return Promise.resolve(false);
1450
1517
  }
1451
1518
  let gridParams;
@@ -1458,21 +1525,22 @@ You need to define at least one Layout!`);
1458
1525
  useRowNodeLookUp() {
1459
1526
  return this.agGridAdapter.getAgGridApi().getGridOption('getRowId') != undefined;
1460
1527
  }
1528
+ buildInitContainerContext() {
1529
+ return {
1530
+ adaptableId: this.adaptableOptions?.adaptableId ?? '',
1531
+ adaptableStateKey: this.adaptableOptions?.adaptableStateKey ?? '',
1532
+ adaptableContext: this.adaptableOptions?.adaptableContext,
1533
+ };
1534
+ }
1461
1535
  getAgGridContainerElement() {
1462
1536
  if (!this.DANGER_USE_GETTER_agGridContainerElement) {
1463
- this.DANGER_USE_GETTER_agGridContainerElement =
1464
- typeof this.adaptableOptions?.containerOptions?.agGridContainer === 'string'
1465
- ? document.getElementById(this.adaptableOptions?.containerOptions?.agGridContainer)
1466
- : this.adaptableOptions?.containerOptions?.agGridContainer;
1537
+ this.DANGER_USE_GETTER_agGridContainerElement = (0, resolveContainerElement_1.resolveContainerElement)(this.adaptableOptions?.containerOptions?.agGridContainer, this.buildInitContainerContext());
1467
1538
  }
1468
1539
  return this.DANGER_USE_GETTER_agGridContainerElement;
1469
1540
  }
1470
1541
  getAdaptableContainerElement() {
1471
1542
  if (!this.DANGER_USE_GETTER_adaptableContainerElement) {
1472
- this.DANGER_USE_GETTER_adaptableContainerElement =
1473
- typeof this.adaptableOptions?.containerOptions?.adaptableContainer === 'string'
1474
- ? document.getElementById(this.adaptableOptions?.containerOptions?.adaptableContainer)
1475
- : this.adaptableOptions?.containerOptions?.adaptableContainer;
1543
+ this.DANGER_USE_GETTER_adaptableContainerElement = (0, resolveContainerElement_1.resolveContainerElement)(this.adaptableOptions?.containerOptions?.adaptableContainer, this.buildInitContainerContext());
1476
1544
  }
1477
1545
  return this.DANGER_USE_GETTER_adaptableContainerElement;
1478
1546
  }
@@ -1860,7 +1928,7 @@ You need to define at least one Layout!`);
1860
1928
  // if no primary key column then lets check the first row to see if its a data item
1861
1929
  const primaryKeyDataItem = this.getFirstRowNode()?.data[primaryKey];
1862
1930
  if (!primaryKeyDataItem) {
1863
- errorMessage = `The Primary Key '${this.adaptableOptions.primaryKey}' does not exist. This will affect many functions in AdapTable.`;
1931
+ errorMessage = `Primary key column "${this.adaptableOptions.primaryKey}" not found. This will affect many Adaptable features.`;
1864
1932
  if (this.adaptableOptions.alertOptions.showMissingPrimaryKeyAlert) {
1865
1933
  // show an alert if that is the option
1866
1934
  this.api.alertApi.showAlertError('No Primary Key', errorMessage);
@@ -1917,12 +1985,12 @@ You need to define at least one Layout!`);
1917
1985
  checkShouldClearExistingFiltersOrSearches() {
1918
1986
  // if they have selected to clear Filters on startup then do it
1919
1987
  if (this.adaptableOptions.filterOptions.clearFiltersOnStartUp) {
1920
- this.logger.warn('Clearing any saved Filters as "clearFiltersOnStartUp" is true');
1988
+ this.logger.warn('Clearing saved filters (clearFiltersOnStartUp is enabled).');
1921
1989
  this.api.filterApi.clearAllFilters();
1922
1990
  }
1923
1991
  // if they have selected to clear searches on startup then do it
1924
1992
  if (this.adaptableOptions.quickSearchOptions.clearQuickSearchOnStartUp) {
1925
- this.logger.warn('Clearing any saved Searches as "clearQuickSearchOnStartUp" is true');
1993
+ this.logger.warn('Clearing saved Quick Search (clearQuickSearchOnStartUp is enabled).');
1926
1994
  this.api.quickSearchApi.clearQuickSearch();
1927
1995
  }
1928
1996
  }
@@ -2151,7 +2219,7 @@ You need to define at least one Layout!`);
2151
2219
  }
2152
2220
  }
2153
2221
  _updateColumnModelAndRefreshGridNow() {
2154
- this.logger.info(`Updating Column Model and Refreshing Grid.`);
2222
+ this.logger.info('Updating column model and refreshing grid.');
2155
2223
  this.deriveAdaptableColumnStateFromAgGrid();
2156
2224
  this.agGridColumnAdapter.setupColumns();
2157
2225
  this.redrawBody();
@@ -2177,7 +2245,7 @@ You need to define at least one Layout!`);
2177
2245
  this.agGridAdapter.getAgGridApi().redrawRows(redrawRowsParams);
2178
2246
  }
2179
2247
  catch (ex) {
2180
- this.logger.consoleError('AG Grid redrawRows was unable to find some row nodes. Tried to redraw row nodes: ', rowNodes, ex);
2248
+ this.logger.consoleError('AG Grid redrawRows failed to locate some row nodes.', rowNodes, ex);
2181
2249
  }
2182
2250
  }
2183
2251
  redrawRow(rowNode) {
@@ -2471,31 +2539,31 @@ You need to define at least one Layout!`);
2471
2539
  });
2472
2540
  }
2473
2541
  }
2474
- async manageGridRows(dataRows, config = {}) {
2542
+ async manageGridRows(dataRowConfig, dataUpdateConfig = {}) {
2475
2543
  const result = {
2476
2544
  addedRows: [],
2477
2545
  updatedRows: [],
2478
2546
  removedRows: [],
2479
2547
  };
2480
- if (!dataRows) {
2548
+ if (!dataRowConfig || !dataRowConfig.dataRows) {
2481
2549
  return result;
2482
2550
  }
2483
- const addDataRows = dataRows.add;
2484
- const updateDataRows = dataRows.update;
2485
- const removeDataRows = dataRows.delete;
2551
+ const addDataRows = dataRowConfig.dataRows.add;
2552
+ const updateDataRows = dataRowConfig.dataRows.update;
2553
+ const removeDataRows = dataRowConfig.dataRows.delete;
2486
2554
  if (this.hasAutogeneratedPrimaryKey) {
2487
2555
  this.addSyntheticPrimaryKeyIfMissing(addDataRows);
2488
2556
  }
2489
- if (config.runAsync) {
2557
+ if (dataUpdateConfig.runAsync) {
2490
2558
  return new Promise((resolve) => {
2491
2559
  this.applyAgGridTransactionAsync({
2492
2560
  update: updateDataRows,
2493
2561
  add: addDataRows,
2494
2562
  remove: removeDataRows,
2495
- addIndex: config.addIndex,
2563
+ addIndex: dataUpdateConfig.addIndex,
2496
2564
  }, (transaction) => {
2497
- if (typeof config.callback === 'function') {
2498
- config.callback(transaction);
2565
+ if (typeof dataUpdateConfig.callback === 'function') {
2566
+ dataUpdateConfig.callback(transaction);
2499
2567
  }
2500
2568
  if (transaction?.add) {
2501
2569
  this.updateRowGroupsAndColumnGroupsExpandedState();
@@ -2506,7 +2574,7 @@ You need to define at least one Layout!`);
2506
2574
  removedRows: transaction?.remove,
2507
2575
  });
2508
2576
  });
2509
- if (config.flushAsync) {
2577
+ if (dataUpdateConfig.flushAsync) {
2510
2578
  this.agGridAdapter.getAgGridApi().flushAsyncTransactions();
2511
2579
  }
2512
2580
  });
@@ -2516,12 +2584,12 @@ You need to define at least one Layout!`);
2516
2584
  update: updateDataRows,
2517
2585
  add: addDataRows,
2518
2586
  remove: removeDataRows,
2519
- addIndex: config.addIndex,
2587
+ addIndex: dataUpdateConfig.addIndex,
2520
2588
  });
2521
2589
  if (transaction?.add) {
2522
2590
  this.updateRowGroupsAndColumnGroupsExpandedState();
2523
2591
  }
2524
- if (config.flushAsync) {
2592
+ if (dataUpdateConfig.flushAsync) {
2525
2593
  this.agGridAdapter.getAgGridApi().flushAsyncTransactions();
2526
2594
  }
2527
2595
  return Promise.resolve({
@@ -2587,14 +2655,14 @@ You need to define at least one Layout!`);
2587
2655
  }
2588
2656
  autoSizeColumns(columnIds) {
2589
2657
  if (!this.agGridModulesAdapter.isAgGridModuleRegistered('ColumnAutoSizeModule')) {
2590
- this.logger.consoleError(`Could not auto-size columns [${columnIds}] - missing required AG Grid module 'ColumnAutoSizeModule'`);
2658
+ this.logger.consoleError(`Auto-sizing columns [${columnIds}] requires the AG Grid "ColumnAutoSizeModule". Please register this module.`);
2591
2659
  return;
2592
2660
  }
2593
2661
  this.layoutManager.autoSizeColumns(columnIds);
2594
2662
  }
2595
2663
  autoSizeAllColumns() {
2596
2664
  if (!this.agGridModulesAdapter.isAgGridModuleRegistered('ColumnAutoSizeModule')) {
2597
- this.logger.consoleError(`Could not auto-size all columns - missing required AG Grid module 'ColumnAutoSizeModule'`);
2665
+ this.logger.consoleError('Auto-sizing all columns requires the AG Grid "ColumnAutoSizeModule". Please register this module.');
2598
2666
  return;
2599
2667
  }
2600
2668
  const agGridApi = this.agGridAdapter.getAgGridApi();
@@ -2752,7 +2820,7 @@ You need to define at least one Layout!`);
2752
2820
  customInFilterValuesResult = await customInFilterValues(customInFilterValuesContext);
2753
2821
  }
2754
2822
  catch (error) {
2755
- this.logger.consoleError(`Failed to fetch custom filter values`, column, error);
2823
+ this.logger.consoleError('Failed to retrieve custom filter values.', column, error);
2756
2824
  }
2757
2825
  return customInFilterValuesResult;
2758
2826
  }
@@ -2792,7 +2860,7 @@ You need to define at least one Layout!`);
2792
2860
  customDistinctValues = await customEditColumnValues(customEditValuesContext);
2793
2861
  }
2794
2862
  catch (error) {
2795
- this.logger.consoleError(`Failed to fetch custom edit values`, column, error);
2863
+ this.logger.consoleError('Failed to retrieve custom edit values.', column, error);
2796
2864
  }
2797
2865
  return customDistinctValues ?? [];
2798
2866
  }
@@ -3247,7 +3315,7 @@ You need to define at least one Layout!`);
3247
3315
  if (this.getAgGridRowModelType() !== 'clientSide') {
3248
3316
  // only in client-side row model can we loop through filtered&sorted rows
3249
3317
  // see https://www.ag-grid.com/javascript-data-grid/accessing-data/#iterating-rows
3250
- this.logger.warn('`forAllVisibleRowNodesDo()` is only supported in client-side row model. `forAllRowNodesDo` will be used instead.');
3318
+ this.logger.warn('forAllVisibleRowNodesDo() is only supported with client-side row model. Falling back to forAllRowNodesDo().');
3251
3319
  return this.forAllRowNodesDo(func, config);
3252
3320
  }
3253
3321
  this.agGridAdapter.getAgGridApi().forEachNodeAfterFilterAndSort((rowNode, rowIndex) => {
@@ -3299,14 +3367,14 @@ You need to define at least one Layout!`);
3299
3367
  }
3300
3368
  selectNode(rowNode, clearSelection) {
3301
3369
  if (!rowNode) {
3302
- this.logger.error('No node to select');
3370
+ this.logger.error('Cannot select: row node is null.');
3303
3371
  return;
3304
3372
  }
3305
3373
  rowNode.setSelected(true, clearSelection);
3306
3374
  }
3307
3375
  deSelectNode(rowNode, clearSelection) {
3308
3376
  if (!rowNode) {
3309
- this.logger.error('No node to deselect');
3377
+ this.logger.error('Cannot deselect: row node is null.');
3310
3378
  return;
3311
3379
  }
3312
3380
  rowNode.setSelected(false, clearSelection);
@@ -3394,7 +3462,7 @@ You need to define at least one Layout!`);
3394
3462
  }
3395
3463
  showChart(chartDefinition, container) {
3396
3464
  if (!this.isReady) {
3397
- this.logger.consoleError('Adaptable must be instantiated before calling showChart');
3465
+ this.logger.consoleError('Cannot call showChart before Adaptable is fully initialized.');
3398
3466
  return null;
3399
3467
  }
3400
3468
  /**
@@ -3415,7 +3483,7 @@ You need to define at least one Layout!`);
3415
3483
  }
3416
3484
  updateChart(chart) {
3417
3485
  if (!chart.Model) {
3418
- this.logger.consoleError(`Chart definition must have a Model property to be updated: ${chart.Name}`);
3486
+ this.logger.consoleError(`Cannot update chart "${chart.Name}": the chart definition is missing the required Model property.`);
3419
3487
  return;
3420
3488
  }
3421
3489
  const upgradableProperties = {
@@ -3441,7 +3509,7 @@ You need to define at least one Layout!`);
3441
3509
  }
3442
3510
  getChartModels() {
3443
3511
  if (!this.isReady) {
3444
- this.logger.consoleError('Adaptable must be instantiated before calling getChartModels');
3512
+ this.logger.consoleError('Cannot call getChartModels before Adaptable is fully initialized.');
3445
3513
  return [];
3446
3514
  }
3447
3515
  return this.agGridAdapter.getAgGridApi().getChartModels();
@@ -3475,7 +3543,7 @@ You need to define at least one Layout!`);
3475
3543
  }
3476
3544
  setAgGridQuickSearch(searchText) {
3477
3545
  if (!this.agGridModulesAdapter.isAgGridModuleRegistered('QuickFilterModule')) {
3478
- this.logger.consoleError(`Can NOT set Quick Search text - missing required AG Grid module 'QuickFilterModule'`);
3546
+ this.logger.consoleError('Quick Search requires the AG Grid "QuickFilterModule". Please register this module to enable Quick Search.');
3479
3547
  return;
3480
3548
  }
3481
3549
  this.agGridAdapter.setGridOption('quickFilterText', searchText);
@@ -3485,7 +3553,7 @@ You need to define at least one Layout!`);
3485
3553
  }
3486
3554
  setAgGridFindSearchValue(searchText) {
3487
3555
  if (!this.agGridModulesAdapter.isAgGridModuleRegistered('FindModule')) {
3488
- this.logger.consoleError(`Can NOT set Find Search text - missing required AG Grid module 'FindModule'`);
3556
+ this.logger.consoleError('Find Search requires the AG Grid "FindModule". Please register this module to enable Find Search.');
3489
3557
  return;
3490
3558
  }
3491
3559
  this.agGridAdapter.setGridOption('findSearchValue', searchText);
@@ -4014,7 +4082,7 @@ You need to define at least one Layout!`);
4014
4082
  cellDataChangedInfos.forEach((cellDataChangedInfo) => {
4015
4083
  // if a Cell Data Change is undone, log to the Console
4016
4084
  if (cellDataChangedInfo.trigger === 'undo') {
4017
- this.logger.info(`Undo data change: PK(${cellDataChangedInfo.primaryKeyValue}) Col(${cellDataChangedInfo.column}) RevertedValue(${cellDataChangedInfo.oldValue}) OriginalValue(${cellDataChangedInfo.newValue})`);
4085
+ this.logger.info(`Data change reverted: column="${cellDataChangedInfo.column}", primaryKey="${cellDataChangedInfo.primaryKeyValue}", from=${cellDataChangedInfo.newValue} to=${cellDataChangedInfo.oldValue}`);
4018
4086
  }
4019
4087
  // For Changes except Aggregations, reset cell selection if required
4020
4088
  if (cellDataChangedInfo.trigger === 'edit' ||
@@ -4219,7 +4287,7 @@ You need to define at least one Layout!`);
4219
4287
  this.api.layoutApi.createOrUpdateLayout(layout);
4220
4288
  }
4221
4289
  refreshAdaptableAfterLayoutChange(layout) {
4222
- this.logger.info('refreshAdaptableAfterLayoutChange()');
4290
+ this.logger.info('Refreshing Adaptable after layout change.');
4223
4291
  const prevLayoutForRefresh = this.__prevLayoutForRefresh || this.api.layoutApi.getCurrentLayout();
4224
4292
  // see #on-regroup-expect-group-column-to-be-recomputed-and-setup-properly
4225
4293
  const rowGroupsChanged = this.isRowGroupDifferentInLayout(prevLayoutForRefresh, layout);
@@ -4265,7 +4333,7 @@ You need to define at least one Layout!`);
4265
4333
  .forEach((colType) => {
4266
4334
  const newValidCellDataType = (0, VersionUpgrade20_1.mapOldTypeToDataType)(colType);
4267
4335
  if (newValidCellDataType) {
4268
- this.logger.consoleWarn(`Column ${columnDefinition.colId ?? columnDefinition.field} has a type of ${colType} which is no longer in use${newValidCellDataType !== 'unknown' ? `. Please use 'colDef.cellDataType' instead: ${newValidCellDataType}` : ''}`);
4336
+ this.logger.consoleWarn(`Column "${columnDefinition.colId ?? columnDefinition.field}" uses deprecated type "${colType}"${newValidCellDataType !== 'unknown' ? `. Use colDef.cellDataType="${newValidCellDataType}" instead.` : '. This type is no longer supported.'}`);
4269
4337
  }
4270
4338
  });
4271
4339
  });
@@ -149,7 +149,7 @@ class AgGridAdapter {
149
149
  }
150
150
  }
151
151
  options['columnDefs'] = colDefsWithSpecialColumns;
152
- self.logger.info(`Added SpecialColumns on GridOptions.columnDefs update (source=${source})`);
152
+ self.logger.info(`Added special columns on GridOptions.columnDefs update (source="${source}").`);
153
153
  }
154
154
  // `context`
155
155
  const passedContext = options.context;
@@ -169,7 +169,7 @@ class AgGridAdapter {
169
169
  }
170
170
  const agGridColumnFilterService = this.DANGER_getPrivateAgGridBeans()?.colFilter;
171
171
  if (!agGridColumnFilterService) {
172
- this.logger.consoleError('Could not get hold of ColumnFilterService! This is a critical error and will prevent Adaptable from working correctly.');
172
+ this.logger.consoleError('Failed to initialize ColumnFilterService. Filtering and related features will not function correctly.');
173
173
  return;
174
174
  }
175
175
  const self = this;
@@ -215,7 +215,7 @@ class AgGridAdapter {
215
215
  DANGER_getPrivateAgGridBeans() {
216
216
  const beans = DANGER_AG_GRID_BEANS_MAP[this._agGridId];
217
217
  if (!beans) {
218
- this.logger.consoleError('Could not get hold of AgGridBeans! This is a critical error and will prevent Adaptable from working correctly.');
218
+ this.logger.consoleError('Failed to access AG Grid internal beans. Adaptable will not function correctly.');
219
219
  }
220
220
  return beans;
221
221
  }
@@ -359,7 +359,7 @@ class AgGridAdapter {
359
359
  if (isEndRowPin) {
360
360
  shouldIncludeRange = false;
361
361
  }
362
- this.logger.consoleWarn('Cannot select pinned rows in AG Grid.');
362
+ this.logger.consoleWarn('Pinned rows cannot be selected in AG Grid.');
363
363
  }
364
364
  if (shouldIncludeRange) {
365
365
  const y1 = Math.min(rangeSelection.startRow.rowIndex, rangeSelection.endRow.rowIndex);
@@ -529,7 +529,7 @@ class AgGridAdapter {
529
529
  deriveAdaptableColumnDataType(agColumn, logWarning = true) {
530
530
  // Some columns can have no ID or Title. we return string as a consequence but it needs testing
531
531
  if (!agColumn) {
532
- this.logger.warn(`Column is undefined, returning 'text' for Type`);
532
+ this.logger.warn('Column is undefined. Defaulting data type to "text".');
533
533
  return 'text';
534
534
  }
535
535
  if (this.adaptableApi.columnApi.isAutoRowGroupColumnForSingle(agColumn.getId())) {
@@ -572,7 +572,7 @@ class AgGridAdapter {
572
572
  let row = this.getAgGridApi().getDisplayedRowAtIndex(0);
573
573
  if (row == null) {
574
574
  // possible that there will be no data.
575
- this.logger.consoleError(`No data in grid, returning type "unknown" for Column: "${agColumn.getColId()}". This will impact several Adaptable features, such as Filters and ColumnFormats.`);
575
+ this.logger.consoleError(`No data in grid. Returning type "unknown" for column "${agColumn.getColId()}". This will affect features such as Filters and Column Formats.`);
576
576
  return 'unknown';
577
577
  }
578
578
  // // if it's a group we need the content of the group
@@ -614,7 +614,7 @@ class AgGridAdapter {
614
614
  dataType = arrayDataType;
615
615
  }
616
616
  }
617
- this.logger.consoleWarn(`No defined type for column '${agColumn.getColId()}'. Defaulting to type of first row value: ${dataType}`);
617
+ this.logger.consoleWarn(`No explicit type for column "${agColumn.getColId()}". Inferred type from first row value: "${dataType}".`);
618
618
  return dataType;
619
619
  }
620
620
  isColumnReadonly(colDef) {
@@ -800,7 +800,7 @@ class AgGridAdapter {
800
800
  colDef.colId = colDef.field;
801
801
  }
802
802
  if (!colDef.colId) {
803
- this.logger.warn('A column is missing the colId - please check ', colDef, 'Either pass a "field" property or a "colId" property.');
803
+ this.logger.warn('Column definition is missing colId. Provide either a "field" or "colId" property.', colDef);
804
804
  }
805
805
  };
806
806
  this.patchColDefs(colDefs, assignColId);