@adaptabletools/adaptable 22.0.0-canary.1 → 22.0.0-canary.3

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 (177) hide show
  1. package/index.css +55 -37
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableInterfaces/IAdaptable.d.ts +2 -2
  5. package/src/AdaptableOptions/AdaptablePlugin.js +6 -1
  6. package/src/AdaptableOptions/ExportOptions.d.ts +1 -2
  7. package/src/AdaptableOptions/FilterOptions.d.ts +3 -0
  8. package/src/AdaptableState/Common/AdaptableColumn.d.ts +6 -0
  9. package/src/AdaptableState/Common/AdaptableStyle.d.ts +8 -0
  10. package/src/AdaptableState/Common/RowDataChangedInfo.d.ts +3 -0
  11. package/src/AdaptableState/FormatColumnState.d.ts +0 -8
  12. package/src/AdaptableState/InitialState.d.ts +1 -1
  13. package/src/AdaptableState/Selection/GridCell.d.ts +9 -0
  14. package/src/Api/DataSetApi.d.ts +1 -1
  15. package/src/Api/GridApi.d.ts +3 -3
  16. package/src/Api/Implementation/ActionColumnApiImpl.js +1 -0
  17. package/src/Api/Implementation/AdaptableApiImpl.js +52 -0
  18. package/src/Api/Implementation/AlertApiImpl.js +1 -0
  19. package/src/Api/Implementation/ApiBase.js +1 -0
  20. package/src/Api/Implementation/CalculatedColumnApiImpl.js +1 -0
  21. package/src/Api/Implementation/ChartingApiImpl.js +4 -0
  22. package/src/Api/Implementation/ColumnApiImpl.js +1 -0
  23. package/src/Api/Implementation/ColumnFilterApiImpl.js +1 -0
  24. package/src/Api/Implementation/CommentsApiImpl.js +1 -0
  25. package/src/Api/Implementation/CustomSortApiImpl.js +1 -0
  26. package/src/Api/Implementation/DashboardApiImpl.js +1 -0
  27. package/src/Api/Implementation/DataChangeHistoryApiImpl.js +12 -15
  28. package/src/Api/Implementation/DataImportApiImpl.js +1 -0
  29. package/src/Api/Implementation/DataSetApiImpl.js +1 -0
  30. package/src/Api/Implementation/EntitlementApiImpl.js +1 -0
  31. package/src/Api/Implementation/EventApiImpl.js +16 -14
  32. package/src/Api/Implementation/ExportApiImpl.js +1 -0
  33. package/src/Api/Implementation/ExpressionApiImpl.js +1 -0
  34. package/src/Api/Implementation/Fdc3ApiImpl.js +1 -0
  35. package/src/Api/Implementation/FilterApiImpl.js +3 -0
  36. package/src/Api/Implementation/FlashingCellApiImpl.js +1 -0
  37. package/src/Api/Implementation/FormatColumnApiImpl.js +1 -0
  38. package/src/Api/Implementation/FreeTextColumnApiImpl.js +1 -0
  39. package/src/Api/Implementation/GridApiImpl.d.ts +9 -9
  40. package/src/Api/Implementation/GridApiImpl.js +17 -16
  41. package/src/Api/Implementation/GridFilterApiImpl.js +1 -0
  42. package/src/Api/Implementation/LayoutApiImpl.js +1 -0
  43. package/src/Api/Implementation/NamedQueryApiImpl.js +1 -0
  44. package/src/Api/Implementation/NoteApiImpl.js +1 -0
  45. package/src/Api/Implementation/PredicateApiImpl.js +1 -0
  46. package/src/Api/Implementation/RowFormApiImpl.js +1 -0
  47. package/src/Api/Implementation/StyledColumnApiImpl.js +1 -0
  48. package/src/Api/Implementation/SystemStatusApiImpl.js +2 -0
  49. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -0
  50. package/src/Api/Implementation/ThemeApiImpl.js +1 -0
  51. package/src/Api/Implementation/UserInterfaceApiImpl.js +2 -1
  52. package/src/Api/Internal/ColumnInternalApi.js +1 -1
  53. package/src/Api/Internal/FormatColumnInternalApi.d.ts +0 -10
  54. package/src/Api/Internal/FormatColumnInternalApi.js +1 -19
  55. package/src/Redux/ActionsReducers/NoteRedux.js +1 -1
  56. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +6 -0
  57. package/src/Redux/Store/AdaptableStore.js +49 -43
  58. package/src/Strategy/AdaptableModuleBase.js +4 -0
  59. package/src/Strategy/AlertModule.js +1 -0
  60. package/src/Strategy/CalculatedColumnModule.js +1 -0
  61. package/src/Strategy/CellSummaryModule.js +1 -1
  62. package/src/Strategy/DataChangeHistoryModule.js +1 -0
  63. package/src/Strategy/FlashingCellModule.js +1 -0
  64. package/src/Strategy/FreeTextColumnModule.js +1 -0
  65. package/src/Strategy/LayoutModule.js +2 -1
  66. package/src/Strategy/PlusMinusModule.js +2 -0
  67. package/src/Strategy/ScheduleModule.js +1 -0
  68. package/src/Strategy/ShortcutModule.js +2 -0
  69. package/src/Strategy/TeamSharingModule.js +10 -10
  70. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +0 -3
  71. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +3 -3
  72. package/src/Utilities/Constants/DocumentationLinkConstants.js +3 -3
  73. package/src/Utilities/ExpressionFunctions/deepMap.js +31 -31
  74. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +3 -3
  75. package/src/Utilities/Helpers/StyleHelper.js +14 -0
  76. package/src/Utilities/MenuItem.js +18 -0
  77. package/src/Utilities/ObjectFactory.js +1 -1
  78. package/src/Utilities/Services/AggregatedScalarLiveValue.js +8 -0
  79. package/src/Utilities/Services/AlertService.js +6 -4
  80. package/src/Utilities/Services/AnnotationsService.js +4 -1
  81. package/src/Utilities/Services/CalculatedColumnExpressionService.js +2 -1
  82. package/src/Utilities/Services/ChartingService.js +1 -0
  83. package/src/Utilities/Services/DataService.js +10 -2
  84. package/src/Utilities/Services/Fdc3Service.js +5 -3
  85. package/src/Utilities/Services/FlashingCellService.js +5 -0
  86. package/src/Utilities/Services/LicenseService/index.js +1 -1
  87. package/src/Utilities/Services/MetamodelService.js +2 -2
  88. package/src/Utilities/Services/ModuleService.js +4 -3
  89. package/src/Utilities/Services/QueryLanguageService.js +6 -5
  90. package/src/Utilities/Services/RowFormService.js +1 -0
  91. package/src/Utilities/Services/RowSummaryService.js +10 -7
  92. package/src/Utilities/Services/TeamSharingService.js +3 -1
  93. package/src/Utilities/Services/ThemeService.js +11 -9
  94. package/src/Utilities/Services/ValidationService.js +1 -0
  95. package/src/Utilities/createAgStatusPanelComponent.js +3 -0
  96. package/src/View/AdaptablePopover/index.d.ts +1 -0
  97. package/src/View/AdaptablePopover/index.js +1 -1
  98. package/src/View/Alert/ActiveAlertsPanel.js +8 -0
  99. package/src/View/Alert/AlertViewPanel.js +13 -9
  100. package/src/View/Alert/Utilities/getAlertButtonStyle.d.ts +1 -0
  101. package/src/View/Alert/Utilities/getAlertButtonStyle.js +8 -0
  102. package/src/View/BulkUpdate/BulkUpdateViewPanel.js +24 -11
  103. package/src/View/CalculatedColumn/CalculatedColumnSummary.js +8 -8
  104. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +2 -2
  105. package/src/View/CellSummary/CellSummaryViewPanel.js +16 -17
  106. package/src/View/Components/AdaptableDateInput/index.js +1 -1
  107. package/src/View/Components/Buttons/ButtonApply.js +1 -1
  108. package/src/View/Components/Buttons/ButtonBase/index.js +9 -9
  109. package/src/View/Components/Buttons/ButtonClear.d.ts +1 -0
  110. package/src/View/Components/Buttons/EntityListActionButtons.js +18 -18
  111. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +1 -1
  112. package/src/View/Components/ExpressionWizard.js +5 -5
  113. package/src/View/Components/Panels/PanelDashboard/index.js +8 -8
  114. package/src/View/Components/Panels/PanelToolPanel/index.js +7 -7
  115. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +19 -18
  116. package/src/View/Components/StyleComponent.js +20 -1
  117. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +2 -0
  118. package/src/View/CustomSort/CustomSortSummary.js +13 -13
  119. package/src/View/Dashboard/DashboardPopup.js +4 -5
  120. package/src/View/Export/ExportDestinationPicker.js +1 -1
  121. package/src/View/Export/ExportStatusBar.js +4 -2
  122. package/src/View/Export/ExportViewPanel.js +25 -18
  123. package/src/View/FormatColumn/FormatColumnSummary.js +13 -13
  124. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +0 -23
  125. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +2 -2
  126. package/src/View/FreeTextColumn/FreeTextColumnSummary.js +13 -13
  127. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +57 -65
  128. package/src/View/QuickSearch/QuickSearchPopup.js +4 -1
  129. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +2 -2
  130. package/src/View/SmartEdit/SmartEditViewPanel.js +1 -0
  131. package/src/View/Theme/ThemePopup.js +13 -16
  132. package/src/View/UIHelper.d.ts +2 -0
  133. package/src/View/UIHelper.js +15 -0
  134. package/src/agGrid/Adaptable.js +4 -0
  135. package/src/agGrid/AdaptableAgGrid.d.ts +2 -2
  136. package/src/agGrid/AdaptableAgGrid.js +104 -38
  137. package/src/agGrid/AdaptableFilterHandler.js +4 -0
  138. package/src/agGrid/AdaptableLogger.d.ts +3 -0
  139. package/src/agGrid/AdaptableLogger.js +10 -0
  140. package/src/agGrid/AgGridAdapter.js +11 -1
  141. package/src/agGrid/AgGridColumnAdapter.js +5 -18
  142. package/src/agGrid/AgGridExportAdapter.js +10 -9
  143. package/src/agGrid/AgGridFilterAdapter.js +4 -0
  144. package/src/agGrid/AgGridFloatingFilterAdapter.js +3 -0
  145. package/src/agGrid/AgGridMenuAdapter.js +1 -0
  146. package/src/agGrid/AgGridModulesAdapter.js +2 -1
  147. package/src/agGrid/AgGridOptionsService.js +3 -0
  148. package/src/agGrid/AgGridThemeAdapter.js +2 -0
  149. package/src/agGrid/cellRenderers/ActionColumnRenderer.js +5 -0
  150. package/src/agGrid/cellRenderers/BadgeRenderer.js +2 -0
  151. package/src/agGrid/cellRenderers/PercentBarRenderer.js +1 -0
  152. package/src/agGrid/editors/AdaptableDateEditor/index.js +6 -3
  153. package/src/agGrid/editors/AdaptableNumberEditor/index.js +16 -12
  154. package/src/agGrid/editors/AdaptablePercentageEditor/index.js +17 -13
  155. package/src/agGrid/index.d.ts +6 -0
  156. package/src/agGrid/index.js +6 -0
  157. package/src/components/Dashboard/DashboardToolbar.js +1 -1
  158. package/src/components/Datepicker/index.js +1 -1
  159. package/src/components/ExpressionEditor/EditorInput.js +19 -3
  160. package/src/components/Tree/TreeDropdown/index.js +1 -1
  161. package/src/components/overlayBaseZIndex.js +1 -1
  162. package/src/components/utils/useContainerScrollObserver/index.js +17 -14
  163. package/src/devTools/index.js +54 -53
  164. package/src/env.js +2 -2
  165. package/src/layout-manager/src/LMEmitter.js +11 -11
  166. package/src/layout-manager/src/LMLogger.js +7 -0
  167. package/src/layout-manager/src/index.js +56 -51
  168. package/src/metamodel/adaptable.metamodel.d.ts +66 -7
  169. package/src/metamodel/adaptable.metamodel.js +1 -1
  170. package/src/migration/AdaptableUpgradeHelper.js +5 -0
  171. package/src/migration/VersionUpgrade.js +1 -0
  172. package/src/migration/VersionUpgrade17.js +1 -2
  173. package/src/migration/VersionUpgrade22.d.ts +6 -0
  174. package/src/migration/VersionUpgrade22.js +27 -0
  175. package/src/parser/src/ExpressionEvaluationError.js +1 -0
  176. package/src/types.d.ts +1 -1
  177. package/tsconfig.esm.tsbuildinfo +1 -1
