@adaptabletools/adaptable 13.0.0-canary.17 → 13.0.0-canary.18

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 (80) hide show
  1. package/base.css +99 -0
  2. package/base.css.map +1 -1
  3. package/bundle.cjs.js +110 -110
  4. package/index.css +115 -0
  5. package/index.css.map +1 -1
  6. package/package.json +1 -1
  7. package/publishTimestamp.d.ts +1 -1
  8. package/publishTimestamp.js +1 -1
  9. package/src/Api/FormatColumnApi.d.ts +37 -29
  10. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +21 -11
  11. package/src/Api/Implementation/FormatColumnApiImpl.js +42 -63
  12. package/src/Strategy/FormatColumnModule.js +2 -12
  13. package/src/View/AdaptablePopover/index.js +1 -1
  14. package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +9 -9
  15. package/src/View/Alert/Wizard/AlertDisplayWizardSection.js +6 -5
  16. package/src/View/BulkUpdate/BulkUpdatePopup.js +1 -1
  17. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +1 -1
  18. package/src/View/Components/AdaptableObjectRow/index.js +1 -6
  19. package/src/View/Components/Buttons/ButtonInfo.d.ts +1 -3
  20. package/src/View/Components/Buttons/ButtonInfo.js +3 -5
  21. package/src/View/Components/EntityRulesEditor/index.js +8 -17
  22. package/src/View/Components/FilterForm/FilterForm.js +11 -16
  23. package/src/View/Components/FilterForm/QuickFilterForm.js +7 -13
  24. package/src/View/Components/NewScopeComponent.js +1 -1
  25. package/src/View/Components/Panels/PanelWithButton.js +1 -5
  26. package/src/View/Components/Panels/PanelWithImage.js +1 -5
  27. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +2 -2
  28. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.d.ts +1 -0
  29. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +3 -16
  30. package/src/View/Components/Popups/AdaptablePopup/PopupPanel.js +1 -1
  31. package/src/View/Components/Popups/AdaptablePopupTeamSharing.js +5 -5
  32. package/src/View/Components/ScopeComponent.js +4 -4
  33. package/src/View/Components/Selectors/ColumnValueSelector.js +2 -2
  34. package/src/View/Components/StyleComponent.js +12 -17
  35. package/src/View/ConditionalStyle/Wizard/ConditionalStyleSettingsWizardSettings.js +1 -1
  36. package/src/View/DataSet/DataSetSelector.js +1 -1
  37. package/src/View/Export/ReportExportDropdown.js +1 -1
  38. package/src/View/Export/Wizard/ReportNameWizardSection.js +10 -11
  39. package/src/View/FlashingCell/FlashingCellStyle.js +3 -3
  40. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +6 -6
  41. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +4 -4
  42. package/src/View/FormatColumn/FormatColumnSummary.js +1 -1
  43. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +26 -26
  44. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +2 -6
  45. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +1 -1
  46. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +7 -7
  47. package/src/View/Layout/LayoutRadioSelector.js +1 -1
  48. package/src/View/Layout/Wizard/Components/ColumnLabels.js +1 -1
  49. package/src/View/Layout/Wizard/sections/ColumnsSection.js +5 -5
  50. package/src/View/Layout/Wizard/sections/SettingsSection.js +2 -2
  51. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +3 -3
  52. package/src/View/Query/Wizard/NamedQuerySettingsWizardSection.js +1 -1
  53. package/src/View/QuickSearch/QuickSearchPopup.js +2 -2
  54. package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +5 -5
  55. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsGlue42.js +1 -1
  56. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsIPushPull.js +5 -5
  57. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsOpenFin.js +1 -1
  58. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +5 -5
  59. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +2 -2
  60. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +3 -3
  61. package/src/View/SmartEdit/SmartEditPopup.js +3 -3
  62. package/src/View/SpecialColumnSettingsWizardStep.js +10 -10
  63. package/src/View/StateManagement/StateManagementPopup.js +4 -4
  64. package/src/View/SystemStatus/SystemStatusEntityRow.js +4 -6
  65. package/src/View/TeamSharing/SharedEntityObjectView.js +1 -1
  66. package/src/View/TeamSharing/TeamSharingApplyButton.js +1 -1
  67. package/src/View/Theme/ThemePopup.js +1 -1
  68. package/src/View/Wizard/OnePageAdaptableWizard.js +1 -2
  69. package/src/agGrid/Adaptable.d.ts +0 -1
  70. package/src/agGrid/Adaptable.js +41 -65
  71. package/src/agGrid/PercentBarRenderer.js +3 -6
  72. package/src/agGrid/weightedAverage.js +19 -11
  73. package/src/components/CheckBox/index.js +1 -1
  74. package/src/components/ExpressionEditor/BaseEditorInput.js +13 -32
  75. package/src/components/ExpressionEditor/index.js +9 -17
  76. package/src/components/FormLayout/index.js +1 -1
  77. package/src/components/StylePreview.js +2 -1
  78. package/src/metamodel/adaptable.metamodel.js +1 -1
  79. package/version.d.ts +1 -1
  80. package/version.js +1 -1
@@ -159,7 +159,7 @@ const ColumnRow = (props) => {
159
159
  const behaviourHeader = 'Column ' + adaptable.api.internalApi.getCorrectEnglishVariant('Behaviours');
160
160
  // width
161
161
  const columnWidth = (_d = props.layout.ColumnWidthMap) === null || _d === void 0 ? void 0 : _d[props.column.columnId];
162
- return (React.createElement(rebass_1.Box, { className: "ab-Layout-Wizard__ColumnRow" },
162
+ return (React.createElement(rebass_1.Box, { "data-name": props.column.columnId, className: "ab-Layout-Wizard__ColumnRow" },
163
163
  React.createElement(rebass_1.Flex, { className: "ab-Layout-Wizard__ColumnRow__Header", mt: 1, mb: 1, onClick: () => setIsExpanded(!isExpanded) },
164
164
  React.createElement(rebass_1.Flex, { mr: 2, alignItems: "center" }, initialHeader),
165
165
  props.column.columnGroup && props.column.columnGroup.groupCount > 1 ? (React.createElement(rebass_1.Box, { className: "ab-Layout-Wizard__ColumnRow__Title", ml: 2, mr: 2, padding: 1 },
@@ -168,24 +168,24 @@ const ColumnRow = (props) => {
168
168
  React.createElement(rebass_1.Flex, { mr: 2 },
169
169
  React.createElement(ColumnLabels_1.ColumnLabels, { showTitle: false, sortable: props.column.sortable, filterable: props.column.filterable, pivotable: props.column.pivotable, moveable: props.column.moveable, groupable: props.column.groupable, aggregatable: props.column.aggregatable })),
170
170
  React.createElement(rebass_1.Box, { flex: 1 }),
171
- React.createElement(SimpleButton_1.default, { ml: 10, padding: 0, iconSize: 24, variant: "text", onClick: () => setIsExpanded(!isExpanded), icon: isExpanded ? 'triangle-up' : 'triangle-down' })),
171
+ React.createElement(SimpleButton_1.default, { "data-name": "expand-collapse", "data-value": isExpanded ? 'expanded' : 'collapsed', ml: 10, padding: 0, iconSize: 24, variant: "text", onClick: () => setIsExpanded(!isExpanded), icon: isExpanded ? 'triangle-up' : 'triangle-down' })),
172
172
  isExpanded && (React.createElement(rebass_1.Box, { className: "ab-Layout-Wizard__ColumnRow__Expanded-Container", mb: 2, padding: 2, mt: 2 },
173
173
  React.createElement(rebass_1.Flex, { mb: 2 },
174
174
  React.createElement(FormLayout_1.default, { width: "100%", mr: 3 },
175
175
  React.createElement(FormLayout_1.FormRow, { label: "Column ID" },
176
176
  React.createElement(Tag_1.Tag, null, props.column.friendlyName)),
177
177
  React.createElement(FormLayout_1.FormRow, { label: "Header" },
178
- React.createElement(Input_1.default, { className: "ab-Layout-Wizard__ColumnRow__Input", placehoder: "Custom name (optional)", onChange: () => {
178
+ React.createElement(Input_1.default, { "data-name": "column-header", className: "ab-Layout-Wizard__ColumnRow__Input", placehoder: "Custom name (optional)", onChange: () => {
179
179
  props.onColumnNameChange(props.column.columnId, event.target.value);
180
180
  }, value: customHeader })),
181
181
  React.createElement(FormLayout_1.FormRow, { label: "Width" },
182
- React.createElement(Input_1.default, { className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column width", onChange: (event) => {
182
+ React.createElement(Input_1.default, { "data-name": "column-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column width", onChange: (event) => {
183
183
  let value = parseFloat(event.target.value);
184
184
  value = typeof value === 'number' && !isNaN(value) ? value : void 0;
185
185
  props.onColumnWidthChange(props.column.columnId, value);
186
186
  }, value: columnWidth })),
187
187
  React.createElement(FormLayout_1.FormRow, { label: "Pinning" },
188
- React.createElement(DropdownButton_1.default, { columns: ['label'], items: pinningOptions }, pinningOptions.find((option) => option.value === columnPinning).label))))))));
188
+ React.createElement(DropdownButton_1.default, { "data-name": "column-pinning", columns: ['label'], items: pinningOptions }, pinningOptions.find((option) => option.value === columnPinning).label))))))));
189
189
  };
190
190
  const ColumnsSection = (props) => {
191
191
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
@@ -45,7 +45,7 @@ const SettingsSection = (props) => {
45
45
  React.createElement(Tabs_1.Tabs.Tab, null, "Grid Type"),
46
46
  React.createElement(Tabs_1.Tabs.Content, null,
47
47
  React.createElement(rebass_1.Flex, { flexDirection: "column" },
48
- React.createElement(Radio_1.default, { onClick: () => handlePivotChange(false), checked: !Boolean(layout.EnablePivot) }, "Table"),
49
- React.createElement(Radio_1.default, { onClick: () => handlePivotChange(true), checked: Boolean(layout.EnablePivot) }, "Pivot"))))));
48
+ React.createElement(Radio_1.default, { "data-name": "layout-type-table", onClick: () => handlePivotChange(false), checked: !Boolean(layout.EnablePivot) }, "Table"),
49
+ React.createElement(Radio_1.default, { "data-name": "layout-type-pivot", onClick: () => handlePivotChange(true), checked: Boolean(layout.EnablePivot) }, "Pivot"))))));
50
50
  };
