@adaptabletools/adaptable 12.0.0-canary.0 → 12.0.0-canary.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base.css +561 -283
- package/bundle.cjs.js +162 -148
- package/index.css +631 -280
- package/package.json +3 -3
- package/publishTimestamp.d.ts +1 -1
- package/publishTimestamp.js +1 -1
- package/src/AdaptableInterfaces/AdaptableNoCodeWizard.d.ts +1 -0
- package/src/AdaptableOptions/AlertOptions.d.ts +5 -9
- package/src/AdaptableOptions/DashboardOptions.d.ts +1 -5
- package/src/AdaptableOptions/DataChangeHistoryOptions.d.ts +2 -2
- package/src/AdaptableOptions/EditOptions.d.ts +26 -8
- package/src/AdaptableOptions/ExportOptions.d.ts +4 -7
- package/src/AdaptableOptions/GeneralOptions.d.ts +12 -2
- package/src/AdaptableOptions/ToolPanelOptions.d.ts +1 -5
- package/src/AdaptableOptions/UserInterfaceOptions.d.ts +21 -3
- package/src/Api/AlertApi.d.ts +3 -3
- package/src/Api/ColumnApi.d.ts +7 -2
- package/src/Api/EventApi.d.ts +11 -0
- package/src/Api/Events/RowFormSubmitted.d.ts +15 -0
- package/src/Api/Events/SearchChanged.d.ts +1 -1
- package/src/Api/ExportApi.d.ts +2 -2
- package/src/Api/FilterApi.d.ts +69 -1
- package/src/Api/Implementation/AlertApiImpl.d.ts +3 -3
- package/src/Api/Implementation/ColumnApiImpl.d.ts +2 -2
- package/src/Api/Implementation/ColumnApiImpl.js +15 -14
- package/src/Api/Implementation/ConfigApiImpl.js +1 -1
- package/src/Api/Implementation/ExportApiImpl.d.ts +2 -2
- package/src/Api/Implementation/FilterApiImpl.d.ts +16 -1
- package/src/Api/Implementation/FilterApiImpl.js +141 -0
- package/src/Api/Implementation/FormatColumnApiImpl.js +2 -2
- package/src/Api/Implementation/GridApiImpl.js +7 -3
- package/src/Api/Implementation/InternalApiImpl.d.ts +3 -3
- package/src/Api/Implementation/LayoutApiImpl.d.ts +1 -15
- package/src/Api/Implementation/LayoutApiImpl.js +0 -152
- package/src/Api/Implementation/PredicateApiImpl.d.ts +2 -0
- package/src/Api/Implementation/PredicateApiImpl.js +18 -0
- package/src/Api/LayoutApi.d.ts +1 -72
- package/src/Api/PredicateApi.d.ts +7 -0
- package/src/PredefinedConfig/AlertState.d.ts +4 -4
- package/src/PredefinedConfig/Common/AdaptableColumn.d.ts +1 -1
- package/src/PredefinedConfig/Common/FormContext.d.ts +11 -0
- package/src/PredefinedConfig/Common/FormContext.js +2 -0
- package/src/Redux/ActionsReducers/LayoutRedux.js +0 -1
- package/src/Redux/ActionsReducers/PopupRedux.d.ts +3 -2
- package/src/Redux/Store/AdaptableStore.js +6 -0
- package/src/Strategy/AdaptableModuleBase.js +1 -2
- package/src/Strategy/BulkUpdateModule.js +3 -4
- package/src/Strategy/CellSummaryModule.js +1 -2
- package/src/Strategy/FilterModule.js +15 -18
- package/src/Strategy/LayoutModule.js +1 -0
- package/src/Strategy/PlusMinusModule.js +1 -4
- package/src/Strategy/SmartEditModule.js +2 -2
- package/src/Utilities/Constants/GeneralConstants.d.ts +2 -0
- package/src/Utilities/Constants/GeneralConstants.js +3 -1
- package/src/Utilities/Defaults/DefaultAdaptableOptions.js +2 -0
- package/src/Utilities/Services/CalculatedColumnExpressionService.js +6 -7
- package/src/Utilities/Services/RowEditService.d.ts +1 -0
- package/src/Utilities/Services/RowEditService.js +34 -2
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.d.ts +8 -3
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +3 -2
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationForm.js +9 -2
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.d.ts +30 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +87 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizardColumnsStep.d.ts +18 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizardColumnsStep.js +16 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/index.d.ts +2 -9
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/index.js +2 -75
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/useSelection.d.ts +3 -1
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/useSelection.js +9 -4
- package/src/View/AdaptableWizardView/Utils.d.ts +1 -0
- package/src/View/AdaptableWizardView/Utils.js +24 -0
- package/src/View/AdaptableWizardView/Wizard.d.ts +54 -0
- package/src/View/AdaptableWizardView/Wizard.js +98 -0
- package/src/View/AdaptableWizardView/index.d.ts +1 -22
- package/src/View/AdaptableWizardView/index.js +2 -103
- package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +1 -1
- package/src/View/Alert/Wizard/AlertButtonsEditor.d.ts +3 -3
- package/src/View/Alert/Wizard/AlertDisplayWizardSection.js +2 -2
- package/src/View/Alert/Wizard/BaseAlertRulesWizardSection.js +1 -1
- package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +2 -2
- package/src/View/BulkUpdate/BulkUpdatePopup.js +2 -3
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +3 -4
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +5 -6
- package/src/View/CellSummary/CellSummaryDetails.js +2 -2
- package/src/View/Components/FilterForm/FilterForm.js +1 -1
- package/src/View/Components/FilterForm/QuickFilterForm.js +1 -1
- package/src/View/Components/PreviewResultsPanel.js +3 -3
- package/src/View/Components/WizardSummaryPage.js +2 -2
- package/src/View/ConditionalStyle/Wizard/ConditionalStyleRuleWizardSection.js +1 -1
- package/src/View/ConditionalStyle/Wizard/ConditionalStyleScopeWizardSection.js +1 -1
- package/src/View/ConditionalStyle/Wizard/ConditionalStyleSettingsWizardSettings.js +1 -1
- package/src/View/ConditionalStyle/Wizard/ConditionalStyleStyleWizardSection.js +1 -1
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +2 -2
- package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +1 -1
- package/src/View/DataChangeHistory/buildActionColumnButton.d.ts +2 -2
- package/src/View/Export/Wizard/ReportColumnsWizardSection.js +1 -1
- package/src/View/Export/Wizard/ReportNameWizardSection.js +1 -1
- package/src/View/Export/Wizard/ReportRowsWizardSection.js +1 -1
- package/src/View/Filter/ActiveFiltersPanel.js +1 -1
- package/src/View/Filter/FilterSummary.js +1 -1
- package/src/View/Filter/FilterViewPanel.js +2 -2
- package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +2 -2
- package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +1 -1
- package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +1 -1
- package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +1 -1
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +5 -6
- package/src/View/GridInfo/ColumnInfoComponent.js +1 -1
- package/src/View/GridInfo/GridInfoPopup.js +1 -1
- package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.js +2 -2
- package/src/View/PlusMinus/Wizard/PlusMinusScopeWizardSection.js +1 -1
- package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +2 -2
- package/src/View/Query/Wizard/NamedQueryExpressionWizardSection.js +1 -1
- package/src/View/Query/Wizard/NamedQuerySettingsWizardSection.js +1 -1
- package/src/View/Schedule/Wizard/ScheduleScheduleSummary.js +1 -1
- package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +1 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary.js +1 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsWizard.js +1 -1
- package/src/View/Shortcut/Wizard/ShortcutScopeWizardSection.js +1 -1
- package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +2 -2
- package/src/View/UIHelper.js +6 -6
- package/src/View/Wizard/Interface/IAdaptableWizard.d.ts +2 -2
- package/src/View/Wizard/ObjectTagsWizardSection.js +1 -1
- package/src/View/Wizard/OnePageAdaptableWizard.d.ts +5 -6
- package/src/View/Wizard/OnePageAdaptableWizard.js +35 -169
- package/src/View/Wizard/OnePageWizards.d.ts +37 -0
- package/src/View/Wizard/OnePageWizards.js +187 -0
- package/src/View/Wizard/useKeyboardNavigation.d.ts +1 -1
- package/src/agGrid/Adaptable.js +25 -11
- package/src/agGrid/FilterWrapper.js +2 -2
- package/src/agGrid/agGridHelper.d.ts +2 -3
- package/src/agGrid/agGridHelper.js +37 -33
- package/src/agGrid/rowEditIcons.d.ts +1 -0
- package/src/agGrid/rowEditIcons.js +2 -1
- package/src/components/Datepicker/Caption.js +1 -1
- package/src/components/InfiniteTable/index.js +1 -0
- package/src/components/List/GridList/index.js +1 -1
- package/src/components/WindowModal/WindowModal.js +13 -7
- package/src/components/icons/add-row.d.ts +3 -0
- package/src/components/icons/add-row.js +7 -0
- package/src/components/icons/index.js +2 -0
- package/src/metamodel/adaptable.metamodel.d.ts +106 -22
- package/src/metamodel/adaptable.metamodel.js +238 -121
- package/src/types.d.ts +5 -4
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OnePageWizardSummary = exports.OnePageAdaptableWizard = exports.
|
|
3
|
+
exports.OnePageWizardSummary = exports.OnePageAdaptableWizard = exports.useOnePageAdaptableWizardContext = exports.OnePageAdaptableWizardContext = exports.FormDescriptionText = exports.SummaryText = exports.SummaryTag = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
6
|
const react_1 = require("react");
|
|
7
7
|
const react_redux_1 = require("react-redux");
|
|
8
8
|
const rebass_1 = require("rebass");
|
|
9
9
|
const QueryRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/QueryRedux"));
|
|
10
|
-
const Dialog_1 = tslib_1.__importDefault(require("../../components/Dialog"));
|
|
11
10
|
const SimpleButton_1 = tslib_1.__importDefault(require("../../components/SimpleButton"));
|
|
12
|
-
const kebabCase_1 = tslib_1.__importDefault(require("lodash/kebabCase"));
|
|
13
|
-
const useProperty_1 = tslib_1.__importDefault(require("../../components/utils/useProperty"));
|
|
14
11
|
const AdaptableContext_1 = require("../AdaptableContext");
|
|
15
|
-
const isMacLike_1 = require("../../Utilities/isMacLike");
|
|
16
12
|
const Tabs_1 = require("../../components/Tabs");
|
|
17
|
-
const KeyHint_1 = require("../KeyHint");
|
|
18
|
-
const icons_1 = require("../../components/icons");
|
|
19
|
-
const ResizeObserver_1 = require("../../components/ResizeObserver");
|
|
20
13
|
const NamedQueryContext_1 = require("../../components/ExpressionEditor/NamedQueryContext");
|
|
21
|
-
const
|
|
14
|
+
const OnePageWizards_1 = require("./OnePageWizards");
|
|
15
|
+
const kebabCase_1 = tslib_1.__importDefault(require("lodash/kebabCase"));
|
|
22
16
|
exports.SummaryTag = (props) => React.createElement(rebass_1.Text, Object.assign({}, props));
|
|
23
17
|
exports.SummaryText = (props) => (React.createElement(rebass_1.Text, Object.assign({ fontSize: 2, mb: 3 }, props)));
|
|
24
18
|
exports.FormDescriptionText = (props) => (React.createElement(rebass_1.Text, Object.assign({ fontSize: 2, mt: 1 }, props)));
|
|
@@ -26,187 +20,59 @@ exports.OnePageAdaptableWizardContext = React.createContext({
|
|
|
26
20
|
data: null,
|
|
27
21
|
sections: [],
|
|
28
22
|
moduleInfo: null,
|
|
29
|
-
setCurrentSection: (index) => { },
|
|
30
23
|
api: null,
|
|
31
24
|
namedQuery: false,
|
|
32
25
|
});
|
|
33
|
-
function
|
|
26
|
+
function useOnePageAdaptableWizardContext() {
|
|
34
27
|
return React.useContext(exports.OnePageAdaptableWizardContext);
|
|
35
28
|
}
|
|
36
|
-
exports.
|
|
29
|
+
exports.useOnePageAdaptableWizardContext = useOnePageAdaptableWizardContext;
|
|
37
30
|
exports.OnePageAdaptableWizard = (props) => {
|
|
38
|
-
var _a, _b;
|
|
39
31
|
const { api } = AdaptableContext_1.useAdaptable();
|
|
40
32
|
const dispatch = react_redux_1.useDispatch();
|
|
41
33
|
const saveNamedQuery = React.useCallback((namedQuery) => dispatch(QueryRedux.NamedQueryAdd(namedQuery)), []);
|
|
42
|
-
let defaultCurrentIndex = 0;
|
|
43
|
-
if (props.defaultCurrentSectionName) {
|
|
44
|
-
const candidate = props.sections.findIndex((section) => section !== '-' && section.title === props.defaultCurrentSectionName);
|
|
45
|
-
if (candidate >= 0) {
|
|
46
|
-
defaultCurrentIndex = candidate;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
const [currentSection, setCurrentSection] = useProperty_1.default(props, 'currentIndex', defaultCurrentIndex, {
|
|
50
|
-
onChange: (index) => {
|
|
51
|
-
var _a;
|
|
52
|
-
(_a = props.onSectionChange) === null || _a === void 0 ? void 0 : _a.call(props, index);
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
34
|
const [namedQuery, setNamedQuery] = react_1.useState(false);
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
saveNamedQuery(namedQuery);
|
|
61
|
-
}
|
|
62
|
-
(_a = props.onFinish) === null || _a === void 0 ? void 0 : _a.call(props, props.data);
|
|
63
|
-
};
|
|
64
|
-
const renderSection = (index) => {
|
|
65
|
-
const section = visibleSections[index];
|
|
66
|
-
if (section === '-') {
|
|
67
|
-
return React.createElement(React.Fragment, { key: index });
|
|
68
|
-
}
|
|
69
|
-
return (React.createElement(rebass_1.Flex, { flexDirection: "column", key: index, "data-name": `section-${index}`, style: { minHeight: '100%' }, mr: 2 },
|
|
70
|
-
React.createElement(rebass_1.Box, { py: 3, paddingLeft: 2, fontSize: 4, className: "ab-OnePageWizard__details" }, section.details),
|
|
71
|
-
React.createElement(rebass_1.Box, { flex: 1, className: "ab-OnePageWizard__section" }, section.render(props.data, index))));
|
|
72
|
-
};
|
|
73
|
-
const selectedNodeRef = react_1.useRef(null);
|
|
74
|
-
const selectedFeedback = (React.createElement("div", { ref: selectedNodeRef, className: "ab-OnePageWizard__selected-title-overlay", style: {
|
|
75
|
-
position: 'absolute',
|
|
76
|
-
background: 'var(--ab-cmp-one-page-wizard-selected-title__background)',
|
|
77
|
-
pointerEvents: 'none',
|
|
78
|
-
borderRadius: 'var(--ab__border-radius)',
|
|
79
|
-
transition: 'top 0.2s',
|
|
80
|
-
} }));
|
|
81
|
-
const sizeOwnerRef = react_1.useRef(null);
|
|
82
|
-
const [width, setWidth] = react_1.useState(0);
|
|
83
|
-
ResizeObserver_1.useResizeObserver(sizeOwnerRef, ({ width }) => {
|
|
84
|
-
setWidth(width);
|
|
85
|
-
});
|
|
86
|
-
React.useEffect(() => {
|
|
87
|
-
const node = selectedNodeRef.current;
|
|
88
|
-
const parent = node.parentNode;
|
|
89
|
-
const activeElement = parent.children[currentSection];
|
|
90
|
-
node.style.top = `${activeElement.offsetTop}px`;
|
|
91
|
-
node.style.left = `${activeElement.offsetLeft}px`;
|
|
92
|
-
node.style.height = `${activeElement.offsetHeight}px`;
|
|
93
|
-
node.style.width = `${activeElement.offsetWidth}px`;
|
|
94
|
-
}, [currentSection, width]);
|
|
95
|
-
let navIndex = 0;
|
|
96
|
-
const dialogRef = react_1.useRef(null);
|
|
97
|
-
let invalidCount = 0;
|
|
98
|
-
let firstErrorMessage = null;
|
|
99
|
-
const contextValue = {
|
|
35
|
+
const name = props.moduleInfo.FriendlyName
|
|
36
|
+
? `${kebabCase_1.default(props.moduleInfo.FriendlyName)}-wizard`
|
|
37
|
+
: '';
|
|
38
|
+
const extraContext = {
|
|
100
39
|
data: props.data,
|
|
101
40
|
api,
|
|
102
|
-
//visible sections is updated below, as this is a chicken-egg problem
|
|
103
|
-
sections: props.sections,
|
|
104
|
-
setCurrentSection,
|
|
105
41
|
namedQuery,
|
|
106
42
|
moduleInfo: props.moduleInfo,
|
|
43
|
+
sections: props.sections,
|
|
107
44
|
};
|
|
108
|
-
const
|
|
109
|
-
return props.sections.filter((section) => section === '-' ||
|
|
110
|
-
section.isVisible == undefined ||
|
|
111
|
-
section.isVisible(props.data, api, contextValue));
|
|
112
|
-
}, [props.sections]);
|
|
113
|
-
contextValue.sections = visibleSections;
|
|
114
|
-
const validSectionsMap = visibleSections.reduce((acc, section, index) => {
|
|
45
|
+
const sections = props.sections.map((section) => {
|
|
115
46
|
if (section === '-') {
|
|
116
|
-
|
|
117
|
-
return acc;
|
|
47
|
+
return '-';
|
|
118
48
|
}
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
49
|
+
const isValid = typeof section.isValid === 'function'
|
|
50
|
+
? (data, innerContext) => {
|
|
51
|
+
return section.isValid(data, api, Object.assign(Object.assign({}, innerContext), extraContext));
|
|
52
|
+
}
|
|
53
|
+
: void 0;
|
|
54
|
+
const isVisible = typeof section.isVisible === 'function'
|
|
55
|
+
? (data, innerContext) => {
|
|
56
|
+
return section.isVisible(data, api, Object.assign(Object.assign({}, innerContext), extraContext));
|
|
124
57
|
}
|
|
58
|
+
: void 0;
|
|
59
|
+
return Object.assign(Object.assign({}, section), { isValid,
|
|
60
|
+
isVisible });
|
|
61
|
+
});
|
|
62
|
+
const handleClickFinish = () => {
|
|
63
|
+
var _a;
|
|
64
|
+
if (namedQuery && namedQuery.Name) {
|
|
65
|
+
saveNamedQuery(namedQuery);
|
|
125
66
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return (React.createElement(NamedQueryContext_1.NamedQueryContext.Provider, { value: { namedQuery, setNamedQuery } },
|
|
132
|
-
React.createElement(exports.OnePageAdaptableWizardContext.Provider, { value: contextValue },
|
|
133
|
-
React.createElement(Dialog_1.default, { modal: true, isOpen: true, showCloseButton: false, focusOnBrowserVisible: true, style: {
|
|
134
|
-
borderRadius: 'var(--ab__border-radius)',
|
|
135
|
-
overflow: 'hidden',
|
|
136
|
-
height: '80vh',
|
|
137
|
-
}, ref: dialogRef, onDismiss: () => { var _a; return (_a = props.onHide) === null || _a === void 0 ? void 0 : _a.call(props); }, onKeyDown: (event) => {
|
|
138
|
-
if (event.metaKey || event.ctrlKey) {
|
|
139
|
-
const { key } = event;
|
|
140
|
-
if (!isNaN(Number(key))) {
|
|
141
|
-
const num = Number(key);
|
|
142
|
-
if (navIndexMap.has(num)) {
|
|
143
|
-
const index = navIndexMap.get(num);
|
|
144
|
-
setCurrentSection(index);
|
|
145
|
-
event.preventDefault();
|
|
146
|
-
event.stopPropagation();
|
|
147
|
-
requestAnimationFrame(() => {
|
|
148
|
-
var _a;
|
|
149
|
-
(_a = dialogRef === null || dialogRef === void 0 ? void 0 : dialogRef.current) === null || _a === void 0 ? void 0 : _a.bringToFront();
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
} },
|
|
155
|
-
React.createElement(rebass_1.Flex, { className: "ab-OnePageWizard", flexDirection: "column", "data-name": props.moduleInfo.FriendlyName
|
|
156
|
-
? `${kebabCase_1.default(props.moduleInfo.FriendlyName)}-wizard`
|
|
157
|
-
: '', style: Object.assign({ height: '100%', width: '90vw', maxWidth: 1000 }, props.style) },
|
|
158
|
-
React.createElement(rebass_1.Flex, { flexDirection: "row", alignItems: "stretch", flex: 1, style: { overflow: 'auto' } },
|
|
159
|
-
React.createElement(rebass_1.Flex, { flexDirection: "column", padding: 3, className: "ab-OnePageWizard__section-title-container", ref: sizeOwnerRef, style: { overflow: 'auto', position: 'relative', flex: 'none' } },
|
|
160
|
-
visibleSections.map((section, index) => {
|
|
161
|
-
if (section === '-') {
|
|
162
|
-
return (React.createElement(rebass_1.Box, { as: "hr", mt: 2, className: "ab-OnePageWizard__section-separator", key: `${index}-`, style: {
|
|
163
|
-
width: '100%',
|
|
164
|
-
border: 'none',
|
|
165
|
-
borderTop: `1px solid var(--ab-color-inputborder)`,
|
|
166
|
-
} }));
|
|
167
|
-
}
|
|
168
|
-
navIndex++;
|
|
169
|
-
navIndexMap.set(navIndex, index);
|
|
170
|
-
const active = index === currentSection;
|
|
171
|
-
const disabled = false; //!active && !currentSectionValid;
|
|
172
|
-
return (React.createElement(rebass_1.Flex, { className: "ab-OnePageWizard__section-title", "data-name": section.title, flexDirection: "row", style: {
|
|
173
|
-
cursor: disabled ? 'auto' : 'pointer',
|
|
174
|
-
zIndex: 10,
|
|
175
|
-
transition: 'color 0.2s',
|
|
176
|
-
opacity: disabled ? 0.5 : 1,
|
|
177
|
-
}, key: section.title, color: active ? 'var(--ab-cmp-one-page-wizard-section-title__color)' : '', px: 2, py: 1, mt: index ? 2 : 0, onClick: () => {
|
|
178
|
-
if (disabled) {
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
setCurrentSection(index);
|
|
182
|
-
} },
|
|
183
|
-
React.createElement(KeyHint_1.KeyHint, { mr: 2, style: { display: 'inline-block' } }, navIndex),
|
|
184
|
-
React.createElement("div", { style: { flex: 1 } }, section.title),
|
|
185
|
-
React.createElement(icons_1.Icon, { name: "error", style: {
|
|
186
|
-
marginLeft: 'var(--ab-space-2)',
|
|
187
|
-
visibility: validSectionsMap.get(index) !== true ? 'visible' : 'hidden',
|
|
188
|
-
} })));
|
|
189
|
-
}),
|
|
190
|
-
selectedFeedback,
|
|
191
|
-
React.createElement(rebass_1.Box, { flex: 1 }),
|
|
192
|
-
React.createElement(KeyHint_1.KeyHint, { style: { lineHeight: 1.5 }, className: "ab-OnePageWizard__key-hint" },
|
|
193
|
-
isMacLike_1.isMacLike() ? 'Cmd' : 'Ctrl',
|
|
194
|
-
" + #",
|
|
195
|
-
React.createElement("br", null),
|
|
196
|
-
"to navigate")),
|
|
197
|
-
React.createElement(rebass_1.Flex, { flex: 1, flexDirection: "column", className: "ab-OnePageWizard__section-container" }, renderSection(currentSection))),
|
|
198
|
-
React.createElement(rebass_1.Flex, { flexDirection: "row", padding: 2, alignItems: "center", className: "ab-WizardDialog__footer ab-OnePageWizard__footer" },
|
|
199
|
-
React.createElement(SimpleButton_1.default, { tone: "neutral", variant: "text", "data-name": "close", onClick: () => { var _a; return (_a = props.onHide) === null || _a === void 0 ? void 0 : _a.call(props); }, tooltip: (_a = props.closeTooltip) !== null && _a !== void 0 ? _a : 'Close wizard', accessLevel: 'Full' }, (_b = props.closeText) !== null && _b !== void 0 ? _b : 'CLOSE'),
|
|
200
|
-
React.createElement(KeyHint_1.KeyHint, { ml: 2 }, "Esc"),
|
|
201
|
-
React.createElement(rebass_1.Text, { fontSize: 2, mr: 3, className: "ab-OnePageWizard__error", style: {
|
|
202
|
-
flex: 1,
|
|
203
|
-
color: 'var(--ab-color-error)',
|
|
204
|
-
textAlign: 'end',
|
|
205
|
-
} }, firstErrorMessage),
|
|
206
|
-
React.createElement(SimpleButton_1.default, { tone: "accent", "data-name": "finish", variant: "raised", disabled: canFinish !== true, onClick: () => handleClickFinish(), icon: 'check', accessLevel: 'Full' }, "Finish")))))));
|
|
67
|
+
(_a = props.onFinish) === null || _a === void 0 ? void 0 : _a.call(props, props.data);
|
|
68
|
+
};
|
|
69
|
+
return (React.createElement(exports.OnePageAdaptableWizardContext.Provider, { value: extraContext },
|
|
70
|
+
React.createElement(NamedQueryContext_1.NamedQueryContext.Provider, { value: { namedQuery, setNamedQuery } },
|
|
71
|
+
React.createElement(OnePageWizards_1.OnePageWizard, Object.assign({}, props, { name: name, sections: sections, onFinish: handleClickFinish })))));
|
|
207
72
|
};
|
|
208
73
|
exports.OnePageWizardSummary = () => {
|
|
209
|
-
const {
|
|
74
|
+
const { setCurrentSection } = OnePageWizards_1.useOnePageWizardContext();
|
|
75
|
+
const { sections, data, api } = useOnePageAdaptableWizardContext();
|
|
210
76
|
const renderEdit = (index) => (React.createElement(SimpleButton_1.default, { px: 1, variant: "text", style: {
|
|
211
77
|
textDecoration: 'underline',
|
|
212
78
|
display: 'inline-block',
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { CSSProperties } from 'react';
|
|
3
|
+
import { TextProps } from 'rebass';
|
|
4
|
+
export declare type OnePageWizardContextType<T> = {
|
|
5
|
+
data: T;
|
|
6
|
+
sections: (OnePageWizardSection<T> | '-')[];
|
|
7
|
+
setCurrentSection: (index: number) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const SummaryTag: React.FunctionComponent<TextProps>;
|
|
10
|
+
export declare const SummaryText: React.FunctionComponent<TextProps>;
|
|
11
|
+
export declare const FormDescriptionText: React.FunctionComponent<TextProps>;
|
|
12
|
+
export declare const OnePageWizardContext: React.Context<OnePageWizardContextType<any>>;
|
|
13
|
+
export declare function useOnePageWizardContext<ENTITY>(): OnePageWizardContextType<ENTITY>;
|
|
14
|
+
export declare type OnePageWizardSection<ENTITY> = {
|
|
15
|
+
title: string;
|
|
16
|
+
details?: React.ReactNode;
|
|
17
|
+
isValid?: (data: ENTITY, context: OnePageWizardContextType<ENTITY>) => true | string;
|
|
18
|
+
isVisible?: (data: ENTITY, context: OnePageWizardContextType<ENTITY>) => boolean;
|
|
19
|
+
render: (data: ENTITY, index: number) => React.ReactNode;
|
|
20
|
+
renderSummary?: (data: ENTITY) => React.ReactNode;
|
|
21
|
+
};
|
|
22
|
+
export interface OnePageWizardProps<ENTITY> {
|
|
23
|
+
data: ENTITY;
|
|
24
|
+
name: string;
|
|
25
|
+
sections: (OnePageWizardSection<ENTITY> | '-')[];
|
|
26
|
+
currentIndex?: number;
|
|
27
|
+
defaultCurrentIndex?: number;
|
|
28
|
+
defaultCurrentSectionName?: string;
|
|
29
|
+
onSectionChange?: (index: number) => void;
|
|
30
|
+
onHide?: VoidFunction;
|
|
31
|
+
onFinish?: (data: ENTITY) => any;
|
|
32
|
+
children?: React.ReactNode;
|
|
33
|
+
style?: CSSProperties;
|
|
34
|
+
closeText?: React.ReactNode;
|
|
35
|
+
closeTooltip?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare const OnePageWizard: <ENTITY extends unknown>(props: OnePageWizardProps<ENTITY>) => JSX.Element;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnePageWizard = exports.useOnePageWizardContext = exports.OnePageWizardContext = exports.FormDescriptionText = exports.SummaryText = exports.SummaryTag = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const rebass_1 = require("rebass");
|
|
8
|
+
const Dialog_1 = tslib_1.__importDefault(require("../../components/Dialog"));
|
|
9
|
+
const SimpleButton_1 = tslib_1.__importDefault(require("../../components/SimpleButton"));
|
|
10
|
+
const useProperty_1 = tslib_1.__importDefault(require("../../components/utils/useProperty"));
|
|
11
|
+
const isMacLike_1 = require("../../Utilities/isMacLike");
|
|
12
|
+
const KeyHint_1 = require("../KeyHint");
|
|
13
|
+
const icons_1 = require("../../components/icons");
|
|
14
|
+
const ResizeObserver_1 = require("../../components/ResizeObserver");
|
|
15
|
+
const NamedQueryContext_1 = require("../../components/ExpressionEditor/NamedQueryContext");
|
|
16
|
+
const useKeyboardNavigation_1 = require("./useKeyboardNavigation");
|
|
17
|
+
exports.SummaryTag = (props) => React.createElement(rebass_1.Text, Object.assign({}, props));
|
|
18
|
+
exports.SummaryText = (props) => (React.createElement(rebass_1.Text, Object.assign({ fontSize: 2, mb: 3 }, props)));
|
|
19
|
+
exports.FormDescriptionText = (props) => (React.createElement(rebass_1.Text, Object.assign({ fontSize: 2, mt: 1 }, props)));
|
|
20
|
+
exports.OnePageWizardContext = React.createContext({
|
|
21
|
+
data: null,
|
|
22
|
+
sections: [],
|
|
23
|
+
setCurrentSection: (index) => { },
|
|
24
|
+
});
|
|
25
|
+
function useOnePageWizardContext() {
|
|
26
|
+
return React.useContext(exports.OnePageWizardContext);
|
|
27
|
+
}
|
|
28
|
+
exports.useOnePageWizardContext = useOnePageWizardContext;
|
|
29
|
+
exports.OnePageWizard = (props) => {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
let defaultCurrentIndex = 0;
|
|
32
|
+
if (props.defaultCurrentSectionName) {
|
|
33
|
+
const candidate = props.sections.findIndex((section) => section !== '-' && section.title === props.defaultCurrentSectionName);
|
|
34
|
+
if (candidate >= 0) {
|
|
35
|
+
defaultCurrentIndex = candidate;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const [currentSection, setCurrentSection] = useProperty_1.default(props, 'currentIndex', defaultCurrentIndex, {
|
|
39
|
+
onChange: (index) => {
|
|
40
|
+
var _a;
|
|
41
|
+
(_a = props.onSectionChange) === null || _a === void 0 ? void 0 : _a.call(props, index);
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
const [namedQuery, setNamedQuery] = react_1.useState(false);
|
|
45
|
+
const [navIndexMap] = react_1.useState(() => new Map());
|
|
46
|
+
const handleClickFinish = () => {
|
|
47
|
+
var _a;
|
|
48
|
+
(_a = props.onFinish) === null || _a === void 0 ? void 0 : _a.call(props, props.data);
|
|
49
|
+
};
|
|
50
|
+
const renderSection = (index) => {
|
|
51
|
+
const section = visibleSections[index];
|
|
52
|
+
if (section === '-') {
|
|
53
|
+
return React.createElement(React.Fragment, { key: index });
|
|
54
|
+
}
|
|
55
|
+
return (React.createElement(rebass_1.Flex, { flexDirection: "column", key: index, "data-name": `section-${index}`, style: { minHeight: '100%' }, mr: 2 },
|
|
56
|
+
React.createElement(rebass_1.Box, { py: 3, paddingLeft: 2, fontSize: 4, className: "ab-OnePageWizard__details" }, section.details),
|
|
57
|
+
React.createElement(rebass_1.Box, { flex: 1, className: "ab-OnePageWizard__section" }, section.render(props.data, index))));
|
|
58
|
+
};
|
|
59
|
+
const selectedNodeRef = react_1.useRef(null);
|
|
60
|
+
const selectedFeedback = (React.createElement("div", { ref: selectedNodeRef, className: "ab-OnePageWizard__selected-title-overlay", style: {
|
|
61
|
+
position: 'absolute',
|
|
62
|
+
background: 'var(--ab-cmp-one-page-wizard-selected-title__background)',
|
|
63
|
+
pointerEvents: 'none',
|
|
64
|
+
borderRadius: 'var(--ab__border-radius)',
|
|
65
|
+
transition: 'top 0.2s',
|
|
66
|
+
} }));
|
|
67
|
+
const sizeOwnerRef = react_1.useRef(null);
|
|
68
|
+
const [width, setWidth] = react_1.useState(0);
|
|
69
|
+
ResizeObserver_1.useResizeObserver(sizeOwnerRef, ({ width }) => {
|
|
70
|
+
setWidth(width);
|
|
71
|
+
});
|
|
72
|
+
React.useEffect(() => {
|
|
73
|
+
const node = selectedNodeRef.current;
|
|
74
|
+
const parent = node.parentNode;
|
|
75
|
+
const activeElement = parent.children[currentSection];
|
|
76
|
+
node.style.top = `${activeElement.offsetTop}px`;
|
|
77
|
+
node.style.left = `${activeElement.offsetLeft}px`;
|
|
78
|
+
node.style.height = `${activeElement.offsetHeight}px`;
|
|
79
|
+
node.style.width = `${activeElement.offsetWidth}px`;
|
|
80
|
+
}, [currentSection, width]);
|
|
81
|
+
let navIndex = 0;
|
|
82
|
+
const dialogRef = react_1.useRef(null);
|
|
83
|
+
let invalidCount = 0;
|
|
84
|
+
let firstErrorMessage = null;
|
|
85
|
+
const contextValue = {
|
|
86
|
+
data: props.data,
|
|
87
|
+
sections: props.sections,
|
|
88
|
+
setCurrentSection,
|
|
89
|
+
};
|
|
90
|
+
const visibleSections = React.useMemo(() => {
|
|
91
|
+
return props.sections.filter((section) => section === '-' ||
|
|
92
|
+
section.isVisible == undefined ||
|
|
93
|
+
section.isVisible(props.data, contextValue));
|
|
94
|
+
}, [props.sections]);
|
|
95
|
+
contextValue.sections = visibleSections;
|
|
96
|
+
const validSectionsMap = visibleSections.reduce((acc, section, index) => {
|
|
97
|
+
if (section === '-') {
|
|
98
|
+
acc.set(index, true);
|
|
99
|
+
return acc;
|
|
100
|
+
}
|
|
101
|
+
const valid = section.isValid ? section.isValid(props.data, contextValue) : true; //!active && canFinish !== true;
|
|
102
|
+
if (valid !== true) {
|
|
103
|
+
invalidCount++;
|
|
104
|
+
if (firstErrorMessage == null) {
|
|
105
|
+
firstErrorMessage = valid;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
acc.set(index, valid);
|
|
109
|
+
return acc;
|
|
110
|
+
}, new Map());
|
|
111
|
+
useKeyboardNavigation_1.useKeyboardNavigation(setCurrentSection, visibleSections);
|
|
112
|
+
const canFinish = !invalidCount;
|
|
113
|
+
return (React.createElement(NamedQueryContext_1.NamedQueryContext.Provider, { value: { namedQuery, setNamedQuery } },
|
|
114
|
+
React.createElement(exports.OnePageWizardContext.Provider, { value: contextValue },
|
|
115
|
+
React.createElement(Dialog_1.default, { modal: true, isOpen: true, showCloseButton: false, focusOnBrowserVisible: true, style: {
|
|
116
|
+
borderRadius: 'var(--ab__border-radius)',
|
|
117
|
+
overflow: 'hidden',
|
|
118
|
+
height: '80vh',
|
|
119
|
+
}, ref: dialogRef, onDismiss: () => { var _a; return (_a = props.onHide) === null || _a === void 0 ? void 0 : _a.call(props); }, onKeyDown: (event) => {
|
|
120
|
+
if (event.metaKey || event.ctrlKey) {
|
|
121
|
+
const { key } = event;
|
|
122
|
+
if (!isNaN(Number(key))) {
|
|
123
|
+
const num = Number(key);
|
|
124
|
+
if (navIndexMap.has(num)) {
|
|
125
|
+
const index = navIndexMap.get(num);
|
|
126
|
+
setCurrentSection(index);
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
event.stopPropagation();
|
|
129
|
+
requestAnimationFrame(() => {
|
|
130
|
+
var _a;
|
|
131
|
+
(_a = dialogRef === null || dialogRef === void 0 ? void 0 : dialogRef.current) === null || _a === void 0 ? void 0 : _a.bringToFront();
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
} },
|
|
137
|
+
React.createElement(rebass_1.Flex, { className: "ab-OnePageWizard", flexDirection: "column", "data-name": props.name, style: Object.assign({ height: '100%', width: '90vw', maxWidth: 1200 }, props.style) },
|
|
138
|
+
React.createElement(rebass_1.Flex, { flexDirection: "row", alignItems: "stretch", flex: 1, style: { overflow: 'auto' } },
|
|
139
|
+
React.createElement(rebass_1.Flex, { flexDirection: "column", padding: 3, className: "ab-OnePageWizard__section-title-container", ref: sizeOwnerRef, style: { overflow: 'auto', position: 'relative', flex: 'none' } },
|
|
140
|
+
visibleSections.map((section, index) => {
|
|
141
|
+
if (section === '-') {
|
|
142
|
+
return (React.createElement(rebass_1.Box, { as: "hr", mt: 2, className: "ab-OnePageWizard__section-separator", key: `${index}-`, style: {
|
|
143
|
+
width: '100%',
|
|
144
|
+
border: 'none',
|
|
145
|
+
borderTop: `1px solid var(--ab-color-inputborder)`,
|
|
146
|
+
} }));
|
|
147
|
+
}
|
|
148
|
+
navIndex++;
|
|
149
|
+
navIndexMap.set(navIndex, index);
|
|
150
|
+
const active = index === currentSection;
|
|
151
|
+
const disabled = false; //!active && !currentSectionValid;
|
|
152
|
+
return (React.createElement(rebass_1.Flex, { className: "ab-OnePageWizard__section-title", "data-name": section.title, flexDirection: "row", style: {
|
|
153
|
+
cursor: disabled ? 'auto' : 'pointer',
|
|
154
|
+
zIndex: 10,
|
|
155
|
+
transition: 'color 0.2s',
|
|
156
|
+
opacity: disabled ? 0.5 : 1,
|
|
157
|
+
}, key: section.title, color: active ? 'var(--ab-cmp-one-page-wizard-section-title__color)' : '', px: 2, py: 1, mt: index ? 2 : 0, onClick: () => {
|
|
158
|
+
if (disabled) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
setCurrentSection(index);
|
|
162
|
+
} },
|
|
163
|
+
React.createElement(KeyHint_1.KeyHint, { mr: 2, style: { display: 'inline-block' } }, navIndex),
|
|
164
|
+
React.createElement("div", { style: { flex: 1 } }, section.title),
|
|
165
|
+
React.createElement(icons_1.Icon, { name: "error", style: {
|
|
166
|
+
marginLeft: 'var(--ab-space-2)',
|
|
167
|
+
visibility: validSectionsMap.get(index) !== true ? 'visible' : 'hidden',
|
|
168
|
+
} })));
|
|
169
|
+
}),
|
|
170
|
+
selectedFeedback,
|
|
171
|
+
React.createElement(rebass_1.Box, { flex: 1 }),
|
|
172
|
+
React.createElement(KeyHint_1.KeyHint, { style: { lineHeight: 1.5 }, className: "ab-OnePageWizard__key-hint" },
|
|
173
|
+
isMacLike_1.isMacLike() ? 'Cmd' : 'Ctrl',
|
|
174
|
+
" + #",
|
|
175
|
+
React.createElement("br", null),
|
|
176
|
+
"to navigate")),
|
|
177
|
+
React.createElement(rebass_1.Flex, { flex: 1, flexDirection: "column", className: "ab-OnePageWizard__section-container" }, renderSection(currentSection))),
|
|
178
|
+
React.createElement(rebass_1.Flex, { flexDirection: "row", padding: 2, alignItems: "center", className: "ab-WizardDialog__footer ab-OnePageWizard__footer" },
|
|
179
|
+
React.createElement(SimpleButton_1.default, { tone: "neutral", variant: "text", "data-name": "close", onClick: () => { var _a; return (_a = props.onHide) === null || _a === void 0 ? void 0 : _a.call(props); }, tooltip: (_a = props.closeTooltip) !== null && _a !== void 0 ? _a : 'Close wizard', accessLevel: 'Full' }, (_b = props.closeText) !== null && _b !== void 0 ? _b : 'CLOSE'),
|
|
180
|
+
React.createElement(KeyHint_1.KeyHint, { ml: 2 }, "Esc"),
|
|
181
|
+
React.createElement(rebass_1.Text, { fontSize: 2, mr: 3, className: "ab-OnePageWizard__error", style: {
|
|
182
|
+
flex: 1,
|
|
183
|
+
color: 'var(--ab-color-error)',
|
|
184
|
+
textAlign: 'end',
|
|
185
|
+
} }, firstErrorMessage),
|
|
186
|
+
React.createElement(SimpleButton_1.default, { tone: "accent", "data-name": "finish", variant: "raised", disabled: canFinish !== true, onClick: () => handleClickFinish(), icon: 'check', accessLevel: 'Full' }, "Finish")))))));
|
|
187
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { OnePageWizardSection } from './
|
|
1
|
+
import { OnePageWizardSection } from './OnePageWizards';
|
|
2
2
|
export declare const useKeyboardNavigation: <ENTITY>(setCurrentSection: (value: number | ((v: number) => number)) => void, sections: ("-" | OnePageWizardSection<ENTITY>)[]) => void;
|
package/src/agGrid/Adaptable.js
CHANGED
|
@@ -1625,7 +1625,7 @@ class Adaptable {
|
|
|
1625
1625
|
// see https://www.ag-grid.com/javascript-data-grid/change-detection/#triggering-value-change-detection
|
|
1626
1626
|
let newValue;
|
|
1627
1627
|
let dataType = column.dataType;
|
|
1628
|
-
newValue = dataType ==
|
|
1628
|
+
newValue = dataType == 'Number' ? Number(value) : value;
|
|
1629
1629
|
if (dataType == undefined) {
|
|
1630
1630
|
return; // no point continuing as probably a wrong column
|
|
1631
1631
|
}
|
|
@@ -2190,6 +2190,17 @@ class Adaptable {
|
|
|
2190
2190
|
}
|
|
2191
2191
|
const editButtons = actionRowButtons
|
|
2192
2192
|
.map((buttonName) => {
|
|
2193
|
+
if (buttonName === 'create') {
|
|
2194
|
+
// we need this dirty hack until ActionColumn support for custom icons is improved
|
|
2195
|
+
const label = rowEditIcons_1.rowAddIcon;
|
|
2196
|
+
return {
|
|
2197
|
+
label,
|
|
2198
|
+
tooltip: 'Create',
|
|
2199
|
+
onClick: () => {
|
|
2200
|
+
this.api.gridApi.openCreateRowForm();
|
|
2201
|
+
},
|
|
2202
|
+
};
|
|
2203
|
+
}
|
|
2193
2204
|
if (buttonName === 'edit') {
|
|
2194
2205
|
// we need this dirty hack until ActionColumn support for custom icons is improved
|
|
2195
2206
|
const label = rowEditIcons_1.rowEditIcon;
|
|
@@ -2236,17 +2247,20 @@ class Adaptable {
|
|
|
2236
2247
|
return [];
|
|
2237
2248
|
}
|
|
2238
2249
|
const rowEditActionColumn = {
|
|
2239
|
-
columnId:
|
|
2250
|
+
columnId: GeneralConstants_1.ADAPTABLE_ROW_ACTION_BUTTONS,
|
|
2240
2251
|
actionColumnButton: editButtons,
|
|
2241
2252
|
};
|
|
2242
2253
|
return [
|
|
2243
2254
|
{
|
|
2244
2255
|
headerName: '',
|
|
2245
|
-
colId:
|
|
2256
|
+
colId: GeneralConstants_1.ADAPTABLE_ROW_ACTION_BUTTONS,
|
|
2246
2257
|
hide: false,
|
|
2247
2258
|
editable: false,
|
|
2248
2259
|
width: editButtons.length * 42,
|
|
2249
2260
|
resizable: false,
|
|
2261
|
+
lockVisible: true,
|
|
2262
|
+
suppressColumnsToolPanel: true,
|
|
2263
|
+
suppressFiltersToolPanel: true,
|
|
2250
2264
|
suppressMenu: true,
|
|
2251
2265
|
suppressMovable: true,
|
|
2252
2266
|
filter: false,
|
|
@@ -2260,7 +2274,7 @@ class Adaptable {
|
|
|
2260
2274
|
cellRendererParams: {
|
|
2261
2275
|
actionColumn: rowEditActionColumn,
|
|
2262
2276
|
},
|
|
2263
|
-
cellClass:
|
|
2277
|
+
cellClass: GeneralConstants_1.ADAPTABLE_ROW_ACTION_BUTTONS,
|
|
2264
2278
|
type: [GeneralConstants_1.AB_SPECIAL_COLUMN, 'abColDefObject'],
|
|
2265
2279
|
},
|
|
2266
2280
|
];
|
|
@@ -2857,7 +2871,7 @@ class Adaptable {
|
|
|
2857
2871
|
if (this.isDestroyed) {
|
|
2858
2872
|
return true;
|
|
2859
2873
|
}
|
|
2860
|
-
const columnFilters = this.api.
|
|
2874
|
+
const columnFilters = this.api.filterApi.getColumnFilters();
|
|
2861
2875
|
const isFilterActive = ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(columnFilters);
|
|
2862
2876
|
const isQueryActive = StringExtensions_1.StringExtensions.IsNotNullOrEmpty(this.api.queryApi.getCurrentQuery());
|
|
2863
2877
|
return (isFilterActive ||
|
|
@@ -2888,10 +2902,10 @@ class Adaptable {
|
|
|
2888
2902
|
try {
|
|
2889
2903
|
// we then assess filters (if running locally)
|
|
2890
2904
|
if (evaluateFilterOnClient) {
|
|
2891
|
-
const columnFilters = this.api.
|
|
2905
|
+
const columnFilters = this.api.filterApi.getColumnFilters();
|
|
2892
2906
|
if (columnFilters.length > 0) {
|
|
2893
2907
|
for (const columnFilter of columnFilters) {
|
|
2894
|
-
if (!this.api.
|
|
2908
|
+
if (!this.api.filterApi.evaluateColumnFilter(columnFilter, node)) {
|
|
2895
2909
|
return false;
|
|
2896
2910
|
}
|
|
2897
2911
|
}
|
|
@@ -2918,7 +2932,7 @@ class Adaptable {
|
|
|
2918
2932
|
this.prepareGrid();
|
|
2919
2933
|
}
|
|
2920
2934
|
updateColumnFilterActiveState() {
|
|
2921
|
-
const columnFilters = this.api.
|
|
2935
|
+
const columnFilters = this.api.filterApi.getColumnFilters();
|
|
2922
2936
|
const isFilterActive = ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(columnFilters);
|
|
2923
2937
|
const columnsWithActiveFilters = {};
|
|
2924
2938
|
if (isFilterActive) {
|
|
@@ -3947,7 +3961,7 @@ class Adaptable {
|
|
|
3947
3961
|
checkColumnsDataTypeSet() {
|
|
3948
3962
|
// check that we have no unknown columns - if we do then ok
|
|
3949
3963
|
const colDefs = this.api.columnApi.getColumns();
|
|
3950
|
-
if (colDefs.some((colDef) => colDef.dataType ===
|
|
3964
|
+
if (colDefs.some((colDef) => colDef.dataType === 'Unknown')) {
|
|
3951
3965
|
this.updateColumnsIntoStore();
|
|
3952
3966
|
}
|
|
3953
3967
|
}
|
|
@@ -4126,7 +4140,7 @@ class Adaptable {
|
|
|
4126
4140
|
themeClassNamesToRemove.forEach((cssClassName) => el.classList.remove(cssClassName));
|
|
4127
4141
|
// remove infinite table classnames
|
|
4128
4142
|
themesToRemove.forEach((theme) => {
|
|
4129
|
-
el.classList.remove(`
|
|
4143
|
+
el.classList.remove(`infinite-${theme.Name}`);
|
|
4130
4144
|
});
|
|
4131
4145
|
if (this.adaptableOptions.userInterfaceOptions &&
|
|
4132
4146
|
this.adaptableOptions.userInterfaceOptions.useCustomMacLikeScrollbars &&
|
|
@@ -4140,7 +4154,7 @@ class Adaptable {
|
|
|
4140
4154
|
const newThemeClassName = GeneralConstants.THEME_STYLE + themeName;
|
|
4141
4155
|
el.classList.add(newThemeClassName);
|
|
4142
4156
|
// add infinite table classname for theme
|
|
4143
|
-
el.classList.add(`
|
|
4157
|
+
el.classList.add(`infinite-${themeName}`);
|
|
4144
4158
|
const computedDocumentStyle = getComputedStyle(el);
|
|
4145
4159
|
const [abLoaded, abThemeLoaded] = ['--ab-loaded', '--ab-theme-loaded'].map((variable) => {
|
|
4146
4160
|
let val = computedDocumentStyle.getPropertyValue(variable);
|
|
@@ -15,8 +15,8 @@ exports.FilterWrapperFactory = (adaptable) => {
|
|
|
15
15
|
}
|
|
16
16
|
isFilterActive() {
|
|
17
17
|
//make the small filter icon to appear when there is a filter
|
|
18
|
-
return (adaptable.api.
|
|
19
|
-
.
|
|
18
|
+
return (adaptable.api.filterApi
|
|
19
|
+
.getColumnFilters()
|
|
20
20
|
.findIndex((x) => x.ColumnId == this.params.column.getColId()) > -1);
|
|
21
21
|
}
|
|
22
22
|
doesFilterPass(params) {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ColDef, Column, GridOptions, ICellRendererFunc, SideBarDef, ToolPanelDef } from '@ag-grid-community/all-modules';
|
|
2
2
|
import { IAdaptable } from '../AdaptableInterfaces/IAdaptable';
|
|
3
|
-
import { AdaptableColumn, AdaptableColumnGroup } from '../PredefinedConfig/Common/AdaptableColumn';
|
|
3
|
+
import { AdaptableColumn, AdaptableColumnDataType, AdaptableColumnGroup } from '../PredefinedConfig/Common/AdaptableColumn';
|
|
4
4
|
import { AdaptableNodeComparerFunction } from '../PredefinedConfig/Common/AdaptableComparerFunction';
|
|
5
|
-
import { DataType } from '../PredefinedConfig/Common/Enums';
|
|
6
5
|
import { AdaptableColumnType, AdaptableModule } from '../PredefinedConfig/Common/Types';
|
|
7
6
|
import { IModule } from '../Strategy/Interface/IModule';
|
|
8
7
|
import { IPPStyle } from '../Utilities/Interface/IPPStyle';
|
|
@@ -47,7 +46,7 @@ export declare class agGridHelper {
|
|
|
47
46
|
private isColumnSparkline;
|
|
48
47
|
private getColumnDataType;
|
|
49
48
|
private getAbColDefValue;
|
|
50
|
-
getAgGridDataType(dataType:
|
|
49
|
+
getAgGridDataType(dataType: AdaptableColumnDataType): AdaptableColumnType;
|
|
51
50
|
checkShouldClearExistingFiltersOrSearches(): void;
|
|
52
51
|
runAdaptableGroupComparerFunction(): AdaptableNodeComparerFunction;
|
|
53
52
|
getCurrentIPPStyle(): IPPStyle;
|