@adaptabletools/adaptable 12.0.0-canary.0 → 12.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 (149) hide show
  1. package/base.css +561 -283
  2. package/bundle.cjs.js +162 -148
  3. package/index.css +631 -280
  4. package/package.json +3 -3
  5. package/publishTimestamp.d.ts +1 -1
  6. package/publishTimestamp.js +1 -1
  7. package/src/AdaptableInterfaces/AdaptableNoCodeWizard.d.ts +1 -0
  8. package/src/AdaptableOptions/AlertOptions.d.ts +5 -9
  9. package/src/AdaptableOptions/DashboardOptions.d.ts +1 -5
  10. package/src/AdaptableOptions/DataChangeHistoryOptions.d.ts +2 -2
  11. package/src/AdaptableOptions/EditOptions.d.ts +26 -8
  12. package/src/AdaptableOptions/ExportOptions.d.ts +4 -7
  13. package/src/AdaptableOptions/GeneralOptions.d.ts +12 -2
  14. package/src/AdaptableOptions/ToolPanelOptions.d.ts +1 -5
  15. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +21 -3
  16. package/src/Api/AlertApi.d.ts +3 -3
  17. package/src/Api/ColumnApi.d.ts +7 -2
  18. package/src/Api/EventApi.d.ts +11 -0
  19. package/src/Api/Events/RowFormSubmitted.d.ts +15 -0
  20. package/src/Api/Events/SearchChanged.d.ts +1 -1
  21. package/src/Api/ExportApi.d.ts +2 -2
  22. package/src/Api/FilterApi.d.ts +69 -1
  23. package/src/Api/Implementation/AlertApiImpl.d.ts +3 -3
  24. package/src/Api/Implementation/ColumnApiImpl.d.ts +2 -2
  25. package/src/Api/Implementation/ColumnApiImpl.js +15 -14
  26. package/src/Api/Implementation/ConfigApiImpl.js +1 -1
  27. package/src/Api/Implementation/ExportApiImpl.d.ts +2 -2
  28. package/src/Api/Implementation/FilterApiImpl.d.ts +16 -1
  29. package/src/Api/Implementation/FilterApiImpl.js +141 -0
  30. package/src/Api/Implementation/FormatColumnApiImpl.js +2 -2
  31. package/src/Api/Implementation/GridApiImpl.js +7 -3
  32. package/src/Api/Implementation/InternalApiImpl.d.ts +3 -3
  33. package/src/Api/Implementation/LayoutApiImpl.d.ts +1 -15
  34. package/src/Api/Implementation/LayoutApiImpl.js +0 -152
  35. package/src/Api/Implementation/PredicateApiImpl.d.ts +2 -0
  36. package/src/Api/Implementation/PredicateApiImpl.js +18 -0
  37. package/src/Api/LayoutApi.d.ts +1 -72
  38. package/src/Api/PredicateApi.d.ts +7 -0
  39. package/src/PredefinedConfig/AlertState.d.ts +4 -4
  40. package/src/PredefinedConfig/Common/AdaptableColumn.d.ts +1 -1
  41. package/src/PredefinedConfig/Common/FormContext.d.ts +11 -0
  42. package/src/PredefinedConfig/Common/FormContext.js +2 -0
  43. package/src/Redux/ActionsReducers/LayoutRedux.js +0 -1
  44. package/src/Redux/ActionsReducers/PopupRedux.d.ts +3 -2
  45. package/src/Redux/Store/AdaptableStore.js +6 -0
  46. package/src/Strategy/AdaptableModuleBase.js +1 -2
  47. package/src/Strategy/BulkUpdateModule.js +3 -4
  48. package/src/Strategy/CellSummaryModule.js +1 -2
  49. package/src/Strategy/FilterModule.js +15 -18
  50. package/src/Strategy/LayoutModule.js +1 -0
  51. package/src/Strategy/PlusMinusModule.js +1 -4
  52. package/src/Strategy/SmartEditModule.js +2 -2
  53. package/src/Utilities/Constants/GeneralConstants.d.ts +2 -0
  54. package/src/Utilities/Constants/GeneralConstants.js +3 -1
  55. package/src/Utilities/Defaults/DefaultAdaptableOptions.js +2 -0
  56. package/src/Utilities/Services/CalculatedColumnExpressionService.js +6 -7
  57. package/src/Utilities/Services/RowEditService.d.ts +1 -0
  58. package/src/Utilities/Services/RowEditService.js +34 -2
  59. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.d.ts +8 -3
  60. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +3 -2
  61. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationForm.js +9 -2
  62. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.d.ts +30 -0
  63. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +87 -0
  64. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizardColumnsStep.d.ts +18 -0
  65. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizardColumnsStep.js +16 -0
  66. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/index.d.ts +2 -9
  67. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/index.js +2 -75
  68. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/useSelection.d.ts +3 -1
  69. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/useSelection.js +9 -4
  70. package/src/View/AdaptableWizardView/Utils.d.ts +1 -0
  71. package/src/View/AdaptableWizardView/Utils.js +24 -0
  72. package/src/View/AdaptableWizardView/Wizard.d.ts +54 -0
  73. package/src/View/AdaptableWizardView/Wizard.js +98 -0
  74. package/src/View/AdaptableWizardView/index.d.ts +1 -22
  75. package/src/View/AdaptableWizardView/index.js +2 -103
  76. package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +1 -1
  77. package/src/View/Alert/Wizard/AlertButtonsEditor.d.ts +3 -3
  78. package/src/View/Alert/Wizard/AlertDisplayWizardSection.js +2 -2
  79. package/src/View/Alert/Wizard/BaseAlertRulesWizardSection.js +1 -1
  80. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +2 -2
  81. package/src/View/BulkUpdate/BulkUpdatePopup.js +2 -3
  82. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +3 -4
  83. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +5 -6
  84. package/src/View/CellSummary/CellSummaryDetails.js +2 -2
  85. package/src/View/Components/FilterForm/FilterForm.js +1 -1
  86. package/src/View/Components/FilterForm/QuickFilterForm.js +1 -1
  87. package/src/View/Components/PreviewResultsPanel.js +3 -3
  88. package/src/View/Components/WizardSummaryPage.js +2 -2
  89. package/src/View/ConditionalStyle/Wizard/ConditionalStyleRuleWizardSection.js +1 -1
  90. package/src/View/ConditionalStyle/Wizard/ConditionalStyleScopeWizardSection.js +1 -1
  91. package/src/View/ConditionalStyle/Wizard/ConditionalStyleSettingsWizardSettings.js +1 -1
  92. package/src/View/ConditionalStyle/Wizard/ConditionalStyleStyleWizardSection.js +1 -1
  93. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +2 -2
  94. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +1 -1
  95. package/src/View/DataChangeHistory/buildActionColumnButton.d.ts +2 -2
  96. package/src/View/Export/Wizard/ReportColumnsWizardSection.js +1 -1
  97. package/src/View/Export/Wizard/ReportNameWizardSection.js +1 -1
  98. package/src/View/Export/Wizard/ReportRowsWizardSection.js +1 -1
  99. package/src/View/Filter/ActiveFiltersPanel.js +1 -1
  100. package/src/View/Filter/FilterSummary.js +1 -1
  101. package/src/View/Filter/FilterViewPanel.js +2 -2
  102. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +2 -2
  103. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +1 -1
  104. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +1 -1
  105. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +1 -1
  106. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +1 -1
  107. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +1 -1
  108. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
  109. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +1 -1
  110. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +5 -6
  111. package/src/View/GridInfo/ColumnInfoComponent.js +1 -1
  112. package/src/View/GridInfo/GridInfoPopup.js +1 -1
  113. package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.js +2 -2
  114. package/src/View/PlusMinus/Wizard/PlusMinusScopeWizardSection.js +1 -1
  115. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +2 -2
  116. package/src/View/Query/Wizard/NamedQueryExpressionWizardSection.js +1 -1
  117. package/src/View/Query/Wizard/NamedQuerySettingsWizardSection.js +1 -1
  118. package/src/View/Schedule/Wizard/ScheduleScheduleSummary.js +1 -1
  119. package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +1 -1
  120. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary.js +1 -1
  121. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsWizard.js +1 -1
  122. package/src/View/Shortcut/Wizard/ShortcutScopeWizardSection.js +1 -1
  123. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +2 -2
  124. package/src/View/UIHelper.js +6 -6
  125. package/src/View/Wizard/Interface/IAdaptableWizard.d.ts +2 -2
  126. package/src/View/Wizard/ObjectTagsWizardSection.js +1 -1
  127. package/src/View/Wizard/OnePageAdaptableWizard.d.ts +5 -6
  128. package/src/View/Wizard/OnePageAdaptableWizard.js +35 -169
  129. package/src/View/Wizard/OnePageWizards.d.ts +37 -0
  130. package/src/View/Wizard/OnePageWizards.js +187 -0
  131. package/src/View/Wizard/useKeyboardNavigation.d.ts +1 -1
  132. package/src/agGrid/Adaptable.js +25 -11
  133. package/src/agGrid/FilterWrapper.js +2 -2
  134. package/src/agGrid/agGridHelper.d.ts +2 -3
  135. package/src/agGrid/agGridHelper.js +37 -33
  136. package/src/agGrid/rowEditIcons.d.ts +1 -0
  137. package/src/agGrid/rowEditIcons.js +2 -1
  138. package/src/components/Datepicker/Caption.js +1 -1
  139. package/src/components/InfiniteTable/index.js +1 -0
  140. package/src/components/List/GridList/index.js +1 -1
  141. package/src/components/WindowModal/WindowModal.js +13 -7
  142. package/src/components/icons/add-row.d.ts +3 -0
  143. package/src/components/icons/add-row.js +7 -0
  144. package/src/components/icons/index.js +2 -0
  145. package/src/metamodel/adaptable.metamodel.d.ts +106 -22
  146. package/src/metamodel/adaptable.metamodel.js +238 -121
  147. package/src/types.d.ts +5 -4
  148. package/version.d.ts +1 -1
  149. package/version.js +1 -1