51
51
  exports.SettingsSection = SettingsSection;
@@ -50,11 +50,11 @@ const PlusMinusSettingsWizardSection = (props) => {
50
50
  React.createElement(Tabs_1.Tabs.Content, null,
51
51
  React.createElement(FormLayout_1.default, null,
52
52
  React.createElement(FormLayout_1.FormRow, { label: "Nudge Value" },
53
- React.createElement(Input_1.default, { flex: 1, marginRight: 3, onChange: handleNudgeValueChange, placeholder: "Enter Number", type: "number", value: (_a = data.NudgeValue) !== null && _a !== void 0 ? _a : '' })),
53
+ React.createElement(Input_1.default, { "data-name": "nudge-value", flex: 1, marginRight: 3, onChange: handleNudgeValueChange, placeholder: "Enter Number", type: "number", value: (_a = data.NudgeValue) !== null && _a !== void 0 ? _a : '' })),
54
54
  React.createElement(FormLayout_1.FormRow, { label: "Nudge Type" },
55
55
  React.createElement(rebass_1.Flex, null,
56
- React.createElement(Radio_1.default, { value: "Always", checked: !props.hasCondition, onChange: () => props.onConditionChange(false) }, "Always Apply Nudge"),
57
- React.createElement(Radio_1.default, { marginLeft: 3, value: "Expression", checked: props.hasCondition, onChange: () => props.onConditionChange(true) }, "Create a Rule")))))),
56
+ React.createElement(Radio_1.default, { "data-name": "nudge-type-always", value: "Always", checked: !props.hasCondition, onChange: () => props.onConditionChange(false) }, "Always Apply Nudge"),
57
+ React.createElement(Radio_1.default, { "data-name": "nudge-type-condition", marginLeft: 3, value: "Expression", checked: props.hasCondition, onChange: () => props.onConditionChange(true) }, "Create a Rule")))))),
58
58
  props.hasCondition && (React.createElement(PlusMinusRuleWizardSection_1.PlusMinusRuleWizardSection, { defaultPredicateId: "NonBlanks", onChange: props.onChange }))));
59
59
  };
60
60
  exports.PlusMinusSettingsWizardSection = PlusMinusSettingsWizardSection;
@@ -36,7 +36,7 @@ const NamedQuerySettingsWizardSection = (props) => {
36
36
  return (React.createElement(WizardPanel_1.default, { "data-name": 'named-query-settings' },
37
37
  React.createElement(FormLayout_1.default, null,
38
38
  React.createElement(FormLayout_1.FormRow, { label: "Name" },
39
- React.createElement(AdaptableInput_1.default, { value: data.Name, autoFocus: true, width: 300, type: "text", placeholder: "Enter Named Query Name", onChange: (e) => handleColumnNameChange(e) })),
39
+ React.createElement(AdaptableInput_1.default, { "data-name": "query-name", value: data.Name, autoFocus: true, width: 300, type: "text", placeholder: "Enter Named Query Name", onChange: (e) => handleColumnNameChange(e) })),
40
40
  ' ',
41
41
  errorMessage ? (React.createElement(FormLayout_1.FormRow, { label: "" },
42
42
  React.createElement(ErrorBox_1.default, null, errorMessage))) : null)));
@@ -34,13 +34,13 @@ const QuickSearchPopupComponent = (props) => {
34
34
  React.createElement(Panel_1.default, { header: props.moduleInfo.FriendlyName + ' Text', style: { height: 'auto' }, variant: "default", borderRadius: "none", marginTop: 3, marginLeft: 2, marginRight: 2 },
35
35
  ' ',
36
36
  React.createElement(FormLayout_1.default, null,
37
- React.createElement(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { type: "text", marginLeft: 2, marginRight: 5, padding: 20, style: { height: '100%' }, placeholder: props.api.internalApi.getAdaptableOptions().searchOptions.quickSearchPlaceholder, value: searchText, OnTextChange: search }))),
37
+ React.createElement(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { "data-name": "quick-search-text", type: "text", marginLeft: 2, marginRight: 5, padding: 20, style: { height: '100%' }, placeholder: props.api.internalApi.getAdaptableOptions().searchOptions.quickSearchPlaceholder, value: searchText, OnTextChange: search }))),
38
38
  React.createElement(Panel_1.default, { header: props.api.internalApi.getCorrectEnglishVariant('Behaviour'), style: { height: 'auto' }, variant: "default", borderRadius: "none", marginTop: 3, marginLeft: 2, marginRight: 2 },
39
39
  ' ',
40
40
  React.createElement(rebass_1.Flex, { flexDirection: "column" },
41
41
  React.createElement(FormLayout_1.default, { columns: [1, 2] },
42
42
  React.createElement(FormLayout_1.FormRow, null,
43
- React.createElement(CheckBox_1.CheckBox, { value: "existing", marginLeft: 1, marginRight: 3, checked: state.RunQueryAfterQuickSearch, disabled: StringExtensions_1.default.IsNotNullOrEmpty(searchText), onChange: onQuickSearchBehaviourChange }, "Filter Quick Search Results"))))),
43
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "filter-quick-search-results", value: "existing", marginLeft: 1, marginRight: 3, checked: state.RunQueryAfterQuickSearch, disabled: StringExtensions_1.default.IsNotNullOrEmpty(searchText), onChange: onQuickSearchBehaviourChange }, "Filter Quick Search Results"))))),
44
44
  React.createElement(StyleComponent_1.StyleComponent, { style: { height: '100%' }, api: props.api, Style: props.QuickSearchStyle, UpdateStyle: onUpdateStyle })));
45
45
  };