@@ -1,82 +1,73 @@
1
1
  import * as React from 'react';
2
+ import ArrayExtensions from '../../../Utilities/Extensions/ArrayExtensions';
3
+ import { ADAPTABLE_VERSION } from '../../../EnvVars';
4
+ import { AG_GRID_VERSION } from '../../../agGrid/AgGridModulesAdapter';
5
+ import { DataSource, InfiniteTableGrid } from '../../../components/InfiniteTable';
2
6
  import Panel from '../../../components/Panel';
3
7
  import { Tabs } from '../../../components/Tabs';
4
- import ArrayExtensions from '../../../Utilities/Extensions/ArrayExtensions';
5
- import Helper from '../../../Utilities/Helpers/Helper';
6
- import { AdaptablePopover } from '../../AdaptablePopover';
7
- import { AdaptableObjectCollection } from '../../Components/AdaptableObjectCollection';
8
- import { AdaptableObjectRow } from '../../Components/AdaptableObjectRow';
9
8
  import { PopupPanel } from '../../Components/Popups/AdaptablePopup/PopupPanel';
10
9
  import { AdaptableObjectsSummary } from './AdaptableObjectsSummary';
11
- import { ADAPTABLE_VERSION } from '../../../EnvVars';
12
- import { AG_GRID_VERSION } from '../../../agGrid/AgGridModulesAdapter';
13
10
  import clsx from 'clsx';
