@adaptabletools/adaptable-cjs 22.0.0-canary.12 → 22.0.0-canary.14

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 (53) hide show
  1. package/index.css +9 -6
  2. package/index.css.map +1 -1
  3. package/index.d.ts +8 -8
  4. package/index.js +8 -8
  5. package/package.json +1 -1
  6. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +2 -2
  7. package/src/AdaptableState/Common/AdaptableColumn.d.ts +3 -3
  8. package/src/AdaptableState/Common/AggregationColumns.d.ts +1 -0
  9. package/src/AdaptableState/Common/AggregationColumns.js +2 -1
  10. package/src/AdaptableState/Common/TransposeConfig.d.ts +0 -5
  11. package/src/AdaptableState/InitialState.d.ts +1 -1
  12. package/src/Api/ColumnApi.d.ts +1 -1
  13. package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -1
  14. package/src/Api/Implementation/ColumnApiImpl.js +4 -4
  15. package/src/Api/Implementation/GridApiImpl.js +0 -2
  16. package/src/Api/Internal/ColumnInternalApi.d.ts +1 -1
  17. package/src/Api/Internal/ColumnInternalApi.js +4 -2
  18. package/src/Strategy/FormatColumnModule.js +2 -2
  19. package/src/Strategy/StyledColumnModule.js +14 -6
  20. package/src/Strategy/Utilities/FormatColumn/{getFormatColumnSettingsTargetItems.d.ts → getFormatColumnRowTargetItems.d.ts} +1 -1
  21. package/src/Strategy/Utilities/FormatColumn/getFormatColumnRowTargetItems.js +26 -0
  22. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +5 -13
  23. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +1 -1
  24. package/src/Utilities/getScopeViewItems.js +1 -1
  25. package/src/Utilities/only.d.ts +15 -0
  26. package/src/Utilities/only.js +58 -0
  27. package/src/View/Components/ValueSelector/index.js +7 -2
  28. package/src/View/Export/Wizard/NewReportWizard.js +8 -8
  29. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +19 -10
  30. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +1 -1
  31. package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.d.ts +8 -0
  32. package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.js +86 -0
  33. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +22 -61
  34. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +22 -10
  35. package/src/View/Layout/TransposedPopup.js +0 -1
  36. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  37. package/src/View/StyledColumn/Wizard/StyledColumnBadgeRowsSection.d.ts +8 -0
  38. package/src/View/StyledColumn/Wizard/{StyledColumnWizardSettingsSection.js → StyledColumnBadgeRowsSection.js} +22 -22
  39. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +10 -11
  40. package/src/agGrid/AdaptableAgGrid.js +16 -0
  41. package/src/agGrid/AgGridAdapter.js +4 -4
  42. package/src/agGrid/AgGridExportAdapter.d.ts +2 -2
  43. package/src/agGrid/AgGridExportAdapter.js +7 -6
  44. package/src/env.js +2 -2
  45. package/src/metamodel/adaptable.metamodel.js +1 -1
  46. package/src/migration/VersionUpgrade22.js +8 -0
  47. package/tsconfig.cjs.tsbuildinfo +1 -1
  48. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.js +0 -16
  49. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.d.ts +0 -8
  50. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.js +0 -37
  51. package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.d.ts +0 -8
  52. /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.d.ts → FormatColumnColumnScopeWizardSection.d.ts} +0 -0
  53. /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.js → FormatColumnColumnScopeWizardSection.js} +0 -0