46
46
  function mapStateToProps(state, ownProps) {
@@ -99,14 +99,14 @@ const ScheduleScheduleWizard = (props) => {
99
99
  React.createElement(Tabs_1.Tabs.Content, null,
100
100
  React.createElement(FormLayout_1.default, null,
101
101
  React.createElement(FormLayout_1.FormRow, { label: "Frequency" },
102
- React.createElement(Radio_1.default, { mr: 2, value: "recurring", checked: !props.isOneOff, onChange: (checked) => checked && handleIsOneOfChange(false) }, "Recurring Days"),
103
- React.createElement(Radio_1.default, { checked: props.isOneOff, value: "oneoff", onChange: (checked) => checked && handleIsOneOfChange(true) }, "One-Off Date")),
102
+ React.createElement(Radio_1.default, { "data-name": "frequency-recurring", mr: 2, value: "recurring", checked: !props.isOneOff, onChange: (checked) => checked && handleIsOneOfChange(false) }, "Recurring Days"),
103
+ React.createElement(Radio_1.default, { "data-name": "frequency-one-off", checked: props.isOneOff, value: "oneoff", onChange: (checked) => checked && handleIsOneOfChange(true) }, "One-Off Date")),
104
104
  props.isOneOff ? (React.createElement(FormLayout_1.FormRow, { label: "Date" },
105
- React.createElement(AdaptableInput_1.default, { width: 300, type: "date", placeholder: "Date", onChange: handleOneOfDateChange, value: ((_e = data.Schedule) === null || _e === void 0 ? void 0 : _e.OneOffDate) || '' }))) : (React.createElement(FormLayout_1.FormRow, { label: "Days" }, daysMap.map((day) => {
105
+ React.createElement(AdaptableInput_1.default, { "data-name": "one-off-date", width: 300, type: "date", placeholder: "Date", onChange: handleOneOfDateChange, value: ((_e = data.Schedule) === null || _e === void 0 ? void 0 : _e.OneOffDate) || '' }))) : (React.createElement(FormLayout_1.FormRow, { label: "Days" }, daysMap.map((day) => {
106
106
  var _a, _b;
107
- return (React.createElement(CheckBox_1.CheckBox, { width: "33%", ml: 2, value: day.value, checked: (_b = (_a = data.Schedule) === null || _a === void 0 ? void 0 : _a.DaysOfWeek) === null || _b === void 0 ? void 0 : _b.includes(day.value), key: day.value, onChange: (checked) => handleDayChange(checked, day.value) }, day.label));
107
+ return (React.createElement(CheckBox_1.CheckBox, { "data-name": `day-${day.value}`, width: "33%", ml: 2, value: day.value, checked: (_b = (_a = data.Schedule) === null || _a === void 0 ? void 0 : _a.DaysOfWeek) === null || _b === void 0 ? void 0 : _b.includes(day.value), key: day.value, onChange: (checked) => handleDayChange(checked, day.value) }, day.label));
108
108
  }))),
109
109
  React.createElement(FormLayout_1.FormRow, { label: "Time" },
110
- React.createElement(AdaptableInput_1.default, { width: 300, value: timeValue, type: "time", onChange: handleTimeChange })))))));
110
+ React.createElement(AdaptableInput_1.default, { "data-name": "time", width: 300, value: timeValue, type: "time", onChange: handleTimeChange })))))));
111
111
  };
112
112
  exports.ScheduleScheduleWizard = ScheduleScheduleWizard;
@@ -20,6 +20,6 @@ const ScheduleSettingsGlue42 = (props) => {
20
20
  React.createElement(Tabs_1.Tabs.Content, null,
21
21
  React.createElement(FormLayout_1.default, null,
22
22
  React.createElement(FormLayout_1.FormRow, { label: "Select Report" },
23
- React.createElement(DropdownButton_1.default, { width: 300, disabled: props.allReports.length == 0, items: reportOptions }, ((_b = (_a = props === null || props === void 0 ? void 0 : props.glue42) === null || _a === void 0 ? void 0 : _a.Glue42Report) === null || _b === void 0 ? void 0 : _b.ReportName) || 'Select Report')))))));
23
+ React.createElement(DropdownButton_1.default, { "data-name": "select-report", width: 300, disabled: props.allReports.length == 0, items: reportOptions }, ((_b = (_a = props === null || props === void 0 ? void 0 : props.glue42) === null || _a === void 0 ? void 0 : _a.Glue42Report) === null || _b === void 0 ? void 0 : _b.ReportName) || 'Select Report')))))));
24
24
  };
25
25
  exports.ScheduleSettingsGlue42 = ScheduleSettingsGlue42;
@@ -33,14 +33,14 @@ const ScheduleSettingsIPushPull = (props) => {
33
33
  React.createElement(Tabs_1.Tabs.Content, null,
34
34
  React.createElement(FormLayout_1.default, null,
35
35
  React.createElement(FormLayout_1.FormRow, { label: "Select Report" },
36
- React.createElement(DropdownButton_1.default, { disabled: props.allReports.length == 0, items: reportOptions, style: { width: 300 } }, ((_b = (_a = props === null || props === void 0 ? void 0 : props.iPushPull) === null || _a === void 0 ? void 0 : _a.IPushPullReport) === null || _b === void 0 ? void 0 : _b.ReportName) || 'Select Report')),
36
+ React.createElement(DropdownButton_1.default, { "data-name": "report-name", disabled: props.allReports.length == 0, items: reportOptions, style: { width: 300 } }, ((_b = (_a = props === null || props === void 0 ? void 0 : props.iPushPull) === null || _a === void 0 ? void 0 : _a.IPushPullReport) === null || _b === void 0 ? void 0 : _b.ReportName) || 'Select Report')),
37
37
  React.createElement(FormLayout_1.FormRow, { label: "Select Folder" },
38
- React.createElement(DropdownButton_1.default, { disabled: props.allFolders.length == 0, items: folderOptions, style: { width: 300 } }, ((_d = (_c = props === null || props === void 0 ? void 0 : props.iPushPull) === null || _c === void 0 ? void 0 : _c.IPushPullReport) === null || _d === void 0 ? void 0 : _d.Folder) || 'Select Folder')),
38
+ React.createElement(DropdownButton_1.default, { "data-name": "folder-name", disabled: props.allFolders.length == 0, items: folderOptions, style: { width: 300 } }, ((_d = (_c = props === null || props === void 0 ? void 0 : props.iPushPull) === null || _c === void 0 ? void 0 : _c.IPushPullReport) === null || _d === void 0 ? void 0 : _d.Folder) || 'Select Folder')),
39
39
  React.createElement(FormLayout_1.FormRow, { label: "Select Page" },
40
- React.createElement(DropdownButton_1.default, { disabled: props.allFolders.length == 0, items: pagesOptions, style: { width: 300 } }, ((_f = (_e = props === null || props === void 0 ? void 0 : props.iPushPull) === null || _e === void 0 ? void 0 : _e.IPushPullReport) === null || _f === void 0 ? void 0 : _f.Page) || 'Select Page')),
40
+ React.createElement(DropdownButton_1.default, { "data-name": "page-name", disabled: props.allFolders.length == 0, items: pagesOptions, style: { width: 300 } }, ((_f = (_e = props === null || props === void 0 ? void 0 : props.iPushPull) === null || _e === void 0 ? void 0 : _e.IPushPullReport) === null || _f === void 0 ? void 0 : _f.Page) || 'Select Page')),
41
41
  React.createElement(FormLayout_1.FormRow, { label: "Data Type" },
42
- React.createElement(Radio_1.default, { mr: 3, value: "Snapshot", checked: props.iPushPull.Transmission === 'Snapshot', onChange: (checked) => checked && handleDataTypeChange('Snapshot') }, "Snapshot (one off report)"),
43
- React.createElement(Radio_1.default, { value: "Live Data", checked: props.iPushPull.Transmission === 'Live Data', onChange: (checked) => checked && handleDataTypeChange('Live Data') }, "Live Data (real-time updates)")),
42
+ React.createElement(Radio_1.default, { "data-name": "data-type", mr: 3, value: "Snapshot", checked: props.iPushPull.Transmission === 'Snapshot', onChange: (checked) => checked && handleDataTypeChange('Snapshot') }, "Snapshot (one off report)"),
43
+ React.createElement(Radio_1.default, { "data-name": "data-live", value: "Live Data", checked: props.iPushPull.Transmission === 'Live Data', onChange: (checked) => checked && handleDataTypeChange('Live Data') }, "Live Data (real-time updates)")),
44
44
  React.createElement(FormLayout_1.FormRow, { label: "" },
45
45
  React.createElement(OnePageAdaptableWizard_1.FormDescriptionText, null, "Choose whether to send ipushpull Data as 'Snapshot' (One-off report) or 'Live Data' (updating as Grid updates)")))))));