14
11
  const adaptableVersion = ADAPTABLE_VERSION;
15
12
  const agGridVersion = AG_GRID_VERSION;
16
13
  export const GridInfoPopup = (props) => {
17
14
  const api = props.api;
18
- const CreateGridSummaries = (colItems) => {
19
- const returnRows = [];
20
- const calcColumns = api.calculatedColumnApi
21
- .getCalculatedColumns()
22
- .map((c) => c.ColumnId);
23
- const actionColumns = api.actionColumnApi
24
- .getActionColumns()
25
- .map((ac) => ac.columnId);
26
- const freeTextColumns = api.freeTextColumnApi
27
- .getFreeTextColumns()
28
- .map((c) => c.ColumnId);
29
- const columnFilterDescription = api.filterApi.columnFilterApi.columnFiltersToString(api.filterApi.columnFilterApi.getColumnFilters());
30
- const gridFilterExpression = api.filterApi.gridFilterApi.getCurrentGridFilterExpression();
31
- const sorts = ArrayExtensions.IsNotNullOrEmpty(props.api.gridApi.getColumnSorts())
32
- ? api.gridApi.getColumnSorts().map((gs) => {
33
- return api.columnApi.getFriendlyNameForColumnId(gs.ColumnId) + ': ' + gs.SortOrder;
34
- })
35
- : null;
36
- const selectedRowInfo = api.gridApi.getSelectedRowInfo();
37
- if (api.optionsApi.getUserInterfaceOptions()?.showAdapTableVersion) {
38
- returnRows.push(createReadOnlyColItem(colItems, 'AdapTable Version', adaptableVersion));
39
- }
40
- if (api.optionsApi.getUserInterfaceOptions()?.showAgGridVersion) {
41
- returnRows.push(createReadOnlyColItem(colItems, 'AG Grid Version', agGridVersion));
42
- }
43
- returnRows.push(createReadOnlyColItem(colItems, 'Sorted Columns', ArrayExtensions.IsNotNullOrEmpty(sorts) ? sorts.join('; ') : 'None'));
44
- returnRows.push(createReadOnlyColItem(colItems, 'Column Filters', columnFilterDescription));
45
- returnRows.push(createReadOnlyColItem(colItems, 'Grid Filter', gridFilterExpression));
46
- returnRows.push(createReadOnlyColItem(colItems, 'All Rows', props.api.gridApi.getRowCount()));
47
- returnRows.push(createReadOnlyColItem(colItems, 'Visible Rows', props.api.gridApi.getVisibleRowCount()));
48
- returnRows.push(createReadOnlyColItem(colItems, 'Selected Rows', selectedRowInfo?.gridRows.length));
49
- returnRows.push(createReadOnlyColItem(colItems, 'Visible Selected Rows', selectedRowInfo?.gridRows.filter((gr) => gr.rowNode?.displayed == true).length));
50
- returnRows.push(createReadOnlyColItem(colItems, 'All Columns', props.api.gridApi.getColumnCount()));
51
- returnRows.push(createReadOnlyColItem(colItems, 'Visible Columns', props.api.gridApi.getVisibleColumnCount()));
52
- returnRows.push(createReadOnlyColItem(colItems, 'Calculated Columns', ArrayExtensions.IsNotNullOrEmpty(calcColumns)
15
+ const keyValuePairs = [];
16
+ const calcColumns = api.calculatedColumnApi
17
+ .getCalculatedColumns()
18
+ .map((c) => c.ColumnId);
19
+ const actionColumns = api.actionColumnApi
20
+ .getActionColumns()
21
+ .map((ac) => ac.columnId);
22
+ const freeTextColumns = api.freeTextColumnApi
23
+ .getFreeTextColumns()
24
+ .map((c) => c.ColumnId);
25
+ const columnFilterDescription = api.filterApi.columnFilterApi.columnFiltersToString(api.filterApi.columnFilterApi.getColumnFilters());
26
+ const gridFilterExpression = api.filterApi.gridFilterApi.getCurrentGridFilterExpression();
27
+ const sorts = ArrayExtensions.IsNotNullOrEmpty(props.api.gridApi.getColumnSorts())
28
+ ? api.gridApi.getColumnSorts().map((gs) => {
29
+ return api.columnApi.getFriendlyNameForColumnId(gs.ColumnId) + ': ' + gs.SortOrder;
30
+ })
31
+ : null;
32
+ const selectedRowInfo = api.gridApi.getSelectedRowInfo();
33
+ if (api.optionsApi.getUserInterfaceOptions()?.showAdapTableVersion) {
34
+ keyValuePairs.push({ Key: 'AdapTable Version', Value: adaptableVersion });
35
+ }
36
+ if (api.optionsApi.getUserInterfaceOptions()?.showAgGridVersion) {
37
+ keyValuePairs.push({ Key: 'AG Grid Version', Value: agGridVersion });
38
+ }
39
+ keyValuePairs.push({ Key: 'Sorted Columns', Value: ArrayExtensions.IsNotNullOrEmpty(sorts) ? sorts.join('; ') : 'None' });
40
+ keyValuePairs.push({ Key: 'Column Filters', Value: columnFilterDescription });
41
+ keyValuePairs.push({ Key: 'Grid Filter', Value: gridFilterExpression });
42
+ keyValuePairs.push({ Key: 'All Rows', Value: props.api.gridApi.getRowCount() });
43
+ keyValuePairs.push({ Key: 'Visible Rows', Value: props.api.gridApi.getVisibleRowCount() });
44
+ keyValuePairs.push({ Key: 'Selected Rows', Value: selectedRowInfo?.gridRows.length });
45
+ keyValuePairs.push({ Key: 'Visible Selected Rows', Value: selectedRowInfo?.gridRows.filter((gr) => gr.rowNode?.displayed == true).length });
46
+ keyValuePairs.push({ Key: 'All Columns', Value: props.api.gridApi.getColumnCount() });
47
+ keyValuePairs.push({ Key: 'Visible Columns', Value: props.api.gridApi.getVisibleColumnCount() });
48
+ keyValuePairs.push({ Key: 'Calculated Columns', Value: ArrayExtensions.IsNotNullOrEmpty(calcColumns)
53
49
  ? ArrayExtensions.createCommaSeparatedString(calcColumns)
54
- : 'None'));
55
- returnRows.push(createReadOnlyColItem(colItems, 'Free Text Columns', ArrayExtensions.IsNotNullOrEmpty(freeTextColumns)
50
+ : 'None' });
51
+ keyValuePairs.push({ Key: 'Free Text Columns', Value: ArrayExtensions.IsNotNullOrEmpty(freeTextColumns)
56
52
  ? ArrayExtensions.createCommaSeparatedString(freeTextColumns)
57
- : 'None'));
58
- returnRows.push(createReadOnlyColItem(colItems, 'Action Columns', ArrayExtensions.IsNotNullOrEmpty(actionColumns)
53
+ : 'None' });
54
+ keyValuePairs.push({ Key: 'CalcuActionlated Columns', Value: ArrayExtensions.IsNotNullOrEmpty(actionColumns)
59
55
  ? ArrayExtensions.createCommaSeparatedString(actionColumns)
60
- : 'None'));
61
- return returnRows;
56
+ : 'None' });
57
+ const domProps = {
58
+ className: 'twa:flex-1 twa:min-h-0 twa:w-full',
62
59
  };
63
- const createReadOnlyColItem = (colItems, item1, item2, item3) => {
64
- let rowColItems = Helper.cloneObject(colItems);
65
- rowColItems[0].Content = item1;
66
- rowColItems[1].Content = item2;
67
- if (item3) {
68
- let infoButton = React.createElement(AdaptablePopover, { headerText: null, bodyText: [item3] });
69
- rowColItems[2].Content = infoButton;
70
- }
71
- return rowColItems;
60
+ keyValuePairs.map((keyValuePair) => {
61
+ return {
62
+ Key: keyValuePair.Key,
63
+ Value: keyValuePair.Value === 'Ignore' ? null : keyValuePair.Value,
64
+ };
65
+ })
66
+ .filter((x) => x.Value);
67
+ const columnsMap = {
68
+ Key: { field: 'Key', header: 'Property', defaultFlex: 1 },
69
+ Value: { field: 'Value', header: 'Value', defaultFlex: 3 },
72
70
  };
73
- let propValueColItems = [
74
- { Content: 'Property', Size: 5 },
75
- { Content: 'Value', Size: 7 },
76
- ];
77
- let gridSummaries = CreateGridSummaries(propValueColItems).map((x, index) => {
78
- return React.createElement(AdaptableObjectRow, { key: index, colItems: x });
79
- });
80
71
  const baseClassName = 'ab-GridInfo';
81
72
  return (React.createElement(PopupPanel, { className: clsx(baseClassName), headerText: 'Grid Info', glyphicon: 'info', scrollable: false },
82
73
  React.createElement(Panel, { className: "twa:flex-1 twa:border-none twa:shadow-md twa:overflow-hidden" },
@@ -85,7 +76,8 @@ export const GridInfoPopup = (props) => {
85
76
  React.createElement(Tabs.Tab, null, "Grid Summary"),
86
77
  React.createElement(Tabs.Tab, null, "Grid State"),
87
78
  React.createElement(Tabs.Content, null,
88
- React.createElement(AdaptableObjectCollection, { className: "twa:flex-1 twa:min-h-0" /* so the collection scrolls nicely, the header remains fixed*/, colItems: propValueColItems, items: gridSummaries })),
79
+ React.createElement(DataSource, { data: keyValuePairs, primaryKey: "Key" },
80
+ React.createElement(InfiniteTableGrid, { domProps: domProps, columns: columnsMap }))),
89
81
  React.createElement(Tabs.Content, null,
90
82
  React.createElement(AdaptableObjectsSummary, { className: "twa:min-h-0 twa:overflow-auto twa:p-2" })))))));
91
83
  };