@@ -611,7 +611,6 @@ class GridApiImpl extends ApiBase_1.ApiBase {
611
611
  showTransposedView(transposeConfig = {}) {
612
612
  const transposedColumnId = transposeConfig.transposedColumnId ?? this.getOptionsApi().getPrimaryKey();
613
613
  const hideTransposedColumn = transposeConfig.hideTransposedColumn ?? true;
614
- const autosize = transposeConfig.autosize ?? true;
615
614
  const columnsToTranspose = transposeConfig.columnsToTranspose;
616
615
  const rowsToTranspose = transposeConfig.rowsToTranspose;
617
616
  this.getAdaptableInternalApi().showPopupWindow({
@@ -622,7 +621,6 @@ class GridApiImpl extends ApiBase_1.ApiBase {
622
621
  popupProps: {
623
622
  transposedColumnId,
624
623
  hideTransposedColumn,
625
- autosize,
626
624
  columnsToTranspose,
627
625
  rowsToTranspose,
628
626
  },
@@ -32,6 +32,6 @@ export declare class ColumnInternalApi extends ApiBase {
32
32
  private buildColumnHeaderContext;
33
33
  hasArrayDataType(column: AdaptableColumn): boolean;
34
34
  getQueryableColumnsForUIEditor(): AdaptableColumn[];
35
- isAlwaysHiddenColumn(columnIdentifier: string | ColDef): boolean;
35
+ isColumnUIHidden(columnIdentifier: string | ColDef): boolean;
36
36
  getColumnDateTypes(): AdaptableColumnDataType[];
37
37
  }
@@ -282,9 +282,11 @@ class ColumnInternalApi extends ApiBase_1.ApiBase {
282
282
  getQueryableColumnsForUIEditor() {
283
283
  return this.getColumnApi()
284
284
  .getQueryableColumns()
285
- .filter((column) => !column.isGeneratedPivotResultColumn && !column.isGeneratedRowGroupColumn && !column.isGeneratedSelectionColumn);
285
+ .filter((column) => !column.isGeneratedPivotResultColumn &&
286
+ !column.isGeneratedRowGroupColumn &&
287
+ !column.isGeneratedSelectionColumn);
286
288
  }
287
- isAlwaysHiddenColumn(columnIdentifier) {
289
+ isColumnUIHidden(columnIdentifier) {
288
290
  return this.getColumnApi().hasColumnType(columnIdentifier, AdaptableColumn_1.HIDDEN_COLUMN_TYPE);
289
291
  }
290
292
  getColumnDateTypes() {
@@ -13,7 +13,7 @@ const MoveFormatColumn_1 = require("../View/FormatColumn/MoveFormatColumn");
13
13
  const getObjectTagsViewItems_1 = require("../Utilities/getObjectTagsViewItems");
14
14
  const getRuleViewItems_1 = require("../Utilities/getRuleViewItems");
15
15
  const getScopeViewItems_1 = require("../Utilities/getScopeViewItems");
16
- const getFormatColumnSettingsTargetItems_1 = require("./Utilities/FormatColumn/getFormatColumnSettingsTargetItems");
16
+ const getFormatColumnRowTargetItems_1 = require("./Utilities/FormatColumn/getFormatColumnRowTargetItems");
17
17
  const FormatColumnStyleWizardSection_1 = require("../View/FormatColumn/Wizard/FormatColumnStyleWizardSection");
18
18
  class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
19
19
  constructor(api) {
@@ -91,7 +91,7 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
91
91
  values: [formatColumn.Name],
92
92
  },
93
93
  (0, getScopeViewItems_1.getScopeViewItems)(formatColumn.Scope, this.api),
94
- (0, getFormatColumnSettingsTargetItems_1.getFormatColumnSettingsTargetItems)(formatColumn),
94
+ (0, getFormatColumnRowTargetItems_1.getFormatColumnRowTargetItems)(formatColumn),
95
95
  formatColumn.Rule && (0, getRuleViewItems_1.getRuleViewItems)(formatColumn.Rule, this.api),
96
96
  {
97
97
  name: 'Style',
@@ -191,14 +191,22 @@ class StyledColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
191
191
  });
192
192
  }
193
193
  if (styledColumn.BadgeStyle) {
194
+ let rowTypes = [];
195
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeDataRows) {
196
+ rowTypes.push('Data');
197
+ }
198
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeGroupRows) {
199
+ rowTypes.push('Group');
200
+ }
201
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeSummaryRows) {
202
+ rowTypes.push('Summary');
203
+ }
204
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeTotalRows) {
205
+ rowTypes.push('Total');
206
+ }
194
207
  specificTypeItems.push({
195
208
  name: 'Rows',
196
- values: [
197
- `Data Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeDataRows ? 'No' : 'Yes'}`,
198
- `Group Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeGroupRows ? 'No' : 'Yes'}`,
199
- `Summary Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeSummaryRows ? 'No' : 'Yes'}`,
200
- `Total Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeTotalRows ? 'No' : 'Yes'}`,
201
- ],
209
+ values: rowTypes
202
210
  });
203
211
  }
204
212
  if (styledColumn.BadgeStyle) {
@@ -1,5 +1,5 @@
1
1
  import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
2
- export declare const getFormatColumnSettingsTargetItems: (formatColumn: FormatColumn) => {
2
+ export declare const getFormatColumnRowTargetItems: (formatColumn: FormatColumn) => {
3
3
  name: string;
4
4
  values: string[];
5
5
  };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFormatColumnRowTargetItems = void 0;
4
+ const getFormatColumnRowTargetItems = (formatColumn) => {
5
+ let values = [];
6
+ if (formatColumn.RowScope) {
7
+ if (!formatColumn.RowScope.ExcludeDataRows) {
8
+ values.push('Data');
9
+ }
10
+ if (!formatColumn.RowScope.ExcludeGroupRows) {
11
+ values.push('Group');
12
+ }
13
+ if (!formatColumn.RowScope.ExcludeSummaryRows) {
14
+ values.push('Summary');
15
+ }
16
+ if (!formatColumn.RowScope.ExcludeTotalRows) {
17
+ values.push('Total');
18
+ }
19
+ }
20
+ values = values.filter(Boolean);
21
+ return {
22
+ name: 'Rows',
23
+ values: values.length > 0 ? values : ['-'],
24
+ };
25
+ };
26
+ exports.getFormatColumnRowTargetItems = getFormatColumnRowTargetItems;
@@ -3,19 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFormatColumnSettingsViewItems = void 0;
4
4
  const getFormatColumnSettingsViewItems = (formatColumn) => {
5
5
  let values = [];
6
- if (formatColumn.RowScope) {
7
- if (formatColumn.RowScope.ExcludeDataRows) {
8
- values.push('Exclude Data Rows');
9
- }
10
- if (formatColumn.RowScope.ExcludeGroupRows) {
11
- values.push('Exclude Group Rows');
12
- }
13
- if (formatColumn.RowScope.ExcludeSummaryRows) {
14
- values.push('Exclude Summary Rows');
15
- }
16
- if (formatColumn.RowScope.ExcludeTotalRows) {
17
- values.push('Exclude Total Rows');
18
- }
6
+ if (!formatColumn.Target || formatColumn.Target === 'cell') {
7
+ values.push('Target: Column Cells');
8
+ }
9
+ else {
10
+ values.push('Target: Column Header');
19
11
  }
20
12
  if (formatColumn.ColumnGroupScope) {
21
13
  values.push(`Column Groups: ${formatColumn.ColumnGroupScope === 'Both' ? 'Always' : formatColumn.ColumnGroupScope}`);
@@ -454,7 +454,7 @@ exports.aggregatedScalarExpressionFunctions = {
454
454
  handler(args, context) {
455
455
  const distinctColumnParameter = (0, expressionFunctionUtils_1.extractColumnParameter)('ONLY', args);
456
456
  const onlyColumnName = distinctColumnParameter.value;
457
- const columnType = (0, expressionFunctionUtils_1.validateColumnType)(onlyColumnName, ['number'], 'ONLY', context.adaptableApi);
457
+ const columnType = (0, expressionFunctionUtils_1.validateColumnType)(onlyColumnName, ['number', 'text'], 'ONLY', context.adaptableApi);
458
458
  const groupByParameter = (0, expressionFunctionUtils_1.extractParameter)('ONLY', 'operand', ['GROUP_BY'], args, {
459
459
  isOptional: true,
460
460
  });
@@ -21,7 +21,7 @@ const getScopeViewItems = (scope, api) => {
21
21
  values = scope.ColumnTypes;
22
22
  }
23
23
  return {
24
- label: 'Scope',
24
+ label: 'Columns',
25
25
  name: 'Target',
26
26
  values,
27
27
  };
@@ -0,0 +1,15 @@
1
+ import { IAggFuncParams } from 'ag-grid-enterprise';
2
+ interface OnlyAggResult {
3
+ distinctValues: Set<number | string>;
4
+ value: number | string | null;
5
+ toString(): string;
6
+ }
7
+ /**
8
+ * AG Grid aggFunc that returns the column value only when all rows in the group
9
+ * share the same value. Returns null when values differ (or when there are no values).
10
+ *
11
+ * Supports multiple group levels: leaf groups aggregate raw cell values while
12
+ * parent groups merge the metadata objects returned by child groups.
13
+ */
14
+ export declare const only: (params: IAggFuncParams, columnId: string) => OnlyAggResult;
15
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.only = void 0;
4
+ function createOnlyResult(distinctValues) {
5
+ const value = distinctValues.size === 1 ? distinctValues.values().next().value : null;
6
+ return {
7
+ distinctValues,
8
+ value,
9
+ toString() {
10
+ return value != null ? String(value) : '';
11
+ },
12
+ };
13
+ }
14
+ /**
15
+ * AG Grid aggFunc that returns the column value only when all rows in the group
16
+ * share the same value. Returns null when values differ (or when there are no values).
17
+ *
18
+ * Supports multiple group levels: leaf groups aggregate raw cell values while
19
+ * parent groups merge the metadata objects returned by child groups.
20
+ */
21
+ const only = (params, columnId) => {
22
+ const { api: gridApi, rowNode: groupRowNode, values } = params;
23
+ // Leaf group: the lowest-level group whose children are actual data rows.
24
+ // We read raw cell values and collect distinct ones, bailing out early
25
+ // as soon as we see a second distinct value (the result would be null anyway).
26
+ if (groupRowNode.leafGroup) {
27
+ const filteredOnly = !gridApi.getGridOption('suppressAggFilteredOnly');
28
+ const childNodes = (filteredOnly ? groupRowNode.childrenAfterFilter : groupRowNode.childrenAfterGroup) ?? [];
29
+ const distinctValues = new Set();
30
+ for (const rowNode of childNodes) {
31
+ const rawValue = gridApi.getCellValue({ colKey: columnId, rowNode });
32
+ if (typeof rawValue === 'number' || typeof rawValue === 'string') {
33
+ distinctValues.add(rawValue);
34
+ if (distinctValues.size > 1) {
35
+ return createOnlyResult(distinctValues);
36
+ }
37
+ }
38
+ }
39
+ return createOnlyResult(distinctValues);
40
+ }
41
+ // Non-leaf group: children are other groups, not data rows.
42
+ // AG Grid has already called this aggFunc on each child group, so
43
+ // `params.values` contains the OnlyAggResult objects they returned.
44
+ // We merge their distinctValues sets instead of re-traversing leaf rows.
45
+ const mergedDistinctValues = new Set();
46
+ for (const childResult of values) {
47
+ if (childResult && typeof childResult === 'object' && 'distinctValues' in childResult) {
48
+ for (const val of childResult.distinctValues) {
49
+ mergedDistinctValues.add(val);
50
+ if (mergedDistinctValues.size > 1) {
51
+ return createOnlyResult(mergedDistinctValues);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ return createOnlyResult(mergedDistinctValues);
57
+ };
58
+ exports.only = only;
@@ -164,7 +164,12 @@ const renderSelectionSection = (props) => {
164
164
  const { value, options, disabled, singleSelect, toLabel, toIdentifier, } = props;
165
165
  const selectionBox = (React.createElement(Flex_1.Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2" },
166
166
  React.createElement(Flex_1.Box, { className: (0, clsx_1.default)('twa:flex twa:flex-row', 'twa:border-b twa:border-primarydark/30 twa:rounded-standard') },
167
- React.createElement(CheckBox_1.CheckBox, { className: "twa:ml-0.5 twa:font-bold", checked: !value.length ? false : value.length === options.length ? true : null, onChange: (checked) => {
167
+ singleSelect ? (React.createElement(Flex_1.Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal" },
168
+ "(",
169
+ value.length,
170
+ " of ",
171
+ options.length,
172
+ " selected)")) : (React.createElement(CheckBox_1.CheckBox, { className: "twa:ml-0.5 twa:font-bold", checked: !value.length ? false : value.length === options.length ? true : null, onChange: (checked) => {
168
173
  if (checked) {
169
174
  props.onSelectAll();
170
175
  }
@@ -179,7 +184,7 @@ const renderSelectionSection = (props) => {
179
184
  value.length,
180
185
  " of ",
181
186
  options.length,
182
- " selected)"))),
187
+ " selected)")))),
183
188
  React.createElement("div", { className: "twa:flex-1" }),
184
189
  React.createElement(Flex_1.Box, { className: "twa:mr-2 twa:text-2 twa:font-normal" }, props.showOnlySelectedCheckbox))));
185
190
  return React.createElement(Flex_1.Box, { className: (0, clsx_1.default)(`${baseClassName}__header `) }, selectionBox);
@@ -39,6 +39,14 @@ const NewReportWizard = (props) => {
39
39
  props.onFinishWizard(report);
40
40
  };
41
41
  return (React.createElement(OnePageAdaptableWizard_1.OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, data: report, onHide: props.onCloseWizard, onFinish: handleFinish, sections: [
42
+ {
43
+ title: 'Name',
44
+ details: 'Enter the name of the Report',
45
+ isValid: ReportNameWizardSection_1.isValidReportName,
46
+ renderSummary: ReportNameWizardSection_1.renderReportNameSummary,
47
+ render: () => (React.createElement(Flex_1.Box, { className: "twa:p-2" },
48
+ React.createElement(ReportNameWizardSection_1.ReportNameWizardSection, { onChange: setReport }))),
49
+ },
42
50
  {
43
51
  title: 'Columns',
44
52
  details: 'Choose the Columns you want to include in the Report',
@@ -52,14 +60,6 @@ const NewReportWizard = (props) => {
52
60
  renderSummary: ReportRowsWizardSection_1.renderReportRowsSummary,
53
61
  render: () => React.createElement(ReportRowsWizardSection_1.ReportRowsWizardSection, { onChange: setReport }),
54
62
  },
55
- {
56
- title: 'Name',
57
- details: 'Enter the name of the Report',
58
- isValid: ReportNameWizardSection_1.isValidReportName,
59
- renderSummary: ReportNameWizardSection_1.renderReportNameSummary,
60
- render: () => (React.createElement(Flex_1.Box, { className: "twa:p-2" },
61
- React.createElement(ReportNameWizardSection_1.ReportNameWizardSection, { onChange: setReport }))),
62
- },
63
63
  {
64
64
  details: 'Select Report Tags',
65
65
  title: 'Tags',
@@ -86,15 +86,12 @@ const FlashingAlertSettingsWizardSection = (props) => {
86
86
  React.createElement(Tabs_1.Tabs.Content, null,
87
87
  React.createElement(FormLayout_1.default, null,
88
88
  React.createElement(FormLayout_1.FormRow, { label: "Name" },
89
- React.createElement(Input_1.default, { "data-name": "flashing-cell-name", className: "twa:flex-1 twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' })),
90
- React.createElement(FormLayout_1.FormRow, { label: "Flash Target" },
91
- React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target", onChange: (checked) => handleTargetChange('cell', checked), className: "twa:mr-3", checked: flashingCell?.FlashTarget === 'cell' ||
92
- flashingCell?.FlashTarget?.includes?.('cell'), tabIndex: -1 }, "Cell"),
93
- React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-row", className: "twa:mr-3", onChange: (checked) => handleTargetChange('row', checked), checked: flashingCell?.FlashTarget === 'row' ||
94
- flashingCell?.FlashTarget?.includes?.('row'), tabIndex: -1 }, "Row"),
95
- React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: flashingCell?.FlashTarget === 'aggFuncCell' ||
96
- flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell")),
97
- React.createElement(FormLayout_1.FormRow, { label: "Duration" },
89
+ React.createElement(Input_1.default, { "data-name": "flashing-cell-name", className: "twa:flex-1 twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' }))))),
90
+ React.createElement(Tabs_1.Tabs, { autoFocus: false, className: "twa:p-2" },
91
+ React.createElement(Tabs_1.Tabs.Tab, null, "Flash Duration"),
92
+ React.createElement(Tabs_1.Tabs.Content, null,
93
+ React.createElement(FormLayout_1.default, null,
94
+ React.createElement(FormLayout_1.FormRow, { label: "" },
98
95
  React.createElement(Flex_1.Flex, { alignItems: "center" },
99
96
  React.createElement(CheckBox_1.CheckBox, { "data-name": "duration-always", checked: duration === 'always', onChange: (checked) => handleTypeChange(checked ? 'always' : 'number'), className: "twa:mr-4", tabIndex: -1 }, "Always"),
100
97
  duration !== 'always' && (React.createElement(React.Fragment, null,
@@ -102,6 +99,18 @@ const FlashingAlertSettingsWizardSection = (props) => {
102
99
  const value = event.target.value;
103
100
  setDuration(isNaN(Number(value)) ? 500 : Number(value));
104
101
  } }),
105
- React.createElement(Flex_1.Box, { className: "twa:text-2" }, "ms"))))))))));
102
+ React.createElement(Flex_1.Box, { className: "twa:text-2" }, "ms")))))))),
103
+ ' ',
104
+ React.createElement(Tabs_1.Tabs, { autoFocus: false, className: "twa:p-2" },
105
+ React.createElement(Tabs_1.Tabs.Tab, null, "Flash Target"),
106
+ React.createElement(Tabs_1.Tabs.Content, null,
107
+ React.createElement(FormLayout_1.default, null,
108
+ React.createElement(FormLayout_1.FormRow, { label: "" },
109
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target", onChange: (checked) => handleTargetChange('cell', checked), className: "twa:mr-3", checked: flashingCell?.FlashTarget === 'cell' ||
110
+ flashingCell?.FlashTarget?.includes?.('cell'), tabIndex: -1 }, "Cell"),
111
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-row", className: "twa:mr-3", onChange: (checked) => handleTargetChange('row', checked), checked: flashingCell?.FlashTarget === 'row' ||
112
+ flashingCell?.FlashTarget?.includes?.('row'), tabIndex: -1 }, "Row"),
113
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: flashingCell?.FlashTarget === 'aggFuncCell' ||
114
+ flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell")))))));
106
115
  };
107
116
  exports.FlashingAlertSettingsWizardSection = FlashingAlertSettingsWizardSection;
@@ -77,7 +77,7 @@ const FlashingCellWizard = (props) => {
77
77
  isValid: NewScopeComponent_1.isScopeValid,
78
78
  render: () => React.createElement(FlashingCellScopeWizardSection_1.FlashingAlertScopeWizardSection, { onChange: setFlashingCell }),
79
79
  renderSummary: BaseAlertScopeWizardSection_1.renderScopeSummary,
80
- title: 'Scope',
80
+ title: 'Columns',
81
81
  },
82
82
  {
83
83
  details: 'Build the Rules for when Cells should Flash',
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
3
+ type FormatColumnRowScopeWizardSectionProps = {
4
+ onChange: (data: FormatColumn) => void;
5
+ };
6
+ export declare const renderFormatColumnRowScopeSummary: (data: FormatColumn) => React.JSX.Element;
7
+ export declare const FormatColumnRowScopeWizardSection: (props: FormatColumnRowScopeWizardSectionProps) => React.JSX.Element;
8
+ export {};
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormatColumnRowScopeWizardSection = exports.renderFormatColumnRowScopeSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
7
+ const CheckBox_1 = require("../../../components/CheckBox");
8
+ const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
9
+ const Tag_1 = require("../../../components/Tag");
10
+ const Flex_1 = require("../../../components/Flex");
11
+ const Tabs_1 = require("../../../components/Tabs");
12
+ const renderFormatColumnRowScopeSummary = (data) => {
13
+ return (React.createElement(Flex_1.Box, { className: "twa:p-2" },
14
+ React.createElement(Flex_1.Box, { className: "twa:mt-3" },
15
+ "Data Rows ",
16
+ React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeDataRows ? 'no' : 'yes')),
17
+ ' ',
18
+ React.createElement(Flex_1.Box, { className: "twa:mt-3" },
19
+ "Group Rows ",
20
+ React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeGroupRows ? 'no' : 'yes')),
21
+ React.createElement(Flex_1.Box, { className: "twa:mt-3" },
22
+ "Summary Rows ",
23
+ React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeSummaryRows ? 'no' : 'yes')),
24
+ React.createElement(Flex_1.Box, { className: "twa:mt-3" },
25
+ "Total Rows ",
26
+ React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeTotalRows ? 'no' : 'yes'))));
27
+ };
28
+ exports.renderFormatColumnRowScopeSummary = renderFormatColumnRowScopeSummary;
29
+ const FormatColumnRowScopeWizardSection = (props) => {
30
+ const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
31
+ const onExcludeDataRowsChanged = (includeDataRows) => {
32
+ props.onChange({
33
+ ...data,
34
+ RowScope: {
35
+ ...data.RowScope,
36
+ ExcludeDataRows: !includeDataRows,
37
+ },
38
+ });
39
+ };
40
+ const onExcludeGroupedRowsChanged = (includeGroupedRows) => {
41
+ props.onChange({
42
+ ...data,
43
+ RowScope: {
44
+ ...data.RowScope,
45
+ ExcludeGroupRows: !includeGroupedRows,
46
+ },
47
+ });
48
+ };
49
+ const onExcludeSummaryRowsChanged = (includeSummaryRows) => {
50
+ props.onChange({
51
+ ...data,
52
+ RowScope: {
53
+ ...data.RowScope,
54
+ ExcludeSummaryRows: !includeSummaryRows,
55
+ },
56
+ });
57
+ };
58
+ const onExcludeTotalRowsChanged = (includeTotalRows) => {
59
+ props.onChange({
60
+ ...data,
61
+ RowScope: {
62
+ ...data.RowScope,
63
+ ExcludeTotalRows: !includeTotalRows,
64
+ },
65
+ });
66
+ };
67
+ return (React.createElement(Flex_1.Flex, { flexDirection: "column", style: { height: '100%' } },
68
+ React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
69
+ React.createElement(Tabs_1.Tabs.Tab, null, "Row Types"),
70
+ React.createElement(Tabs_1.Tabs.Content, null,
71
+ React.createElement(Flex_1.Flex, { flexDirection: "row" },
72
+ React.createElement(FormLayout_1.default, null, data.Target === 'cell' && (React.createElement(React.Fragment, null,
73
+ React.createElement(FormLayout_1.FormRow, { label: "Data (leaf) Rows:" },
74
+ React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
75
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "include-data-rows-checkbox", checked: !data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, className: "twa:mr-2" }))),
76
+ React.createElement(FormLayout_1.FormRow, { label: "Group Rows:" },
77
+ React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
78
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "include-grouped-rows-checkbox", checked: !data.RowScope?.ExcludeGroupRows, onChange: onExcludeGroupedRowsChanged, className: "twa:mr-2" }))),
79
+ React.createElement(FormLayout_1.FormRow, { label: "Summary Rows:" },
80
+ React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
81
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "include-summary-rows-checkbox", checked: !data.RowScope?.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, className: "twa:mr-2" }))),
82
+ React.createElement(FormLayout_1.FormRow, { label: "Total Rows:" },
83
+ React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
84
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "include-total-rows-checkbox", checked: !data.RowScope?.ExcludeTotalRows, onChange: onExcludeTotalRowsChanged, className: "twa:mr-2" })))))))))));
85
+ };
86
+ exports.FormatColumnRowScopeWizardSection = FormatColumnRowScopeWizardSection;
@@ -4,31 +4,23 @@ exports.FormatColumnSettingsWizardSection = exports.renderFormatColumnSettingsSu
4
4
  const tslib_1 = require("tslib");
