@adaptabletools/adaptable-cjs 18.0.12 → 18.1.0-canary.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/agGrid.d.ts +4 -3
- package/agGrid.js +6 -1
- package/base.css +7 -2
- package/base.css.map +1 -1
- package/index.css +11 -2
- package/index.css.map +1 -1
- package/package.json +2 -2
- package/src/AdaptableOptions/ActionColumnOptions.d.ts +1 -1
- package/src/AdaptableOptions/ColumnFilterOptions.d.ts +27 -1
- package/src/AdaptableOptions/ExportOptions.d.ts +20 -7
- package/src/AdaptableOptions/ExpressionOptions.d.ts +12 -2
- package/src/AdaptableOptions/Fdc3Options.d.ts +48 -43
- package/src/Api/ColumnApi.d.ts +1 -1
- package/src/Api/Events/Fdc3MessageInfo.d.ts +5 -7
- package/src/Api/ExpressionApi.d.ts +2 -2
- package/src/Api/Fdc3Api.d.ts +14 -19
- package/src/Api/Implementation/ConfigApiImpl.js +3 -0
- package/src/Api/Implementation/Fdc3ApiImpl.d.ts +14 -16
- package/src/Api/Implementation/Fdc3ApiImpl.js +35 -11
- package/src/Api/Internal/AlertInternalApi.d.ts +17 -2
- package/src/Api/Internal/AlertInternalApi.js +196 -25
- package/src/Api/Internal/ColumnFilterInternalApi.d.ts +2 -0
- package/src/Api/Internal/ColumnFilterInternalApi.js +20 -0
- package/src/Api/Internal/ExportInternalApi.d.ts +3 -3
- package/src/Api/Internal/ExportInternalApi.js +31 -17
- package/src/Api/Internal/ExpressionInternalApi.d.ts +5 -1
- package/src/Api/Internal/ExpressionInternalApi.js +80 -0
- package/src/Api/Internal/Fdc3InternalApi.d.ts +8 -10
- package/src/Api/Internal/Fdc3InternalApi.js +5 -9
- package/src/PredefinedConfig/Common/AdaptableField.d.ts +18 -0
- package/src/PredefinedConfig/Common/AdaptableField.js +2 -0
- package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
- package/src/PredefinedConfig/Common/AdaptablePredicate.js +18 -1
- package/src/PredefinedConfig/Common/Fdc3Context.d.ts +7 -226
- package/src/PredefinedConfig/Common/Fdc3Context.js +44 -32
- package/src/PredefinedConfig/Common/Fdc3Intent.d.ts +6 -89
- package/src/PredefinedConfig/Common/Fdc3Intent.js +27 -74
- package/src/PredefinedConfig/Common/RowSummary.d.ts +2 -1
- package/src/PredefinedConfig/StyledColumnState.d.ts +1 -1
- package/src/Redux/ActionsReducers/FormatColumnRedux.js +0 -3
- package/src/Strategy/AdaptableModuleBase.js +1 -3
- package/src/Strategy/AlertModule.d.ts +1 -1
- package/src/Strategy/AlertModule.js +8 -8
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +3 -1
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +14 -13
- package/src/Utilities/Services/Fdc3Service.d.ts +1 -1
- package/src/Utilities/Services/QueryLanguageService.d.ts +8 -4
- package/src/Utilities/Services/QueryLanguageService.js +105 -6
- package/src/Utilities/Services/ReportService.js +8 -5
- package/src/Utilities/Services/RowSummaryService.js +3 -1
- package/src/Utilities/divideBy100.d.ts +1 -0
- package/src/Utilities/divideBy100.js +34 -0
- package/src/Utilities/times100.d.ts +1 -0
- package/src/Utilities/times100.js +27 -0
- package/src/View/Alert/Wizard/AlertMessageWizardSection.js +1 -1
- package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +2 -2
- package/src/View/Alert/Wizard/AlertScopeWizardSection.js +2 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +1 -1
- package/src/View/Components/EntityRulesEditor/index.d.ts +1 -0
- package/src/View/Components/EntityRulesEditor/index.js +11 -7
- package/src/View/Components/ExpressionWizard.js +1 -1
- package/src/View/Components/FilterForm/QuickFilterValues.js +28 -4
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +6 -2
- package/src/View/Components/Selectors/FieldSelector.d.ts +13 -0
- package/src/View/Components/Selectors/FieldSelector.js +26 -0
- package/src/View/Components/Selectors/PermittedValuesSelector.js +8 -4
- package/src/View/Export/Wizard/ReportRowsWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +1 -1
- package/src/View/GridFilter/GridFilterExpressionEditor.js +1 -1
- package/src/View/Layout/Wizard/sections/GridFilterSection.js +4 -2
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +7 -1
- package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -1
- package/src/View/Wizard/OnePageAdaptableWizard.js +3 -2
- package/src/agGrid/AdaptableAgGrid.d.ts +1 -2
- package/src/agGrid/AdaptableAgGrid.js +63 -32
- package/src/agGrid/AgGridColumnAdapter.d.ts +3 -0
- package/src/agGrid/AgGridColumnAdapter.js +24 -1
- package/src/agGrid/AgGridMenuAdapter.js +1 -1
- package/src/agGrid/editors/AdaptableDateEditor/InternalAdaptableDateEditor.d.ts +0 -1
- package/src/agGrid/editors/AdaptableDateEditor/InternalAdaptableDateEditor.js +0 -2
- package/src/agGrid/editors/AdaptableDateEditor/index.d.ts +4 -16
- package/src/agGrid/editors/AdaptableDateEditor/index.js +6 -19
- package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +6 -1
- package/src/agGrid/editors/AdaptableNumberEditor/index.d.ts +4 -3
- package/src/agGrid/editors/AdaptableNumberEditor/index.js +6 -2
- package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.d.ts +23 -0
- package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +84 -0
- package/src/agGrid/editors/AdaptablePercentageEditor/index.d.ts +47 -0
- package/src/agGrid/editors/AdaptablePercentageEditor/index.js +153 -0
- package/src/components/Accordion.js +1 -1
- package/src/components/Datepicker/DatepickerContext.d.ts +0 -2
- package/src/components/Datepicker/index.js +3 -4
- package/src/components/ExpressionEditor/DataTableEditor.d.ts +17 -0
- package/src/components/ExpressionEditor/DataTableEditor.js +68 -0
- package/src/components/ExpressionEditor/EditorInput.js +21 -8
- package/src/components/ExpressionEditor/NamedQueryEditor.d.ts +5 -0
- package/src/components/ExpressionEditor/NamedQueryEditor.js +35 -0
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.d.ts +10 -0
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.js +7 -4
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +3 -2
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +72 -14
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +27 -19
- package/src/components/ExpressionEditor/QueryBuilder/utils.d.ts +9 -1
- package/src/components/ExpressionEditor/QueryBuilder/utils.js +46 -4
- package/src/components/ExpressionEditor/index.d.ts +3 -1
- package/src/components/ExpressionEditor/index.js +67 -92
- package/src/components/Input/NumberInput.d.ts +2 -1
- package/src/components/Input/NumberInput.js +6 -5
- package/src/components/OverlayTrigger/index.js +10 -6
- package/src/components/icons/column-outline.d.ts +3 -0
- package/src/components/icons/column-outline.js +7 -0
- package/src/components/icons/index.js +5 -1
- package/src/components/icons/sync.d.ts +3 -0
- package/src/components/icons/sync.js +7 -0
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.d.ts +78 -200
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/parser/src/predicate/mapExpressionToQlPredicate.d.ts +1 -0
- package/src/parser/src/predicate/mapExpressionToQlPredicate.js +13 -3
- package/src/parser/src/predicate/mapQlPredicateToExpression.js +4 -1
- package/src/parser/src/types.d.ts +101 -1
- package/src/types.d.ts +9 -7
- package/tsconfig.cjs.tsbuildinfo +1 -1
|
@@ -22,8 +22,8 @@ const Handle = (props) => (react_1.default.createElement(rebass_1.Flex, Object.a
|
|
|
22
22
|
const QueryPredicateButtons = (props) => {
|
|
23
23
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
24
24
|
!props.hideAdd && (react_1.default.createElement(DropdownButton_1.default, { listMinWidth: 150, columns: ['label'], items: [
|
|
25
|
-
{ label: '
|
|
26
|
-
{ label: '
|
|
25
|
+
{ label: 'Condition', onClick: () => props.onNewPredicate('filter') },
|
|
26
|
+
{ label: 'AND / OR Group', onClick: () => props.onNewPredicate('group') },
|
|
27
27
|
], variant: "text" },
|
|
28
28
|
react_1.default.createElement(icons_1.Icon, { name: "plus" }))),
|
|
29
29
|
!props.hideDelete && (react_1.default.createElement(SimpleButton_1.default, { icon: "delete", variant: "text", onClick: () => {
|
|
@@ -100,22 +100,31 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
100
100
|
var _a;
|
|
101
101
|
// [handle] [column] [operator-dropdown] [...args] [delete-button] [plus-button]
|
|
102
102
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
103
|
-
const [
|
|
104
|
-
const
|
|
105
|
-
let
|
|
106
|
-
let
|
|
103
|
+
const [columnOrFieldExpression, ...restOfArgs] = props.predicate.args;
|
|
104
|
+
const columnOrField = columnOrFieldExpression;
|
|
105
|
+
let columnOrFieldId = null;
|
|
106
|
+
let columnOrFieldDataType = null;
|
|
107
107
|
let columnInputDataType = null;
|
|
108
108
|
let functionInputInputDataTypes = null;
|
|
109
109
|
// Thsese are the type of inputs ommiting the column
|
|
110
110
|
// [[column-data-type], number, number]
|
|
111
111
|
let restOfFunctionInputDataTypes = [];
|
|
112
|
-
if (
|
|
113
|
-
if (
|
|
114
|
-
return react_1.default.createElement(ErrorBox_1.default, null, "Expression must start with a column!");
|
|
112
|
+
if (columnOrField) {
|
|
113
|
+
if (!(0, predicate_1.isArgumentColumnOrField)(columnOrField)) {
|
|
114
|
+
return react_1.default.createElement(ErrorBox_1.default, null, "Expression must start with a column or a filed!");
|
|
115
115
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
if (columnOrField.includes('FIELD')) {
|
|
117
|
+
// we let the full expression so we can difirienciate between column and field
|
|
118
|
+
columnOrFieldId = columnOrField;
|
|
119
|
+
const fieldValue = (0, utils_1.mapExpressionToFieldValue)(columnOrField);
|
|
120
|
+
columnOrFieldDataType = adaptable.api.expressionApi.internalApi.getFieldType(fieldValue);
|
|
121
|
+
}
|
|
122
|
+
else if (columnOrField.includes('[')) {
|
|
123
|
+
columnOrFieldId = columnOrField;
|
|
124
|
+
const columnId = columnOrField.replace(/[\[\]]/g, '');
|
|
125
|
+
columnOrFieldDataType = adaptable.api.columnApi.getColumnDataTypeForColumnId(columnId);
|
|
126
|
+
}
|
|
127
|
+
columnInputDataType = (0, adaptableQlUtils_1.mapColumnDataTypeToExpressionFunctionType)(columnOrFieldDataType);
|
|
119
128
|
functionInputInputDataTypes = (_a = booleanExpressionFunctions_1.booleanExpressionFunctions[props.predicate.operator]) === null || _a === void 0 ? void 0 : _a.inputs;
|
|
120
129
|
restOfFunctionInputDataTypes = functionInputInputDataTypes
|
|
121
130
|
? (0, utils_1.getOperatorMatchingInputs)(columnInputDataType, functionInputInputDataTypes)
|
|
@@ -132,12 +141,12 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
132
141
|
react_1.default.createElement(Handle, Object.assign({}, provided.dragHandleProps)),
|
|
133
142
|
react_1.default.createElement(rebass_1.Flex, { alignItems: "center", height: ITEM_HEIGHT },
|
|
134
143
|
react_1.default.createElement(rebass_1.Box, { mr: 2 },
|
|
135
|
-
react_1.default.createElement(QueryBuilderInputs_1.
|
|
136
|
-
props.onChange(Object.assign(Object.assign({}, props.predicate), { args: [
|
|
137
|
-
},
|
|
138
|
-
|
|
144
|
+
react_1.default.createElement(QueryBuilderInputs_1.PrimitiveColumnOrFieldSelector, { onChange: (colOrField) => {
|
|
145
|
+
props.onChange(Object.assign(Object.assign({}, props.predicate), { args: [colOrField], operator: null }));
|
|
146
|
+
}, fieldOrColumn: columnOrFieldId })),
|
|
147
|
+
columnOrFieldId && columnOrFieldDataType && (react_1.default.createElement(QueryBuilderInputs_1.ExpressionSelector, { dataType: columnOrFieldDataType, onExpressionChange: (operator) => {
|
|
139
148
|
let args = [props.predicate.args[0]];
|
|
140
|
-
if (
|
|
149
|
+
if (columnOrFieldDataType === 'Boolean' && operator !== 'NOT') {
|
|
141
150
|
args = [props.predicate.args[0], 'TRUE'];
|
|
142
151
|
}
|
|
143
152
|
props.onChange(Object.assign(Object.assign({}, props.predicate), { operator,
|
|
@@ -146,10 +155,9 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
146
155
|
}, value: props.predicate.operator })),
|
|
147
156
|
react_1.default.createElement(rebass_1.Flex, { flex: 1, ml: 2 }, restOfFunctionInputDataTypes.map((type, index) => {
|
|
148
157
|
var _a;
|
|
149
|
-
let value = restOfArgs[index];
|
|
150
158
|
const commonProps = {
|
|
151
159
|
key: type + index,
|
|
152
|
-
lefthandColumnIdParam:
|
|
160
|
+
lefthandColumnIdParam: columnOrFieldId,
|
|
153
161
|
inputType: type,
|
|
154
162
|
};
|
|
155
163
|
if (type.includes('[]')) {
|
|
@@ -5,4 +5,12 @@ export declare const reorder: (predicate: QlPredicate, from: string, to: string)
|
|
|
5
5
|
export declare const mapExpressionFunctionTypeToColumnDataType: (type: ExpressionFunctionInputType) => AdaptableColumnDataType;
|
|
6
6
|
export declare const getOperatorMatchingInputs: (columnType: ExpressionFunctionInputType, inputs: ExpressionFunctionInputType[] | Array<ExpressionFunctionInputType>[]) => ExpressionFunctionInputType[];
|
|
7
7
|
export declare const getFunctionsForColumnType: (dataType: AdaptableColumnDataType, availableBooleanFunctions: BooleanFunctionName[]) => BooleanFunctionName[];
|
|
8
|
-
export declare const getUnsuportedExpressionFromQlPredicate: (predicate: QlPredicate | QlPredicateError
|
|
8
|
+
export declare const getUnsuportedExpressionFromQlPredicate: (predicate: QlPredicate | QlPredicateError, context: {
|
|
9
|
+
supportedFields: {
|
|
10
|
+
value: string;
|
|
11
|
+
}[];
|
|
12
|
+
}) => string;
|
|
13
|
+
export declare const mapFieldValueToExpression: (field: string) => string;
|
|
14
|
+
export declare const mapExpressionToFieldValue: (expression: string) => string;
|
|
15
|
+
export declare const mapColumnExpressionToColumnId: (expression: string) => string;
|
|
16
|
+
export declare const isFieldValue: (expression: string) => boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUnsuportedExpressionFromQlPredicate = exports.getFunctionsForColumnType = exports.getOperatorMatchingInputs = exports.mapExpressionFunctionTypeToColumnDataType = exports.reorder = void 0;
|
|
3
|
+
exports.isFieldValue = exports.mapColumnExpressionToColumnId = exports.mapExpressionToFieldValue = exports.mapFieldValueToExpression = exports.getUnsuportedExpressionFromQlPredicate = exports.getFunctionsForColumnType = exports.getOperatorMatchingInputs = exports.mapExpressionFunctionTypeToColumnDataType = exports.reorder = void 0;
|
|
4
4
|
const adaptableQlUtils_1 = require("../../../Utilities/adaptableQlUtils");
|
|
5
5
|
const predicate_1 = require("../../../parser/src/predicate");
|
|
6
6
|
const booleanExpressionFunctions_1 = require("../../../Utilities/ExpressionFunctions/booleanExpressionFunctions");
|
|
@@ -50,7 +50,7 @@ exports.mapExpressionFunctionTypeToColumnDataType = mapExpressionFunctionTypeToC
|
|
|
50
50
|
const getOperatorMatchingInputs = (columnType, inputs) => {
|
|
51
51
|
if (Array.isArray(inputs[0])) {
|
|
52
52
|
const matchingInput = inputs.find((input) => input[0] === columnType);
|
|
53
|
-
const [_, ...restOfArgs] = matchingInput;
|
|
53
|
+
const [_, ...restOfArgs] = matchingInput !== null && matchingInput !== void 0 ? matchingInput : [];
|
|
54
54
|
return restOfArgs;
|
|
55
55
|
}
|
|
56
56
|
const [_, ...restOfArgs] = inputs;
|
|
@@ -76,10 +76,20 @@ const getFunctionsForColumnType = (dataType, availableBooleanFunctions) => {
|
|
|
76
76
|
});
|
|
77
77
|
};
|
|
78
78
|
exports.getFunctionsForColumnType = getFunctionsForColumnType;
|
|
79
|
-
const getUnsuportedExpressionFromQlPredicate = (predicate) => {
|
|
79
|
+
const getUnsuportedExpressionFromQlPredicate = (predicate, context) => {
|
|
80
|
+
var _a;
|
|
80
81
|
if (!predicate) {
|
|
81
82
|
return null;
|
|
82
83
|
}
|
|
84
|
+
if (typeof predicate === 'string' && (0, exports.isFieldValue)(predicate)) {
|
|
85
|
+
const field = (0, exports.mapExpressionToFieldValue)(predicate);
|
|
86
|
+
if (!((_a = context.supportedFields) === null || _a === void 0 ? void 0 : _a.some((field) => (field === null || field === void 0 ? void 0 : field.value) === (0, exports.mapExpressionToFieldValue)(predicate)))) {
|
|
87
|
+
return `Expression uses an unregistered field: "${field}"`;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
83
93
|
if (typeof predicate === 'object' && 'errorMessage' in predicate) {
|
|
84
94
|
return null;
|
|
85
95
|
}
|
|
@@ -95,7 +105,7 @@ const getUnsuportedExpressionFromQlPredicate = (predicate) => {
|
|
|
95
105
|
}
|
|
96
106
|
let firstInvalidArg = null;
|
|
97
107
|
for (let arg of predicate.args) {
|
|
98
|
-
firstInvalidArg = (0, exports.getUnsuportedExpressionFromQlPredicate)(arg);
|
|
108
|
+
firstInvalidArg = (0, exports.getUnsuportedExpressionFromQlPredicate)(arg, context);
|
|
99
109
|
if (firstInvalidArg) {
|
|
100
110
|
break;
|
|
101
111
|
}
|
|
@@ -106,3 +116,35 @@ const getUnsuportedExpressionFromQlPredicate = (predicate) => {
|
|
|
106
116
|
return null;
|
|
107
117
|
};
|
|
108
118
|
exports.getUnsuportedExpressionFromQlPredicate = getUnsuportedExpressionFromQlPredicate;
|
|
119
|
+
const mapFieldValueToExpression = (field) => `FIELD('${field}')`;
|
|
120
|
+
exports.mapFieldValueToExpression = mapFieldValueToExpression;
|
|
121
|
+
const mapExpressionToFieldValue = (expression) => {
|
|
122
|
+
var _a;
|
|
123
|
+
if (!expression) {
|
|
124
|
+
return '';
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
return (_a = expression.match(/FIELD\(['"](.+)['"]\)/)) === null || _a === void 0 ? void 0 : _a[1];
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
return '';
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
exports.mapExpressionToFieldValue = mapExpressionToFieldValue;
|
|
134
|
+
const mapColumnExpressionToColumnId = (expression) => {
|
|
135
|
+
var _a;
|
|
136
|
+
if (!expression) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
return (_a = expression.match(/\[(.+)\]/)) === null || _a === void 0 ? void 0 : _a[1];
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
return expression;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
exports.mapColumnExpressionToColumnId = mapColumnExpressionToColumnId;
|
|
147
|
+
const isFieldValue = (expression) => {
|
|
148
|
+
return typeof expression === 'string' && expression.includes('FIELD');
|
|
149
|
+
};
|
|
150
|
+
exports.isFieldValue = isFieldValue;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { AdaptableApi, AdaptableColumn, AdaptableModule, NamedQuery } from '../../types';
|
|
2
|
+
import { AdaptableApi, AdaptableColumn, AdaptableField, AdaptableModule, NamedQuery } from '../../types';
|
|
3
3
|
export type ExpressionEditorType = 'boolean' | 'scalar' | 'observable' | 'aggregatedBoolean' | 'aggregatedScalar' | 'cumulativeAggregatedScalar' | 'quantileAggregatedScalar';
|
|
4
4
|
interface ExpressionEditorProps {
|
|
5
5
|
value: string;
|
|
@@ -10,6 +10,7 @@ interface ExpressionEditorProps {
|
|
|
10
10
|
[key: string]: any;
|
|
11
11
|
};
|
|
12
12
|
columns: AdaptableColumn[];
|
|
13
|
+
fields?: AdaptableField[];
|
|
13
14
|
namedQueries: NamedQuery[];
|
|
14
15
|
allowSaveNamedQuery?: boolean;
|
|
15
16
|
style?: React.CSSProperties;
|
|
@@ -18,5 +19,6 @@ interface ExpressionEditorProps {
|
|
|
18
19
|
showQueryBuilder?: boolean;
|
|
19
20
|
showExpressionEditor?: boolean;
|
|
20
21
|
}
|
|
22
|
+
export declare const baseClassName = "ab-ExpressionEditor";
|
|
21
23
|
export declare function ExpressionEditor(props: ExpressionEditorProps): JSX.Element;
|
|
22
24
|
export {};
|
|
@@ -1,40 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExpressionEditor = void 0;
|
|
3
|
+
exports.ExpressionEditor = exports.baseClassName = 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 rebass_1 = require("rebass");
|
|
8
|
-
const CheckBox_1 = require("../CheckBox");
|
|
9
|
-
const FormLayout_1 = tslib_1.__importStar(require("../FormLayout"));
|
|
10
|
-
const HelpBlock_1 = tslib_1.__importDefault(require("../HelpBlock"));
|
|
11
|
-
const Input_1 = tslib_1.__importDefault(require("../Input"));
|
|
12
|
-
const EditorButton_1 = tslib_1.__importDefault(require("./EditorButton"));
|
|
13
|
-
const AdaptableInput_1 = tslib_1.__importDefault(require("../../View/Components/AdaptableInput"));
|
|
14
|
-
const Radio_1 = tslib_1.__importDefault(require("../Radio"));
|
|
15
|
-
const ArrayExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/ArrayExtensions"));
|
|
16
|
-
const EditorInputWithWhereClause_1 = tslib_1.__importDefault(require("./EditorInputWithWhereClause"));
|
|
17
|
-
const EditorInput_1 = tslib_1.__importDefault(require("./EditorInput"));
|
|
18
|
-
const EditorContext_1 = require("./EditorContext");
|
|
19
|
-
const ExpressionFunctionDocumentation_1 = require("./ExpressionFunctionDocumentation");
|
|
20
8
|
const DocumentationLinkConstants_1 = require("../../Utilities/Constants/DocumentationLinkConstants");
|
|
9
|
+
const ModuleConstants_1 = require("../../Utilities/Constants/ModuleConstants");
|
|
10
|
+
const ArrayExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/ArrayExtensions"));
|
|
21
11
|
const StringExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/StringExtensions"));
|
|
12
|
+
const AdaptableInput_1 = tslib_1.__importDefault(require("../../View/Components/AdaptableInput"));
|
|
22
13
|
const ButtonInfo_1 = require("../../View/Components/Buttons/ButtonInfo");
|
|
14
|
+
const CheckBox_1 = require("../CheckBox");
|
|
23
15
|
const CodeBlock_1 = require("../CodeBlock");
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const DateHelper_1 = require("../../Utilities/Helpers/DateHelper");
|
|
27
|
-
const AdaptableFormControlTextClear_1 = require("../../View/Components/Forms/AdaptableFormControlTextClear");
|
|
16
|
+
const HelpBlock_1 = tslib_1.__importDefault(require("../HelpBlock"));
|
|
17
|
+
const Panel_1 = tslib_1.__importDefault(require("../Panel"));
|
|
28
18
|
const Tabs_1 = require("../Tabs");
|
|
19
|
+
const DataTableEditor_1 = require("./DataTableEditor");
|
|
20
|
+
const EditorContext_1 = require("./EditorContext");
|
|
21
|
+
const EditorInput_1 = tslib_1.__importDefault(require("./EditorInput"));
|
|
22
|
+
const EditorInputWithWhereClause_1 = tslib_1.__importDefault(require("./EditorInputWithWhereClause"));
|
|
23
|
+
const ExpressionFunctionDocumentation_1 = require("./ExpressionFunctionDocumentation");
|
|
24
|
+
const NamedQueryContext_1 = require("./NamedQueryContext");
|
|
25
|
+
const NamedQueryEditor_1 = require("./NamedQueryEditor");
|
|
29
26
|
const QueryBuilder_1 = require("./QueryBuilder");
|
|
27
|
+
exports.baseClassName = `ab-ExpressionEditor`;
|
|
30
28
|
function ExpressionEditor(props) {
|
|
31
29
|
var _a, _b, _c;
|
|
32
30
|
const { type, module } = props;
|
|
33
|
-
const [data, setData] = (0, react_1.useState)(props.initialData);
|
|
34
|
-
const [showColumnIds, setShowColumnIds] = (0, react_1.useState)(false);
|
|
35
|
-
const [inlineQuery, setInlineQuery] = (0, react_1.useState)(false);
|
|
36
|
-
const [showNamedQueries, setShowNamedQueries] = (0, react_1.useState)(false);
|
|
37
|
-
const baseClassName = `ab-ExpressionEditor`;
|
|
38
31
|
const [selectedFunction, setSelectedFunction] = (0, react_1.useState)(null);
|
|
39
32
|
const [expressionText, setExpressionText] = (0, react_1.useState)(props.value);
|
|
40
33
|
const { namedQuery, setNamedQuery } = (0, NamedQueryContext_1.useNamedQueryContext)();
|
|
@@ -43,80 +36,20 @@ function ExpressionEditor(props) {
|
|
|
43
36
|
const editorInput = type === 'observable' || type === 'aggregatedBoolean' ? (React.createElement(EditorInputWithWhereClause_1.default, { type: type, module: module, value: props.value, onChange: (value) => {
|
|
44
37
|
setExpressionText(value);
|
|
45
38
|
props.onChange(value);
|
|
46
|
-
}, testData:
|
|
39
|
+
}, testData: props.initialData, api: props.api })) : (
|
|
47
40
|
// 'boolean','scalar','aggregatedScalar'/'cumulativeAggregatedScalar'/'quantileAggregatedScalar'
|
|
48
41
|
(React.createElement(
|
|
49
42
|
EditorInput_1.default,
|
|
50
43
|
{ type: type, module: module, value: props.value, onChange: (value) => {
|
|
51
44
|
setExpressionText(value);
|
|
52
45
|
props.onChange(value);
|
|
53
|
-
}, testData:
|
|
46
|
+
}, testData: props.initialData, isFullExpression: props.isFullExpression, api: props.api }
|
|
54
47
|
)));
|
|
48
|
+
const adaptableFields = props.api.expressionApi.internalApi.getAvailableFields();
|
|
55
49
|
// currently only boolean and scalar expressions support nested calculated columns (calc cols which reference other calc cols)
|
|
56
50
|
const queryableColumns = type === 'scalar' || type === 'boolean' || type === 'aggregatedScalar'
|
|
57
51
|
? props.columns
|
|
58
52
|
: props.columns.filter((c) => !props.api.columnApi.isCalculatedColumn(c.columnId));
|
|
59
|
-
const getColValue = (column) => {
|
|
60
|
-
var _a;
|
|
61
|
-
return props.api.internalApi.getValueUsingField(data, (_a = column.field) !== null && _a !== void 0 ? _a : column.columnId);
|
|
62
|
-
};
|
|
63
|
-
const updateColValue = (rowData, column, newValue) => {
|
|
64
|
-
var _a;
|
|
65
|
-
const updatedRowData = props.api.internalApi.setValueUsingField(rowData, (_a = column.field) !== null && _a !== void 0 ? _a : column.columnId, newValue);
|
|
66
|
-
return Object.assign({}, updatedRowData);
|
|
67
|
-
};
|
|
68
|
-
const getColDateValue = (column) => {
|
|
69
|
-
const colValue = getColValue(column);
|
|
70
|
-
return colValue && (0, DateHelper_1.isValueValidDate)(colValue)
|
|
71
|
-
? new Date(colValue).toISOString().substr(0, 10)
|
|
72
|
-
: '';
|
|
73
|
-
};
|
|
74
|
-
const [searchInputValue, setSearchInputValue] = React.useState('');
|
|
75
|
-
const dataTableEditor = (React.createElement(React.Fragment, null,
|
|
76
|
-
React.createElement(rebass_1.Flex, { className: `${baseClassName}__columns-list`, flexDirection: "column", alignItems: "start", style: { marginTop: 2 } },
|
|
77
|
-
React.createElement(CheckBox_1.CheckBox, { checked: showColumnIds, onChange: (checked) => setShowColumnIds(checked), style: {
|
|
78
|
-
float: 'right',
|
|
79
|
-
margin: 0,
|
|
80
|
-
paddingTop: 'var(--ab-space-1)',
|
|
81
|
-
paddingBottom: 'var(--ab-space-1)',
|
|
82
|
-
} }, 'Show Column IDs'),
|
|
83
|
-
React.createElement(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { value: searchInputValue, OnTextChange: setSearchInputValue, placeholder: "Filter columns...", style: { flex: 1, marginBottom: 3 } })),
|
|
84
|
-
React.createElement(FormLayout_1.default, { className: "ab-ExpressionEditor__columns", gridColumnGap: "var(--ab-space-1)", gridRowGap: "var(--ab-space-1)", sizes: ['auto', '100px'], style: { alignItems: 'stretch' } }, queryableColumns
|
|
85
|
-
.filter((column) => {
|
|
86
|
-
if (!searchInputValue) {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
return (column.columnId.includes(searchInputValue) ||
|
|
90
|
-
column.friendlyName.includes(searchInputValue));
|
|
91
|
-
})
|
|
92
|
-
.map((column) => (React.createElement(FormLayout_1.FormRow, { key: column.columnId, label: React.createElement(EditorButton_1.default, { width: "100%", height: "100%", style: {
|
|
93
|
-
background: 'var(--ab-color-primary)',
|
|
94
|
-
cursor: 'grab',
|
|
95
|
-
marginRight: 'var(--ab-space-1)',
|
|
96
|
-
}, data: `[${column.columnId}]`, "data-name": "column", icon: "drag" },
|
|
97
|
-
React.createElement(rebass_1.Flex, { flexDirection: "column", alignItems: "start" }, showColumnIds ? `[${column.columnId}]` : column.friendlyName)) }, column.dataType === 'Number' ? (React.createElement(Input_1.default, { type: "number", "data-name": "column-input", "data-value": column.columnId, value: getColValue(column), onChange: (e) => setData(updateColValue(data, column, Number(e.target.value))), width: "100%", disabled: column.readOnly })) : column.dataType === 'String' ? (React.createElement(Input_1.default, { type: "text", "data-name": "column-input", "data-value": column.columnId, value: getColValue(column), onChange: (e) => setData(updateColValue(data, column, e.target.value)), width: "100%", disabled: column.readOnly })) : column.dataType === 'Date' ? (React.createElement(AdaptableInput_1.default, { type: "date", "data-name": "column-input", "data-value": column.columnId, value: getColDateValue(column), onChange: (e) => {
|
|
98
|
-
setData(updateColValue(data, column, new Date(e.target.value)));
|
|
99
|
-
}, 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))))));
|
|
100
|
-
const namedQueries = (React.createElement(rebass_1.Flex, { flexDirection: "column", alignItems: "start", style: { marginTop: 2 } },
|
|
101
|
-
React.createElement(CheckBox_1.CheckBox, { checked: showColumnIds, onChange: (checked) => setShowColumnIds(checked) }, "Show Column IDs"),
|
|
102
|
-
React.createElement(CheckBox_1.CheckBox, { checked: inlineQuery, onChange: (checked) => setInlineQuery(checked) }, "Inline Query"),
|
|
103
|
-
props.namedQueries.map((namedQuery) => (React.createElement(rebass_1.Flex, { key: namedQuery.Uuid, flexDirection: "column", alignItems: "start", style: {
|
|
104
|
-
padding: 3,
|
|
105
|
-
marginTop: 'var(--ab-space-2)',
|
|
106
|
-
marginBottom: 'var(--ab-space-2)',
|
|
107
|
-
width: '100%',
|
|
108
|
-
}, backgroundColor: "primarylight" },
|
|
109
|
-
' ',
|
|
110
|
-
React.createElement(EditorButton_1.default, { width: "100%", height: "100%", style: {
|
|
111
|
-
background: 'var(--ab-color-primary)',
|
|
112
|
-
cursor: 'grab',
|
|
113
|
-
}, data: inlineQuery ? namedQuery.BooleanExpression : `QUERY("${namedQuery.Name}")`, "data-name": "column", icon: "drag" },
|
|
114
|
-
React.createElement(rebass_1.Flex, { flexDirection: "column", alignItems: "start" }, namedQuery.Name)),
|
|
115
|
-
React.createElement(rebass_1.Flex, { alignItems: "start", style: {
|
|
116
|
-
padding: 5,
|
|
117
|
-
} }, showColumnIds
|
|
118
|
-
? namedQuery.BooleanExpression
|
|
119
|
-
: props.api.expressionApi.getAdaptableQueryExpressionWithColumnFriendlyNames(namedQuery)))))));
|
|
120
53
|
const showDocumentationLinks = props.api.internalApi.isDocumentationLinksDisplayed();
|
|
121
54
|
// @Bogdan i did this to be sure but i think we can get rid of this as the button does the same (and better IMO)
|
|
122
55
|
const showNamedQueryStuff = false;
|
|
@@ -144,7 +77,7 @@ function ExpressionEditor(props) {
|
|
|
144
77
|
BooleanExpression: expressionText,
|
|
145
78
|
});
|
|
146
79
|
} })) : null));
|
|
147
|
-
const editorElement = (React.createElement(rebass_1.Flex, { className: baseClassName, flex: 1, "data-name": "expression-editor-wrapper", pl: 2, style: props.style },
|
|
80
|
+
const editorElement = (React.createElement(rebass_1.Flex, { className: exports.baseClassName, flex: 1, "data-name": "expression-editor-wrapper", pl: 2, style: props.style },
|
|
148
81
|
React.createElement(rebass_1.Flex, { flex: 1, style: { minHeight: 0 }, flexDirection: "column", onFocus: (event) => {
|
|
149
82
|
if (event.target.tagName === 'TEXTAREA') {
|
|
150
83
|
textAreaRef.current = event.target;
|
|
@@ -163,14 +96,56 @@ function ExpressionEditor(props) {
|
|
|
163
96
|
" Query documentation for more details and examples")),
|
|
164
97
|
React.createElement(rebass_1.Box, { flex: 1 }),
|
|
165
98
|
showNamedQueryStuff && saveAsNamedQueryElement),
|
|
166
|
-
React.createElement(rebass_1.Box, { className: `${baseClassName}
|
|
167
|
-
|
|
168
|
-
React.createElement(
|
|
169
|
-
|
|
170
|
-
|
|
99
|
+
React.createElement(rebass_1.Box, { className: `${exports.baseClassName}__sidebar`, "data-name": "expression-sidebar", pb: 2, paddingLeft: 2, pr: 2 },
|
|
100
|
+
React.createElement(Panel_1.default, { bodyProps: { style: { height: '100%' } }, style: { height: '100%' } },
|
|
101
|
+
React.createElement(Tabs_1.Tabs, { style: { height: '100%' }, variant: "" },
|
|
102
|
+
React.createElement(Tabs_1.Tabs.Tab, { value: "column" }, "Columns"),
|
|
103
|
+
React.createElement(Tabs_1.Tabs.Tab, { value: "field" }, "Fields"),
|
|
104
|
+
React.createElement(Tabs_1.Tabs.Tab, { value: "named-query" }, "Named Queries"),
|
|
105
|
+
React.createElement(Tabs_1.Tabs.Content, { flex: 1, style: { height: '100%' } },
|
|
106
|
+
React.createElement(DataTableEditor_1.DataTableEditor, { type: "column", dataFormatter: (value) => `[${value}]`, fields: queryableColumns.map((column) => ({
|
|
107
|
+
label: column.friendlyName,
|
|
108
|
+
value: column.columnId,
|
|
109
|
+
dataType: column.dataType,
|
|
110
|
+
readOnly: column.readOnly,
|
|
111
|
+
})), data: props.initialData })),
|
|
112
|
+
React.createElement(Tabs_1.Tabs.Content, null, adaptableFields && adaptableFields.length > 0 ? (React.createElement(DataTableEditor_1.DataTableEditor, { type: "field", labels: {
|
|
113
|
+
showIds: 'Show Field path',
|
|
114
|
+
filterPlaceholder: 'Filter fields...',
|
|
115
|
+
}, dataFormatter: (value) => `FIELD("${value}")`, data: props.initialData, fields: adaptableFields === null || adaptableFields === void 0 ? void 0 : adaptableFields.map((field) => ({
|
|
116
|
+
label: field.label,
|
|
117
|
+
value: field.name,
|
|
118
|
+
dataType: field.dataType,
|
|
119
|
+
readOnly: true,
|
|
120
|
+
})) })) : (React.createElement(rebass_1.Text, { p: 2 }, "No Data Fields provided"))),
|
|
121
|
+
React.createElement(Tabs_1.Tabs.Content, null, ArrayExtensions_1.default.IsNullOrEmpty(props.namedQueries) ? (React.createElement("div", null,
|
|
122
|
+
React.createElement(rebass_1.Text, { p: 2 }, "No Named Queries defined"),
|
|
123
|
+
React.createElement(rebass_1.Text, { fontSize: 2, padding: 2, p: 2 },
|
|
124
|
+
"Named Queries are saved Expressions which can be referenced in other Expressions using the ",
|
|
125
|
+
React.createElement("i", null, "QUERY"),
|
|
126
|
+
" keyword",
|
|
127
|
+
' '))) : (React.createElement(NamedQueryEditor_1.NamedQueryEditor, { namedQueries: props.namedQueries }))))))))));
|
|
171
128
|
const queryBuilderElement = (React.createElement(QueryBuilder_1.QueryBuilder, { module: module, query: expressionText, onChange: (query) => {
|
|
172
129
|
setExpressionText(query);
|
|
173
130
|
props.onChange(query);
|
|
131
|
+
}, getFields: (type) => {
|
|
132
|
+
return props.fields
|
|
133
|
+
.filter((field) => {
|
|
134
|
+
if (!type) {
|
|
135
|
+
return (field.dataType === 'String' ||
|
|
136
|
+
field.dataType === 'Number' ||
|
|
137
|
+
field.dataType === 'Boolean' ||
|
|
138
|
+
field.dataType === 'Date');
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
return field.dataType === type;
|
|
142
|
+
}
|
|
143
|
+
})
|
|
144
|
+
.map((field) => ({
|
|
145
|
+
value: field.name,
|
|
146
|
+
label: field.label,
|
|
147
|
+
type: field.dataType,
|
|
148
|
+
}));
|
|
174
149
|
}, getColumns: (type) => {
|
|
175
150
|
return props.columns
|
|
176
151
|
.filter((column) => {
|
|
@@ -202,7 +177,7 @@ function ExpressionEditor(props) {
|
|
|
202
177
|
} }, (() => {
|
|
203
178
|
switch (true) {
|
|
204
179
|
case showQueryBuilder && showExpressionEditor:
|
|
205
|
-
return (React.createElement(Tabs_1.Tabs, { mb: 2, p: 2, minHeight: 0, flex: 1 },
|
|
180
|
+
return (React.createElement(Tabs_1.Tabs, { "data-name": "editor-selector-tabs", mb: 2, p: 2, minHeight: 0, flex: 1 },
|
|
206
181
|
React.createElement(Tabs_1.Tabs.Tab, { value: "editor" }, "Expression Editor"),
|
|
207
182
|
React.createElement(Tabs_1.Tabs.Tab, { value: "ui" }, "Query Builder"),
|
|
208
183
|
React.createElement(Tabs_1.Tabs.Content, null, editorElement),
|
|
@@ -2,9 +2,10 @@ import * as React from 'react';
|
|
|
2
2
|
import { InputProps } from './index';
|
|
3
3
|
export type NumberInputProps = {
|
|
4
4
|
onChange: (value: number) => void;
|
|
5
|
+
noArrows?: boolean;
|
|
5
6
|
} & Omit<InputProps, 'onChange'>;
|
|
6
7
|
/**
|
|
7
8
|
* This component allows - and empty values as intermediery values
|
|
8
9
|
* it calls change only with valid numeric values
|
|
9
10
|
*/
|
|
10
|
-
export declare const NumberInput: React.
|
|
11
|
+
export declare const NumberInput: React.ForwardRefExoticComponent<Pick<NumberInputProps, "children" | "size" | "name" | "tabIndex" | "color" | "style" | "cite" | "data" | "form" | "label" | "p" | "slot" | "span" | "summary" | "title" | "pattern" | "start" | "hidden" | "content" | "default" | "flex" | "wrap" | "open" | "padding" | "multiple" | "disabled" | "checked" | "download" | "list" | "order" | "target" | "rows" | "src" | "className" | "onTransitionEnd" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEndCapture" | "opacity" | "value" | "step" | "sizes" | "variant" | "tx" | "as" | "css" | "key" | "m" | "margin" | "mt" | "marginTop" | "mr" | "marginRight" | "mb" | "marginBottom" | "ml" | "marginLeft" | "mx" | "marginX" | "my" | "marginY" | "pt" | "paddingTop" | "pr" | "paddingRight" | "pb" | "paddingBottom" | "pl" | "paddingLeft" | "px" | "paddingX" | "py" | "paddingY" | "width" | "height" | "minWidth" | "minHeight" | "maxWidth" | "maxHeight" | "display" | "verticalAlign" | "overflow" | "overflowX" | "overflowY" | "fontFamily" | "fontSize" | "fontWeight" | "lineHeight" | "letterSpacing" | "fontStyle" | "textAlign" | "bg" | "backgroundColor" | "alignItems" | "alignContent" | "justifyItems" | "justifyContent" | "flexWrap" | "flexDirection" | "flexGrow" | "flexShrink" | "flexBasis" | "justifySelf" | "alignSelf" | "sx" | "accept" | "acceptCharset" | "action" | "allowFullScreen" | "allowTransparency" | "alt" | "async" | "autoComplete" | "autoFocus" | "autoPlay" | "capture" | "cellPadding" | "cellSpacing" | "charSet" | "challenge" | "classID" | "cols" | "colSpan" | "controls" | "coords" | "crossOrigin" | "dateTime" | "defer" | "encType" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "frameBorder" | "headers" | "high" | "href" | "hrefLang" | "htmlFor" | "httpEquiv" | "integrity" | "keyParams" | "keyType" | "kind" | "loop" | "low" | "manifest" | "marginHeight" | "marginWidth" | "max" | "maxLength" | "media" | "mediaGroup" | "method" | "min" | "minLength" | "muted" | "nonce" | "noValidate" | "optimum" | "playsInline" | "poster" | "preload" | "readOnly" | "rel" | "required" | "reversed" | "rowSpan" | "sandbox" | "scope" | "scoped" | "scrolling" | "seamless" | "selected" | "shape" | "srcDoc" | "srcLang" | "srcSet" | "type" | "useMap" | "wmode" | "noArrows"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.NumberInput = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
|
-
const index_1 = tslib_1.
|
|
6
|
+
const index_1 = tslib_1.__importStar(require("./index"));
|
|
7
|
+
const join_1 = tslib_1.__importDefault(require("../utils/join"));
|
|
7
8
|
/**
|
|
8
9
|
* This component allows - and empty values as intermediery values
|
|
9
10
|
* it calls change only with valid numeric values
|
|
10
11
|
*/
|
|
11
|
-
|
|
12
|
+
exports.NumberInput = React.forwardRef((props, ref) => {
|
|
12
13
|
const [value, setValue] = React.useState(() => {
|
|
13
14
|
var _a;
|
|
14
15
|
// awlays controlled
|
|
@@ -41,6 +42,6 @@ const NumberInput = (props) => {
|
|
|
41
42
|
setValue(props.value);
|
|
42
43
|
}
|
|
43
44
|
}, [props.value, value]);
|
|
44
|
-
|
|
45
|
-
};
|
|
46
|
-
|
|
45
|
+
const { noArrows } = props, restOfProps = tslib_1.__rest(props, ["noArrows"]);
|
|
46
|
+
return (React.createElement(index_1.default, Object.assign({}, restOfProps, { ref: ref, className: (0, join_1.default)(noArrows ? `${index_1.baseClassName}--no-arrows` : '', props.className), value: value, onBlur: handleBlur, onChange: handleChange })));
|
|
47
|
+
});
|
|
@@ -66,6 +66,8 @@ const OverlayTrigger = React.forwardRef((givenProps, ref) => {
|
|
|
66
66
|
// overlay - target
|
|
67
67
|
['TopLeft', 'BottomLeft'],
|
|
68
68
|
['TopRight', 'BottomRight'],
|
|
69
|
+
['TopCenter', 'BottomCenter'],
|
|
70
|
+
['BottomCenter', 'TopCenter'],
|
|
69
71
|
['TopRight', 'BottomCenter'],
|
|
70
72
|
['TopRight', 'BottomLeft'],
|
|
71
73
|
['TopRight', 'BottomLeft'],
|
|
@@ -73,6 +75,11 @@ const OverlayTrigger = React.forwardRef((givenProps, ref) => {
|
|
|
73
75
|
['BottomRight', 'TopRight'],
|
|
74
76
|
['BottomRight', 'TopCenter'],
|
|
75
77
|
['BottomRight', 'TopLeft'],
|
|
78
|
+
['TopRight', 'CenterLeft'],
|
|
79
|
+
['TopRight', 'TopLeft'],
|
|
80
|
+
['TopLeft', 'TopRight'],
|
|
81
|
+
['CenterRight', 'CenterLeft'],
|
|
82
|
+
['CenterLeft', 'CenterRight'],
|
|
76
83
|
], constrainTo, target: targetProp } = props, domProps = tslib_1.__rest(props, ["visible", "showTriangle", "showEvent", "hideEvent", "render", "targetOffset", "preventPortalEventPropagation", "defaultZIndex", "anchor", "hideDelay", "opacityTransitionDuration", "onVisibleChange", "alignPosition", "constrainTo", "target"]);
|
|
77
84
|
const { showOverlay, clearAll: clearAllOverlays, hideOverlay, portal, } = (0, InfiniteTable_1.useOverlay)({
|
|
78
85
|
portalContainer: portalElement,
|
|
@@ -184,19 +191,16 @@ const OverlayTrigger = React.forwardRef((givenProps, ref) => {
|
|
|
184
191
|
hideOverlay('overlay-trigger');
|
|
185
192
|
}
|
|
186
193
|
} }), props.render({ targetWidth: targetWidth })));
|
|
187
|
-
let
|
|
194
|
+
let preparedConstrainTo;
|
|
188
195
|
if (constrainTo) {
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
preparedConstrinTo = adaptable === null || adaptable === void 0 ? void 0 : adaptable.getAgGridContainerElement();
|
|
196
|
+
preparedConstrainTo = (0, exports.getConstrainElement)(targetRef.current, constrainTo);
|
|
193
197
|
}
|
|
194
198
|
// show only if visible or if it was visible and now it is invisible
|
|
195
199
|
const alignToRect = (0, utils_1.getRect)(target, targetOffset !== null && targetOffset !== void 0 ? targetOffset : 0);
|
|
196
200
|
const showOverlayOptions = {
|
|
197
201
|
id: 'overlay-trigger',
|
|
198
202
|
alignPosition,
|
|
199
|
-
constrainTo: (_b = (_a =
|
|
203
|
+
constrainTo: (_b = (_a = preparedConstrainTo === null || preparedConstrainTo === void 0 ? void 0 : preparedConstrainTo.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(preparedConstrainTo)) !== null && _b !== void 0 ? _b : true,
|
|
200
204
|
alignTo: alignToRect,
|
|
201
205
|
};
|
|
202
206
|
showOverlay(() => overlayContent, showOverlayOptions);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const DefaultIcon_1 = tslib_1.__importDefault(require("./DefaultIcon"));
|
|
6
|
+
exports.default = (props) => (React.createElement(DefaultIcon_1.default, Object.assign({}, props, { viewBox: "0 -960 960 960" }),
|
|
7
|
+
React.createElement("path", { d: "M121-280v-400q0-33 23.5-56.5T201-760h559q33 0 56.5 23.5T840-680v400q0 33-23.5 56.5T760-200H201q-33 0-56.5-23.5T121-280Zm79 0h133v-400H200v400Zm213 0h133v-400H413v400Zm213 0h133v-400H626v400Z" })));
|
|
@@ -55,6 +55,7 @@ const column_chooser_1 = tslib_1.__importDefault(require("./column-chooser"));
|
|
|
55
55
|
const column_add_1 = tslib_1.__importDefault(require("./column-add"));
|
|
56
56
|
const cell_validation_1 = tslib_1.__importDefault(require("./cell-validation"));
|
|
57
57
|
const column_filter_1 = tslib_1.__importDefault(require("./column-filter"));
|
|
58
|
+
const column_outline_1 = tslib_1.__importDefault(require("./column-outline"));
|
|
58
59
|
const system_status_1 = tslib_1.__importDefault(require("./system-status"));
|
|
59
60
|
const data_set_1 = tslib_1.__importDefault(require("./data-set"));
|
|
60
61
|
const data_object_1 = tslib_1.__importDefault(require("./data-object"));
|
|
@@ -170,6 +171,7 @@ const select_fwd_1 = tslib_1.__importDefault(require("./select-fwd"));
|
|
|
170
171
|
const copy_1 = tslib_1.__importDefault(require("./copy"));
|
|
171
172
|
const expand_all_1 = tslib_1.__importDefault(require("./expand-all"));
|
|
172
173
|
const collapse_all_1 = tslib_1.__importDefault(require("./collapse-all"));
|
|
174
|
+
const sync_1 = tslib_1.__importDefault(require("./sync"));
|
|
173
175
|
const Icon_1 = require("../Icon");
|
|
174
176
|
const AdaptableLogger_1 = require("../../agGrid/AdaptableLogger");
|
|
175
177
|
exports.allIcons = {
|
|
@@ -191,7 +193,7 @@ exports.allIcons = {
|
|
|
191
193
|
news: news_1.default,
|
|
192
194
|
brush: brush_1.default,
|
|
193
195
|
'data-set': data_set_1.default,
|
|
194
|
-
|
|
196
|
+
excel: excel_1.default,
|
|
195
197
|
json: data_object_1.default,
|
|
196
198
|
export: export_1.default,
|
|
197
199
|
broadcast: campaign_1.default,
|
|
@@ -200,6 +202,7 @@ exports.allIcons = {
|
|
|
200
202
|
calendar: calendar_1.default,
|
|
201
203
|
chat: chat_1.default,
|
|
202
204
|
'filter-list': column_filter_1.default,
|
|
205
|
+
'column-outline': column_outline_1.default,
|
|
203
206
|
'grid-filter': grid_filter_1.default,
|
|
204
207
|
'grid-info': grid_info_1.default,
|
|
205
208
|
filter: filter_1.default,
|
|
@@ -340,6 +343,7 @@ exports.allIcons = {
|
|
|
340
343
|
rows: rows_1.default,
|
|
341
344
|
'expand-all': expand_all_1.default,
|
|
342
345
|
'collapse-all': collapse_all_1.default,
|
|
346
|
+
sync: sync_1.default,
|
|
343
347
|
};
|
|
344
348
|
Object.keys(exports.allIcons).forEach((name) => {
|
|
345
349
|
const ReactCmp = exports.allIcons[name];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const DefaultIcon_1 = tslib_1.__importDefault(require("./DefaultIcon"));
|
|
6
|
+
exports.default = (props) => (React.createElement(DefaultIcon_1.default, Object.assign({}, props, { viewBox: "0 -960 960 960" }),
|
|
7
|
+
React.createElement("path", { d: "M280-120 80-320l200-200 57 56-104 104h607v80H233l104 104-57 56Zm400-320-57-56 104-104H120v-80h607L623-784l57-56 200 200-200 200Z" })));
|
package/src/env.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = {
|
|
4
4
|
INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
|
|
5
|
-
PUBLISH_TIMESTAMP:
|
|
6
|
-
VERSION: "18.0.
|
|
5
|
+
PUBLISH_TIMESTAMP: 1716641902456 || Date.now(),
|
|
6
|
+
VERSION: "18.1.0-canary.0" || '--current-version--',
|
|
7
7
|
};
|