46
46
  };
@@ -20,6 +20,6 @@ const ScheduleSettingsOpenFin = (props) => {
20
20
  React.createElement(Tabs_1.Tabs.Content, null,
21
21
  React.createElement(FormLayout_1.default, null,
22
22
  React.createElement(FormLayout_1.FormRow, { label: "Select Report" },
23
- React.createElement(DropdownButton_1.default, { columns: ['label'], style: { width: 300 }, disabled: props.allReports.length == 0, items: reportOptions }, ((_b = (_a = props === null || props === void 0 ? void 0 : props.openFin) === null || _a === void 0 ? void 0 : _a.OpenFinReport) === null || _b === void 0 ? void 0 : _b.ReportName) || 'Select Report')))))));
23
+ React.createElement(DropdownButton_1.default, { "data-name": "select-report", columns: ['label'], style: { width: 300 }, disabled: props.allReports.length == 0, items: reportOptions }, ((_b = (_a = props === null || props === void 0 ? void 0 : props.openFin) === null || _a === void 0 ? void 0 : _a.OpenFinReport) === null || _b === void 0 ? void 0 : _b.ReportName) || 'Select Report')))))));
24
24
  };
25
25
  exports.ScheduleSettingsOpenFin = ScheduleSettingsOpenFin;
@@ -39,14 +39,14 @@ const ScheduleSettingsReminder = (props) => {
39
39
  React.createElement(Tabs_1.Tabs.Content, null,
40
40
  React.createElement(FormLayout_1.default, null,
41
41
  React.createElement(FormLayout_1.FormRow, { label: "Header" },
42
- React.createElement(Input_1.default, { width: 300, onChange: handleHeaderChange, placeholder: "Enter Reminder Header (optional)", type: "string", value: (_a = props.reminderSchedule) === null || _a === void 0 ? void 0 : _a.Header })),
42
+ React.createElement(Input_1.default, { "data-name": "header", width: 300, onChange: handleHeaderChange, placeholder: "Enter Reminder Header (optional)", type: "string", value: (_a = props.reminderSchedule) === null || _a === void 0 ? void 0 : _a.Header })),
43
43
  React.createElement(FormLayout_1.FormRow, { label: "Message" },
44
- React.createElement(Input_1.default, { width: 300, onChange: handleMessageChange, placeholder: "Enter Reminder Message", type: "string", value: (_b = props.reminderSchedule) === null || _b === void 0 ? void 0 : _b.Message })),
44
+ React.createElement(Input_1.default, { "data-name": "message", width: 300, onChange: handleMessageChange, placeholder: "Enter Reminder Message", type: "string", value: (_b = props.reminderSchedule) === null || _b === void 0 ? void 0 : _b.Message })),
45
45
  React.createElement(FormLayout_1.FormRow, { label: "Type" },
46
- React.createElement(DropdownButton_1.default, { style: { width: 300 }, columns: ['label'], placeholder: "Select Option", items: messageTypes }, ((_c = props.reminderSchedule) === null || _c === void 0 ? void 0 : _c.MessageType) || 'Select Option')),
46
+ React.createElement(DropdownButton_1.default, { "data-name": "message-type", style: { width: 300 }, columns: ['label'], placeholder: "Select Option", items: messageTypes }, ((_c = props.reminderSchedule) === null || _c === void 0 ? void 0 : _c.MessageType) || 'Select Option')),
47
47
  React.createElement(FormLayout_1.FormRow, { label: "" },
48
- React.createElement(CheckBox_1.CheckBox, { checked: (_d = props.reminderSchedule) === null || _d === void 0 ? void 0 : _d.DisplayNotification, onChange: handleDisplayNotificationChange }, "Show the Reminder as an Alert")),
48
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "display-notification", checked: (_d = props.reminderSchedule) === null || _d === void 0 ? void 0 : _d.DisplayNotification, onChange: handleDisplayNotificationChange }, "Show the Reminder as an Alert")),
49
49
  React.createElement(FormLayout_1.FormRow, { label: "" },
50
- React.createElement(CheckBox_1.CheckBox, { checked: (_e = props.reminderSchedule) === null || _e === void 0 ? void 0 : _e.DisplaySystemStatusMessage, onChange: handleDisplaySystemStatusChange }, "Display a System Status Message")))))));
50
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "display-system-status", checked: (_e = props.reminderSchedule) === null || _e === void 0 ? void 0 : _e.DisplaySystemStatusMessage, onChange: handleDisplaySystemStatusChange }, "Display a System Status Message")))))));
51
51
  };
52
52
  exports.ScheduleSettingsReminder = ScheduleSettingsReminder;
@@ -29,8 +29,8 @@ const ScheduleSettingsReport = (props) => {
29
29
  React.createElement(Tabs_1.Tabs.Content, null,
30
30
  React.createElement(FormLayout_1.default, null,
31
31
  React.createElement(FormLayout_1.FormRow, { label: "Export" },
32
- React.createElement(DropdownButton_1.default, { columns: ['label'], style: { width: 300 }, items: reportOptions }, ((_a = props === null || props === void 0 ? void 0 : props.report) === null || _a === void 0 ? void 0 : _a.ReportName) || 'Select Report')),
32
+ React.createElement(DropdownButton_1.default, { "data-name": "select-report", columns: ['label'], style: { width: 300 }, items: reportOptions }, ((_a = props === null || props === void 0 ? void 0 : props.report) === null || _a === void 0 ? void 0 : _a.ReportName) || 'Select Report')),
33
33
  React.createElement(FormLayout_1.FormRow, { label: "Destination" },
34
- React.createElement(DropdownButton_1.default, { columns: ['label'], style: { width: 300 }, items: destinationOptions }, ((_b = props === null || props === void 0 ? void 0 : props.report) === null || _b === void 0 ? void 0 : _b.ExportDestination) || 'Select Destination')))))));
34
+ React.createElement(DropdownButton_1.default, { "data-name": "select-destination", columns: ['label'], style: { width: 300 }, items: destinationOptions }, ((_b = props === null || props === void 0 ? void 0 : props.report) === null || _b === void 0 ? void 0 : _b.ExportDestination) || 'Select Destination')))))));
35
35
  };
36
36
  exports.ScheduleSettingsReport = ScheduleSettingsReport;
@@ -65,17 +65,17 @@ const ShortcutSettingsWizard = (props) => {
65
65
  React.createElement(FormLayout_1.default, { width: 400 },
66
66
  React.createElement(FormLayout_1.FormRow, { label: "Key" },
67
67
  React.createElement(rebass_1.Flex, { flexDirection: "row" },
68
- React.createElement(DropdownButton_1.default, { style: { flex: 1 }, marginRight: 3, items: optionKeys, columns: ['label'] }, shortcut.ShortcutKey || 'Select Key'),
68
+ React.createElement(DropdownButton_1.default, { "data-name": "shortcut-key", style: { flex: 1 }, marginRight: 3, items: optionKeys, columns: ['label'] }, shortcut.ShortcutKey || 'Select Key'),
69
69
  React.createElement(AdaptablePopover_1.AdaptablePopover, { headerText: "Shortcut: Key", bodyText: ['The keyboard key that, when pressed, triggers the shortcut.'] }))),
70
70
  React.createElement(FormLayout_1.FormRow, { label: "Operation" },
71
71
  React.createElement(rebass_1.Flex, { flexDirection: "row" },
72
- React.createElement(DropdownButton_1.default, { style: { flex: 1 }, marginRight: 3, items: optionActions, columns: ['label'] }, shortcut.ShortcutOperation || 'Select Operation'),
72
+ React.createElement(DropdownButton_1.default, { "data-name": "shortcut-operation", style: { flex: 1 }, marginRight: 3, items: optionActions, columns: ['label'] }, shortcut.ShortcutOperation || 'Select Operation'),
73
73
  React.createElement(AdaptablePopover_1.AdaptablePopover, { headerText: 'Shortcut: Operation', bodyText: [
74
74
  "The mathematical operation that is performed on the cell's current value - using the shortcut's 'value' - in order to calculate the new total for the cell.",
75
75
  ] }))),
76
76
  React.createElement(FormLayout_1.FormRow, { label: "Value" },
77
77
  React.createElement(rebass_1.Flex, { flexDirection: "row" },
78
- React.createElement(Input_1.default, { flex: 1, marginRight: 3, onChange: handleOperationValueChange, placeholder: "Enter Number", type: "number", value: (_a = shortcut.ShortcutValue) !== null && _a !== void 0 ? _a : '' }),
78
+ React.createElement(Input_1.default, { "data-name": "shortcut-value", flex: 1, marginRight: 3, onChange: handleOperationValueChange, placeholder: "Enter Number", type: "number", value: (_a = shortcut.ShortcutValue) !== null && _a !== void 0 ? _a : '' }),
79
79
  React.createElement(AdaptablePopover_1.AdaptablePopover, { headerText: 'Shortcut: Value', bodyText: [
80
80
  "The number that is used - together with the shortcut's mathematical 'operation' and the current cell value - in order to calculate the new total for the cell.",
81
81
  ] }))))))));