@@ -35,7 +35,10 @@ const QuickSearchPopupComponent = (props) => {
35
35
  React.createElement(Card, null,
36
36
  React.createElement(Card.Title, null, "Behaviour"),
37
37
  React.createElement(Card.Body, { className: "twa:p-1", gap: 2 },
38
- React.createElement(HelpBlock, { className: "twa:text-2 twa:w-fit" }, "Filters the Grid to only show rows with matching cells; use with care as can cause performance issues"),
38
+ React.createElement(HelpBlock, { className: "twa:text-2 twa:w-fit" },
39
+ "Filter Grid when searching to only show rows with matching cells; ",
40
+ React.createElement("b", null, "use with care"),
41
+ " as can cause performance issues"),
39
42
  React.createElement(CheckBox, { "data-name": "filter-quick-search-results", value: "existing", checked: state.RunQueryAfterQuickSearch, disabled: StringExtensions.IsNotNullOrEmpty(searchText), onChange: onQuickSearchBehaviourChange }, "Filter using Quick Search Results"))),
40
43
  React.createElement(Card.Title, { border: false, className: "twa:pt-3" }, "Cell Matching Style"),
41
44
  React.createElement(Card, null,
@@ -20,13 +20,13 @@ export const ScheduleSettingsReminder = (props) => {
20
20
  const handleHeaderChange = (event) => {
21
21
  props.onChange({
22
22
  ...props.reminderSchedule,
23
- Header: event.target?.value,
23
+ Header: event.target.value,
24
24
  });
25
25
  };
26
26
  const handleMessageChange = (event) => {
27
27
  props.onChange({
28
28
  ...props.reminderSchedule,
29
- Message: event.target?.value,
29
+ Message: event.target.value,
30
30
  });
31
31
  };
32
32
  const handleDisplayNotificationChange = (checked) => {
@@ -13,6 +13,7 @@ import { connect } from 'react-redux';
13
13
  import { Select } from '../../components/Select';
14
14
  import { Flex } from '../../components/Flex';
15
15
  class SmartEditViewPanelComponent extends React.Component {
16
+ cleanupEvent;
16
17
  constructor(props) {
17
18
  super(props);
18
19
  this.state = {
@@ -11,22 +11,6 @@ import { Icon } from '../../components/icons';
11
11
  import { ThemeSelector } from './ThemeSelector';
12
12
  import { Box } from '../../components/Flex';
13
13
  class ThemePopupComponent extends React.Component {
14
- constructor() {
15
- super(...arguments);
16
- this.handleCreateNewTheme = (variant) => {
17
- let nthItem = this.props.UserThemes.length + 1;
18
- let name = 'Custom-Theme-' + nthItem;
19
- // make sure it is unique
20
- while (this.props.UserThemes.some((theme) => theme.Name === name)) {
21
- nthItem++;
22
- name = 'Custom-Theme-' + nthItem;
23
- }
24
- const newTheme = ObjectFactory.CreateEmptyTheme(name);
25
- newTheme.Variant = variant;
26
- this.props.api.themeApi.addUserTheme(newTheme);
27
- this.props.api.themeApi.loadTheme(newTheme.Name);
28
- };
29
- }
30
14
  render() {
31
15
  const isCustomTheme = this.props.api.themeApi
32
16
  .getUserThemes()
@@ -59,6 +43,19 @@ class ThemePopupComponent extends React.Component {
59
43
  onChangeTheme(value) {
60
44
  this.props.SelectTheme(value);
61
45
  }
46
+ handleCreateNewTheme = (variant) => {
47
+ let nthItem = this.props.UserThemes.length + 1;
48
+ let name = 'Custom-Theme-' + nthItem;
49
+ // make sure it is unique
50
+ while (this.props.UserThemes.some((theme) => theme.Name === name)) {
51
+ nthItem++;
52
+ name = 'Custom-Theme-' + nthItem;
53
+ }
54
+ const newTheme = ObjectFactory.CreateEmptyTheme(name);
55
+ newTheme.Variant = variant;
56
+ this.props.api.themeApi.addUserTheme(newTheme);
57
+ this.props.api.themeApi.loadTheme(newTheme.Name);
58
+ };
62
59
  }
63
60
  function mapStateToProps(state, ownProps) {
64
61
  return {
@@ -38,6 +38,7 @@ export declare function getMessageTypeByStatusColour(statusColour: StatusColour)
38
38
  export declare function getButtonToneByMessageType(messageType: AdaptableMessageType): 'success' | 'error' | 'neutral' | 'none' | 'warning' | 'info' | 'accent';
39
39
  export declare function getGlyphByMessageType(messageType: AdaptableMessageType): AdaptableSystemIconName;
40
40
  export declare function getColorByMessageType(messageType: AdaptableMessageType): string;
41
+ export declare function getCSSColorByMessageType(messageType: AdaptableMessageType): string;
41
42
  export declare function getStyleForStatusColour(statusColour: StatusColour): CSSProperties;
42
43
  export declare function getStyleForMessageType(messageType: AdaptableMessageType): CSSProperties;
43
44
  export declare function getGlyphForStatusColour(statusColour: StatusColour): string;
@@ -75,6 +76,7 @@ export declare const UIHelper: {
75
76
  getGlyphForMessageType: typeof getGlyphForMessageType;
76
77
  getStyleForMessageType: typeof getStyleForMessageType;
77
78
  getMessageTypeFromAdaptableAlerts: typeof getMessageTypeFromAdaptableAlerts;
79
+ getCSSColorByMessageType: typeof getCSSColorByMessageType;
78
80
  getButtonColourForAdaptableAlerts: typeof getButtonColourForAdaptableAlerts;
79
81
  getButtonTextColourForArrayandMessageType: typeof getButtonTextColourForArrayandMessageType;
80
82
  getButtonTextColourForMessageType: typeof getButtonTextColourForMessageType;
@@ -202,6 +202,20 @@ export function getColorByMessageType(messageType) {
202
202
  return 'var(--ab-color-info)';
203
203
  }
204
204
  }
205
+ export function getCSSColorByMessageType(messageType) {
206
+ switch (messageType) {
207
+ case 'Error':
208
+ return 'error';
209
+ case 'Warning':
210
+ return 'warn';
211
+ case 'Success':
212
+ return 'success';
213
+ case 'Info':
214
+ return 'info';
215
+ default:
216
+ return '';
217
+ }
218
+ }
205
219
  export function getStyleForStatusColour(statusColour) {
206
220
  let result;
207
221
  switch (statusColour) {
@@ -449,6 +463,7 @@ export const UIHelper = {
449
463
  getGlyphForMessageType,
450
464
  getStyleForMessageType,
451
465
  getMessageTypeFromAdaptableAlerts,
466
+ getCSSColorByMessageType,
452
467
  getButtonColourForAdaptableAlerts,
453
468
  getButtonTextColourForArrayandMessageType,
454
469
  getButtonTextColourForMessageType,
@@ -21,6 +21,10 @@ export class Adaptable {
21
21
  }
22
22
  }
23
23
  export class AdaptableNoCodeWizard {
24
+ init;
25
+ adaptableOptions;
26
+ extraOptions;
27
+ agGridModules;
24
28
  /**
25
29
  * @param adaptableOptions
26
30
  */
@@ -257,10 +257,10 @@ export declare class AdaptableAgGrid implements IAdaptable {
257
257
  added: IRowNode[];
258
258
  updated: IRowNode[];
259
259
  }>;
260
- applyGridDataTransaction(dataTransaction: {
260
+ manageGridRows(dataRows: {
261
261
  add?: any[];
262
262
  update?: any[];
263
- remove?: any[];
263
+ delete?: any[];
264
264
  }, config?: DataUpdateConfig): Promise<{
265
265
  addedRows: IRowNode[];
266
266
  updatedRows: IRowNode[];
@@ -155,38 +155,77 @@ LocalEventService_Prototype.dispatchEvent = function (event) {
155
155
  const adaptableInstances = {};
156
156
  const publishTimestamp = Number(ADAPTABLE_PUBLISH_TIMESTAMP);
157
157
  export class AdaptableAgGrid {
158
+ logger;
159
+ _id;
160
+ lifecycleState;
161
+ variant;
162
+ emitter;
163
+ /**
164
+ * Runtime flags
165
+ */
166
+ hasAutogeneratedPrimaryKey;
167
+ hasAdaptableToolPanel;
168
+ initWithLazyData;
169
+ _rawAdaptableOptions;
170
+ adaptableOptions;
171
+ _isDetailGrid;
172
+ _isDetailGridForIndex;
173
+ agGridOptionsService;
174
+ agGridAdapter;
175
+ agGridColumnAdapter;
176
+ agGridMenuAdapter;
177
+ agGridExportAdapter;
178
+ agGridThemeAdapter;
179
+ agGridModulesAdapter;
180
+ DANGER_USE_GETTER_adaptableContainerElement;
181
+ DANGER_USE_GETTER_agGridContainerElement;
182
+ api;
183
+ adaptableStore;
184
+ adaptableModules;
185
+ DataService;
186
+ CalculatedColumnExpressionService;
187
+ ModuleService;
188
+ ValidationService;
189
+ QueryLanguageService;
190
+ AlertService;
191
+ TeamSharingService;
192
+ MetamodelService;
193
+ RowFormService;
194
+ Fdc3Service;
195
+ AnnotationsService;
196
+ FlashingCellService;
197
+ LicenseService;
198
+ ChartingService;
199
+ ThemeService;
200
+ rowListeners;
201
+ throttleFilterOnDataChange;
202
+ debouncedSetSelectedRows;
203
+ debouncedSetSelectedCells;
204
+ agGridListenerKeydown;
205
+ agGridListenerMouseEnter;
206
+ agGridListenerMouseLeave;
207
+ listenerGlobalSetRowSelection;
208
+ listenerGlobalChartingChanges;
209
+ listenerCellEditingStarted;
210
+ listenerFirstDataRendered;
211
+ listenerPivotChanged;
212
+ listenerCellSelectionChanged;
213
+ listenerSortChanged;
214
+ listenerColumnGroupOpened;
215
+ layoutManager;
216
+ columnMinMaxValuesCache = {};
217
+ renderReactRoot = (node, container) => defaultRenderReactRoot(node, container);
218
+ unmountReactRoot;
219
+ unmountLoadingScreen;
220
+ /**
221
+ * Temporary, these are MIGRATION technical debts, and should be removed as soon as possible
222
+ */
223
+ adaptableStatusPanelKeys = [];
224
+ // see #no_additional_react_root
225
+ _PRIVATE_adaptableJSXElement;
226
+ _prevLayout;
227
+ __prevLayoutForRefresh;
158
228
  constructor(config) {
159
- this.columnMinMaxValuesCache = {};
160
- this.renderReactRoot = (node, container) => defaultRenderReactRoot(node, container);
161
- /**
162
- * Temporary, these are MIGRATION technical debts, and should be removed as soon as possible
163
- */
164
- this.adaptableStatusPanelKeys = [];
165
- // only for our private / internal events used within Adaptable
166
- // public events are emitted through the EventApi
167
- this._emit = (eventName, data) => {
168
- if (this.emitter) {
169
- return this.emitter.emit(eventName, data);
170
- }
171
- };
172
- this._emitSync = (eventName, data) => {
173
- if (this.emitter) {
174
- return this.emitter.emitSync(eventName, data);
175
- }
176
- };
177
- this._on = (eventName, callback) => {
178
- if (!this.emitter) {
179
- return () => { };
180
- }
181
- return this.emitter.on(eventName, callback);
182
- };
183
- this._onIncludeFired = (eventName, callback) => {
184
- if (!this.emitter) {
185
- return () => { };
186
- }
187
- return this.emitter.onIncludeFired(eventName, callback);
188
- };
189
- this.__updateColumnModelAndRefreshGrid_already_called = false;
190
229
  this.lifecycleState = 'initial';
191
230
  this.emitter = new Emitter();
192
231
  this.agGridOptionsService = new AgGridOptionsService(this);
@@ -222,6 +261,30 @@ export class AdaptableAgGrid {
222
261
  get isDestroyed() {
223
262
  return this.lifecycleState === 'preDestroyed';
224
263
  }
264
+ // only for our private / internal events used within Adaptable
265
+ // public events are emitted through the EventApi
266
+ _emit = (eventName, data) => {
267
+ if (this.emitter) {
268
+ return this.emitter.emit(eventName, data);
269
+ }
270
+ };
271
+ _emitSync = (eventName, data) => {
272
+ if (this.emitter) {
273
+ return this.emitter.emitSync(eventName, data);
274
+ }
275
+ };
276
+ _on = (eventName, callback) => {
277
+ if (!this.emitter) {
278
+ return () => { };
279
+ }
280
+ return this.emitter.on(eventName, callback);
281
+ };
282
+ _onIncludeFired = (eventName, callback) => {
283
+ if (!this.emitter) {
284
+ return () => { };
285
+ }
286
+ return this.emitter.onIncludeFired(eventName, callback);
287
+ };
225
288
  /**
226
289
  * Internal initializer for Adaptable, directly called by the React and Angular Adaptable wrappers
227
290
  * @private
@@ -782,7 +845,8 @@ You need to define at least one Layout!`);
782
845
  return original_autoGroupColumnDef;
783
846
  }
784
847
  if (typeof original_autoGroupColumnDef?.filter === 'object') {
785
- this.logger.warn(`autoGroupColumnDef.filter is set and overrides the Adaptable custom filter mechanism! We recommend using a ColumnOptions.columnHeader instead!`);
848
+ 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!
849
+ Please contact the Adaptable Support Team for further assistance and investigation.`);
786
850
  return original_autoGroupColumnDef;
787
851
  }
788
852
  const autoGroupColumnDef = { ...original_autoGroupColumnDef };
@@ -790,7 +854,8 @@ You need to define at least one Layout!`);
790
854
  // !! DO NOT REMOVE THIS !!
791
855
  // see https://github.com/ag-grid/ag-grid/blob/6f43ff257c2e285068eb425b655e58d6eeb89816/packages/ag-grid-enterprise/src/rowHierarchy/autoColService.ts#L225
792
856
  autoGroupColumnDef.filterValueGetter = (params) => {
793
- this.logger.error('autoGroupColumnDef.filterValueGetter was called unexpectedly; this is not an expected execution path!', params);
857
+ this.logger.consoleWarn(`An unexpected invocation of autoGroupColumnDef.filterValueGetter was detected. This execution path is not expected under normal operation.
858
+ Please contact the Adaptable Support Team for further assistance and investigation.`, params);
794
859
  return '';
795
860
  };
796
861
  // !! it is important that we always return the same component / handler instances
@@ -2066,6 +2131,7 @@ You need to define at least one Layout!`);
2066
2131
  }
2067
2132
  return rawValue;
2068
2133
  }
2134
+ __updateColumnModelAndRefreshGrid_already_called = false;
2069
2135
  updateColumnModelAndRefreshGrid() {
2070
2136
  if (this.__updateColumnModelAndRefreshGrid_already_called) {
2071
2137
  return;
@@ -2401,18 +2467,18 @@ You need to define at least one Layout!`);
2401
2467
  });
2402
2468
  }
2403
2469
  }
2404
- async applyGridDataTransaction(dataTransaction, config = {}) {
2470
+ async manageGridRows(dataRows, config = {}) {
2405
2471
  const result = {
2406
2472
  addedRows: [],
2407
2473
  updatedRows: [],
2408
2474
  removedRows: [],
2409
2475
  };
2410
- if (!dataTransaction) {
2476
+ if (!dataRows) {
2411
2477
  return result;
2412
2478
  }
2413
- const addDataRows = dataTransaction.add;
2414
- const updateDataRows = dataTransaction.update;
2415
- const removeDataRows = dataTransaction.remove;
2479
+ const addDataRows = dataRows.add;
2480
+ const updateDataRows = dataRows.update;
2481
+ const removeDataRows = dataRows.delete;
2416
2482
  if (this.hasAutogeneratedPrimaryKey) {
2417
2483
  this.addSyntheticPrimaryKeyIfMissing(addDataRows);
2418
2484
  }
@@ -1,4 +1,8 @@
1
1
  export class AdaptableFilterHandler {
2
+ adaptableApi;
3
+ colId;
4
+ filterDisplayValuesResult;
5
+ previousFilterDisplayValuesResult;
2
6
  constructor(adaptableApi) {
3
7
  this.adaptableApi = adaptableApi;
4
8
  }
@@ -1,5 +1,8 @@
1
1
  import { AdaptableMessageType } from '../AdaptableState/Common/AdaptableMessageType';
2
2
  export declare const errorOnce: (message: string) => void;
3
+ /**
4
+ * AdapTable's Logger
5
+ */
3
6
  export declare class AdaptableLogger {
4
7
  private adaptableId;
5
8
  private debugger;
@@ -11,7 +11,17 @@ export const errorOnce = (message) => {
11
11
  console.error(message);
12
12
  errorOnceFlags[message] = true;
13
13
  };
14
+ /**
15
+ * AdapTable's Logger
16
+ */
14
17
  export class AdaptableLogger {
18
+ adaptableId;
19
+ debugger;
20
+ infoLogger;
21
+ successLogger;
22
+ warnLogger;
23
+ errorLogger;
24
+ perfLogger;
15
25
  // use static loggers whenever access to AdaptableLogger instance is not feasible
16
26
  static consoleErrorBase(message, ...optionalParams) {
17
27
  if (optionalParams?.length) {
@@ -13,9 +13,19 @@ import { isWeightedAverageAggFuncName } from '../AdaptableState/Common/Aggregati
13
13
  const DANGER_AG_GRID_BEANS_MAP = {};
14
14
  const getColumnApiModule = () => ColumnApiModule;
15
15
  export class AgGridAdapter {
16
+ _adaptableInstance;
17
+ DANGER_USE_GETTER_gridApi;
18
+ DANGER_gridApi_from_args;
19
+ // see #gridOpts_monkey_patch
20
+ DANGER_updateGridOptionsMonkeyPatcher;
21
+ // see #aggColumnFilters_monkey_patch
22
+ DANGER_doFiltersPassMonkeyPatcher;
23
+ DANGER_isAggFilterPresentMonkeyPatcher;
24
+ activePivotColumnFilters_MEMO = new WeakMap();
25
+ initialGridOptions;
26
+ _agGridId;
16
27
  constructor(_adaptableInstance, config) {
17
28
  this._adaptableInstance = _adaptableInstance;
18
- this.activePivotColumnFilters_MEMO = new WeakMap();
19
29
  const columnApiModuleReference = config?.getAgGridColumnApiModuleReference?.() ?? getColumnApiModule();
20
30
  const ColumnDefFactory_Prototype = columnApiModuleReference?.beans?.[0]?.prototype;
21
31
  if (!ColumnDefFactory_Prototype) {
@@ -27,6 +27,8 @@ export function getEditorForColumnDataType(columnDataType, variant) {
27
27
  }
28
28
  }
29
29
  export class AgGridColumnAdapter {
30
+ adaptableInstance;
31
+ colDefPropertyCache;
30
32
  constructor(adaptableInstance) {
31
33
  this.adaptableInstance = adaptableInstance;
32
34
  this.colDefPropertyCache = new Map();
@@ -300,12 +302,10 @@ export class AgGridColumnAdapter {
300
302
  // see #header_text_align
301
303
  const formatColumnWithTextAlignment = this.getRelevantFormatColumnHeaderStyles(abColumn)
302
304
  // we take the first one only, even if multiple are defined
303
- .find((fc) => fc.CellAlignment != undefined);
305
+ .find((fc) => fc.Style?.Alignment != undefined);
304
306
  if (formatColumnWithTextAlignment) {
305
- baseHeaderClass = [
306
- ...baseHeaderClass,
307
- `ab-header__align-${formatColumnWithTextAlignment.CellAlignment.toLowerCase()}`,
308
- ];
307
+ const alignment = formatColumnWithTextAlignment.Style.Alignment.toLowerCase();
308
+ baseHeaderClass = [...baseHeaderClass, `ab-header__align-${alignment}`];
309
309
  }
310
310
  const formatColumns = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnWithStyleClassNameForColumn(abColumn, {
311
311
  target,
@@ -1261,19 +1261,6 @@ export class AgGridColumnAdapter {
1261
1261
  const formatColumnStyle = formatColumn.Style
1262
1262
  ? convertAdaptableStyleToCSS(formatColumn.Style)
1263
1263
  : {};
1264
- if (formatColumn.CellAlignment) {
1265
- switch (formatColumn.CellAlignment) {
1266
- case 'Left':
1267
- style.textAlign = 'left';
1268
- break;
1269
- case 'Right':
1270
- style.textAlign = 'right';
1271
- break;
1272
- case 'Center':
1273
- style.textAlign = 'center';
1274
- break;
1275
- }
1276
- }
1277
1264
  return { ...style, ...formatColumnStyle };
1278
1265
  }, {});
1279
1266
  }
@@ -8,17 +8,18 @@ import { createUuid } from '../AdaptableState/Uuid';
8
8
  import { inferSchema, initParser } from 'udsv';
9
9
  import { AG_GRID_GROUPED_COLUMN, AG_GRID_SELECTION_COLUMN, } from '../Utilities/Constants/GeneralConstants';
10
10
  export class AgGridExportAdapter {
11
+ _adaptableInstance;
12
+ /**
13
+ * !!!
14
+ * do NOT mutate this array reference, this is passed only initially to AG Grid and we can only change it's internal state
15
+ */
16
+ DANGER_excelStyles = [];
17
+ originalExcelStyles = [];
18
+ excelStylesCache = {};
19
+ cellOrHeaderClassKey2ExcelStyleIdMap = {};
20
+ excelStylesWithFormattedDate = {};
11
21
  constructor(_adaptableInstance) {
12
22
  this._adaptableInstance = _adaptableInstance;
13
- /**
14
- * !!!
15
- * do NOT mutate this array reference, this is passed only initially to AG Grid and we can only change it's internal state
16
- */
17
- this.DANGER_excelStyles = [];
18
- this.originalExcelStyles = [];
19
- this.excelStylesCache = {};
20
- this.cellOrHeaderClassKey2ExcelStyleIdMap = {};
21
- this.excelStylesWithFormattedDate = {};
22
23
  }
23
24
  get agGridApi() {
24
25
  return this._adaptableInstance.agGridAdapter.getAgGridApi();
@@ -14,6 +14,10 @@ export const AgGridFilterAdapterFactory = (adaptable) => {
14
14
  return 'filter_' + colId + '_' + adaptable.adaptableOptions.adaptableId;
15
15
  }
16
16
  return class AgGridFilterAdapter {
17
+ params;
18
+ filterContainer;
19
+ column;
20
+ unmountReactRoot;
17
21
  init(params) {
18
22
  this.params = params;
19
23
  this.column = params.column;