@adaptabletools/adaptable 17.0.0-canary.8 → 17.0.0
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 +24 -1
- package/base.css.map +1 -1
- package/bundle.cjs.js +199 -226
- package/index.css +34 -1
- package/index.css.map +1 -1
- package/package.json +1 -2
- package/publishTimestamp.d.ts +1 -1
- package/publishTimestamp.js +1 -1
- package/src/AdaptableOptions/ColumnFilterOptions.d.ts +8 -8
- package/src/Api/EventApi.d.ts +19 -8
- package/src/Api/Events/CellSelectionChanged.d.ts +11 -0
- package/src/Api/Events/RowSelectionChanged.d.ts +11 -0
- package/src/Api/Events/RowSelectionChanged.js +2 -0
- package/src/Redux/ActionsReducers/PlusMinusRedux.d.ts +16 -0
- package/src/Redux/ActionsReducers/PlusMinusRedux.js +47 -1
- package/src/Strategy/LayoutModule.d.ts +12 -4
- package/src/Strategy/LayoutModule.js +11 -5
- package/src/Strategy/NotesModule.js +1 -1
- package/src/Strategy/PlusMinusModule.js +2 -0
- package/src/Strategy/Utilities/Export/getExportRowsViewItems.d.ts +2 -1
- package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +14 -5
- package/src/Strategy/Utilities/getExpressionViewItems.js +8 -2
- package/src/Utilities/Defaults/DefaultAdaptableOptions.js +1 -1
- package/src/Utilities/Services/ModuleService.js +1 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +1 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +1 -1
- package/src/View/Components/FilterForm/FilterForm.js +8 -2
- package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -3
- package/src/View/Components/FilterForm/QuickFilterForm.js +5 -4
- package/src/View/Components/FilterForm/QuickFilterValues.d.ts +2 -2
- package/src/View/Components/FilterForm/QuickFilterValues.js +4 -3
- package/src/View/Components/Selectors/ColumnSelector.d.ts +1 -0
- package/src/View/Components/Selectors/ColumnSelector.js +2 -1
- package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +2 -2
- package/src/View/Export/Wizard/ReportRowsWizardSection.js +3 -1
- package/src/View/GridFilter/GridFilterExpressionEditor.js +1 -1
- package/src/View/GridFilter/GridFilterPopup.js +10 -8
- package/src/View/GridFilter/GridFilterViewPanel.js +11 -10
- package/src/View/GridFilter/NamedQuerySelector.js +1 -1
- package/src/View/GridFilter/useGridFilterExpressionEditor.d.ts +3 -0
- package/src/View/GridFilter/useGridFilterExpressionEditor.js +16 -5
- package/src/View/Layout/Wizard/getGridFilterPreview.d.ts +6 -0
- package/src/View/Layout/Wizard/getGridFilterPreview.js +16 -0
- package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
- package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -1
- package/src/View/Notes/NotesPopup.js +2 -2
- package/src/View/PlusMinus/MovePlusMinus.d.ts +7 -0
- package/src/View/PlusMinus/MovePlusMinus.js +27 -0
- package/src/agGrid/Adaptable.js +2 -2
- package/src/agGrid/agGridHelper.d.ts +2 -1
- package/src/agGrid/agGridHelper.js +13 -3
- package/src/components/Datepicker/index.js +4 -4
- package/src/components/ExpressionEditor/ExpressionPreview.d.ts +7 -0
- package/src/components/ExpressionEditor/ExpressionPreview.js +25 -0
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.js +2 -2
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +11 -7
- package/src/components/ExpressionEditor/index.js +4 -7
- package/src/components/InputGroup/InputGroup.d.ts +7 -0
- package/src/components/InputGroup/InputGroup.js +12 -0
- package/src/components/InputGroup/index.d.ts +1 -0
- package/src/components/InputGroup/index.js +4 -0
- package/src/components/OverlayTrigger/index.js +7 -2
- package/src/components/Select/Select.d.ts +0 -1
- package/src/components/Select/Select.js +4 -4
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/renderReactRoot.js +16 -10
- package/src/types.d.ts +2 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/src/Api/Events/SelectionChanged.d.ts +0 -16
- /package/src/Api/Events/{SelectionChanged.js → CellSelectionChanged.js} +0 -0
|
@@ -58,7 +58,7 @@ const FilterSection = (props) => {
|
|
|
58
58
|
React.createElement(Tabs_1.Tabs.Content, null,
|
|
59
59
|
React.createElement(FormLayout_1.default, { mb: 2 },
|
|
60
60
|
React.createElement(FormLayout_1.FormRow, { label: "Add Column Filter" },
|
|
61
|
-
React.createElement(ColumnSelector_1.ColumnSelector, { filterColumn: (column) => column.filterable && !layoutFilters.some((f) => f.ColumnId === column.columnId),
|
|
61
|
+
React.createElement(ColumnSelector_1.ColumnSelector, { filterColumn: (column) => column.filterable && !layoutFilters.some((f) => f.ColumnId === column.columnId), placeholder: "Select column to create filter", onChange: (option) => {
|
|
62
62
|
props.onChange(Object.assign(Object.assign({}, layout), { ColumnFilters: [
|
|
63
63
|
...layoutFilters,
|
|
64
64
|
{
|
|
@@ -30,7 +30,7 @@ exports.renderNamedQueryExpressionSummary = renderNamedQueryExpressionSummary;
|
|
|
30
30
|
const NamedQueryExpressionWizardSection = (props) => {
|
|
31
31
|
const { data, moduleInfo, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
32
32
|
const initialData = (0, react_1.useMemo)(() => api.internalApi.getQueryPreviewData(), []);
|
|
33
|
-
return (React.createElement(ExpressionEditor_1.ExpressionEditor, { allowSaveNamedQuery: false, type: 'boolean', module: moduleInfo.ModuleName, value: data.BooleanExpression, onChange: (BooleanExpression) => {
|
|
33
|
+
return (React.createElement(ExpressionEditor_1.ExpressionEditor, { allowSaveNamedQuery: false, showQueryBuilder: true, type: 'boolean', module: moduleInfo.ModuleName, value: data.BooleanExpression, onChange: (BooleanExpression) => {
|
|
34
34
|
props.onChange(Object.assign(Object.assign({}, data), { BooleanExpression }));
|
|
35
35
|
}, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.namedQueryApi.getNamedQueries(), api: api }));
|
|
36
36
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NotePopup = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const throttle_1 = tslib_1.__importDefault(require("lodash/throttle"));
|
|
6
6
|
const React = tslib_1.__importStar(require("react"));
|
|
7
7
|
const react_redux_1 = require("react-redux");
|
|
8
8
|
const rebass_1 = require("rebass");
|
|
@@ -15,7 +15,7 @@ const NoteEditor = ({ note, onNoteChange, onClose, editMode, isReadonly }) => {
|
|
|
15
15
|
const textAreaRef = React.useRef(null);
|
|
16
16
|
const [liveValue, setLiveValue] = React.useState(note || '');
|
|
17
17
|
const throttledOnChange = React.useMemo(() => {
|
|
18
|
-
const throttled = (0,
|
|
18
|
+
const throttled = (0, throttle_1.default)((value) => onNoteChange(value), 300);
|
|
19
19
|
return (value) => {
|
|
20
20
|
setLiveValue(value);
|
|
21
21
|
throttled(value);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MovePlusMinus = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const SimpleButton_1 = tslib_1.__importDefault(require("../../components/SimpleButton"));
|
|
7
|
+
const PlusMinusRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/PlusMinusRedux"));
|
|
8
|
+
const react_redux_1 = require("react-redux");
|
|
9
|
+
const AdaptableContext_1 = require("../AdaptableContext");
|
|
10
|
+
const MovePlusMinus = (props) => {
|
|
11
|
+
const dispatch = (0, react_redux_1.useDispatch)();
|
|
12
|
+
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
13
|
+
const plusMinusNudges = (0, react_redux_1.useSelector)((state) => state.PlusMinus.PlusMinusNudges);
|
|
14
|
+
const handleMoveUp = React.useCallback(() => {
|
|
15
|
+
dispatch(PlusMinusRedux.PlusMinusMoveUp(props.data));
|
|
16
|
+
}, []);
|
|
17
|
+
const handleMoveDown = React.useCallback(() => {
|
|
18
|
+
dispatch(PlusMinusRedux.PlusMinusMoveDown(props.data));
|
|
19
|
+
}, []);
|
|
20
|
+
if ((plusMinusNudges === null || plusMinusNudges === void 0 ? void 0 : plusMinusNudges.length) <= 1) {
|
|
21
|
+
return React.createElement(React.Fragment, null);
|
|
22
|
+
}
|
|
23
|
+
return (React.createElement(React.Fragment, null,
|
|
24
|
+
React.createElement(SimpleButton_1.default, { "data-id": "move-up", title: "move up", onClick: handleMoveUp, variant: "text", icon: "arrow-up" }),
|
|
25
|
+
React.createElement(SimpleButton_1.default, { "data-name": "move-down", title: "move down", onClick: handleMoveDown, variant: "text", icon: "arrow-down" })));
|
|
26
|
+
};
|
|
27
|
+
exports.MovePlusMinus = MovePlusMinus;
|
package/src/agGrid/Adaptable.js
CHANGED
|
@@ -1784,7 +1784,7 @@ class Adaptable {
|
|
|
1784
1784
|
};
|
|
1785
1785
|
this.api.gridApi.internalApi.setSelectedCells(selectedCellInfo);
|
|
1786
1786
|
this._emit('CellsSelected');
|
|
1787
|
-
this.agGridHelper.
|
|
1787
|
+
this.agGridHelper.fireCellSelectionChangedEvent();
|
|
1788
1788
|
return selectedCellInfo;
|
|
1789
1789
|
}
|
|
1790
1790
|
setSelectedRows() {
|
|
@@ -1818,7 +1818,7 @@ class Adaptable {
|
|
|
1818
1818
|
}
|
|
1819
1819
|
const selectedRowInfo = { gridRows: selectedRows };
|
|
1820
1820
|
this.api.gridApi.internalApi.setSelectedRows(selectedRowInfo);
|
|
1821
|
-
this.agGridHelper.
|
|
1821
|
+
this.agGridHelper.fireRowSelectionChangedEvent();
|
|
1822
1822
|
return selectedRowInfo;
|
|
1823
1823
|
}
|
|
1824
1824
|
setDataValue(value, column, primaryKeyValue, rowNode) {
|
|
@@ -30,7 +30,8 @@ export declare class agGridHelper {
|
|
|
30
30
|
isSideBarDefObject(sidebarDef: unknown): sidebarDef is SideBarDef;
|
|
31
31
|
mapToolPanelDefs(toolPanelDefs?: (ToolPanelDef | string)[]): (ToolPanelDef | string)[];
|
|
32
32
|
reselectSelectedCells(): void;
|
|
33
|
-
|
|
33
|
+
fireCellSelectionChangedEvent(): void;
|
|
34
|
+
fireRowSelectionChangedEvent(): void;
|
|
34
35
|
private isColumnReadonly;
|
|
35
36
|
private isColumnFieldonly;
|
|
36
37
|
private isColumnSortable;
|
|
@@ -300,15 +300,25 @@ class agGridHelper {
|
|
|
300
300
|
this.gridOptions.api.addCellRange(cellRangeParams);
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
|
-
|
|
304
|
-
let
|
|
303
|
+
fireCellSelectionChangedEvent() {
|
|
304
|
+
let cellSelectionChangedInfo = {
|
|
305
305
|
adaptableApi: this.adaptable.api,
|
|
306
306
|
selectedCellInfo: this.adaptable.api.gridApi.getGridState().SelectedCellInfo,
|
|
307
|
+
// selectedRowInfo: this.adaptable.api.gridApi.getGridState().SelectedRowInfo,
|
|
308
|
+
userName: this.adaptable.api.optionsApi.getUserName(),
|
|
309
|
+
adaptableId: this.adaptable.api.optionsApi.getAdaptableId(),
|
|
310
|
+
};
|
|
311
|
+
this.adaptable.api.eventApi.emit('CellSelectionChanged', cellSelectionChangedInfo);
|
|
312
|
+
}
|
|
313
|
+
fireRowSelectionChangedEvent() {
|
|
314
|
+
let rowSelectionChangedInfo = {
|
|
315
|
+
adaptableApi: this.adaptable.api,
|
|
316
|
+
// selectedCellInfo: this.adaptable.api.gridApi.getGridState().SelectedCellInfo,
|
|
307
317
|
selectedRowInfo: this.adaptable.api.gridApi.getGridState().SelectedRowInfo,
|
|
308
318
|
userName: this.adaptable.api.optionsApi.getUserName(),
|
|
309
319
|
adaptableId: this.adaptable.api.optionsApi.getAdaptableId(),
|
|
310
320
|
};
|
|
311
|
-
this.adaptable.api.eventApi.emit('
|
|
321
|
+
this.adaptable.api.eventApi.emit('RowSelectionChanged', rowSelectionChangedInfo);
|
|
312
322
|
}
|
|
313
323
|
isColumnReadonly(colDef) {
|
|
314
324
|
// if the column has conditional/dynamic editability, we assume some rows may be editable
|
|
@@ -17,13 +17,13 @@ const DatepickerContext_1 = require("./DatepickerContext");
|
|
|
17
17
|
const addDays_1 = tslib_1.__importDefault(require("date-fns/addDays"));
|
|
18
18
|
const addBusinessDays_1 = tslib_1.__importDefault(require("date-fns/addBusinessDays"));
|
|
19
19
|
const react_day_picker_1 = require("react-day-picker");
|
|
20
|
-
const DatepickerOverlay = ({ onHide, children, onKeyDown, }) => {
|
|
20
|
+
const DatepickerOverlay = ({ onHide, children, onKeyDown, onMouseDown, }) => {
|
|
21
21
|
const domRef = React.useRef(null);
|
|
22
22
|
React.useEffect(() => {
|
|
23
23
|
var _a;
|
|
24
24
|
(_a = domRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
25
25
|
}, []);
|
|
26
|
-
return (React.createElement("div", { className: "ab-Datepicker-Overlay", ref: domRef, tabIndex: -1, onKeyDown: onKeyDown, onBlur: (e) => {
|
|
26
|
+
return (React.createElement("div", { className: "ab-Datepicker-Overlay", ref: domRef, tabIndex: -1, onKeyDown: onKeyDown, onMouseDown: onMouseDown, onBlur: (e) => {
|
|
27
27
|
var _a;
|
|
28
28
|
const { relatedTarget } = e;
|
|
29
29
|
const node = domRef.current;
|
|
@@ -87,7 +87,7 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
87
87
|
}, accessLevel: 'Full' })) : null;
|
|
88
88
|
const calendarButton = (React.createElement(SimpleButton_1.default, { disabled: disabled, variant: "text", icon: "calendar", tooltip: "Date", iconSize: 20, px: 0, py: 0, onClick: () => setVisible(true) }));
|
|
89
89
|
return (React.createElement(rebass_1.Flex, null,
|
|
90
|
-
React.createElement(OverlayTrigger_1.default, { visible: visible, render: () => (React.createElement(DatepickerOverlay, { onHide: () => setVisible(false), onKeyDown: (e) => {
|
|
90
|
+
React.createElement(OverlayTrigger_1.default, { visible: visible, render: () => (React.createElement(DatepickerOverlay, { onMouseDown: props.onMouseDown, onHide: () => setVisible(false), onKeyDown: (e) => {
|
|
91
91
|
if (e.key === 'Escape' || e.key === 'Enter') {
|
|
92
92
|
setVisible(false, e.key);
|
|
93
93
|
}
|
|
@@ -97,7 +97,7 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
97
97
|
borderRadius: style === null || style === void 0 ? void 0 : style.borderRadius,
|
|
98
98
|
width: style === null || style === void 0 ? void 0 : style.width,
|
|
99
99
|
maxWidth: style === null || style === void 0 ? void 0 : style.maxWidth,
|
|
100
|
-
}, onFocus: () => {
|
|
100
|
+
}, className: "ab-Datepicker", onFocus: () => {
|
|
101
101
|
if (!visible) {
|
|
102
102
|
setVisible(true);
|
|
103
103
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExpressionPreview = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const AdaptableContext_1 = require("../../View/AdaptableContext");
|
|
7
|
+
const ExpressionPreview = (props) => {
|
|
8
|
+
var _a;
|
|
9
|
+
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
10
|
+
const displayColumnFriendlyNames = (_a = adaptable.api.optionsApi.getExpressionOptions()) === null || _a === void 0 ? void 0 : _a.displayColumnFriendlyNamesForExpressions;
|
|
11
|
+
if (!displayColumnFriendlyNames) {
|
|
12
|
+
return React.createElement(React.Fragment, null, adaptable.api.expressionApi.getAdaptableQueryExpression(props.query));
|
|
13
|
+
}
|
|
14
|
+
const expressionWithFriendlyNames = adaptable.api.expressionApi.getAdaptableQueryExpressionWithColumnFriendlyNames(props.query);
|
|
15
|
+
// '[Column Name] > 2' => ['[Column Name]', '>', '2']
|
|
16
|
+
// not the prettiest
|
|
17
|
+
const strWithMarkedGroupes = expressionWithFriendlyNames.replace(/\]/gi, '],').split(',');
|
|
18
|
+
return (React.createElement(React.Fragment, null, strWithMarkedGroupes.map((part, index) => {
|
|
19
|
+
const partEl = part.includes('[') ? React.createElement("i", null, part.replace(/[\[\]]/g, '')) : part;
|
|
20
|
+
return React.createElement(React.Fragment, { key: index },
|
|
21
|
+
"\u00A0",
|
|
22
|
+
partEl);
|
|
23
|
+
})));
|
|
24
|
+
};
|
|
25
|
+
exports.ExpressionPreview = ExpressionPreview;
|
|
@@ -110,9 +110,9 @@ const QueryBuilder = (props) => {
|
|
|
110
110
|
} },
|
|
111
111
|
React.createElement(QueryBuilderContext.Provider, { value: context },
|
|
112
112
|
React.createElement(rebass_1.Box, { className: QUERY_BUILDER_CLASSNAME },
|
|
113
|
-
React.createElement(HelpBlock_1.default, { mt: 2, mb: 2, p: 2, fontSize: 3 }, "Build the Grid Filter by adding Column Conditions and AND / OR Groups as required"),
|
|
113
|
+
React.createElement(HelpBlock_1.default, { "data-name": "query-builder-help", mt: 2, mb: 2, p: 2, fontSize: 3 }, "Build the Grid Filter by adding Column Conditions and AND / OR Groups as required"),
|
|
114
114
|
errorOrEditor,
|
|
115
|
-
React.createElement(Panel_1.default, { variant: "default", header: "AdapTableQL Expression", mt: 3 },
|
|
115
|
+
React.createElement(Panel_1.default, { "data-name": "query-builder-expression-preview", variant: "default", header: "AdapTableQL Expression", mt: 3 },
|
|
116
116
|
React.createElement(rebass_1.Box, { className: `${QUERY_BUILDER_CLASSNAME}__expression`, minHeight: 48, my: 2, p: 3 }, expressionStr || 'Outputted Expression will display here'))))));
|
|
117
117
|
};
|
|
118
118
|
exports.QueryBuilder = QueryBuilder;
|
|
@@ -11,6 +11,7 @@ const PermittedValuesSelector_1 = require("../../../View/Components/Selectors/Pe
|
|
|
11
11
|
const CheckBox_1 = require("../../CheckBox");
|
|
12
12
|
const DropdownButton_1 = tslib_1.__importDefault(require("../../DropdownButton"));
|
|
13
13
|
const icons_1 = require("../../icons");
|
|
14
|
+
const InputGroup_1 = require("../../InputGroup");
|
|
14
15
|
const Select_1 = require("../../Select");
|
|
15
16
|
const QueryBuilder_1 = require("./QueryBuilder");
|
|
16
17
|
const utils_1 = require("./utils");
|
|
@@ -85,22 +86,25 @@ const PrimiteValueInput = (props) => {
|
|
|
85
86
|
}
|
|
86
87
|
const options = [
|
|
87
88
|
{
|
|
88
|
-
label:
|
|
89
|
+
label: (react_1.default.createElement(rebass_1.Flex, null,
|
|
90
|
+
react_1.default.createElement(icons_1.Icon, { name: "columns" }),
|
|
91
|
+
react_1.default.createElement(rebass_1.Text, { ml: 2 }, "Column"))),
|
|
89
92
|
icon: 'columns',
|
|
90
93
|
value: 'column-name',
|
|
91
94
|
},
|
|
92
95
|
{
|
|
93
|
-
label:
|
|
96
|
+
label: (react_1.default.createElement(rebass_1.Flex, null,
|
|
97
|
+
react_1.default.createElement(icons_1.Icon, { name: "edit" }),
|
|
98
|
+
react_1.default.createElement(rebass_1.Text, { ml: 2 }, "Value"))),
|
|
94
99
|
icon: 'edit',
|
|
95
100
|
value: 'input-value',
|
|
96
101
|
},
|
|
97
102
|
];
|
|
98
103
|
const typeOption = options.find((option) => option.value === type);
|
|
99
|
-
return (react_1.default.createElement(rebass_1.Flex,
|
|
100
|
-
react_1.default.createElement(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}, variant: "raised", value: typeOption.value, options: options, onChange: (value) => handleTypeChange(value) })),
|
|
104
|
+
return (react_1.default.createElement(InputGroup_1.InputGroup, { Component: rebass_1.Flex, "data-id": "query-input-wrapper", mr: 2 },
|
|
105
|
+
react_1.default.createElement(Select_1.Select, { rederSingleValue: (value) => {
|
|
106
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, typeOption.value === 'column-name' ? react_1.default.createElement(icons_1.Icon, { name: "grid" }) : react_1.default.createElement(icons_1.Icon, { name: "edit" })));
|
|
107
|
+
}, value: typeOption.value, options: options, onChange: (value) => handleTypeChange(value) }),
|
|
104
108
|
editor));
|
|
105
109
|
};
|
|
106
110
|
exports.PrimiteValueInput = PrimiteValueInput;
|
|
@@ -32,6 +32,7 @@ function ExpressionEditor(props) {
|
|
|
32
32
|
const { type, module } = props;
|
|
33
33
|
const [data, setData] = (0, react_1.useState)(props.initialData);
|
|
34
34
|
const [showColumnIds, setShowColumnIds] = (0, react_1.useState)(false);
|
|
35
|
+
const [inlineQuery, setInlineQuery] = (0, react_1.useState)(false);
|
|
35
36
|
const [showNamedQueries, setShowNamedQueries] = (0, react_1.useState)(false);
|
|
36
37
|
const baseClassName = `ab-ExpressionEditor`;
|
|
37
38
|
const [selectedFunction, setSelectedFunction] = (0, react_1.useState)(null);
|
|
@@ -94,12 +95,8 @@ function ExpressionEditor(props) {
|
|
|
94
95
|
setData(updateColValue(data, column, new Date(e.target.value)));
|
|
95
96
|
}, style: { width: '100%' }, disabled: column.readOnly })) : column.dataType === 'Boolean' ? (React.createElement(CheckBox_1.CheckBox, { "data-name": "column-input", "data-value": column.columnId, checked: getColValue(column), onChange: (checked) => setData(updateColValue(data, column, checked)), disabled: column.readOnly })) : null))))));
|
|
96
97
|
const namedQueries = (React.createElement(rebass_1.Flex, { flexDirection: "column", alignItems: "start", style: { marginTop: 2 } },
|
|
97
|
-
React.createElement(CheckBox_1.CheckBox, { checked: showColumnIds, onChange: (checked) => setShowColumnIds(checked),
|
|
98
|
-
|
|
99
|
-
margin: 0,
|
|
100
|
-
paddingTop: 'var(--ab-space-1)',
|
|
101
|
-
paddingBottom: 'var(--ab-space-1)',
|
|
102
|
-
} }, 'Show Column IDs'),
|
|
98
|
+
React.createElement(CheckBox_1.CheckBox, { checked: showColumnIds, onChange: (checked) => setShowColumnIds(checked) }, "Show Column IDs"),
|
|
99
|
+
React.createElement(CheckBox_1.CheckBox, { checked: inlineQuery, onChange: (checked) => setInlineQuery(checked) }, "Inline Query"),
|
|
103
100
|
props.namedQueries.map((namedQuery) => (React.createElement(rebass_1.Flex, { key: namedQuery.Uuid, flexDirection: "column", alignItems: "start", style: {
|
|
104
101
|
padding: 3,
|
|
105
102
|
marginTop: 'var(--ab-space-2)',
|
|
@@ -110,7 +107,7 @@ function ExpressionEditor(props) {
|
|
|
110
107
|
React.createElement(EditorButton_1.default, { width: "100%", height: "100%", style: {
|
|
111
108
|
background: 'var(--ab-color-primary)',
|
|
112
109
|
cursor: 'grab',
|
|
113
|
-
}, data: `QUERY("${namedQuery.Name}")`, "data-name": "column", icon: "drag" },
|
|
110
|
+
}, data: inlineQuery ? namedQuery.BooleanExpression : `QUERY("${namedQuery.Name}")`, "data-name": "column", icon: "drag" },
|
|
114
111
|
React.createElement(rebass_1.Flex, { flexDirection: "column", alignItems: "start" }, namedQuery.Name)),
|
|
115
112
|
React.createElement(rebass_1.Flex, { alignItems: "start", style: {
|
|
116
113
|
padding: 5,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type InputGroupProps<T extends React.ComponentType<any>> = {
|
|
3
|
+
Component?: T;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
} & React.ComponentProps<T>;
|
|
6
|
+
export declare const InputGroup: <T extends React.ComponentType<any>>({ Component, children, ...rest }: InputGroupProps<T>) => JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InputGroup = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const InputGroup = (_a) => {
|
|
7
|
+
var _b;
|
|
8
|
+
var { Component = 'div', children } = _a, rest = tslib_1.__rest(_a, ["Component", "children"]);
|
|
9
|
+
const Comp = Component;
|
|
10
|
+
return (React.createElement(Comp, Object.assign({}, rest, { className: `ab-cmp-input-group ${(_b = rest.className) !== null && _b !== void 0 ? _b : ''}` }), children));
|
|
11
|
+
};
|
|
12
|
+
exports.InputGroup = InputGroup;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './InputGroup';
|
|
@@ -4,6 +4,7 @@ exports.getConstrainRect = exports.getConstrainElement = 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
|
+
const debounce_1 = tslib_1.__importDefault(require("lodash/debounce"));
|
|
7
8
|
const batchUpdate_1 = tslib_1.__importDefault(require("../utils/batchUpdate"));
|
|
8
9
|
const selectParent_1 = tslib_1.__importDefault(require("../utils/selectParent"));
|
|
9
10
|
const useProperty_1 = tslib_1.__importDefault(require("../utils/useProperty"));
|
|
@@ -72,7 +73,11 @@ const OverlayTrigger = React.forwardRef((props, ref) => {
|
|
|
72
73
|
const overlayRef = (0, react_1.useRef)(null);
|
|
73
74
|
const [visible, doSetVisible] = (0, useProperty_1.default)(props, 'visible', false);
|
|
74
75
|
const hideTimeoutRef = (0, react_1.useRef)(null);
|
|
75
|
-
const setVisible = React.useCallback(
|
|
76
|
+
const setVisible = React.useCallback(
|
|
77
|
+
// visible state may quickly change from true -> false -> true
|
|
78
|
+
// when moving the mouse cursor from the trigger to the overlay
|
|
79
|
+
// for this case we debounce the visible change for a very small amount of time
|
|
80
|
+
(0, debounce_1.default)((visible) => {
|
|
76
81
|
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(visible);
|
|
77
82
|
if (!visible) {
|
|
78
83
|
hideTimeoutRef.current = setTimeout(() => {
|
|
@@ -86,7 +91,7 @@ const OverlayTrigger = React.forwardRef((props, ref) => {
|
|
|
86
91
|
hideTimeoutRef.current = null;
|
|
87
92
|
}
|
|
88
93
|
doSetVisible(true);
|
|
89
|
-
}, []);
|
|
94
|
+
}, 50), []);
|
|
90
95
|
const prevVisible = (0, usePrevious_1.default)(visible, false);
|
|
91
96
|
ensurePortalElement();
|
|
92
97
|
const onShow = React.useCallback((event) => {
|
|
@@ -24,7 +24,6 @@ export type SelectProps<SelectValue extends unknown, IsMulti extends boolean = f
|
|
|
24
24
|
accessLevel?: AccessLevel;
|
|
25
25
|
style?: React.CSSProperties;
|
|
26
26
|
onInputChange?: (value: string) => void;
|
|
27
|
-
variant?: 'default' | 'raised';
|
|
28
27
|
size?: 'small' | 'normal';
|
|
29
28
|
isCreatable?: boolean;
|
|
30
29
|
};
|
|
@@ -71,7 +71,9 @@ const Select = function (props) {
|
|
|
71
71
|
};
|
|
72
72
|
}, []);
|
|
73
73
|
const SelectComponent = props.isCreatable ? creatable_1.default : react_select_1.default;
|
|
74
|
-
return (React.createElement(SelectComponent, { onInputChange: props.onInputChange, onFocus: props.onFocus, isLoading: props.isLoding, options: props.options, className: props.className, isDisabled: disabled, isMulti: props.isMulti, value: selectedOption, menuPosition: (_g = props.menuPosition) !== null && _g !== void 0 ? _g : '
|
|
74
|
+
return (React.createElement(SelectComponent, { onInputChange: props.onInputChange, onFocus: props.onFocus, isLoading: props.isLoding, options: props.options, className: props.className, isDisabled: disabled, isMulti: props.isMulti, value: selectedOption, menuPosition: (_g = props.menuPosition) !== null && _g !== void 0 ? _g : 'absolute',
|
|
75
|
+
// This needed so the menu is not clipped by overflow: hidden
|
|
76
|
+
menuPortalTarget: document.body, isClearable: props.isClearable, onChange: (option) => {
|
|
75
77
|
if (props.isMulti) {
|
|
76
78
|
props.onChange(option.map((x) => x === null || x === void 0 ? void 0 : x.value));
|
|
77
79
|
}
|
|
@@ -136,9 +138,7 @@ const Select = function (props) {
|
|
|
136
138
|
state;
|
|
137
139
|
return Object.assign(Object.assign(Object.assign({}, baseStyle), commonStyles(state)), {
|
|
138
140
|
// height: 30,
|
|
139
|
-
minHeight: props.size === 'small' ? 0 : 32, boxShadow: state.isFocused ? 'var(--ab-cmp-select-focused__box-shadow)' : 'none', outline: state.isFocused ? 'var(--ab-cmp-select-focused__outline)' : 'none', border:
|
|
140
|
-
? '1px solid transparent'
|
|
141
|
-
: 'var(--ab-cmp-select__border)', '&:hover': {
|
|
141
|
+
minHeight: props.size === 'small' ? 0 : 32, boxShadow: state.isFocused ? 'var(--ab-cmp-select-focused__box-shadow)' : 'none', outline: state.isFocused ? 'var(--ab-cmp-select-focused__outline)' : 'none', border: 'var(--ab-cmp-select__border)', borderRadius: 'var(--ab-cmp-select__border-radius)', '&:hover': {
|
|
142
142
|
border: 'var(--ab-cmp-select__border)',
|
|
143
143
|
} });
|
|
144
144
|
},
|