@@ -59,11 +59,11 @@ class SmartEditPopupComponent extends React.Component {
59
59
  }
60
60
  } },
61
61
  React.createElement(rebass_1.Flex, { flexDirection: "row", padding: 2, "data-name": "smart-edit-operation" },
62
- React.createElement(DropdownButton_1.default, { items: operationMenuItems, columns: ['label'], onMouseDown: preventDefault }, typeof this.props.SmartEditOperation === 'object'
62
+ React.createElement(DropdownButton_1.default, { "data-name": "smart-edit-operation-dropdown", items: operationMenuItems, columns: ['label'], onMouseDown: preventDefault }, typeof this.props.SmartEditOperation === 'object'
63
63
  ? this.props.SmartEditOperation.name
64
64
  : this.props.SmartEditOperation),
65
- React.createElement(Input_1.default, { value: this.props.SmartEditValue.toString(), marginLeft: 2, marginRight: 2, type: "number", placeholder: "Enter a Number", onChange: (e) => this.onSmartEditValueChange(e) }),
66
- React.createElement(SimpleButton_1.default, { tone: this.getButtonStyle(), variant: "raised", disabled: StringExtensions_1.StringExtensions.IsNullOrEmpty(`${this.props.SmartEditValue}`) ||
65
+ React.createElement(Input_1.default, { "data-name": "smart-edit-value", value: this.props.SmartEditValue.toString(), marginLeft: 2, marginRight: 2, type: "number", placeholder: "Enter a Number", onChange: (e) => this.onSmartEditValueChange(e) }),
66
+ React.createElement(SimpleButton_1.default, { "data-name": "smart-edit-apply-button", tone: this.getButtonStyle(), variant: "raised", disabled: StringExtensions_1.StringExtensions.IsNullOrEmpty(`${this.props.SmartEditValue}`) ||
67
67
  (this.props.PreviewInfo &&
68
68
  this.props.PreviewInfo.previewValidationSummary.validationResult == 'All'), onClick: () => {
69
69
  this.submit();
@@ -38,17 +38,17 @@ const SpecialColumnSettingsWizardStep = (props) => {
38
38
  { size: '30%', name: 'third' },
39
39
  ] },
40
40
  React.createElement(FormLayout_1.FormRow, null,
41
- React.createElement(CheckBox_1.CheckBox, { checked: Filterable, onChange: (Filterable) => onSettingsChange({ Filterable }), disabled: !adaptable.api.internalApi.getAdaptableOptions().filterOptions
41
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "filterable", checked: Filterable, onChange: (Filterable) => onSettingsChange({ Filterable }), disabled: !adaptable.api.internalApi.getAdaptableOptions().filterOptions
42
42
  .enableFilterOnSpecialColumns }, "Filterable"),
43
- React.createElement(CheckBox_1.CheckBox, { checked: Resizable, onChange: (Resizable) => onSettingsChange({ Resizable }) }, "Resizable"),
44
- React.createElement(CheckBox_1.CheckBox, { checked: Groupable, onChange: (Groupable) => onSettingsChange({ Groupable }) }, "Groupable")),
43
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "resizable", checked: Resizable, onChange: (Resizable) => onSettingsChange({ Resizable }) }, "Resizable"),
44
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "groupable", checked: Groupable, onChange: (Groupable) => onSettingsChange({ Groupable }) }, "Groupable")),
45
45
  React.createElement(FormLayout_1.FormRow, null,
46
- React.createElement(CheckBox_1.CheckBox, { checked: Sortable, onChange: (Sortable) => onSettingsChange({ Sortable }) }, "Sortable"),
47
- React.createElement(CheckBox_1.CheckBox, { checked: Pivotable, onChange: (Pivotable) => onSettingsChange({ Pivotable }) }, "Pivotable"),
48
- React.createElement(CheckBox_1.CheckBox, { checked: Aggregatable, onChange: (Aggregatable) => onSettingsChange({ Aggregatable }) }, "Aggregatable")),
46
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "sortable", checked: Sortable, onChange: (Sortable) => onSettingsChange({ Sortable }) }, "Sortable"),
47
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "pivotable", checked: Pivotable, onChange: (Pivotable) => onSettingsChange({ Pivotable }) }, "Pivotable"),
48
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "aggregatable", checked: Aggregatable, onChange: (Aggregatable) => onSettingsChange({ Aggregatable }) }, "Aggregatable")),
49
49
  React.createElement(FormLayout_1.FormRow, null,
50
- React.createElement(CheckBox_1.CheckBox, { checked: SuppressMenu, onChange: (SuppressMenu) => onSettingsChange({ SuppressMenu }) }, "Suppress Menu"),
51
- React.createElement(CheckBox_1.CheckBox, { checked: SuppressMovable, onChange: (SuppressMovable) => onSettingsChange({ SuppressMovable }) }, "Suppress Movable"),
50
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "suppres-smenu", checked: SuppressMenu, onChange: (SuppressMenu) => onSettingsChange({ SuppressMenu }) }, "Suppress Menu"),
51
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "suppres-movable", checked: SuppressMovable, onChange: (SuppressMovable) => onSettingsChange({ SuppressMovable }) }, "Suppress Movable"),
52
52
  React.createElement(CheckBox_1.CheckBox, { disabled: true, checked: props.isEditable }, "Editable")))))),
53
53
  Boolean(possibleColumnTypes === null || possibleColumnTypes === void 0 ? void 0 : possibleColumnTypes.length) && (React.createElement(Tabs_1.Tabs, { marginTop: 2, autoFocus: false },
54
54
  React.createElement(Tabs_1.Tabs.Tab, null, "Column Types"),
@@ -56,8 +56,8 @@ const SpecialColumnSettingsWizardStep = (props) => {
56
56
  React.createElement(FormLayout_1.default, { columns: [{ name: 'first', size: '30%' }, { name: 'second' }] }, (_b = (0, chunk_1.default)(possibleColumnTypes !== null && possibleColumnTypes !== void 0 ? possibleColumnTypes : [], 2)) === null || _b === void 0 ? void 0 : _b.map(([first, second]) => {
57
57
  var _a, _b, _c, _d, _e, _f;
58
58
  return (React.createElement(FormLayout_1.FormRow, { key: first },
59
- first && (React.createElement(CheckBox_1.CheckBox, { onChange: (checked) => handleColumnTypeChange(first, checked), checked: (_c = (_b = (_a = props.settings) === null || _a === void 0 ? void 0 : _a.ColumnTypes) === null || _b === void 0 ? void 0 : _b.includes) === null || _c === void 0 ? void 0 : _c.call(_b, first) }, first)),
60
- second && (React.createElement(CheckBox_1.CheckBox, { onChange: (checked) => handleColumnTypeChange(second, checked), checked: (_f = (_e = (_d = props.settings) === null || _d === void 0 ? void 0 : _d.ColumnTypes) === null || _e === void 0 ? void 0 : _e.includes) === null || _f === void 0 ? void 0 : _f.call(_e, second) }, second))));
59
+ first && (React.createElement(CheckBox_1.CheckBox, { "data-name": first, onChange: (checked) => handleColumnTypeChange(first, checked), checked: (_c = (_b = (_a = props.settings) === null || _a === void 0 ? void 0 : _a.ColumnTypes) === null || _b === void 0 ? void 0 : _b.includes) === null || _c === void 0 ? void 0 : _c.call(_b, first) }, first)),
60
+ second && (React.createElement(CheckBox_1.CheckBox, { "data-name": second, onChange: (checked) => handleColumnTypeChange(second, checked), checked: (_f = (_e = (_d = props.settings) === null || _d === void 0 ? void 0 : _d.ColumnTypes) === null || _e === void 0 ? void 0 : _e.includes) === null || _f === void 0 ? void 0 : _f.call(_e, second) }, second))));
61
61
  })))))));
62
62
  };
63
63
  exports.SpecialColumnSettingsWizardStep = SpecialColumnSettingsWizardStep;
@@ -15,18 +15,18 @@ const StateManagementPopup = (props) => {
15
15
  React.createElement(Panel_1.default, { className: `${baseClassName}__panel`, "data-name": "user-state", header: 'User State', style: { height: 'auto' }, variant: "default", borderRadius: "none", marginRight: 2, mb: 2 },
16
16
  React.createElement(HelpBlock_1.default, { marginBottom: 2 }, 'Clear all current user state that has been persisted.'),
17
17
  React.createElement(HelpBlock_1.default, null, 'This will cause this window to close and any state you have previously created will be lost and the initial Predefined Config will then be reapplied.'),
18
- React.createElement(ClearButton_1.ClearButton, { tone: "error", variant: "raised", marginTop: 2, accessLevel: props.accessLevel, onClick: () => props.api.configApi.reloadPredefinedConfig() }, "Clear User State")),
18
+ React.createElement(ClearButton_1.ClearButton, { "data-name": "clear-user-state-button", tone: "error", variant: "raised", marginTop: 2, accessLevel: props.accessLevel, onClick: () => props.api.configApi.reloadPredefinedConfig() }, "Clear User State")),
19
19
  React.createElement(Panel_1.default, { className: `${baseClassName}__panel`, "data-name": "predefined-config", header: 'Load Predefined Config', style: { height: 'auto' }, variant: "default", borderRadius: "none", marginTop: 3, marginRight: 2, mb: 2 },
20
20
  React.createElement(HelpBlock_1.default, { marginTop: 2 }, 'Load Predefined Config (from a .json file). This will cause this window to close.'),
21
21
  ' ',
22
- React.createElement(LoadButton_1.LoadButton, { tone: "info", variant: "raised", marginTop: 2, accessLevel: props.accessLevel, onLoad: (json) => props.api.configApi.reloadPredefinedConfig(json) }, "Load Predefined Config")),
22
+ React.createElement(LoadButton_1.LoadButton, { tone: "info", variant: "raised", marginTop: 2, accessLevel: props.accessLevel, onLoad: (json) => props.api.configApi.reloadPredefinedConfig(json), "data-name": "load-predefined-config-button" }, "Load Predefined Config")),
23
23
  React.createElement(Panel_1.default, { className: `${baseClassName}__panel`, "data-name": "adaptable-state", header: 'Export Adaptable State', style: { height: 'auto' }, variant: "default", borderRadius: "none", marginTop: 3, marginRight: 2, mb: 2 },
24
24
  React.createElement(HelpBlock_1.default, { marginTop: 2, marginBottom: 2 }, 'Exports the currently persisted Adaptable state.'),
25
25
  ' ',
26
- React.createElement(ExportDropdown_1.ExportDropdown, { api: props.api, type: "adaptableState", marginRight: 3, style: { flex: 1, maxWidth: 'none' }, columns: ['label'] }, "Select Export Destination")),
26
+ React.createElement(ExportDropdown_1.ExportDropdown, { api: props.api, type: "adaptableState", marginRight: 3, style: { flex: 1, maxWidth: 'none' }, columns: ['label'], "data-name": "export-adaptable-state-dropdown" }, "Select Export Destination")),
27
27
  React.createElement(Panel_1.default, { className: `${baseClassName}__panel`, "data-name": "initial-predefined-config", header: 'Export Initial Predefined Config', style: { height: 'auto' }, variant: "default", borderRadius: "none", marginTop: 3, marginRight: 2, mb: 2 },
28
28
  React.createElement(HelpBlock_1.default, { marginTop: 2, marginBottom: 2 }, 'Exports the Predefined Config which was provided at design time.'),
29
29
  ' ',
30
- React.createElement(ExportDropdown_1.ExportDropdown, { api: props.api, type: "predefinedConfig", marginRight: 3, style: { flex: 1, maxWidth: 'none' }, columns: ['label'] }, "Select Export Destination"))));
30
+ React.createElement(ExportDropdown_1.ExportDropdown, { api: props.api, type: "predefinedConfig", marginRight: 3, style: { flex: 1, maxWidth: 'none' }, columns: ['label'], "data-name": "export-initial-predefined-config-dropdown" }, "Select Export Destination"))));
31
31
  };
32
32
  exports.StateManagementPopup = StateManagementPopup;
@@ -7,6 +7,7 @@ const AdaptableObjectRow_1 = require("../Components/AdaptableObjectRow");
7
7
  const rebass_1 = require("rebass");
8
8
  const UIHelper_1 = tslib_1.__importDefault(require("../UIHelper"));
9
9
  const Helper_1 = require("../../Utilities/Helpers/Helper");
10
+ const join_1 = tslib_1.__importDefault(require("../../components/utils/join"));
10
11
  class SystemStatusEntityRow extends React.Component {
11
12
  render() {
12
13
  var _a;
@@ -15,15 +16,12 @@ class SystemStatusEntityRow extends React.Component {
15
16
  let messageTypeColor = UIHelper_1.default.getColorByMessageType((_a = systemStatus === null || systemStatus === void 0 ? void 0 : systemStatus.statusType) !== null && _a !== void 0 ? _a : 'Success');
16
17
  let colItems = (0, Helper_1.cloneObject)(this.props.colItems);
17
18
  colItems[0].Content = systemStatus ? (React.createElement("details", null,
18
- React.createElement(rebass_1.Flex, { title: systemStatus.statusFurtherInformation ? 'Click to see more' : '', style: {
19
- borderRadius: 'var(--ab__border-radius)',
20
- fontWeight: 'bold',
21
- cursor: systemStatus.statusFurtherInformation ? 'pointer' : 'auto',
22
- }, className: "ab-DashboardToolbar__SystemStatus__text", marginRight: 2, padding: 2, color: 'text-on-secondary', backgroundColor: messageTypeColor, fontSize: 'var( --ab-font-size-2)', alignItems: "center", as: "summary" },
19
+ React.createElement(rebass_1.Flex, { title: systemStatus.statusFurtherInformation ? 'Click to see more' : '', className: (0, join_1.default)('ab-DashboardToolbar__SystemStatus__text', systemStatus.statusFurtherInformation &&
20
+ 'ab-DashboardToolbar__SystemStatus__text--expandable'), backgroundColor: messageTypeColor, alignItems: "center", as: "summary" },
23
21
  systemStatus.statusMessage,
24
22
  " ",
25
23
  systemStatus.statusFurtherInformation ? '...' : ''),
26
- systemStatus.statusFurtherInformation ? (React.createElement(rebass_1.Box, { margin: 2, style: { whiteSpace: 'normal' } }, systemStatus.statusFurtherInformation)) : null)) : null;
24
+ systemStatus.statusFurtherInformation ? (React.createElement(rebass_1.Box, { className: "ab-DashboardToolbar__SystemStatus__further-information", margin: 2 }, systemStatus.statusFurtherInformation)) : null)) : null;
27
25
  colItems[1].Content = systemStatus.timestamp.toLocaleString();
28
26
  return React.createElement(AdaptableObjectRow_1.AdaptableObjectRow, { colItems: colItems });
29
27
  }
@@ -19,7 +19,7 @@ const SharedEntityTypeItemView = (props) => {
19
19
  React.createElement(rebass_1.Flex, { mb: 2, mt: 2 },
20
20
  React.createElement(rebass_1.Flex, { mr: 2, alignItems: "center" },
21
21
  React.createElement(Tag_1.Tag, { style: { margin: 0 } }, props.data.Module)),
22
- isExpanded ? (React.createElement(SimpleButton_1.default, { onClick: () => setIsExpanded(false), icon: "arrow-up" }, "Collapse")) : (React.createElement(SimpleButton_1.default, { onClick: () => setIsExpanded(true), icon: "arrow-down" }, "Expand"))),
22
+ isExpanded ? (React.createElement(SimpleButton_1.default, { "data-name": "shared-entity-collapse-button", onClick: () => setIsExpanded(false), icon: "arrow-up" }, "Collapse")) : (React.createElement(SimpleButton_1.default, { "data-name": "shared-entity-epxand-button", onClick: () => setIsExpanded(true), icon: "arrow-down" }, "Expand"))),
23
23
  isExpanded && (React.createElement(rebass_1.Box, { as: "ul", padding: 0, className: "ab-Shared-Entity-Shared-Object" },
24
24
  React.createElement(AdaptableObjectList_1.AdaptableObjectListItem, { hideControls: true, data: item, module: module })))));
25
25
  };
@@ -10,6 +10,6 @@ const TeamSharingApplyButton = (props) => {
10
10
  const handleImport = React.useCallback(() => {
11
11
  adaptable.api.teamSharingApi.importSharedEntry(props.data);
12
12
  }, []);
13
- return (React.createElement(SimpleButton_1.default, { onClick: handleImport, variant: "text", tooltip: "Apply Adaptable Object", icon: "import-export" }));
13
+ return (React.createElement(SimpleButton_1.default, { "data-name": "shared-entity-apply-button", onClick: handleImport, variant: "text", tooltip: "Apply Adaptable Object", icon: "import-export" }));
14
14
  };
15
15
  exports.TeamSharingApplyButton = TeamSharingApplyButton;
@@ -38,7 +38,7 @@ class ThemePopupComponent extends React.Component {
38
38
  return (React.createElement(PopupPanel_1.PopupPanel, { headerText: this.props.moduleInfo.FriendlyName, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed() },
39
39
  React.createElement(FormLayout_1.default, null,
40
40
  React.createElement(FormLayout_1.FormRow, { label: "Current Theme:" },
41
- React.createElement(DropdownButton_1.default, { columns: ['label'], style: { width: '50%', minWidth: 200 }, placeholder: "Select theme", value: this.props.CurrentTheme, items: optionThemes, accessLevel: this.props.accessLevel }, currentThemeDescription)))));
41
+ React.createElement(DropdownButton_1.default, { "data-name": "select-theme-dropdown", columns: ['label'], style: { width: '50%', minWidth: 200 }, placeholder: "Select theme", value: this.props.CurrentTheme, items: optionThemes, accessLevel: this.props.accessLevel }, currentThemeDescription)))));
42
42
  }
43
43
  onChangeTheme(value) {
44
44
  this.props.SelectTheme(value);
@@ -76,7 +76,6 @@ const OnePageAdaptableWizard = (props) => {
76
76
  exports.OnePageAdaptableWizard = OnePageAdaptableWizard;
77
77
  const OnePageWizardSummary = () => {
78
78
  const { setCurrentSection, sections, data } = (0, OnePageWizards_1.useOnePageWizardContext)();
79
- const { api } = useOnePageAdaptableWizardContext();
80
79
  const renderEdit = (index) => (React.createElement(SimpleButton_1.default, { px: 1, variant: "text", style: {
81
80
  textDecoration: 'underline',
82
81
  display: 'inline-block',
@@ -84,7 +83,7 @@ const OnePageWizardSummary = () => {
84
83
  }, onClick: () => {
85
84
  setCurrentSection(index);
86
85
  } }, "edit"));
87
- return (React.createElement(React.Fragment, null, sections
86
+ return (React.createElement(rebass_1.Box, { className: "ab-OnePageWizardSummary" }, sections
88
87
  .map((section, index) => {
89
88
  if (section === '-') {
90
89
  return null;
@@ -161,7 +161,6 @@ export declare class Adaptable implements IAdaptable {
161
161
  private getFormatColumnAdaptableStyle;
162
162
  private getFormatColumnCellStyle;
163
163
  private getFormatColumnCellClass;
164
- private getFormatColumnRowClass;
165
164
  private getActiveAlertWithHighlightCell;
166
165
  private getActiveAlertWithHighlightRow;
167
166
  private getAlertCellStyle;
@@ -956,7 +956,9 @@ class Adaptable {
956
956
  getFormatColumnAdaptableStyle(formatColumns) {
957
957
  // first has more precedence, then they need to be applied in reverse order
958
958
  return formatColumns.reduceRight((style, formatColumn) => {
959
- const formatColumnStyle = this.convertAdaptableStyleToCSS(formatColumn.Style);
959
+ const formatColumnStyle = formatColumn.Style
960
+ ? this.convertAdaptableStyleToCSS(formatColumn.Style)
961
+ : {};
960
962
  if (formatColumn.CellAlignment) {
961
963
  switch (formatColumn.CellAlignment) {
962
964
  case 'Left':
@@ -973,37 +975,21 @@ class Adaptable {
973
975
  return Object.assign(Object.assign({}, style), formatColumnStyle);
974
976
  }, {});
975
977
  }
976
- getFormatColumnCellStyle(abColumn, formatColumn, formatColumnsWithStyle, params) {
977
- let style = {};
978
- if (formatColumn.Style) {
979
- const activeFormatColumnsWithStyle = formatColumnsWithStyle.filter((formatColumn) => {
980
- return this.api.formatColumnApi.isFormatColumnActiveForColumn(formatColumn, abColumn, params);
981
- });
982
- if (!activeFormatColumnsWithStyle.length) {
983
- return style;
984
- }
985
- style = Object.assign(Object.assign({}, style), this.getFormatColumnAdaptableStyle(activeFormatColumnsWithStyle));
978
+ getFormatColumnCellStyle(abColumn, activeFormatColumnsWithStyle, params) {
979
+ if (!activeFormatColumnsWithStyle.length) {
980
+ return {};
986
981
  }
987
- return style;
982
+ const relevantFormatColumnsWithStyle = activeFormatColumnsWithStyle.filter((formatColumn) => {
983
+ return this.api.formatColumnApi.isFormatColumnRelevantForColumn(formatColumn, abColumn, params);
984
+ });
985
+ return this.getFormatColumnAdaptableStyle(relevantFormatColumnsWithStyle);
988
986
  }
989
987
  getFormatColumnCellClass(formatColumns, abColumn, params) {
990
988
  const classNames = formatColumns
991
989
  .map((formatColumn) => {
992
990
  var _a, _b;
993
991
  if (((_a = formatColumn.Style) === null || _a === void 0 ? void 0 : _a.ClassName) &&
994
- this.api.formatColumnApi.isFormatColumnActiveForColumn(formatColumn, abColumn, params)) {
995
- return (_b = formatColumn.Style) === null || _b === void 0 ? void 0 : _b.ClassName;
996
- }
997
- })
998
- .filter((x) => !!x);
999
- return classNames;
1000
- }
1001
- getFormatColumnRowClass(formatColumns, params) {
1002
- const classNames = formatColumns
1003
- .map((formatColumn) => {
1004
- var _a, _b;
1005
- if (((_a = formatColumn.Style) === null || _a === void 0 ? void 0 : _a.ClassName) &&
1006
- this.api.formatColumnApi.isFormatColumnActiveForRow(formatColumn, params)) {
992
+ this.api.formatColumnApi.isFormatColumnRelevantForColumn(formatColumn, abColumn, params)) {
1007
993
  return (_b = formatColumn.Style) === null || _b === void 0 ? void 0 : _b.ClassName;
1008
994
  }
1009
995
  })
@@ -3175,8 +3161,7 @@ class Adaptable {
3175
3161
  fontSize: null,
3176
3162
  borderColor: null,
3177
3163
  };
3178
- const formatColumn = this.api.formatColumnApi.getActiveFormatColumnForColumn(abColumn);
3179
- const formatColumnsWithStyle = this.api.formatColumnApi.getColumnFormatColumnsWithStyle(abColumn);
3164
+ const activeFormatColumnsWithStyle = this.api.formatColumnApi.getFormatColumnsWithStyleForColumn(abColumn);
3180
3165
  let styledColumn = this.api.styledColumnApi.getStyledColumnByColumnId(colId);
3181
3166
  if (styledColumn === null || styledColumn === void 0 ? void 0 : styledColumn.IsSuspended) {
3182
3167
  styledColumn = null;
@@ -3184,11 +3169,10 @@ class Adaptable {
3184
3169
  const quickSearchStyle = this.getQuickSearchCellStyle();
3185
3170
  const hasQuickSearchStyle = quickSearchStyle != undefined;
3186
3171
  const cellStyle = (params) => {
3187
- const formatColumnCellStyle = formatColumn && !styledColumn // TODO: remove after refactor columnStyle
3188
- ? this.getFormatColumnCellStyle(abColumn, formatColumn, formatColumnsWithStyle, params)
3189
- : undefined;
3190
3172
  const isQuickSearchActive = hasQuickSearchStyle && this.isQuickSearchActive(abColumn, params);
3191
- const result = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaultCellStyle), this.getReadOnlyCellStyle(abColumn, params)), this.getEditableCellStyle(abColumn, params)), (typeof userCellStyle === 'function' ? userCellStyle(params) : userCellStyle)), formatColumnCellStyle), (styledColumn ? this.getStyledColumnStyle(styledColumn, abColumn, params) : {})), (isQuickSearchActive ? quickSearchStyle : undefined)), this.getAlertCellStyle(abColumn, params)), this.getFlashingCellStyle(abColumn, params)), this.getCellHighlightStyle(abColumn, params));
3173
+ const result = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaultCellStyle), this.getReadOnlyCellStyle(abColumn, params)), this.getEditableCellStyle(abColumn, params)), (typeof userCellStyle === 'function' ? userCellStyle(params) : userCellStyle)), (!styledColumn
3174
+ ? this.getFormatColumnCellStyle(abColumn, activeFormatColumnsWithStyle, params)
3175
+ : {})), (styledColumn ? this.getStyledColumnStyle(styledColumn, abColumn, params) : {})), (isQuickSearchActive ? quickSearchStyle : {})), this.getAlertCellStyle(abColumn, params)), this.getFlashingCellStyle(abColumn, params)), this.getCellHighlightStyle(abColumn, params));
3192
3176
  return result;
3193
3177
  };
3194
3178
  return cellStyle;
@@ -3416,47 +3400,39 @@ class Adaptable {
3416
3400
  }
3417
3401
  setupColumnValueFormatter({ col, abColumn }) {
3418
3402
  this.setColDefProperty(col, 'valueFormatter', (params) => {
3419
- const formatColumn = this.api.formatColumnApi.getFormatColumnWithDisplayFormatForColumn(abColumn);
3420
- if (!formatColumn) {
3403
+ const activeFormatColumnsWithDisplayFormat = this.api.formatColumnApi.getFormatColumnsWithDisplayFormatForColumn(abColumn);
3404
+ if (!activeFormatColumnsWithDisplayFormat.length) {
3421
3405
  return;
3422
3406
  }
3423
- if (formatColumn === null || formatColumn === void 0 ? void 0 : formatColumn.IsSuspended) {
3424
- return;
3425
- }
3426
- if (formatColumn.DisplayFormat) {
3427
- let valueFormatter;
3428
- const options = formatColumn.DisplayFormat.Options;
3429
- if (formatColumn.DisplayFormat.Formatter === 'NumberFormatter') {
3407
+ return (params) => {
3408
+ const { node, value } = params;
3409
+ const [mostRelevantFormatColumn] = this.api.formatColumnApi.getFormatColumnsRelevantForColumn(activeFormatColumnsWithDisplayFormat, abColumn, { node, value });
3410
+ if (!mostRelevantFormatColumn) {
3411
+ // ALL FormatColumns are conditional and NONE of them are relevant for this row
3412
+ return value;
3413
+ }
3414
+ const options = mostRelevantFormatColumn.DisplayFormat.Options;
3415
+ if (mostRelevantFormatColumn.DisplayFormat.Formatter === 'NumberFormatter') {
3430
3416
  // change the Number format - if the scope allows it
3431
- if (this.api.scopeApi.isColumnInNumericScope(abColumn, formatColumn.Scope)) {
3432
- valueFormatter = (params) => {
3433
- return this.api.formatColumnApi.getNumberFormattedValue(params.value, params.node, abColumn, options);
3434
- };
3417
+ if (this.api.scopeApi.isColumnInNumericScope(abColumn, mostRelevantFormatColumn.Scope)) {
3418
+ return this.api.formatColumnApi.getNumberFormattedValue(params.value, params.node, abColumn, options);
3435
3419
  }
3436
3420
  }
3437
- if (formatColumn.DisplayFormat.Formatter === 'DateFormatter') {
3421
+ if (mostRelevantFormatColumn.DisplayFormat.Formatter === 'DateFormatter') {
3438
3422
  // change the Date format - if the scope allows it
3439
- if (this.api.scopeApi.isColumnInDateScope(abColumn, formatColumn.Scope)) {
3440
- valueFormatter = (params) => {
3441
- return this.api.formatColumnApi.getDateFormattedValue(params.value, params.node, abColumn, options);
3442
- };
3423
+ if (this.api.scopeApi.isColumnInDateScope(abColumn, mostRelevantFormatColumn.Scope)) {
3424
+ return this.api.formatColumnApi.getDateFormattedValue(params.value, params.node, abColumn, options);
3443
3425
  }
3444
3426
  }
3445
- if (formatColumn.DisplayFormat.Formatter === 'StringFormatter') {
3427
+ if (mostRelevantFormatColumn.DisplayFormat.Formatter === 'StringFormatter') {
3446
3428
  // change the String format - if the scope allows it
3447
- if (this.api.scopeApi.isColumnInStringsScope(abColumn, formatColumn.Scope)) {
3448
- valueFormatter = (params) => {
3449
- return this.api.formatColumnApi.getStringFormattedValue(params.value, params.node, abColumn, options);
3450
- };
3429
+ if (this.api.scopeApi.isColumnInStringsScope(abColumn, mostRelevantFormatColumn.Scope)) {
3430
+ return this.api.formatColumnApi.getStringFormattedValue(params.value, params.node, abColumn, options);
3451
3431
  }
3452
3432
  }
3453
- if (valueFormatter) {
3454
- return (params) => {
3455
- const rulePasses = this.api.formatColumnApi.isFormatColumnActiveForColumn(formatColumn, abColumn, params);
3456
- return rulePasses ? valueFormatter(params) : params.value;
3457
- };
3458
- }
3459
- }
3433
+ // should NEVER arrive at this line, but just to be sure
3434
+ return value;
3435
+ };
3460
3436
  });
3461
3437
  }
3462
3438
  setupColumnEditable({ col }) {
@@ -3699,14 +3675,14 @@ class Adaptable {
3699
3675
  firstInfo.trigger == 'tick' ? this.filterOnTickingDataChange() : this.filterOnEditDataChange();
3700
3676
  }
3701
3677
  getExpressionStylesChanges(dataChangedScope, cellDataChangedInfos) {
3702
- const stylesWithExpression = [];
3703
- stylesWithExpression.push(...this.api.formatColumnApi.getFormatColumnsWithExpression());
3704
- if (ArrayExtensions_1.ArrayExtensions.IsNullOrEmpty(stylesWithExpression)) {
3678
+ const formatColumnsWithExpression = [];
3679
+ formatColumnsWithExpression.push(...this.api.formatColumnApi.getFormatColumnsWithExpression());
3680
+ if (ArrayExtensions_1.ArrayExtensions.IsNullOrEmpty(formatColumnsWithExpression)) {
3705
3681
  return;
3706
3682
  }
3707
3683
  cellDataChangedInfos.forEach((cellDataChangedInfo) => {
3708
3684
  if (!dataChangedScope.wholeRow) {
3709
- stylesWithExpression.forEach((styleModule) => {
3685
+ formatColumnsWithExpression.forEach((styleModule) => {
3710
3686
  if (!dataChangedScope.wholeRow) {
3711
3687
  const columnIds = this.api.queryLanguageApi.getColumnsFromExpression(styleModule.Rule.BooleanExpression);
3712
3688
  if (columnIds.includes(cellDataChangedInfo.column.columnId)) {