5
5
  const React = tslib_1.__importStar(require("react"));
6
6
  const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
7
- const CheckBox_1 = require("../../../components/CheckBox");
8
7
  const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
9
8
  const Tag_1 = require("../../../components/Tag");
10
9
  const Radio_1 = tslib_1.__importStar(require("../../../components/Radio"));
11
10
  const Flex_1 = require("../../../components/Flex");
12
11
  const Tabs_1 = require("../../../components/Tabs");
13
12
  const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
13
+ const TypeRadio_1 = require("../../Wizard/TypeRadio");
14
14
  const renderFormatColumnSettingsSummary = (data) => {
15
15
  return (React.createElement(Flex_1.Box, { className: "twa:p-2" },
16
16
  React.createElement(Flex_1.Box, { className: "twa:mt-3" },
17
17
  "Name ",
18
18
  React.createElement(Tag_1.Tag, null, data.Name)),
19
19
  React.createElement(Flex_1.Box, { className: "twa:mt-3" },
20
- "Data Rows ",
21
- React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeDataRows ? 'no' : 'yes')),
20
+ "Target",
21
+ ' ',
22
+ React.createElement(Tag_1.Tag, null, !data.Target || data.Target === 'cell' ? 'Column Cells' : 'Column Header')),
22
23
  ' ',
23
- React.createElement(Flex_1.Box, { className: "twa:mt-3" },
24
- "Group Rows ",
25
- React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeGroupRows ? 'no' : 'yes')),
26
- React.createElement(Flex_1.Box, { className: "twa:mt-3" },
27
- "Summary Rows ",
28
- React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeSummaryRows ? 'no' : 'yes')),
29
- React.createElement(Flex_1.Box, { className: "twa:mt-3" },
30
- "Total Rows ",
31
- React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeTotalRows ? 'no' : 'yes')),
32
24
  React.createElement(Flex_1.Box, { className: "twa:mt-3" },
33
25
  "Apply on Column Groups:",
34
26
  ' ',
@@ -38,49 +30,22 @@ const renderFormatColumnSettingsSummary = (data) => {
38
30
  };
39
31
  exports.renderFormatColumnSettingsSummary = renderFormatColumnSettingsSummary;
40
32
  const FormatColumnSettingsWizardSection = (props) => {
41
- const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
42
- const onNameChange = (event) => {
43
- props.onChange({
44
- ...data,
45
- Name: event.target.value,
46
- });
47
- };
48
- const onExcludeDataRowsChanged = (ExcludeDataRows) => {
49
- props.onChange({
50
- ...data,
51
- RowScope: {
52
- ...data.RowScope,
53
- ExcludeDataRows,
54
- },
55
- });
56
- };
57
- const onExcludeGroupedRowsChanged = (ExcludeGroupedRows) => {
33
+ const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
34
+ const currentTarget = data.Target ? data.Target : 'cell';
35
+ const handleTargetChange = (target) => {
36
+ // Update the formatColumn object
58
37
  props.onChange({
59
38
  ...data,
60
- RowScope: {
61
- ...data.RowScope,
62
- ExcludeGroupRows: ExcludeGroupedRows,
63
- },
39
+ Target: target,
64
40
  });
65
41
  };
66
- const onExcludeSummaryRowsChanged = (ExcludeSummaryRows) => {
67
- props.onChange({
68
- ...data,
69
- RowScope: {
70
- ...data.RowScope,
71
- ExcludeSummaryRows,
72
- },
73
- });
74
- };
75
- const onExcludeTotalRowsChanged = (ExcludeTotalRows) => {
42
+ const onNameChange = (event) => {
76
43
  props.onChange({
77
44
  ...data,
78
- RowScope: {
79
- ...data.RowScope,
80
- ExcludeTotalRows,
81
- },
45
+ Name: event.target.value,
82
46
  });
83
47
  };
48
+ const behaviourSpellingVariant = api.internalApi.getCorrectEnglishVariant('Behaviour');
84
49
  return (React.createElement(Flex_1.Flex, { flexDirection: "column", style: { height: '100%' } },
85
50
  React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
86
51
  React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
@@ -89,24 +54,20 @@ const FormatColumnSettingsWizardSection = (props) => {
89
54
  React.createElement(FormLayout_1.default, { className: "twa:max-w-[300px] twa:w-full" },
90
55
  React.createElement(FormLayout_1.FormRow, { label: "Name" },
91
56
  React.createElement(Input_1.default, { className: "twa:w-full", "data-name": "format-column-name", onChange: onNameChange, value: data?.Name ?? '' })))))),
57
+ React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
58
+ React.createElement(Tabs_1.Tabs.Tab, null, "Target"),
59
+ React.createElement(Tabs_1.Tabs.Content, null,
60
+ React.createElement(Flex_1.Flex, { flexDirection: "column" },
61
+ React.createElement(TypeRadio_1.TypeRadio, { "data-name": "target-column-cell", text: 'Column Cells', description: "Column Cells are styled and formatted", checked: currentTarget === 'cell', onClick: () => handleTargetChange('cell') }),
62
+ React.createElement(TypeRadio_1.TypeRadio, { "data-name": "target-column-header", text: 'Column Header', description: "The Column Header is styled (Note: Conditions are not available for Column Headers)", checked: currentTarget === 'columnHeader', onClick: () => handleTargetChange('columnHeader') })))),
92
63
  React.createElement(Tabs_1.Tabs, null,
93
- React.createElement(Tabs_1.Tabs.Tab, null, "Configuration"),
64
+ React.createElement(Tabs_1.Tabs.Tab, null,
65
+ "Column Group ",
66
+ behaviourSpellingVariant,
67
+ " "),
94
68
  React.createElement(Tabs_1.Tabs.Content, null,
95
69
  React.createElement(Flex_1.Flex, { flexDirection: "row" },
96
70
  React.createElement(FormLayout_1.default, null,
97
- data.Target === 'cell' && (React.createElement(React.Fragment, null,
98
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Data Rows:" },
99
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
100
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-data-rows-checkbox", checked: data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, className: "twa:mr-2" }))),
101
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Group Rows:" },
102
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
103
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-grouped-rows-checkbox", checked: data.RowScope?.ExcludeGroupRows, onChange: onExcludeGroupedRowsChanged, className: "twa:mr-2" }))),
104
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Row Summaries:" },
105
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
106
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-summary-rows-checkbox", checked: data.RowScope?.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, className: "twa:mr-2" }))),
107
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Total Rows:" },
108
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
109
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-total-rows-checkbox", checked: data.RowScope?.ExcludeTotalRows, onChange: onExcludeTotalRowsChanged, className: "twa:mr-2" }))))),
110
71
  React.createElement(FormLayout_1.FormRow, { label: "Apply on Column Group:" },
111
72
  React.createElement(Radio_1.RadioGroup, { value: data.ColumnGroupScope || 'Both', name: "columnGroupScope", orientation: "horizontal", onRadioChange: (columnGroupScope) => {
112
73
  props.onChange({