@adaptabletools/adaptable-cjs 20.1.1 → 20.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/Utilities/Services/DataService.js +1 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +1 -1
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/EntitlementsForm.js +1 -1
- package/src/View/CellSummary/CellSummaryDetails.js +1 -1
- package/src/View/CellSummary/CellSummaryViewPanel.js +2 -2
- package/src/View/ColumnInfo/ColumnInfo.js +1 -1
- package/src/View/Comments/CommentsPopup.js +1 -1
- package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +3 -0
- package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +7 -1
- package/src/View/Components/Forms/AdaptableFormControlTextClear.js +1 -1
- package/src/View/Components/PreviewResultsPanel.js +1 -1
- package/src/View/Components/Selectors/BulkUpdateValueSelector.js +2 -2
- package/src/View/Components/Selectors/PermittedValuesSelector.js +1 -1
- package/src/View/Components/WizardSummaryPage.js +1 -1
- package/src/View/Dashboard/CustomDashboardButton.js +1 -1
- package/src/View/Dashboard/Dashboard.js +2 -2
- package/src/View/Dashboard/DashboardToolbarFactory.js +1 -1
- package/src/View/DataChangeHistory/DataChangeHistoryViewPanel.js +8 -9
- package/src/View/DataImport/DataImportWizard/sections/ColumnsSection.js +1 -1
- package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +1 -1
- package/src/View/DataSet/DataSetViewPanel.js +1 -1
- package/src/View/Export/ReportFormatSelector.js +1 -1
- package/src/View/Export/ReportNameSelector.js +1 -1
- package/src/View/Filter/FilterViewPanel.js +2 -2
- package/src/View/GridFilter/GridFilterViewPanel.js +1 -1
- package/src/View/Layout/LayoutViewPanel.js +1 -1
- package/src/View/Layout/PivotDetailsPopoup.js +1 -1
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
- package/src/View/Note/NotePopup.js +1 -1
- package/src/View/SmartEdit/SmartEditViewPanel.js +1 -1
- package/src/View/StateManagement/components/LoadButton.js +1 -1
- package/src/View/Theme/ThemeSelector.js +1 -1
- package/src/agGrid/AdaptableAgGrid.d.ts +10 -0
- package/src/agGrid/AdaptableAgGrid.js +38 -15
- package/src/components/Dashboard/DashboardToolbar.js +2 -2
- package/src/components/Icon/index.js +1 -1
- package/src/components/InfiniteTable/index.d.ts +2 -2
- package/src/components/InfiniteTable/index.js +3 -3
- package/src/components/List/GridList/index.js +1 -1
- package/src/components/Select/Select.d.ts +1 -0
- package/src/components/Select/Select.js +1 -1
- package/src/components/SimpleButton/index.js +5 -1
- package/src/env.js +2 -2
- package/src/layout-manager/src/index.js +32 -3
- package/tsconfig.cjs.tsbuildinfo +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptabletools/adaptable-cjs",
|
|
3
|
-
"version": "20.1.
|
|
3
|
+
"version": "20.1.3",
|
|
4
4
|
"description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
|
@@ -39,6 +39,7 @@ class DataService {
|
|
|
39
39
|
if (cellDataChangedInfo.newValue != cellDataChangedInfo.oldValue) {
|
|
40
40
|
this.emitter.emitSync('CellDataChanged', cellDataChangedInfo);
|
|
41
41
|
this.adaptable.api.eventApi.internalApi.fireCellChangedEvent(cellDataChangedInfo);
|
|
42
|
+
console.log('cell changed called');
|
|
42
43
|
const dataChangeLogEntry = this.extractDataChangeLogEntry(cellDataChangedInfo);
|
|
43
44
|
this.cellDataChangeLogSubject$.next(dataChangeLogEntry);
|
|
44
45
|
}
|
|
@@ -334,7 +334,7 @@ const ColumnsList = ({ columns: cols, handle, onValidityChange, onChange, onSele
|
|
|
334
334
|
};
|
|
335
335
|
return (React.createElement(rebass_1.Box, { p: 2, style: { height: '100%' }, className: theme },
|
|
336
336
|
React.createElement(InfiniteTable_1.DataSource, { data: data, primaryKey: "colId" },
|
|
337
|
-
React.createElement(InfiniteTable_1.
|
|
337
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnTypes: {
|
|
338
338
|
default: {
|
|
339
339
|
defaultFlex: 1,
|
|
340
340
|
align: 'center',
|
|
@@ -109,7 +109,7 @@ const EntitlementsListForm = (props) => {
|
|
|
109
109
|
}
|
|
110
110
|
return (React.createElement(rebass_1.Box, { flex: 1, height: "100%", className: theme },
|
|
111
111
|
React.createElement(InfiniteTable_1.DataSource, { data: data, primaryKey: "name" },
|
|
112
|
-
React.createElement(InfiniteTable_1.
|
|
112
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnTypes: columnTypes, headerOptions: headerOptions, domProps: tableDOMProps, columns: columnsMap }))));
|
|
113
113
|
};
|
|
114
114
|
const DefaultEntitlementForm = (props) => {
|
|
115
115
|
const abOptions = props.adaptableOptions;
|
|
@@ -29,7 +29,7 @@ class CellSummaryDetails extends React.Component {
|
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
return (React.createElement(React.Fragment, null, this.props.CellSummary != null ? (React.createElement(InfiniteTable_1.DataSource, { data: data, primaryKey: "Operation" },
|
|
32
|
-
React.createElement(InfiniteTable_1.
|
|
32
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { domProps: tableDOMProps, columns: columnsMap }))) : (React.createElement(EmptyContent_1.default, null,
|
|
33
33
|
React.createElement("p", null, "No cells are selected - please select some cells.")))));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -60,10 +60,10 @@ class CellSummaryViewPanelComponent extends React.Component {
|
|
|
60
60
|
const elementType = this.props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
|
|
61
61
|
return (React.createElement(rebass_1.Flex, { flexDirection: "row", className: shouldDisable ? GeneralConstants.READ_ONLY_STYLE : `ab-${elementType}__CellSummary__wrap`, flexWrap: this.props.viewType === 'ToolPanel' ? 'wrap' : 'nowrap' },
|
|
62
62
|
React.createElement(rebass_1.Flex, { flex: 1 },
|
|
63
|
-
React.createElement(Select_1.Select, { style: { width: '100%' }, className: `ab-${elementType}__CellSummary__select`, disabled: shouldDisable, options: [...operationMenuItems, ...operationDefinitions], onChange: (x) => this.props.onCellSummaryOperationChange(x), value: this.props.CellSummaryOperation })),
|
|
63
|
+
React.createElement(Select_1.Select, { "aria-label": "Cell Summary Operation Selector", style: { width: '100%' }, className: `ab-${elementType}__CellSummary__select`, disabled: shouldDisable, options: [...operationMenuItems, ...operationDefinitions], onChange: (x) => this.props.onCellSummaryOperationChange(x), value: this.props.CellSummaryOperation })),
|
|
64
64
|
React.createElement(rebass_1.Flex, { alignItems: "center", ml: 2 }, React.createElement(React.Fragment, null,
|
|
65
65
|
renderOperationValue(),
|
|
66
|
-
this.props.CellSummary != null && this.props.CellSummary.Count > 0 && (React.createElement(AdaptablePopover_1.AdaptablePopover, { popoverMaxWidth: 360, className: "ab-ToolPanel__CellSummary__info", bodyText: [cellSummaryPopover], useButton: true, showEvent: 'focus', hideEvent: "blur" }))))));
|
|
66
|
+
this.props.CellSummary != null && this.props.CellSummary.Count > 0 && (React.createElement(AdaptablePopover_1.AdaptablePopover, { popoverMaxWidth: 360, className: "ab-ToolPanel__CellSummary__info", bodyText: [cellSummaryPopover], useButton: true, showEvent: 'focus', hideEvent: "blur", tooltipText: 'Show Cell Summaries' }))))));
|
|
67
67
|
}
|
|
68
68
|
checkSelectedCells() {
|
|
69
69
|
this.props.onCreateCellSummary();
|
|
@@ -160,7 +160,7 @@ const ColumnDefPreview = (props) => {
|
|
|
160
160
|
Value: { field: 'Value', header: 'Value', defaultFlex: 3 },
|
|
161
161
|
};
|
|
162
162
|
return (React.createElement(InfiniteTable_1.DataSource, { data: keyValuePairs, primaryKey: "Key" },
|
|
163
|
-
React.createElement(InfiniteTable_1.
|
|
163
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { domProps: domProps, columns: columnsMap })));
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
const ModuleView = (props) => {
|
|
@@ -87,7 +87,7 @@ const CellComments = (props) => {
|
|
|
87
87
|
adaptable.api.commentApi.deleteCommentThread(props.commentThread);
|
|
88
88
|
} })) },
|
|
89
89
|
React.createElement(InfiniteTable_1.DataSource, { data: props.commentThread.Comments, primaryKey: "Uuid" },
|
|
90
|
-
React.createElement(InfiniteTable_1.
|
|
90
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnTypes: columnTypes, headerOptions: headerOptions, domProps: tableDOMProps, columns: columnsMap }))));
|
|
91
91
|
};
|
|
92
92
|
const CommentsPopup = (props) => {
|
|
93
93
|
const commentThreads = (0, react_redux_1.useSelector)((state) => {
|
|
@@ -113,6 +113,9 @@ const ColumnFilterInput = ({ type, value, onChange: onChangeProp, onClear: onCle
|
|
|
113
113
|
if (isNaN(numericValue)) {
|
|
114
114
|
numericValue = null;
|
|
115
115
|
liveValue = null;
|
|
116
|
+
if (value === '-') {
|
|
117
|
+
liveValue = value;
|
|
118
|
+
}
|
|
116
119
|
}
|
|
117
120
|
else {
|
|
118
121
|
const prevValueHasSeparator = prevValue.includes('.');
|
|
@@ -12,7 +12,13 @@ const renderSingleValue = (option) => {
|
|
|
12
12
|
const renderMultipleValues = (values, options) => {
|
|
13
13
|
const { focused, placeholder } = options;
|
|
14
14
|
const text = values.map(renderSingleValue).join(', ');
|
|
15
|
-
return values.length ?
|
|
15
|
+
return values.length ? (React.createElement(React.Fragment, null,
|
|
16
|
+
React.createElement("span", { "data-name": "multiple-values-count" },
|
|
17
|
+
"(",
|
|
18
|
+
values.length,
|
|
19
|
+
")"),
|
|
20
|
+
" ",
|
|
21
|
+
text)) : focused ? null : (placeholder ?? 'Select...');
|
|
16
22
|
};
|
|
17
23
|
function useDistinctFilterColumnValues(options) {
|
|
18
24
|
const { columnId, searchValueRef } = options;
|
|
@@ -17,7 +17,7 @@ exports.AdaptableFormControlTextClear = React.forwardRef((props, ref) => {
|
|
|
17
17
|
width: '100%',
|
|
18
18
|
...props.style,
|
|
19
19
|
} },
|
|
20
|
-
React.createElement(Input_1.default, { autoFocus: props.autoFocus, style: props.inputStyle, ref: (r) => {
|
|
20
|
+
React.createElement(Input_1.default, { "aria-label": props['aria-label'], autoFocus: props.autoFocus, style: props.inputStyle, ref: (r) => {
|
|
21
21
|
inputRef.current = r;
|
|
22
22
|
if (!ref) {
|
|
23
23
|
return;
|
|
@@ -62,7 +62,7 @@ class PreviewResultsPanel extends React.Component {
|
|
|
62
62
|
},
|
|
63
63
|
} },
|
|
64
64
|
React.createElement(InfiniteTable_1.DataSource, { data: dataSource, primaryKey: "Id" },
|
|
65
|
-
React.createElement(InfiniteTable_1.
|
|
65
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { sortable: false, domProps: tableDOMProps, columns: columnsMap })))) : null;
|
|
66
66
|
}
|
|
67
67
|
getValidationErrorMessage(alertDefinitions) {
|
|
68
68
|
let validationService = this.props.api.internalApi.getValidationService();
|
|
@@ -37,7 +37,7 @@ const BulkUpdateValueSelector = (props) => {
|
|
|
37
37
|
]), onChange: (value) => {
|
|
38
38
|
props.onColumnValueChange(value || null);
|
|
39
39
|
} })));
|
|
40
|
-
const input = (React.createElement(AdaptableInput_1.default, { "data-name": "bulkupdate-value-input", type: props.selectedColumn
|
|
40
|
+
const input = (React.createElement(AdaptableInput_1.default, { "data-name": "bulkupdate-value-input", "aria-label": "Bulk Update Value Input", type: props.selectedColumn
|
|
41
41
|
? UIHelper_1.default.getDescriptionForDataType(props.selectedColumn.dataType)
|
|
42
42
|
: 'text', placeholder: props.selectedColumn
|
|
43
43
|
? UIHelper_1.default.getPlaceholderForDataType(props.selectedColumn.dataType)
|
|
@@ -46,7 +46,7 @@ const BulkUpdateValueSelector = (props) => {
|
|
|
46
46
|
} }));
|
|
47
47
|
let valueTypeSelector = null;
|
|
48
48
|
if (isDateType) {
|
|
49
|
-
valueTypeSelector = (React.createElement(Select_1.Select, { options: [
|
|
49
|
+
valueTypeSelector = (React.createElement(Select_1.Select, { "aria-label": "Bulk Update Value Selector", options: [
|
|
50
50
|
{ label: 'New', value: 'new' },
|
|
51
51
|
{ label: 'Existing', value: 'existing' },
|
|
52
52
|
], value: valueType, onChange: (value) => {
|
|
@@ -101,6 +101,6 @@ const PermittedValuesSelector = function (props) {
|
|
|
101
101
|
reload();
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
|
-
return (React.createElement(Select_1.Select, { menuPortalTarget: props.menuPortalTarget, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
|
|
104
|
+
return (React.createElement(Select_1.Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
|
|
105
105
|
};
|
|
106
106
|
exports.PermittedValuesSelector = PermittedValuesSelector;
|
|
@@ -19,6 +19,6 @@ const tableDOMProps = {
|
|
|
19
19
|
const WizardSummaryPage = (props) => {
|
|
20
20
|
return (React.createElement(WizardPanel_1.default, { bodyProps: { padding: 0 }, className: "ab-WizardSummary", "data-name": 'wizard-summary' },
|
|
21
21
|
React.createElement(InfiniteTable_1.DataSource, { data: props.KeyValuePairs, primaryKey: "Key" },
|
|
22
|
-
React.createElement(InfiniteTable_1.
|
|
22
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { showZebraRows: true, domProps: tableDOMProps, columns: columnsMap }))));
|
|
23
23
|
};
|
|
24
24
|
exports.WizardSummaryPage = WizardSummaryPage;
|
|
@@ -23,7 +23,7 @@ const CustomDashboardButton = (props) => {
|
|
|
23
23
|
return null;
|
|
24
24
|
}
|
|
25
25
|
const disabled = button.disabled && button.disabled(button, dashboardContext);
|
|
26
|
-
return (React.createElement(SimpleButton_1.default, { key: buttonLabel, variant: buttonStyle && buttonStyle.variant ? buttonStyle.variant : 'text', tone: buttonStyle && buttonStyle.tone ? buttonStyle.tone : 'none', className: `ab-DashboardToolbar__Home__${(0, kebabCase_1.default)(buttonLabel)} ${buttonStyle?.className || ''}`, tooltip: buttonTooltip, icon: buttonIcon, disabled: disabled || props.accessLevel == 'ReadOnly', onClick: () => {
|
|
26
|
+
return (React.createElement(SimpleButton_1.default, { key: buttonLabel, "aria-label": buttonLabel, variant: buttonStyle && buttonStyle.variant ? buttonStyle.variant : 'text', tone: buttonStyle && buttonStyle.tone ? buttonStyle.tone : 'none', className: `ab-DashboardToolbar__Home__${(0, kebabCase_1.default)(buttonLabel)} ${buttonStyle?.className || ''}`, tooltip: buttonTooltip, icon: buttonIcon, disabled: disabled || props.accessLevel == 'ReadOnly', onClick: () => {
|
|
27
27
|
button.onClick?.(button, dashboardContext);
|
|
28
28
|
setTimeout(() => {
|
|
29
29
|
// mutate state to force a re-rendering
|
|
@@ -69,7 +69,7 @@ const DashboardComponent = (props) => {
|
|
|
69
69
|
shortcuts = shortcutsArray.map((x, index) => {
|
|
70
70
|
let menuItem = props.InternalState.Dashboard.DashboardModuleButtons.find((y) => y.isVisible && y.category == x);
|
|
71
71
|
if (menuItem) {
|
|
72
|
-
return (React.createElement(AdaptableButton_1.AdaptableButtonComponent, { "data-name": `dashboard-module-button-${menuItem.category ?? 'custom-' + index}`, key: menuItem.label, variant: menuItem.category === 'SystemStatus' ? 'outlined' : 'text', tone: menuItem.category === 'SystemStatus' ? 'neutral' : 'none', className: `ab-DashboardToolbar__Home__${(0, kebabCase_1.default)(menuItem.label)}`, icon: menuItem.icon, tooltip: menuItem.label, disabled: props.accessLevel == 'ReadOnly', onClick: () => props.dispatch(menuItem.reduxAction), accessLevel: 'Full', style: menuItem.category === 'SystemStatus'
|
|
72
|
+
return (React.createElement(AdaptableButton_1.AdaptableButtonComponent, { "data-name": `dashboard-module-button-${menuItem.category ?? 'custom-' + index}`, "aria-label": menuItem.label, key: menuItem.label, variant: menuItem.category === 'SystemStatus' ? 'outlined' : 'text', tone: menuItem.category === 'SystemStatus' ? 'neutral' : 'none', className: `ab-DashboardToolbar__Home__${(0, kebabCase_1.default)(menuItem.label)}`, icon: menuItem.icon, tooltip: menuItem.label, disabled: props.accessLevel == 'ReadOnly', onClick: () => props.dispatch(menuItem.reduxAction), accessLevel: 'Full', style: menuItem.category === 'SystemStatus'
|
|
73
73
|
? {
|
|
74
74
|
...UIHelper_1.default.getStyleForMessageType(props.api.systemStatusApi.getCurrentSystemStatusMessageInfo()?.statusType ??
|
|
75
75
|
'Success'),
|
|
@@ -93,7 +93,7 @@ const DashboardComponent = (props) => {
|
|
|
93
93
|
};
|
|
94
94
|
const renderQuickSearch = () => {
|
|
95
95
|
return (React.createElement(rebass_1.Box, { ml: 2 },
|
|
96
|
-
React.createElement(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { type: "text", placeholder: props.api.optionsApi.getQuickSearchOptions().quickSearchPlaceholder, className: "ab-DashboardToolbar__QuickSearch__text", value: searchText, OnTextChange: search, style: { width: 'auto' }, inputStyle: { width: '7rem' } })));
|
|
96
|
+
React.createElement(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { type: "text", "aria-label": 'Quick Search', placeholder: props.api.optionsApi.getQuickSearchOptions().quickSearchPlaceholder, className: "ab-DashboardToolbar__QuickSearch__text", value: searchText, OnTextChange: search, style: { width: 'auto' }, inputStyle: { width: '7rem' } })));
|
|
97
97
|
};
|
|
98
98
|
let instanceName = props.api.internalApi.getToolbarTitle();
|
|
99
99
|
let dashboardOptions = props.api.optionsApi.getDashboardOptions();
|
|
@@ -16,7 +16,7 @@ const SystemDashboardToolbarFactory = (props) => {
|
|
|
16
16
|
const accessLevel = adaptable.api.entitlementApi.getEntitlementAccessLevelForModule(props.toolbarName);
|
|
17
17
|
const moduleToolbarView = AdaptableViewFactory_1.AdaptableViewPanelFactory.get(props.toolbarName);
|
|
18
18
|
if (!moduleToolbarView) {
|
|
19
|
-
return React.createElement(React.Fragment, null
|
|
19
|
+
return React.createElement(React.Fragment, null);
|
|
20
20
|
}
|
|
21
21
|
const moduleToolbarElement = React.createElement(moduleToolbarView, {
|
|
22
22
|
viewType: 'Toolbar',
|
|
@@ -24,21 +24,20 @@ const DataChangeHistoryViewPanelControl = (props) => {
|
|
|
24
24
|
const handleOpenPopup = React.useCallback(() => {
|
|
25
25
|
adaptable.api.settingsPanelApi.openSettingsPanel('DataChangeHistory');
|
|
26
26
|
}, []);
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}));
|
|
27
|
+
const dataChangeHistoryState = (0, react_redux_1.useSelector)((state) => state.Internal.DataChangeHistory);
|
|
28
|
+
const changeHistoryMode = dataChangeHistoryState.currentMode;
|
|
29
|
+
const activationTime = dataChangeHistoryState.enableTime;
|
|
30
|
+
const suspensionTime = dataChangeHistoryState.suspendTime;
|
|
32
31
|
const enabled = changeHistoryMode === 'ACTIVE';
|
|
33
32
|
const disabled = changeHistoryMode === 'INACTIVE';
|
|
34
33
|
const suspended = changeHistoryMode === 'SUSPENDED';
|
|
35
34
|
const gap = props.gap ?? 'var(--ab-space-1)';
|
|
36
35
|
const buttonsPaddingY = props.buttonsPaddingY ?? 2;
|
|
37
36
|
const buttonPanel = (React.createElement(rebass_1.Flex, { className: "ab-DataChangeHistoryPanel--button-panel", paddingY: buttonsPaddingY, style: { gap: gap } },
|
|
38
|
-
disabled && (React.createElement(ButtonPlay_1.ButtonPlay, { className: "ab-DataChangeHistoryPanel--button-activate", "data-name": 'data-change-history--button-activate', tooltip: '', onClick: () => onChangeHistoryEnable() })),
|
|
39
|
-
suspended && (React.createElement(ButtonPlay_1.ButtonPlay, { className: "ab-DataChangeHistoryPanel--button-resume", "data-name": 'data-change-history--button-resume', tooltip: 'Resume tracking data changes', onClick: () => onChangeHistoryResume() })),
|
|
40
|
-
enabled && (React.createElement(ButtonPause_1.ButtonPause, { className: "ab-DataChangeHistoryPanel--button-suspend", "data-name": 'data-change-history--button-suspend', tooltip: 'Suspend tracking data changes', onClick: () => onChangeHistorySuspend() })),
|
|
41
|
-
(enabled || suspended) && (React.createElement(ButtonStop_1.ButtonStop, { className: "ab-DataChangeHistoryPanel--button-deactivate", "data-name": 'data-change-history--button-deactivate', tooltip: 'Deactivate data change tracking', onClick: () => onChangeHistoryDisable() }))));
|
|
37
|
+
disabled && (React.createElement(ButtonPlay_1.ButtonPlay, { "aria-label": "Enable Data Change History", className: "ab-DataChangeHistoryPanel--button-activate", "data-name": 'data-change-history--button-activate', tooltip: '', onClick: () => onChangeHistoryEnable() })),
|
|
38
|
+
suspended && (React.createElement(ButtonPlay_1.ButtonPlay, { "aria-label": "Resume Data Change History", className: "ab-DataChangeHistoryPanel--button-resume", "data-name": 'data-change-history--button-resume', tooltip: 'Resume tracking data changes', onClick: () => onChangeHistoryResume() })),
|
|
39
|
+
enabled && (React.createElement(ButtonPause_1.ButtonPause, { "aria-label": "Suspend Data Change History", className: "ab-DataChangeHistoryPanel--button-suspend", "data-name": 'data-change-history--button-suspend', tooltip: 'Suspend tracking data changes', onClick: () => onChangeHistorySuspend() })),
|
|
40
|
+
(enabled || suspended) && (React.createElement(ButtonStop_1.ButtonStop, { "aria-label": "Deactivate Data Change History", className: "ab-DataChangeHistoryPanel--button-deactivate", "data-name": 'data-change-history--button-deactivate', tooltip: 'Deactivate data change tracking', onClick: () => onChangeHistoryDisable() }))));
|
|
42
41
|
const dateFormat = `${adaptable.api.optionsApi.getUserInterfaceOptions().dateInputOptions.dateFormat} HH:mm:ss`;
|
|
43
42
|
const statusPanel = (React.createElement(rebass_1.Flex, { className: "ab-DataChangeHistoryPanel--status-panel", alignItems: 'center', style: { gap: gap } },
|
|
44
43
|
enabled && (React.createElement(Tooltip_1.default, { label: !!activationTime && `since ${(0, FormatHelper_1.DateFormatter)(activationTime, { Pattern: dateFormat })}` },
|
|
@@ -118,7 +118,7 @@ const ColumnsSection = (props) => {
|
|
|
118
118
|
React.createElement(Tabs_1.Tabs.Tab, null, "Columns"),
|
|
119
119
|
React.createElement(Tabs_1.Tabs.Content, null,
|
|
120
120
|
React.createElement(InfiniteTable_1.DataSource, { data: props.columnsMap, primaryKey: 'field' },
|
|
121
|
-
React.createElement(InfiniteTable_1.
|
|
121
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnPinning: {
|
|
122
122
|
valid: 'end',
|
|
123
123
|
type: 'end',
|
|
124
124
|
}, columnTypes: {
|
|
@@ -143,7 +143,7 @@ const DataPreview = (props) => {
|
|
|
143
143
|
});
|
|
144
144
|
props.onDataChange(newRowData);
|
|
145
145
|
} },
|
|
146
|
-
React.createElement(InfiniteTable_1.
|
|
146
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnPinning: {
|
|
147
147
|
valid: 'end',
|
|
148
148
|
type: 'end',
|
|
149
149
|
}, columnTypes: {
|
|
@@ -30,7 +30,7 @@ class DataSetViewPanelComponent extends React.Component {
|
|
|
30
30
|
});
|
|
31
31
|
const elementType = this.props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
|
|
32
32
|
return (React.createElement(rebass_1.Flex, { flexDirection: "row", className: `ab-${elementType}__DataSet__wrap` },
|
|
33
|
-
React.createElement(Select_1.Select, { style: { width: '100%' }, placeholder: 'Select Data Set', disabled: ArrayExtensions_1.default.IsNullOrEmpty(availableDataSets), options: availableDataSets, value: currentDataSetName, className: `ab-${elementType}__DataSet__select`, onChange: (destination) => this.onSelectedDataSetChanged(destination) })));
|
|
33
|
+
React.createElement(Select_1.Select, { "aria-label": 'Select Data Set', style: { width: '100%' }, placeholder: 'Select Data Set', disabled: ArrayExtensions_1.default.IsNullOrEmpty(availableDataSets), options: availableDataSets, value: currentDataSetName, className: `ab-${elementType}__DataSet__select`, onChange: (destination) => this.onSelectedDataSetChanged(destination) })));
|
|
34
34
|
}
|
|
35
35
|
onSelectedDataSetChanged(dataSetName) {
|
|
36
36
|
if (StringExtensions_1.StringExtensions.IsNullOrEmpty(dataSetName)) {
|
|
@@ -20,6 +20,6 @@ const ReportFormatSelector = (props) => {
|
|
|
20
20
|
});
|
|
21
21
|
const elementType = props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
|
|
22
22
|
return (react_1.default.createElement(rebass_1.Flex, { "data-name": "report-format-selector", flex: 1, minWidth: 140 },
|
|
23
|
-
react_1.default.createElement(Select_1.Select, { style: { width: '100%' }, size: size, placeholder: GeneralConstants_1.SELECT_REPORT_FORMAT_STRING, disabled: !allFormats.length || reportName == undefined, className: `ab-${elementType}__Export__format-select`, options: formatItems, onChange: (format) => onReportFormatSelected(format), value: reportFormat, isClearable: true })));
|
|
23
|
+
react_1.default.createElement(Select_1.Select, { "aria-label": GeneralConstants_1.SELECT_REPORT_FORMAT_STRING, style: { width: '100%' }, size: size, placeholder: GeneralConstants_1.SELECT_REPORT_FORMAT_STRING, disabled: !allFormats.length || reportName == undefined, className: `ab-${elementType}__Export__format-select`, options: formatItems, onChange: (format) => onReportFormatSelected(format), value: reportFormat, isClearable: true })));
|
|
24
24
|
};
|
|
25
25
|
exports.ReportFormatSelector = ReportFormatSelector;
|
|
@@ -20,6 +20,6 @@ const ReportNameSelector = (props) => {
|
|
|
20
20
|
});
|
|
21
21
|
const elementType = props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
|
|
22
22
|
return (react_1.default.createElement(rebass_1.Flex, { "data-name": "report-name-selector", flex: 1, minWidth: 160 },
|
|
23
|
-
react_1.default.createElement(Select_1.Select, { style: { width: '100%' }, size: size, "data-name": "report-name-selector", placeholder: GeneralConstants_1.SELECT_REPORT_STRING, disabled: !allReportNames.length, className: `ab-${elementType}__Export__report-select`, options: reportItems, onChange: (report) => onReportNameSelected(report), value: reportName, isClearable: true })));
|
|
23
|
+
react_1.default.createElement(Select_1.Select, { "aria-label": GeneralConstants_1.SELECT_REPORT_STRING, style: { width: '100%' }, size: size, "data-name": "report-name-selector", placeholder: GeneralConstants_1.SELECT_REPORT_STRING, disabled: !allReportNames.length, className: `ab-${elementType}__Export__report-select`, options: reportItems, onChange: (report) => onReportNameSelected(report), value: reportName, isClearable: true })));
|
|
24
24
|
};
|
|
25
25
|
exports.ReportNameSelector = ReportNameSelector;
|
|
@@ -33,8 +33,8 @@ class FilterViewPanelComponent extends React.Component {
|
|
|
33
33
|
return (React.createElement(rebass_1.Flex, { flexDirection: "row", className: `ab-${elementType}__Filter__wrap`, flexWrap: this.props.viewType === 'ToolPanel' ? 'wrap' : 'nowrap' },
|
|
34
34
|
React.createElement(rebass_1.Flex, null,
|
|
35
35
|
ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(this.props.ColumnFilters) && (React.createElement(AdaptablePopover_1.AdaptablePopover, { popupPadding: 0, className: `ab-${elementType}__Filter__info`, headerText: "", bodyText: [React.createElement(ActiveFiltersPanel_1.ActiveFiltersPanel, null)], useButton: true, showEvent: 'focus', hideEvent: "blur", popoverMinWidth: 400 })),
|
|
36
|
-
React.createElement(ButtonClear_1.ButtonClear, { className: `ab-${elementType}__Filter__clear`, marginLeft: 1, marginBottom: 0, marginRight: 1, onClick: () => this.onClearFilters(), tooltip: "Clear Filters", disabled: this.props.ColumnFilters.length == 0, showText: this.props.viewType === 'ToolPanel' }, this.props.viewType === 'ToolPanel' && 'Clear'),
|
|
37
|
-
React.createElement(SimpleButton_1.default, { className: (0, join_1.default)(`ab-${elementType}__Filter__suspend-button`, isAtLeastOneFilterActive && `ab-${elementType}__Filter__suspend-all`, !isAtLeastOneFilterActive && `ab-${elementType}__Filter__un-suspend-all`), disabled: !isAtLeastOneFilter, onClick: handleSuspendUnsuspendAll, tone: isAtLeastOneFilterActive ? 'neutral' : 'success', variant: "text", icon: isAtLeastOneFilterActive ? 'pause' : 'play', accessLevel: this.props.accessLevel })),
|
|
36
|
+
React.createElement(ButtonClear_1.ButtonClear, { "aria-label": 'Clear Filters', className: `ab-${elementType}__Filter__clear`, marginLeft: 1, marginBottom: 0, marginRight: 1, onClick: () => this.onClearFilters(), tooltip: "Clear Filters", disabled: this.props.ColumnFilters.length == 0, showText: this.props.viewType === 'ToolPanel' }, this.props.viewType === 'ToolPanel' && 'Clear'),
|
|
37
|
+
React.createElement(SimpleButton_1.default, { "aria-label": isAtLeastOneFilterActive ? 'Suspend All Filters' : 'Resume All Filters', className: (0, join_1.default)(`ab-${elementType}__Filter__suspend-button`, isAtLeastOneFilterActive && `ab-${elementType}__Filter__suspend-all`, !isAtLeastOneFilterActive && `ab-${elementType}__Filter__un-suspend-all`), disabled: !isAtLeastOneFilter, onClick: handleSuspendUnsuspendAll, tone: isAtLeastOneFilterActive ? 'neutral' : 'success', variant: "text", icon: isAtLeastOneFilterActive ? 'pause' : 'play', accessLevel: this.props.accessLevel })),
|
|
38
38
|
React.createElement(rebass_1.Flex, { alignItems: "center" }, this.props.api.filterApi.columnFilterApi.isQuickFilterAvailable() && (React.createElement(CheckBox_1.CheckBox, { className: `ab-${elementType}__Filter__active-check`, disabled: this.props.accessLevel === 'ReadOnly' ||
|
|
39
39
|
this.props.api.layoutApi.isCurrentLayoutPivot(), marginTop: 0, marginBottom: 0, fontSize: 2, padding: 1, checked: this.props.IsQuickFilterVisible, onChange: (checked) => {
|
|
40
40
|
checked ? this.props.onShowQuickFilterBar() : this.props.onHideQuickFilterBar();
|
|
@@ -94,7 +94,7 @@ const QueryViewPanelComponent = (props) => {
|
|
|
94
94
|
columnsDropdown,
|
|
95
95
|
namedQuerySelector,
|
|
96
96
|
' ')) : (React.createElement(React.Fragment, null,
|
|
97
|
-
React.createElement(ButtonPlay_1.ButtonPlay, { onClick: () => runQuery(), tooltip: "Run Grid Filter", accessLevel: gridFilterAccessLevel, variant: "text", tone: "neutral", disabled: disabled || !isExpressionValid || expression == '' || expression == gridFilter, marginRight: 1 }),
|
|
97
|
+
React.createElement(ButtonPlay_1.ButtonPlay, { "aria-label": 'Run Grid Filter', onClick: () => runQuery(), tooltip: "Run Grid Filter", accessLevel: gridFilterAccessLevel, variant: "text", tone: "neutral", disabled: disabled || !isExpressionValid || expression == '' || expression == gridFilter, marginRight: 1 }),
|
|
98
98
|
' ',
|
|
99
99
|
React.createElement(ButtonClear_1.ButtonClear, { onClick: () => clearQuery(), tooltip: "Clear Grid Filter", accessLevel: gridFilterAccessLevel, disabled: expression == '' }),
|
|
100
100
|
' ',
|
|
@@ -44,7 +44,7 @@ const LayoutViewPanelComponent = (props) => {
|
|
|
44
44
|
const layoutSelectStyle = elementType === 'ToolPanel' ? { minWidth: '100%' } : {};
|
|
45
45
|
return (React.createElement(rebass_1.Flex, { flexDirection: "row", className: `ab-${elementType}__Layout__wrap`, flexWrap: viewType === 'ToolPanel' ? 'wrap' : 'nowrap' },
|
|
46
46
|
React.createElement(rebass_1.Flex, { style: layoutSelectStyle, flex: 1 },
|
|
47
|
-
React.createElement(Select_1.Select, { disabled: isErrorLayout, style: { width: '100%' }, options: availableLayoutOptions, className: `ab-${elementType}__Layout__select`, value: layoutEntity ? layoutEntity.Name : null, onChange: (layout) => onSelectLayout(layout) })),
|
|
47
|
+
React.createElement(Select_1.Select, { "aria-label": 'Select Layout', disabled: isErrorLayout, style: { width: '100%' }, options: availableLayoutOptions, className: `ab-${elementType}__Layout__select`, value: layoutEntity ? layoutEntity.Name : null, onChange: (layout) => onSelectLayout(layout) })),
|
|
48
48
|
React.createElement(rebass_1.Flex, { flexDirection: "row", className: (0, join_1.default)(accessLevel === 'ReadOnly' ? GeneralConstants.READ_ONLY_STYLE : '', `ab-${elementType}__Layout__wrap`) },
|
|
49
49
|
React.createElement(ButtonEdit_1.ButtonEdit, { disabled: isErrorLayout, onClick: () => api.layoutApi.showLayoutEditor(layoutEntity.Name), tooltip: GeneralConstants_1.LAYOUT_EDIT_TOOLTIP, className: `ab-${elementType}__Layout__edit`, accessLevel: entityAccessLevel }),
|
|
50
50
|
React.createElement(ButtonClone_1.ButtonClone, { disabled: isErrorLayout, onClick: () => api.layoutApi.showLayoutEditor(layoutEntity.Name, (0, isPivotLayout_1.isPivotLayout)(layoutEntity) ? 'pivot' : 'table', 'Clone'), tooltip: GeneralConstants_1.LAYOUT_CLONE_TOOLTIP, className: `ab-${elementType}__Layout__clone`, tone: "neutral", variant: "text", children: null, accessLevel: cloneAccessLevel }),
|
|
@@ -73,6 +73,6 @@ const PivotDetailsPopoup = (props) => {
|
|
|
73
73
|
};
|
|
74
74
|
}, [props.popupProps]);
|
|
75
75
|
return (React.createElement(InfiniteTable_1.DataSource, { data: data, primaryKey: columnId },
|
|
76
|
-
React.createElement(InfiniteTable_1.
|
|
76
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnTypes: columnTypes, domProps: tableDOMProps, columns: columns })));
|
|
77
77
|
};
|
|
78
78
|
exports.PivotDetailsPopoup = PivotDetailsPopoup;
|
|
@@ -133,7 +133,7 @@ const ColumnsSectionSummary = () => {
|
|
|
133
133
|
},
|
|
134
134
|
};
|
|
135
135
|
return (React.createElement(InfiniteTable_1.DataSource, { data: data, primaryKey: "columnId" },
|
|
136
|
-
React.createElement(InfiniteTable_1.
|
|
136
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnTypes: columnTypes, rowHeight: rowHeight, columnHeaderHeight: headerHeight, domProps: tableDOMProps, columns: columns })));
|
|
137
137
|
};
|
|
138
138
|
exports.ColumnsSectionSummary = ColumnsSectionSummary;
|
|
139
139
|
const ColumnRow = (props) => {
|
|
@@ -91,6 +91,6 @@ const NotePopup = (props) => {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
} },
|
|
94
|
-
React.createElement(InfiniteTable_1.
|
|
94
|
+
React.createElement(InfiniteTable_1.InfiniteTableGrid, { columnTypes: columnTypes, headerOptions: headerOptions, domProps: tableDOMProps, columns: columnsMap }))));
|
|
95
95
|
};
|
|
96
96
|
exports.NotePopup = NotePopup;
|
|
@@ -70,7 +70,7 @@ class SmartEditViewPanelComponent extends React.Component {
|
|
|
70
70
|
const elementType = this.props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
|
|
71
71
|
return (React.createElement(rebass_1.Flex, { flexDirection: "row", className: `ab-${elementType}__SmartEdit__wrap`, flexWrap: this.props.viewType === 'ToolPanel' ? 'wrap' : 'nowrap' },
|
|
72
72
|
React.createElement(rebass_1.Flex, null,
|
|
73
|
-
React.createElement(Select_1.Select, { value: typeof this.props.SmartEditOperation === 'object'
|
|
73
|
+
React.createElement(Select_1.Select, { "aria-label": 'Select Smart Edit Operation', value: typeof this.props.SmartEditOperation === 'object'
|
|
74
74
|
? this.props.SmartEditOperation.name
|
|
75
75
|
: this.props.SmartEditOperation, options: operationMenuItems, onChange: (operation) => this.props.onSmartEditOperationChange(operation), style: { marginRight: 1 } }),
|
|
76
76
|
React.createElement(Input_1.default, { style: {
|
|
@@ -21,7 +21,7 @@ const LoadButton = (props) => {
|
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
23
|
return (React.createElement(SimpleButton_1.default, { ...props, className: "ab-StateManagement__Load-Button" },
|
|
24
|
-
React.createElement("input", { type: "file", onChange: (json) => onLoadInitialState(json), accept: '.json', style: {
|
|
24
|
+
React.createElement("input", { "aria-label": "Load Adaptable State", type: "file", onChange: (json) => onLoadInitialState(json), accept: '.json', style: {
|
|
25
25
|
opacity: 0,
|
|
26
26
|
position: 'absolute',
|
|
27
27
|
cursor: 'pointer',
|
|
@@ -27,7 +27,7 @@ const ThemeSelector = (props) => {
|
|
|
27
27
|
label: theme.Description,
|
|
28
28
|
};
|
|
29
29
|
});
|
|
30
|
-
return (React.createElement(Select_1.Select, { "data-name": "select-theme-dropdown", searchable: false, options: optionThemes, value: currentTheme, disabled: disabled, size: props.size, onChange: (themeName) => {
|
|
30
|
+
return (React.createElement(Select_1.Select, { "aria-label": "Select Theme", "data-name": "select-theme-dropdown", searchable: false, options: optionThemes, value: currentTheme, disabled: disabled, size: props.size, onChange: (themeName) => {
|
|
31
31
|
dispatch(ThemeRedux.ThemeSelect(themeName));
|
|
32
32
|
} }));
|
|
33
33
|
};
|
|
@@ -225,6 +225,16 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
225
225
|
updateRowGroupsExpandedState(layout?: Layout): void;
|
|
226
226
|
isGroupRowNode(rowNode: IRowNode): boolean;
|
|
227
227
|
getFilteredData(): any[];
|
|
228
|
+
/**
|
|
229
|
+
* This method internally differentiates between server-side and client-side row model
|
|
230
|
+
* and correctly calls the appropriate method as per the current row model type
|
|
231
|
+
*/
|
|
232
|
+
private applyAgGridTransaction;
|
|
233
|
+
/**
|
|
234
|
+
* This method internally differentiates between server-side and client-side row model
|
|
235
|
+
* and correctly calls the appropriate method as per the current row model type
|
|
236
|
+
*/
|
|
237
|
+
private applyAgGridTransactionAsync;
|
|
228
238
|
updateRows(dataRows: any[], dataUpdateConfig?: DataUpdateConfig): Promise<IRowNode[]>;
|
|
229
239
|
addRows(dataRows: any[], dataUpdateConfig?: DataUpdateConfig): Promise<IRowNode[]>;
|
|
230
240
|
addOrUpdateRows(dataRows: any[], dataUpdateConfig?: DataUpdateConfig): Promise<{
|
|
@@ -1958,6 +1958,28 @@ You need to define at least one Layout!`);
|
|
|
1958
1958
|
});
|
|
1959
1959
|
return data;
|
|
1960
1960
|
}
|
|
1961
|
+
/**
|
|
1962
|
+
* This method internally differentiates between server-side and client-side row model
|
|
1963
|
+
* and correctly calls the appropriate method as per the current row model type
|
|
1964
|
+
*/
|
|
1965
|
+
applyAgGridTransaction(transaction) {
|
|
1966
|
+
const isServerSideRowModel = this.getAgGridRowModelType() === 'serverSide';
|
|
1967
|
+
const agGridApi = this.agGridAdapter.getAgGridApi();
|
|
1968
|
+
return isServerSideRowModel
|
|
1969
|
+
? agGridApi.applyServerSideTransaction(transaction)
|
|
1970
|
+
: agGridApi.applyTransaction(transaction);
|
|
1971
|
+
}
|
|
1972
|
+
/**
|
|
1973
|
+
* This method internally differentiates between server-side and client-side row model
|
|
1974
|
+
* and correctly calls the appropriate method as per the current row model type
|
|
1975
|
+
*/
|
|
1976
|
+
applyAgGridTransactionAsync(transaction, callback) {
|
|
1977
|
+
const isServerSideRowModel = this.getAgGridRowModelType() === 'serverSide';
|
|
1978
|
+
const agGridApi = this.agGridAdapter.getAgGridApi();
|
|
1979
|
+
return isServerSideRowModel
|
|
1980
|
+
? agGridApi.applyServerSideTransactionAsync(transaction, callback)
|
|
1981
|
+
: agGridApi.applyTransactionAsync(transaction, callback);
|
|
1982
|
+
}
|
|
1961
1983
|
updateRows(dataRows, dataUpdateConfig) {
|
|
1962
1984
|
if (this.hasAutogeneratedPrimaryKey) {
|
|
1963
1985
|
this.addSyntheticPrimaryKeyIfMissing(dataRows);
|
|
@@ -1965,9 +1987,7 @@ You need to define at least one Layout!`);
|
|
|
1965
1987
|
dataUpdateConfig = dataUpdateConfig || {};
|
|
1966
1988
|
if (dataUpdateConfig.runAsync) {
|
|
1967
1989
|
return new Promise((resolve) => {
|
|
1968
|
-
this.
|
|
1969
|
-
.getAgGridApi()
|
|
1970
|
-
.applyTransactionAsync({ update: dataRows }, (transaction) => {
|
|
1990
|
+
this.applyAgGridTransactionAsync({ update: dataRows }, (transaction) => {
|
|
1971
1991
|
if (typeof dataUpdateConfig.callback === 'function') {
|
|
1972
1992
|
dataUpdateConfig.callback(transaction);
|
|
1973
1993
|
}
|
|
@@ -1979,7 +1999,7 @@ You need to define at least one Layout!`);
|
|
|
1979
1999
|
});
|
|
1980
2000
|
}
|
|
1981
2001
|
else {
|
|
1982
|
-
const transaction = this.
|
|
2002
|
+
const transaction = this.applyAgGridTransaction({
|
|
1983
2003
|
update: dataRows,
|
|
1984
2004
|
});
|
|
1985
2005
|
if (dataUpdateConfig.flushAsync) {
|
|
@@ -1999,7 +2019,7 @@ You need to define at least one Layout!`);
|
|
|
1999
2019
|
}
|
|
2000
2020
|
if (dataUpdateConfig.runAsync) {
|
|
2001
2021
|
return new Promise((resolve) => {
|
|
2002
|
-
this.
|
|
2022
|
+
this.applyAgGridTransactionAsync(newData, (transaction) => {
|
|
2003
2023
|
if (typeof dataUpdateConfig.callback === 'function') {
|
|
2004
2024
|
dataUpdateConfig.callback(transaction);
|
|
2005
2025
|
}
|
|
@@ -2012,7 +2032,7 @@ You need to define at least one Layout!`);
|
|
|
2012
2032
|
});
|
|
2013
2033
|
}
|
|
2014
2034
|
else {
|
|
2015
|
-
const transaction = this.
|
|
2035
|
+
const transaction = this.applyAgGridTransaction(newData);
|
|
2016
2036
|
if (dataUpdateConfig.flushAsync) {
|
|
2017
2037
|
this.agGridAdapter.getAgGridApi().flushAsyncTransactions();
|
|
2018
2038
|
}
|
|
@@ -2039,9 +2059,7 @@ You need to define at least one Layout!`);
|
|
|
2039
2059
|
dataUpdateConfig = dataUpdateConfig || {};
|
|
2040
2060
|
if (dataUpdateConfig.runAsync) {
|
|
2041
2061
|
return new Promise((resolve) => {
|
|
2042
|
-
this.
|
|
2043
|
-
.getAgGridApi()
|
|
2044
|
-
.applyTransactionAsync({ update: updateDataRows, add: addDataRows, addIndex: dataUpdateConfig.addIndex }, (transaction) => {
|
|
2062
|
+
this.applyAgGridTransactionAsync({ update: updateDataRows, add: addDataRows, addIndex: dataUpdateConfig.addIndex }, (transaction) => {
|
|
2045
2063
|
if (typeof dataUpdateConfig.callback === 'function') {
|
|
2046
2064
|
dataUpdateConfig.callback(transaction);
|
|
2047
2065
|
}
|
|
@@ -2059,7 +2077,7 @@ You need to define at least one Layout!`);
|
|
|
2059
2077
|
});
|
|
2060
2078
|
}
|
|
2061
2079
|
else {
|
|
2062
|
-
const transaction = this.
|
|
2080
|
+
const transaction = this.applyAgGridTransaction({
|
|
2063
2081
|
update: updateDataRows,
|
|
2064
2082
|
add: addDataRows,
|
|
2065
2083
|
addIndex: dataUpdateConfig.addIndex,
|
|
@@ -2080,9 +2098,7 @@ You need to define at least one Layout!`);
|
|
|
2080
2098
|
dataUpdateConfig = dataUpdateConfig || {};
|
|
2081
2099
|
if (dataUpdateConfig.runAsync) {
|
|
2082
2100
|
return new Promise((resolve) => {
|
|
2083
|
-
this.
|
|
2084
|
-
.getAgGridApi()
|
|
2085
|
-
.applyTransactionAsync({ remove: dataRows }, (transaction) => {
|
|
2101
|
+
this.applyAgGridTransactionAsync({ remove: dataRows }, (transaction) => {
|
|
2086
2102
|
if (typeof dataUpdateConfig.callback === 'function') {
|
|
2087
2103
|
dataUpdateConfig.callback(transaction);
|
|
2088
2104
|
}
|
|
@@ -2094,7 +2110,7 @@ You need to define at least one Layout!`);
|
|
|
2094
2110
|
});
|
|
2095
2111
|
}
|
|
2096
2112
|
else {
|
|
2097
|
-
const transaction = this.
|
|
2113
|
+
const transaction = this.applyAgGridTransaction({
|
|
2098
2114
|
remove: dataRows,
|
|
2099
2115
|
});
|
|
2100
2116
|
if (dataUpdateConfig.flushAsync) {
|
|
@@ -3176,7 +3192,14 @@ You need to define at least one Layout!`);
|
|
|
3176
3192
|
});
|
|
3177
3193
|
this.refreshCellsBasedOnCellDataChange(rowNode, cellDataChangedInfos);
|
|
3178
3194
|
this.refreshColumnsBasedOnCellDataChange(cellDataChangedInfos);
|
|
3179
|
-
|
|
3195
|
+
const colIds = cellDataChangedInfos.map((c) => c.column.columnId);
|
|
3196
|
+
const { columnFilterApi, gridFilterApi } = this.api.filterApi;
|
|
3197
|
+
const isGridFilterActive = !!gridFilterApi.getCurrentGridFilterExpression();
|
|
3198
|
+
const isColumnFilterActive = colIds.some((colId) => columnFilterApi.isColumnFilterActiveForColumn(colId));
|
|
3199
|
+
const shouldFilter = isGridFilterActive || isColumnFilterActive;
|
|
3200
|
+
if (shouldFilter) {
|
|
3201
|
+
this.filterOnDataChange();
|
|
3202
|
+
}
|
|
3180
3203
|
}
|
|
3181
3204
|
refreshCellsBasedOnCellDataChange(rowNode, cellDataChangedInfos) {
|
|
3182
3205
|
// Check if node is visible as otherwise AG Grid wont refresh
|
|
@@ -11,8 +11,8 @@ function DashboardToolbar(props) {
|
|
|
11
11
|
React.createElement("div", { className: "ab-Dashboard__toolbar-content" }, props.children),
|
|
12
12
|
React.createElement(rebass_1.Flex, { className: "ab-Dashboard__toolbar-title", flexDirection: "row", alignItems: "center" },
|
|
13
13
|
React.createElement("span", null, props.title),
|
|
14
|
-
props.showConfigure && (React.createElement(SimpleButton_1.default, { icon: "spanner", variant: "text", tone: "none", "data-name": "configure", iconSize: 16, marginLeft: 1, tooltip: props.tooltip || `Configure ${props.title}`, onClick: () => props.onConfigure() })),
|
|
14
|
+
props.showConfigure && (React.createElement(SimpleButton_1.default, { "aria-label": `Configure ${props.title}`, icon: "spanner", variant: "text", tone: "none", "data-name": "configure", iconSize: 16, marginLeft: 1, tooltip: props.tooltip || `Configure ${props.title}`, onClick: () => props.onConfigure() })),
|
|
15
15
|
' ',
|
|
16
|
-
props.showClose && (React.createElement(SimpleButton_1.default, { style: { alignSelf: 'flex-end' }, disabled: props.accessLevel == 'ReadOnly', "data-name": "close", icon: "close", variant: "text", tone: "none", iconSize: 16, marginLeft: 1, tooltip: props.tooltip || `Close ${props.title} Toolbar`, onClick: () => props.onClose() })))));
|
|
16
|
+
props.showClose && (React.createElement(SimpleButton_1.default, { "aria-label": `Close ${props.title}`, style: { alignSelf: 'flex-end' }, disabled: props.accessLevel == 'ReadOnly', "data-name": "close", icon: "close", variant: "text", tone: "none", iconSize: 16, marginLeft: 1, tooltip: props.tooltip || `Close ${props.title} Toolbar`, onClick: () => props.onClose() })))));
|
|
17
17
|
}
|
|
18
18
|
exports.DashboardToolbar = DashboardToolbar;
|
|
@@ -38,7 +38,7 @@ const IconComponent = (props) => {
|
|
|
38
38
|
};
|
|
39
39
|
}, [icon]);
|
|
40
40
|
if ((0, exports.isAdaptableSystemIcon)(icon) && icon.name in icons_1.allIcons) {
|
|
41
|
-
return (React.createElement(icons_1.Icon, { name: icon.name, size: icon.size, style: icon.style, className: className }));
|
|
41
|
+
return (React.createElement(icons_1.Icon, { "aria-hidden": "true", name: icon.name, size: icon.size, style: icon.style, className: className }));
|
|
42
42
|
}
|
|
43
43
|
if ((0, exports.isAdaptableCustomIcon)(icon)) {
|
|
44
44
|
let width = icon.style?.width ?? 'var(--ab-cmp-icon__width)';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InfiniteTableProps } from '@infinite-table/infinite-react';
|
|
2
2
|
export * from '@infinite-table/infinite-react';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
declare function
|
|
5
|
-
export {
|
|
4
|
+
declare function InfiniteTableGrid<T = any>(props: InfiniteTableProps<T>): React.JSX.Element;
|
|
5
|
+
export { InfiniteTableGrid };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.InfiniteTableGrid = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const infinite_react_1 = require("@infinite-table/infinite-react");
|
|
6
6
|
tslib_1.__exportStar(require("@infinite-table/infinite-react"), exports);
|
|
7
7
|
const EnvVars_1 = require("../../EnvVars");
|
|
8
8
|
const React = tslib_1.__importStar(require("react"));
|
|
9
|
-
function
|
|
9
|
+
function InfiniteTableGrid(props) {
|
|
10
10
|
return (React.createElement(infinite_react_1.InfiniteTable, { sortable: false, rowHeight: '--ab-grid-row-height', draggableColumns: false, keyboardNavigation: false, ...props, licenseKey: EnvVars_1.INFINITE_TABLE_LICENSE_KEY }));
|
|
11
11
|
}
|
|
12
|
-
exports.
|
|
12
|
+
exports.InfiniteTableGrid = InfiniteTableGrid;
|
|
13
13
|
infinite_react_1.InfiniteTable.licenseKey = EnvVars_1.INFINITE_TABLE_LICENSE_KEY;
|