@@ -3,7 +3,7 @@ import { ExportState, Report, ReportData, ReportSchedule, SystemReportNames } fr
3
3
  import { ApiBase } from './ApiBase';
4
4
  import { AdaptableForm } from '../../PredefinedConfig/Common/AdaptableForm';
5
5
  import { CellDataChangedInfo } from '../../PredefinedConfig/Common/CellDataChangedInfo';
6
- import { CustomDestination, ExportButtonContext } from '../../AdaptableOptions/ExportOptions';
6
+ import { CustomDestination, ExportFormContext } from '../../AdaptableOptions/ExportOptions';
7
7
  import { ExportDestination } from '../../PredefinedConfig/Common/Enums';
8
8
  export declare class ExportApiImpl extends ApiBase implements ExportApi {
9
9
  getExportState(): ExportState;
@@ -22,7 +22,7 @@ export declare class ExportApiImpl extends ApiBase implements ExportApi {
22
22
  selectDestination(destinationName: string): void;
23
23
  getAllCustomDestination(): CustomDestination[];
24
24
  isExportDestinationCustom(destinationName: string): boolean;
25
- getExportDestinationForm(destinationName: string): AdaptableForm<ExportButtonContext> | undefined;
25
+ getExportDestinationForm(destinationName: string): AdaptableForm<ExportFormContext> | undefined;
26
26
  canExportToExcel(): boolean;
27
27
  exportDataToExcel(reportData: ReportData, fileName: string): void;
28
28
  showExportPopup(): void;
@@ -2,7 +2,8 @@ import { ApiBase } from './ApiBase';
2
2
  import { FilterApi } from '../FilterApi';
3
3
  import { AdaptablePredicateDef } from '../../PredefinedConfig/Common/AdaptablePredicate';
4
4
  import { AdaptableColumn } from '../../PredefinedConfig/Common/AdaptableColumn';
5
- import { SystemFilterPredicateIds } from '../../types';
5
+ import { ColumnFilter, GridCell, SystemFilterPredicateIds } from '../../types';
6
+ import { RowNode } from '@ag-grid-community/all-modules';
6
7
  export declare class FilterApiImpl extends ApiBase implements FilterApi {
7
8
  getAllSystemFilterIds(): SystemFilterPredicateIds;
8
9
  findPredicateDefByShortcut(shortcut: string, column: AdaptableColumn): AdaptablePredicateDef;
@@ -13,4 +14,18 @@ export declare class FilterApiImpl extends ApiBase implements FilterApi {
13
14
  hideQuickFilterBar(): void;
14
15
  isQuickFilterAvailable(): boolean;
15
16
  isQuickFilterVisible(): boolean;
17
+ getColumnFilters(): ColumnFilter[];
18
+ setColumnFilter(columnFilters: ColumnFilter[]): ColumnFilter[] | null;
19
+ clearColumnFilter(columnFilter: ColumnFilter): void;
20
+ clearColumnFilterByColumns(columns: string[]): void;
21
+ clearColumnFilterByColumn(column: string): void;
22
+ clearColumnFilters(): void;
23
+ clearAndSetColumnFilter(columnFilters: ColumnFilter[]): void;
24
+ getAllColumnFilterForColumn(column: string): ColumnFilter[];
25
+ createValuesColumnFilterForCells(gridCells: GridCell[]): ColumnFilter | null;
26
+ createEqualityColumnFilterForCell(gridCell: GridCell): ColumnFilter | null;
27
+ columnFilterToString(columnFilter: ColumnFilter): string;
28
+ columnFiltersToString(columnFilters: ColumnFilter[]): string;
29
+ evaluateColumnFilter(columnFilter: ColumnFilter, node: RowNode): boolean;
30
+ private getColumnFilterById;
16
31
  }
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FilterApiImpl = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const SystemRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/SystemRedux"));
6
+ const LayoutRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/LayoutRedux"));
6
7
  const ApiBase_1 = require("./ApiBase");
8
+ const StringExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/StringExtensions"));
9
+ const LoggingHelper_1 = require("../../Utilities/Helpers/LoggingHelper");
7
10
  class FilterApiImpl extends ApiBase_1.ApiBase {
8
11
  getAllSystemFilterIds() {
9
12
  return this.getFilterOptions().systemFilters;
@@ -38,5 +41,143 @@ class FilterApiImpl extends ApiBase_1.ApiBase {
38
41
  return (this.isQuickFilterAvailable() &&
39
42
  this.adaptable.api.internalApi.getSystemState().IsQuickFilterVisible);
40
43
  }
44
+ getColumnFilters() {
45
+ var _a;
46
+ const currentLayout = this.adaptable.api.layoutApi.getCurrentLayout();
47
+ return (_a = currentLayout.ColumnFilters) !== null && _a !== void 0 ? _a : [];
48
+ }
49
+ setColumnFilter(columnFilters) {
50
+ columnFilters.forEach((columnFilter) => {
51
+ if (!columnFilter.Predicate) {
52
+ LoggingHelper_1.LogAdaptableWarning('Column Filter has no Predicate', columnFilter);
53
+ }
54
+ else {
55
+ const isValidPredicate = this.adaptable.api.predicateApi.isValidPredicate(columnFilter.Predicate);
56
+ if (!isValidPredicate) {
57
+ LoggingHelper_1.LogAdaptableWarning('Column Filter Predicate is not valid', columnFilter);
58
+ }
59
+ else {
60
+ this.addUidToAdaptableObject(columnFilter);
61
+ if (this.getColumnFilters().find((cf) => cf.ColumnId == columnFilter.ColumnId)) {
62
+ this.dispatchAction(LayoutRedux.LayoutColumnFilterSet(columnFilter));
63
+ }
64
+ else {
65
+ this.dispatchAction(LayoutRedux.LayoutColumnFilterAdd(columnFilter));
66
+ }
67
+ }
68
+ return columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.map((columnFilter) => this.getColumnFilterById(columnFilter.Uuid));
69
+ }
70
+ });
71
+ return null;
72
+ }
73
+ clearColumnFilter(columnFilter) {
74
+ this.dispatchAction(LayoutRedux.LayoutColumnFilterClear(columnFilter));
75
+ }
76
+ clearColumnFilterByColumns(columns) {
77
+ columns.forEach((c) => {
78
+ this.clearColumnFilterByColumn(c);
79
+ });
80
+ }
81
+ clearColumnFilterByColumn(column) {
82
+ let columnFiltersForColumn = this.getAllColumnFilterForColumn(column);
83
+ if (columnFiltersForColumn) {
84
+ columnFiltersForColumn.forEach((cf) => {
85
+ this.dispatchAction(LayoutRedux.LayoutColumnFilterClear(cf));
86
+ });
87
+ this.adaptable.clearColumnFiltering([column]);
88
+ }
89
+ }
90
+ clearColumnFilters() {
91
+ this.dispatchAction(LayoutRedux.LayoutColumnFilterClearAll());
92
+ this.adaptable.clearGridFiltering();
93
+ }
94
+ clearAndSetColumnFilter(columnFilters) {
95
+ this.clearColumnFilters();
96
+ columnFilters.forEach((columnFilter) => {
97
+ if (this.getColumnFilters().find((cf) => cf.ColumnId == columnFilter.ColumnId)) {
98
+ this.dispatchAction(LayoutRedux.LayoutColumnFilterSet(columnFilter));
99
+ }
100
+ else {
101
+ this.dispatchAction(LayoutRedux.LayoutColumnFilterAdd(columnFilter));
102
+ }
103
+ });
104
+ }
105
+ getAllColumnFilterForColumn(column) {
106
+ let columnFilters = this.getColumnFilters();
107
+ if (columnFilters) {
108
+ return columnFilters.filter((cf) => cf.ColumnId == column);
109
+ }
110
+ else {
111
+ return [];
112
+ }
113
+ }
114
+ createValuesColumnFilterForCells(gridCells) {
115
+ if (!gridCells) {
116
+ return null;
117
+ }
118
+ const filter = {
119
+ ColumnId: gridCells[0].column.columnId,
120
+ Predicate: {
121
+ PredicateId: 'Values',
122
+ Inputs: [...new Set(gridCells.map((gc) => gc.displayValue))],
123
+ },
124
+ };
125
+ const [savedFilter] = this.setColumnFilter([filter]) || [null];
126
+ return savedFilter;
127
+ }
128
+ createEqualityColumnFilterForCell(gridCell) {
129
+ if (!gridCell) {
130
+ return null;
131
+ }
132
+ const column = gridCell.column;
133
+ const filter = {
134
+ ColumnId: column.columnId,
135
+ Predicate: {
136
+ PredicateId: this.adaptable.api.predicateApi.getEqualityPredicateForDataType(column.dataType),
137
+ Inputs: [...new Set([gridCell.rawValue])],
138
+ },
139
+ };
140
+ const [savedFilter] = this.setColumnFilter([filter]) || [null];
141
+ return savedFilter;
142
+ }
143
+ columnFilterToString(columnFilter) {
144
+ const friendlyName = this.adaptable.api.columnApi.getFriendlyNameFromColumnId(columnFilter.ColumnId);
145
+ return ('[' +
146
+ friendlyName +
147
+ '] ' +
148
+ this.adaptable.api.predicateApi.predicateToString(columnFilter.Predicate));
149
+ }
150
+ columnFiltersToString(columnFilters) {
151
+ return columnFilters.map((cf) => this.columnFilterToString(cf)).join(', ');
152
+ }
153
+ evaluateColumnFilter(columnFilter, node) {
154
+ var _a;
155
+ if (!columnFilter.Predicate) {
156
+ return true;
157
+ }
158
+ if ((_a = columnFilter.Predicate.Inputs) === null || _a === void 0 ? void 0 : _a.some((input) => StringExtensions_1.default.IsNullOrEmpty(input))) {
159
+ return true;
160
+ }
161
+ const column = this.adaptable.api.columnApi.getColumnFromId(columnFilter.ColumnId);
162
+ if (!column) {
163
+ return true;
164
+ }
165
+ const gridCell = this.adaptable.api.gridApi.getGridCellFromRowNode(node, columnFilter.ColumnId);
166
+ if (!gridCell) {
167
+ return true;
168
+ }
169
+ let value = gridCell.normalisedValue;
170
+ return this.adaptable.api.predicateApi.handlePredicate(columnFilter.Predicate, {
171
+ value: value,
172
+ oldValue: null,
173
+ displayValue: gridCell.displayValue,
174
+ node,
175
+ column,
176
+ }, true);
177
+ }
178
+ getColumnFilterById(id) {
179
+ var _a;
180
+ return (_a = this.getColumnFilters()) === null || _a === void 0 ? void 0 : _a.find((columnFilter) => columnFilter.Uuid === id);
181
+ }
41
182
  }
42
183
  exports.FilterApiImpl = FilterApiImpl;
@@ -275,13 +275,13 @@ class FormatColumnApiImpl extends ApiBase_1.ApiBase {
275
275
  this.adaptable.api.eventApi.emit('CheckboxColumnClicked', checkboxColumnClickedInfo);
276
276
  }
277
277
  applyCustomFormatters(value, options) {
278
- var _a, _b;
278
+ var _a, _b, _c;
279
279
  const columnCustomFormatters = (_a = options === null || options === void 0 ? void 0 : options.CustomDisplayFormats) !== null && _a !== void 0 ? _a : [];
280
280
  if (!(columnCustomFormatters === null || columnCustomFormatters === void 0 ? void 0 : columnCustomFormatters.length)) {
281
281
  return value;
282
282
  }
283
283
  const adaptableOptions = this.adaptable.adaptableOptions;
284
- const customFormattersFromOptions = (_b = adaptableOptions === null || adaptableOptions === void 0 ? void 0 : adaptableOptions.userInterfaceOptions) === null || _b === void 0 ? void 0 : _b.customDisplayFormatters;
284
+ const customFormattersFromOptions = (_c = (_b = adaptableOptions === null || adaptableOptions === void 0 ? void 0 : adaptableOptions.userInterfaceOptions) === null || _b === void 0 ? void 0 : _b.customDisplayFormatters) !== null && _c !== void 0 ? _c : [];
285
285
  // formatters are applied in the order they are defined in the options
286
286
  const customFormatters = customFormattersFromOptions.filter((customFormatterOption) => columnCustomFormatters.includes(customFormatterOption.id));
287
287
  return customFormatters.reduce((acc, formatter) => {
@@ -90,7 +90,7 @@ class GridApiImpl extends ApiBase_1.ApiBase {
90
90
  }
91
91
  clearGridFiltering() {
92
92
  // slightly round the houses but we have to call FilterAPI as it does it properly
93
- this.adaptable.api.layoutApi.clearAllColumnFilter();
93
+ this.adaptable.api.filterApi.clearColumnFilters();
94
94
  }
95
95
  getAgGridInstance() {
96
96
  return this.adaptable.adaptableOptions.gridOptions;
@@ -378,7 +378,9 @@ class GridApiImpl extends ApiBase_1.ApiBase {
378
378
  if (!rowNode) {
379
379
  LoggingHelper_1.LogAdaptableWarning(`Can NOT edit row: rowNode not found for primaryKey ${primaryKey}`);
380
380
  }
381
- const editForm = this.adaptable.api.internalApi.getRowEditService().buildRowEditForm(rowNode);
381
+ const editForm = this.adaptable.api.internalApi
382
+ .getRowEditService()
383
+ .buildRowEditForm(rowNode);
382
384
  this.dispatchAction(PopupRedux_1.PopupShowForm({
383
385
  Id: 'edit_row_form',
384
386
  Form: editForm,
@@ -389,7 +391,9 @@ class GridApiImpl extends ApiBase_1.ApiBase {
389
391
  }));
390
392
  }
391
393
  openCreateRowForm(duplicatedRowNodePrimaryKey) {
392
- const createForm = this.adaptable.api.internalApi.getRowEditService().buildRowCreateForm();
394
+ const createForm = this.adaptable.api.internalApi
395
+ .getRowEditService()
396
+ .buildRowCreateForm();
393
397
  this.dispatchAction(PopupRedux_1.PopupShowForm({
394
398
  Id: 'create_row_form',
395
399
  Form: createForm,
@@ -11,7 +11,7 @@ import { SelectedRowInfo } from '../../PredefinedConfig/Selection/SelectedRowInf
11
11
  import { AdaptableModule, AdaptableQLModule } from '../../PredefinedConfig/Common/Types';
12
12
  import { GridCell } from '../../PredefinedConfig/Selection/GridCell';
13
13
  import { CellDataChangedInfo } from '../../PredefinedConfig/Common/CellDataChangedInfo';
14
- import { AdaptableCellChangedAlert, AdaptableOptions, AdaptableRowChangedAlert, AdaptableState, AlertButtonContext, BaseContext, Layout, LayoutAssociatedObject, SystemStatusMessageInfo, SharedEntity, AdaptableIcon } from '../../types';
14
+ import { AdaptableCellChangedAlert, AdaptableOptions, AdaptableRowChangedAlert, AdaptableState, AlertFormContext, BaseContext, Layout, LayoutAssociatedObject, SystemStatusMessageInfo, SharedEntity, AdaptableIcon } from '../../types';
15
15
  import { IValidationService } from '../../Utilities/Services/Interface/IValidationService';
16
16
  import { IModuleService } from '../../Utilities/Services/Interface/IModuleService';
17
17
  import { IReportService } from '../../Utilities/Services/Interface/IReportService';
@@ -39,8 +39,8 @@ import { EditLookUpPermittedValues } from '../../../types';
39
39
  import { IRowEditService } from '../../Utilities/Services/Interface/IRowEditService';
40
40
  export declare class InternalApiImpl extends ApiBase implements InternalApi {
41
41
  getSystemState(): SystemState;
42
- getAdaptableFormFromAlertForm(alertForm: string | AlertButtonForm, context: any, defaultMessageType?: AdaptableMessageType): (Omit<AdaptableForm<AlertButtonContext>, 'buttons'> & {
43
- buttons?: (Omit<AdaptableButton<AlertButtonContext>, 'buttonStyle'> & {
42
+ getAdaptableFormFromAlertForm(alertForm: string | AlertButtonForm, context: any, defaultMessageType?: AdaptableMessageType): (Omit<AdaptableForm<AlertFormContext>, 'buttons'> & {
43
+ buttons?: (Omit<AdaptableButton<AlertFormContext>, 'buttonStyle'> & {
44
44
  buttonStyle?: ButtonStyle;
45
45
  })[];
46
46
  }) | undefined;
@@ -3,8 +3,7 @@ import { LayoutApi } from '../LayoutApi';
3
3
  import { LayoutState, Layout } from '../../PredefinedConfig/LayoutState';
4
4
  import { AdaptableColumn } from '../../PredefinedConfig/Common/AdaptableColumn';
5
5
  import { ColumnSort } from '../../PredefinedConfig/Common/ColumnSort';
6
- import { ColumnFilter, LayoutAssociatedObject } from '../../types';
7
- import { RowNode } from '@ag-grid-community/all-modules';
6
+ import { LayoutAssociatedObject } from '../../types';
8
7
  export declare class LayoutApiImpl extends ApiBase implements LayoutApi {
9
8
  getLayoutState(): LayoutState;
10
9
  shouldAutoSaveLayout: (layout?: Layout) => boolean;
@@ -43,19 +42,6 @@ export declare class LayoutApiImpl extends ApiBase implements LayoutApi {
43
42
  isCurrentLayoutDefault(): boolean;
44
43
  areExpandedRowGroupsSavedInLayouts(): boolean;
45
44
  isObjectAvailableInCurrentLayout(adaptableObject: LayoutAssociatedObject): boolean;
46
- getAllColumnFilter(): ColumnFilter[];
47
- getColumnFilterById(id: ColumnFilter['Uuid']): ColumnFilter;
48
- setColumnFilter(columnFilters: ColumnFilter[]): ColumnFilter[] | null;
49
- clearColumnFilter(columnFilter: ColumnFilter): void;
50
- clearColumnFilterByColumns(columns: string[]): void;
51
- clearColumnFilterByColumn(column: string): void;
52
- clearAllColumnFilter(): void;
53
- clearAndSetColumnFilter(columnFilters: ColumnFilter[]): void;
54
- getAllColumnFilterForColumn(column: string): ColumnFilter[];
55
- createColumnFilterForCell(columnId: string, primarykeyValues: any[]): ColumnFilter | null;
56
- columnFilterToString(columnFilter: ColumnFilter): string;
57
- columnFiltersToString(columnFilters: ColumnFilter[]): string;
58
- evaluateColumnFilter(columnFilter: ColumnFilter, node: RowNode): boolean;
59
45
  removeColumnFromCurrentLayout(columnId: string): void;
60
46
  removeColumnFromAllLayouts(columnId: string): void;
61
47
  removeColumnFromLayout(columnId: string, layoutName: string): void;
@@ -321,158 +321,6 @@ class LayoutApiImpl extends ApiBase_1.ApiBase {
321
321
  ? true
322
322
  : (_a = adaptableObject.Tags) === null || _a === void 0 ? void 0 : _a.map((tag) => tag).includes(this.getCurrentLayoutName());
323
323
  }
324
- getAllColumnFilter() {
325
- var _a;
326
- const currentLayout = this.getCurrentLayout();
327
- return (_a = currentLayout.ColumnFilters) !== null && _a !== void 0 ? _a : [];
328
- }
329
- getColumnFilterById(id) {
330
- var _a;
331
- return (_a = this.getAllColumnFilter()) === null || _a === void 0 ? void 0 : _a.find((columnFilter) => columnFilter.Uuid === id);
332
- }
333
- setColumnFilter(columnFilters) {
334
- columnFilters.forEach((columnFilter) => {
335
- if (!columnFilter.Predicate) {
336
- LoggingHelper_1.LogAdaptableWarning('Column Filter has no Predicate', columnFilter);
337
- }
338
- else {
339
- const isValidPredicate = this.adaptable.api.predicateApi.isValidPredicate(columnFilter.Predicate);
340
- if (!isValidPredicate) {
341
- LoggingHelper_1.LogAdaptableWarning('Column Filter Predicate is not valid', columnFilter);
342
- }
343
- else {
344
- this.addUidToAdaptableObject(columnFilter);
345
- if (this.getAllColumnFilter().find((cf) => cf.ColumnId == columnFilter.ColumnId)) {
346
- this.dispatchAction(LayoutRedux.LayoutColumnFilterSet(columnFilter));
347
- }
348
- else {
349
- this.dispatchAction(LayoutRedux.LayoutColumnFilterAdd(columnFilter));
350
- }
351
- }
352
- return columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.map((columnFilter) => this.getColumnFilterById(columnFilter.Uuid));
353
- }
354
- });
355
- return null;
356
- }
357
- clearColumnFilter(columnFilter) {
358
- this.dispatchAction(LayoutRedux.LayoutColumnFilterClear(columnFilter));
359
- }
360
- clearColumnFilterByColumns(columns) {
361
- columns.forEach((c) => {
362
- this.clearColumnFilterByColumn(c);
363
- });
364
- }
365
- clearColumnFilterByColumn(column) {
366
- let columnFiltersForColumn = this.getAllColumnFilterForColumn(column);
367
- if (columnFiltersForColumn) {
368
- columnFiltersForColumn.forEach((cf) => {
369
- this.dispatchAction(LayoutRedux.LayoutColumnFilterClear(cf));
370
- });
371
- this.adaptable.clearColumnFiltering([column]);
372
- }
373
- }
374
- clearAllColumnFilter() {
375
- this.dispatchAction(LayoutRedux.LayoutColumnFilterClearAll());
376
- this.adaptable.clearGridFiltering();
377
- }
378
- clearAndSetColumnFilter(columnFilters) {
379
- this.clearAllColumnFilter();
380
- columnFilters.forEach((columnFilter) => {
381
- if (this.getAllColumnFilter().find((cf) => cf.ColumnId == columnFilter.ColumnId)) {
382
- this.dispatchAction(LayoutRedux.LayoutColumnFilterSet(columnFilter));
383
- }
384
- else {
385
- this.dispatchAction(LayoutRedux.LayoutColumnFilterAdd(columnFilter));
386
- }
387
- });
388
- }
389
- getAllColumnFilterForColumn(column) {
390
- let columnFilters = this.getAllColumnFilter();
391
- if (columnFilters) {
392
- return columnFilters.filter((cf) => cf.ColumnId == column);
393
- }
394
- else {
395
- return [];
396
- }
397
- }
398
- createColumnFilterForCell(columnId, primarykeyValues) {
399
- let cellValues = [];
400
- let predicateId;
401
- if (primarykeyValues.length == 1) {
402
- const normalisedValue = this.adaptable.api.gridApi.getCellNormalisedValue(primarykeyValues[0], columnId);
403
- if (normalisedValue) {
404
- cellValues.push(normalisedValue);
405
- const dataType = this.adaptable.api.columnApi.getColumnDataTypeFromColumnId(columnId);
406
- if (dataType) {
407
- if (dataType == 'Number') {
408
- predicateId = 'Equals';
409
- }
410
- else if (dataType == 'Date') {
411
- predicateId = 'On';
412
- }
413
- else if (dataType == 'String') {
414
- predicateId = 'Is';
415
- }
416
- else {
417
- predicateId = 'Equals';
418
- }
419
- }
420
- }
421
- }
422
- else {
423
- primarykeyValues.forEach((pk) => {
424
- const displayValue = this.adaptable.api.gridApi.getCellDisplayValue(pk, columnId);
425
- if (displayValue && !cellValues.includes(displayValue)) {
426
- cellValues.push(displayValue);
427
- }
428
- });
429
- predicateId = 'Values';
430
- }
431
- const filter = {
432
- ColumnId: columnId,
433
- Predicate: {
434
- PredicateId: predicateId,
435
- Inputs: [...new Set(cellValues)],
436
- },
437
- };
438
- const [savedFilter] = this.setColumnFilter([filter]) || [null];
439
- return savedFilter;
440
- }
441
- columnFilterToString(columnFilter) {
442
- const friendlyName = this.adaptable.api.columnApi.getFriendlyNameFromColumnId(columnFilter.ColumnId);
443
- return ('[' +
444
- friendlyName +
445
- '] ' +
446
- this.adaptable.api.predicateApi.predicateToString(columnFilter.Predicate));
447
- }
448
- columnFiltersToString(columnFilters) {
449
- return columnFilters.map((cf) => this.columnFilterToString(cf)).join(', ');
450
- }
451
- evaluateColumnFilter(columnFilter, node) {
452
- var _a;
453
- if (!columnFilter.Predicate) {
454
- return true;
455
- }
456
- if ((_a = columnFilter.Predicate.Inputs) === null || _a === void 0 ? void 0 : _a.some((input) => StringExtensions_1.default.IsNullOrEmpty(input))) {
457
- return true;
458
- }
459
- const column = this.adaptable.api.columnApi.getColumnFromId(columnFilter.ColumnId);
460
- if (!column) {
461
- return true;
462
- }
463
- const gridCell = this.adaptable.api.gridApi.getGridCellFromRowNode(node, columnFilter.ColumnId);
464
- if (!gridCell) {
465
- return true;
466
- }
467
- let value = gridCell.normalisedValue;
468
- return this.adaptable.api.predicateApi.handlePredicate(columnFilter.Predicate, {
469
- value: value,
470
- oldValue: null,
471
- displayValue: gridCell.displayValue,
472
- node,
473
- column,
474
- }, true);
475
- }
476
324
  removeColumnFromCurrentLayout(columnId) {
477
325
  this.removeColumnFromLayout(columnId, this.getCurrentLayoutName());
478
326
  }
@@ -1,6 +1,7 @@
1
1
  import { ApiBase } from './ApiBase';
2
2
  import { PredicateApi } from '../PredicateApi';
3
3
  import { AdaptablePredicateDef, AdaptablePredicate, PredicateDefHandlerParams, ModuleScope } from '../../PredefinedConfig/Common/AdaptablePredicate';
4
+ import { AdaptableColumnDataType, SystemFilterPredicateId } from '../../types';
4
5
  export declare class PredicateApiImpl extends ApiBase implements PredicateApi {
5
6
  getPredicateDefs(): AdaptablePredicateDef[];
6
7
  getSystemPredicateDefs(): AdaptablePredicateDef[];
@@ -12,4 +13,5 @@ export declare class PredicateApiImpl extends ApiBase implements PredicateApi {
12
13
  predicateToString(predicate: AdaptablePredicate): string | undefined;
13
14
  isValidPredicate(predicate: AdaptablePredicate | undefined): boolean;
14
15
  handlePredicate(predicate: AdaptablePredicate | undefined, params: Omit<PredicateDefHandlerParams, 'api' | 'inputs'>, defaultReturn: boolean): boolean;
16
+ getEqualityPredicateForDataType(dataType: AdaptableColumnDataType): SystemFilterPredicateId;
15
17
  }
@@ -78,5 +78,23 @@ class PredicateApiImpl extends ApiBase_1.ApiBase {
78
78
  return false;
79
79
  }
80
80
  }
81
+ getEqualityPredicateForDataType(dataType) {
82
+ let predicateId;
83
+ switch (dataType) {
84
+ case 'Number':
85
+ predicateId = 'Equals';
86
+ break;
87
+ case 'Date':
88
+ predicateId = 'On';
89
+ break;
90
+ case 'String':
91
+ predicateId = 'Is';
92
+ break;
93
+ default:
94
+ predicateId = 'Equals';
95
+ break;
96
+ }
97
+ return predicateId;
98
+ }
81
99
  }
82
100
  exports.PredicateApiImpl = PredicateApiImpl;
@@ -1,5 +1,4 @@
1
- import { RowNode } from '@ag-grid-community/all-modules';
2
- import { AdaptableColumn, ColumnFilter, ColumnSort, LayoutAssociatedObject } from '../../types';
1
+ import { AdaptableColumn, ColumnSort, LayoutAssociatedObject } from '../../types';
3
2
  import { LayoutState, Layout } from '../PredefinedConfig/LayoutState';
4
3
  /**
5
4
  * Provides run-time access to the Layout Module and associated state
@@ -188,76 +187,6 @@ export interface LayoutApi {
188
187
  * @param adaptableObject object to check
189
188
  */
190
189
  isObjectAvailableInCurrentLayout(adaptableObject: LayoutAssociatedObject): boolean;
191
- /**
192
- * Retrieves all the Column Filters in the Column Filter State (of Predefined Config)
193
- * @returns column filters
194
- */
195
- getAllColumnFilter(): ColumnFilter[];
196
- /**
197
- * Retrieves ColumnFilter by Id
198
- * @param id column filter id
199
- * @returns column filter
200
- */
201
- getColumnFilterById(id: ColumnFilter['Uuid']): ColumnFilter;
202
- /**
203
- * Sets Column Filters - will replace filters for existing column and leave other column filters in place
204
- * @param columnFilters Column Filters to set
205
- * @returns column filters
206
- */
207
- setColumnFilter(columnFilters: ColumnFilter[]): ColumnFilter[] | null;
208
- /**
209
- * Clears given Column Filter
210
- * @param columnFilter Column Filter to clear
211
- */
212
- clearColumnFilter(columnFilter: ColumnFilter): void;
213
- /**
214
- * Clears Column Filter for given Column
215
- * @param columnId Column for which Column Filter should be cleared
216
- */
217
- clearColumnFilterByColumn(columnId: string): void;
218
- /**
219
- * Clears Column Filters for given set of Columns
220
- * @param columns Columns for which Column Filte should be cleared
221
- */
222
- clearColumnFilterByColumns(columns: string[]): void;
223
- /**
224
- * Clears all Column Filters in State
225
- */
226
- clearAllColumnFilter(): void;
227
- /**
228
- * Clears existing Column Filters and then sets the new ones
229
- * @param columnFilters Column Filters to set
230
- */
231
- clearAndSetColumnFilter(columnFilters: ColumnFilter[]): void;
232
- /**
233
- * Retrieves all Column Filters for given Column
234
- * @param columnId column to retrieve Column Filters for
235
- * @returns column filters
236
- */
237
- getAllColumnFilterForColumn(columnId: string): ColumnFilter[];
238
- /**
239
- * Creates new Column Filter on given Column using Primary Key values
240
- * @param columnId ColumnId to use
241
- * @param primarykeyValues Primary Key Values to use
242
- * @returns column filter
243
- */
244
- createColumnFilterForCell(columnId: string, primarykeyValues: any[]): ColumnFilter | null;
245
- /**
246
- * Retrieves description of given Column Filter
247
- * @param columnFilter Column Filter to use
248
- */
249
- columnFilterToString(columnFilter: ColumnFilter): string;
250
- /**
251
- * Retrieves descriptions of given Column Filters
252
- * @param columnFilters Column Filters to use
253
- */
254
- columnFiltersToString(columnFilters: ColumnFilter[]): string;
255
- /**
256
- * Calls AdapTableQL to evaluate Filter for given Row
257
- * @param columnFilter Column Filter to use
258
- * @param node Row Node to evaluate
259
- */
260
- evaluateColumnFilter(columnFilter: ColumnFilter, node: RowNode): boolean;
261
190
  /**
262
191
  * Removes a Column from the Current Layout
263
192
  * @param columnId Column to remove
@@ -1,4 +1,6 @@
1
+ import { AdaptableColumnDataType } from '../../types';
1
2
  import { AdaptablePredicateDef, AdaptablePredicate, PredicateDefHandlerParams, ModuleScope } from '../PredefinedConfig/Common/AdaptablePredicate';
3
+ import { SystemFilterPredicateId } from '../types';
2
4
  /**
3
5
  * Functions which manage the Predicate object in AdapTable
4
6
  */
@@ -52,4 +54,9 @@ export interface PredicateApi {
52
54
  * @param defaultReturn Whether to return the default
53
55
  */
54
56
  handlePredicate(predicate: AdaptablePredicate | undefined, params: Omit<PredicateDefHandlerParams, 'api' | 'inputs'>, defaultReturn: boolean): boolean;
57
+ /**
58
+ * Gets the correct Equality-type System Predicate for a particular DataType
59
+ * @param dataType DataType of Column
60
+ */
61
+ getEqualityPredicateForDataType(dataType: AdaptableColumnDataType): SystemFilterPredicateId;
55
62
  }
@@ -10,7 +10,7 @@ import { AdaptableStyle } from './Common/AdaptableStyle';
10
10
  import { XOR } from '../Utilities/Extensions/TypeExtensions';
11
11
  import { AdaptableAggregatedBooleanQuery, AdaptableBooleanQuery, AdaptableObservableQuery } from './Common/AdaptableQuery';
12
12
  import { ButtonStyle } from './Common/ButtonStyle';
13
- import { AlertButtonContext, BaseContext } from '../types';
13
+ import { AlertFormContext, BaseContext } from '../types';
14
14
  /**
15
15
  * Predefined Configuration for Alert Module
16
16
  */
@@ -49,8 +49,8 @@ export interface AlertDefinition extends SuspendableObject {
49
49
  */
50
50
  AlertForm?: string | AlertButtonForm;
51
51
  }
52
- export declare type AlertButtonForm = Omit<AdaptableForm<AlertButtonContext>, 'title' | 'buttons' | 'fields' | 'description'> & {
53
- Buttons?: AlertButton<AlertButtonContext>[];
52
+ export declare type AlertButtonForm = Omit<AdaptableForm<AlertFormContext>, 'title' | 'buttons' | 'fields' | 'description'> & {
53
+ Buttons?: AlertButton<AlertFormContext>[];
54
54
  };
55
55
  export interface AlertDefinitionPredicate extends AdaptablePredicate {
56
56
  PredicateId: TypeHint<string, SystemAlertPredicateId>;
@@ -69,7 +69,7 @@ export declare type AdaptableAlertAction = 'highlight-cell' | 'highlight-row' |
69
69
  /**
70
70
  * Defines a button that appears in an Alert Form
71
71
  */
72
- export interface AlertButton<AlertButtonContext> extends Omit<AdaptableButton<BaseContext>, 'onClick' | 'label' | 'buttonStyle' | 'hidden' | 'disabled' | 'tooltip'> {
72
+ export interface AlertButton<AlertFormContext> extends Omit<AdaptableButton<BaseContext>, 'onClick' | 'label' | 'buttonStyle' | 'hidden' | 'disabled' | 'tooltip'> {
73
73
  /**
74
74
  * Predefined Action(s) to trigger when button is clicked; but the implementation in `actionHandlers` property of Alert Options
75
75
  */
@@ -1,6 +1,6 @@
1
1
  import { AdaptableObject } from './AdaptableObject';
2
2
  /**
3
- * The type of the column data
3
+ * Type of data stored in an Adaptable Column
4
4
  */
5
5
  export declare type AdaptableColumnDataType = 'String' | 'Number' | 'Boolean' | 'Date' | 'Object' | 'Unknown';
6
6
  /**
@@ -0,0 +1,11 @@
1
+ import { AdaptableFormData } from '../../types';
2
+ import { BaseContext } from './BaseContext';
3
+ /**
4
+ * Context supplied to Buttons that appear in an Adaptable Form
5
+ */
6
+ export interface FormContext extends BaseContext {
7
+ /**
8
+ * Adaptable Form Data
9
+ */
10
+ formData: AdaptableFormData;
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });