@adaptabletools/adaptable-cjs 22.0.10 → 22.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/index.css +33 -1
- package/index.css.map +1 -1
- package/package.json +3 -4
- package/src/AdaptableState/Common/AdaptablePredicate.js +1 -1
- package/src/AdaptableState/InitialState.d.ts +2 -2
- package/src/AdaptableState/LayoutState.d.ts +47 -0
- package/src/Api/CalendarApi.d.ts +15 -0
- package/src/Api/ColumnScopeApi.d.ts +5 -0
- package/src/Api/DataChangeHistoryApi.d.ts +7 -2
- package/src/Api/Implementation/CalendarApiImpl.d.ts +3 -0
- package/src/Api/Implementation/CalendarApiImpl.js +10 -0
- package/src/Api/Implementation/ColumnScopeApiImpl.d.ts +1 -0
- package/src/Api/Implementation/ColumnScopeApiImpl.js +12 -0
- package/src/Api/Implementation/DataChangeHistoryApiImpl.d.ts +2 -1
- package/src/Api/Implementation/DataChangeHistoryApiImpl.js +7 -0
- package/src/Api/Implementation/LayoutHelpers.js +12 -0
- package/src/Api/Internal/AlertInternalApi.js +4 -1
- package/src/Api/Internal/FormatColumnInternalApi.js +3 -3
- package/src/Strategy/FlashingCellModule.js +1 -0
- package/src/Strategy/PlusMinusModule.js +3 -3
- package/src/Utilities/Constants/GeneralConstants.js +2 -1
- package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.d.ts +1 -1
- package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.js +41 -2
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.d.ts +1 -1
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +31 -2
- package/src/Utilities/Helpers/AdaptableHelper.js +30 -4
- package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +1 -0
- package/src/Utilities/Services/MetamodelService.js +18 -18
- package/src/Utilities/Services/QueryLanguageService.d.ts +2 -0
- package/src/Utilities/Services/QueryLanguageService.js +20 -8
- package/src/Utilities/Services/ValidationService.js +3 -1
- package/src/View/Components/EntityRulesEditor/index.js +1 -1
- package/src/View/Components/ModuleValueSelector/index.js +9 -1
- package/src/View/Components/ReorderDraggable/index.js +21 -35
- package/src/View/Components/ValueSelector/index.js +45 -49
- package/src/View/Dashboard/PinnedToolbarsSelector.js +1 -1
- package/src/View/Layout/Wizard/LayoutWizard.js +16 -1
- package/src/View/Layout/Wizard/sections/RowSelectionSection.d.ts +8 -0
- package/src/View/Layout/Wizard/sections/RowSelectionSection.js +147 -0
- package/src/View/NamedQuery/Wizard/NamedQuerySettingsWizardSection.js +0 -1
- package/src/agGrid/AdaptableAgGrid.js +10 -0
- package/src/components/Dashboard/Dashboard.js +1 -1
- package/src/components/DragAndDropContext/ModuleManager.d.ts +1 -0
- package/src/components/DragAndDropContext/ModuleManager.js +11 -36
- package/src/components/DragAndDropContext/TabList.d.ts +11 -6
- package/src/components/DragAndDropContext/TabList.js +77 -35
- package/src/components/DragAndDropContext/UnusedPanel.js +9 -20
- package/src/components/ExpressionEditor/BaseEditorInput.d.ts +2 -0
- package/src/components/ExpressionEditor/BaseEditorInput.js +4 -0
- package/src/components/ExpressionEditor/EditorInput.d.ts +3 -1
- package/src/components/ExpressionEditor/EditorInput.js +20 -9
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.d.ts +2 -1
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.js +1 -10
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +16 -18
- package/src/components/ExpressionEditor/index.d.ts +2 -1
- package/src/components/ExpressionEditor/index.js +1 -1
- package/src/components/Tree/TreeDropdown/index.js +37 -26
- package/src/components/dnd/index.d.ts +3 -13
- package/src/components/dnd/index.js +11 -59
- package/src/env.js +2 -2
- package/src/layout-manager/src/LayoutManagerModel.d.ts +2 -1
- package/src/layout-manager/src/index.d.ts +9 -0
- package/src/layout-manager/src/index.js +97 -1
- package/src/layout-manager/src/normalizeLayoutModel.js +8 -0
- package/src/layout-manager/src/simplifyLayoutModel.js +6 -0
- package/src/metamodel/adaptable-metamodel-model.d.ts +22 -13
- package/src/metamodel/adaptable.metamodel.d.ts +3773 -5143
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/parser/src/parser.js +55 -1218
- package/src/parser/src/types.d.ts +5 -0
- package/tsconfig.cjs.tsbuildinfo +1 -1
|
@@ -11,62 +11,104 @@ const icons_1 = require("../icons");
|
|
|
11
11
|
const SimpleButton_1 = tslib_1.__importDefault(require("../SimpleButton"));
|
|
12
12
|
const DragAndDropContext_1 = require("./DragAndDropContext");
|
|
13
13
|
const Flex_1 = require("../Flex");
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
const clsx_1 = tslib_1.__importDefault(require("clsx"));
|
|
15
|
+
function TabList({ tabs, onTabsChange, onRemoveTab, onRemoveToolbar, onChangeTabName, disabled, onNewTab, }) {
|
|
16
|
+
const tabIdsRef = React.useRef(new WeakMap());
|
|
17
|
+
const nextTabIdRef = React.useRef(0);
|
|
18
|
+
const getTabStableId = React.useCallback((tab) => {
|
|
19
|
+
const existingId = tabIdsRef.current.get(tab);
|
|
20
|
+
if (existingId) {
|
|
21
|
+
return existingId;
|
|
22
|
+
}
|
|
23
|
+
const newId = `dashboard-tab-${String(nextTabIdRef.current++)}`;
|
|
24
|
+
tabIdsRef.current.set(tab, newId);
|
|
25
|
+
return newId;
|
|
26
|
+
}, []);
|
|
27
|
+
return (React.createElement(dnd_1.DragList, { dragListId: "TABS", orientation: "horizontal", dragStrategy: "proxy", preserveDragSpace: true, onDragProxyMove: dnd_1.defaultDragProxyMove, onDrop: (sortedIndexes) => {
|
|
28
|
+
const newTabs = sortedIndexes.map((i) => tabs[i]);
|
|
29
|
+
onTabsChange(newTabs);
|
|
30
|
+
} }, (listDomProps) => (React.createElement("div", { ...listDomProps, className: (0, clsx_1.default)('ab-ModuleSelector__TabList twa:flex twa:flex-1 twa:overflow-auto', listDomProps.className), "data-name": "dashboard-tabs" },
|
|
31
|
+
tabs.map((tab, tabIndex) => {
|
|
32
|
+
const tabId = getTabStableId(tab);
|
|
33
|
+
return (React.createElement(TabItem, { disabled: disabled, key: tabIndex, tabId: tabId, tabIndex: tabIndex, tabs: tabs, onTabsChange: onTabsChange, tab: tab, onRemove: () => onRemoveTab(tabIndex), onRemoveToolbar: (toolbarIndex) => onRemoveToolbar(tabIndex, toolbarIndex), onChangeTabName: (tabName) => onChangeTabName(tabIndex, tabName) }));
|
|
34
|
+
}),
|
|
17
35
|
!disabled && onNewTab ? (React.createElement(Flex_1.Flex, { alignItems: "center", justifyContent: "center", className: "ab-ModuleSelector__TabItem twa:min-w-32 twa:border-dashed twa:cursor-pointer twa:bg-primarylight twa:text-primary-foreground twa:hover:bg-primary", onClick: onNewTab },
|
|
18
36
|
React.createElement("div", { className: "twa:text-8 twa:flex twa:flex-col twa:gap-4 twa:items-center twa:italic" },
|
|
19
37
|
React.createElement(icons_1.Icon, { name: "plus", size: 32 }),
|
|
20
|
-
"Click to add tab"))) : null
|
|
21
|
-
provided.placeholder))));
|
|
38
|
+
"Click to add tab"))) : null))));
|
|
22
39
|
}
|
|
23
|
-
function TabItem({ tab, tabIndex, onRemove, onRemoveToolbar, onChangeTabName, disabled, }) {
|
|
40
|
+
function TabItem({ tab, tabId, tabIndex, tabs, onTabsChange, onRemove, onRemoveToolbar, onChangeTabName, disabled, }) {
|
|
24
41
|
const context = React.useContext(DragAndDropContext_1.DragAndDropContext);
|
|
25
42
|
const isDragDisabled = disabled || !context.permittedActions.dragAndDropTab;
|
|
26
|
-
return (React.createElement(dnd_1.
|
|
43
|
+
return (React.createElement(dnd_1.DragList.DraggableItem, { dragListId: "TABS", id: tabId }, (itemDomProps) => {
|
|
44
|
+
const { onPointerDown, ...restDomProps } = itemDomProps;
|
|
27
45
|
let showHeader = true;
|
|
28
46
|
if (tab.Name === '' &&
|
|
29
47
|
!context.permittedActions.editTabName &&
|
|
30
48
|
!context.permittedActions.deleteTab) {
|
|
31
49
|
showHeader = false;
|
|
32
50
|
}
|
|
33
|
-
return (React.createElement("div", { className:
|
|
34
|
-
...(isDragDisabled ? {} : provided.draggableProps.style),
|
|
35
|
-
} },
|
|
51
|
+
return (React.createElement("div", { ...restDomProps, className: (0, clsx_1.default)('twa:bg-defaultbackground', 'twa:select-none', 'ab-ModuleSelector__TabItem twa:min-w-32', restDomProps.className), "data-name": "dashboard-tab" },
|
|
36
52
|
showHeader ? (React.createElement("div", { className: "ab-ModuleSelector__TabItem__header" },
|
|
37
|
-
React.createElement("div", { ...(
|
|
38
|
-
? {}
|
|
39
|
-
: {
|
|
40
|
-
display: 'none',
|
|
41
|
-
} },
|
|
53
|
+
React.createElement("div", { ...(!isDragDisabled ? { onPointerDown } : {}), style: context.permittedActions.dragAndDropTab ? {} : { display: 'none' } },
|
|
42
54
|
React.createElement(icons_1.Icon, { name: "drag" })),
|
|
43
55
|
context.permittedActions.editTabName ? (React.createElement("input", { className: "ab-ModuleSelector__TabItem__header-input", type: "text", disabled: disabled, value: tab.Name, onChange: (event) => {
|
|
44
56
|
onChangeTabName(event.target.value);
|
|
45
57
|
} })) : (tab.Name),
|
|
46
58
|
context.permittedActions.deleteTab && (React.createElement(SimpleButton_1.default, { disabled: disabled, icon: "delete", variant: "text", onClick: onRemove })))) : null,
|
|
47
|
-
React.createElement(ToolbarList, { disabled: disabled, toolbars: tab.Items,
|
|
59
|
+
React.createElement(ToolbarList, { disabled: disabled, toolbars: tab.Items, tabIndex: tabIndex, tabs: tabs, onTabsChange: onTabsChange, onRemove: onRemoveToolbar })));
|
|
48
60
|
}));
|
|
49
61
|
}
|
|
50
|
-
function ToolbarList({ toolbars,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
62
|
+
function ToolbarList({ toolbars, tabIndex, tabs, onTabsChange, onRemove, disabled, }) {
|
|
63
|
+
const acceptDropsFrom = React.useMemo(() => {
|
|
64
|
+
const sources = ['UNUSED'];
|
|
65
|
+
tabs.forEach((_, i) => {
|
|
66
|
+
if (i !== tabIndex)
|
|
67
|
+
sources.push(String(i));
|
|
68
|
+
});
|
|
69
|
+
return sources;
|
|
70
|
+
}, [tabIndex, tabs]);
|
|
71
|
+
return (React.createElement(dnd_1.DragList, { dragListId: String(tabIndex), orientation: "vertical", acceptDropsFrom: [...acceptDropsFrom, String(tabIndex)], onDragProxyMove: dnd_1.defaultDragProxyMove,
|
|
72
|
+
// this is called when reordering inside the same list
|
|
73
|
+
onDrop: (sortedIndexes) => {
|
|
74
|
+
const newItems = sortedIndexes.map((i) => toolbars[i]);
|
|
75
|
+
onTabsChange(tabs.map((t, i) => (i === tabIndex ? { ...t, Items: newItems } : t)));
|
|
76
|
+
}, shouldAcceptDrop: ({ dragItem, dragSourceListId }) => {
|
|
77
|
+
const dragItemId = dragItem.id;
|
|
78
|
+
// if the tab contains an item with the same id, don't accept the drop
|
|
79
|
+
if (dragSourceListId != String(tabIndex) && tabs[tabIndex].Items.includes(dragItemId)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
},
|
|
84
|
+
// this is called when dropping an item from a different list
|
|
85
|
+
onAcceptDrop: ({ dragItemId, dragSourceListId, dropIndex }) => {
|
|
86
|
+
const newTabs = tabs.map((tab, i) => {
|
|
87
|
+
let items = [...tab.Items];
|
|
88
|
+
if (dragSourceListId !== 'UNUSED' && i === Number(dragSourceListId)) {
|
|
89
|
+
items = items.filter((item) => item !== dragItemId);
|
|
90
|
+
}
|
|
91
|
+
if (i === tabIndex) {
|
|
92
|
+
items.splice(dropIndex, 0, dragItemId);
|
|
93
|
+
}
|
|
94
|
+
return { ...tab, Items: items };
|
|
95
|
+
});
|
|
96
|
+
onTabsChange(newTabs);
|
|
97
|
+
} }, (listDomProps, context) => (React.createElement(Flex_1.Box, { ...listDomProps, className: (0, clsx_1.default)('ab-ModuleSelector__ToolbarList', listDomProps.className, {
|
|
98
|
+
'twa:bg-(--ab-dashboard-tab-drop-target__background) ab-ModuleSelector__ToolbarList--accent-drop': context.dropTargetListId === String(tabIndex) && context.status === 'accepted',
|
|
99
|
+
'twa:bg-error/30 ab-ModuleSelector__ToolbarList--reject-drop': context.dropTargetListId === String(tabIndex) && context.status === 'rejected',
|
|
100
|
+
}), "data-name": "dashboard-toolbar-drop-target" },
|
|
101
|
+
toolbars?.map((toolbar, toolbarIndex) => (React.createElement(ToolbarItem, { disabled: disabled, key: toolbar, toolbar: toolbar, onRemove: () => onRemove(toolbarIndex) }))),
|
|
102
|
+
toolbars.length === 0 ? (React.createElement("div", { className: "ab-ModuleSelector__ToolbarList__placeholder twa:flex twa:items-center twa:justify-center twa:h-full twa:italic twa:text-center" }, "Drag and drop toolbar here")) : null))));
|
|
59
103
|
}
|
|
60
|
-
function ToolbarItem({ toolbar,
|
|
104
|
+
function ToolbarItem({ toolbar, onRemove, disabled, }) {
|
|
61
105
|
const { availableItems } = React.useContext(DragAndDropContext_1.DragAndDropContext);
|
|
62
|
-
|
|
106
|
+
const currentItem = availableItems.find((t) => t.Id === toolbar);
|
|
63
107
|
const title = currentItem ? currentItem.Title : toolbar;
|
|
64
|
-
return (React.createElement(dnd_1.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
React.createElement("div", { className: "twa:flex-1" }, title),
|
|
71
|
-
React.createElement(SimpleButton_1.default, { disabled: disabled, icon: "close", variant: "text", className: "twa:p-1", onClick: onRemove })))));
|
|
108
|
+
return (React.createElement(dnd_1.DragList.DraggableItem, { id: toolbar }, (itemDomProps) => {
|
|
109
|
+
const { onPointerDown, ...restDomProps } = itemDomProps;
|
|
110
|
+
return (React.createElement(Flex_1.Flex, { ...restDomProps, ...(disabled ? {} : { onPointerDown }), className: (0, clsx_1.default)('ab-ModuleSelector__ToolbarItem twa:mb-1 twa:pl-1 twa:text-3', 'twa:bg-primarylight', restDomProps.className), alignItems: "center" },
|
|
111
|
+
React.createElement("div", { className: "twa:flex-1" }, title),
|
|
112
|
+
React.createElement(SimpleButton_1.default, { disabled: disabled, icon: "close", variant: "text", className: "twa:p-1", onClick: onRemove })));
|
|
113
|
+
}));
|
|
72
114
|
}
|
|
@@ -16,29 +16,18 @@ function UnusedPanel({ items, disabled, title, dragItemText, }) {
|
|
|
16
16
|
")"),
|
|
17
17
|
React.createElement(UnusedItemList, { disabled: disabled, items: items })));
|
|
18
18
|
}
|
|
19
|
+
const EMPTY_ARRAY = [];
|
|
19
20
|
function UnusedItemList({ items, disabled }) {
|
|
20
|
-
return (React.createElement(dnd_1.
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
return (React.createElement(dnd_1.DragList, { dragStrategy: "proxy", preserveDragSpace: true, dragListId: "UNUSED", orientation: "horizontal", onDragProxyMove: dnd_1.defaultDragProxyMove, acceptDropsFrom: EMPTY_ARRAY, onDragProxySetup: ({ proxyElement }) => {
|
|
22
|
+
proxyElement.classList.add('twa:shadow-md');
|
|
23
|
+
}, onDrop: () => { } }, (listDomProps) => (React.createElement("div", { ...listDomProps, "data-name": "unusedpanel-items-list", className: (0, clsx_1.default)('twa:px-2 twa:flex-wrap twa:flex twa:flex-row twa:gap-1', listDomProps.className) }, items.map((unusedItem) => (React.createElement(UnusedItem, { disabled: disabled, key: unusedItem, unusedItem: unusedItem })))))));
|
|
23
24
|
}
|
|
24
|
-
function UnusedItem({ unusedItem,
|
|
25
|
+
function UnusedItem({ unusedItem, disabled }) {
|
|
25
26
|
const { availableItems } = React.useContext(DragAndDropContext_1.DragAndDropContext);
|
|
26
|
-
|
|
27
|
+
const currentItem = availableItems.find((t) => t.Id === unusedItem);
|
|
27
28
|
const title = currentItem ? currentItem.Title : unusedItem;
|
|
28
|
-
return (React.createElement(dnd_1.
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
: {
|
|
32
|
-
...provided.draggableProps,
|
|
33
|
-
...provided.dragHandleProps,
|
|
34
|
-
};
|
|
35
|
-
const dragStyle = disabled ? {} : provided.draggableProps.style;
|
|
36
|
-
return (React.createElement("div", { "data-name": "unused-item", ref: provided.innerRef, ...eventHandlers, className: (0, clsx_1.default)('twa:rounded-md twa:text-sm twa:text-text-on-primary twa:p-2'), style: {
|
|
37
|
-
...dragStyle,
|
|
38
|
-
border: '1px solid var(--ab-color-primary)',
|
|
39
|
-
backgroundColor: snapshot.isDragging
|
|
40
|
-
? 'var(--ab-dashboard-toolbar-drag__background)'
|
|
41
|
-
: 'var(--ab-color-primary)',
|
|
42
|
-
} }, title));
|
|
29
|
+
return (React.createElement(dnd_1.DragList.DraggableItem, { id: unusedItem }, (itemDomProps) => {
|
|
30
|
+
const { onPointerDown, ...restDomProps } = itemDomProps;
|
|
31
|
+
return (React.createElement("div", { "data-name": "unused-item", ...restDomProps, ...(disabled ? {} : { onPointerDown }), className: (0, clsx_1.default)('twa:rounded-md twa:text-sm twa:text-text-on-primary twa:p-2 twa:select-none', 'twa:bg-primary', restDomProps.className) }, title));
|
|
43
32
|
}));
|
|
44
33
|
}
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { ExpressionFunction, ExpressionFunctionMap } from '../../parser/src/types';
|
|
3
3
|
import { AdaptableApi } from '../../Api/AdaptableApi';
|
|
4
4
|
import { CSSProperties } from 'react';
|
|
5
|
+
import { ColumnScope } from '../../types';
|
|
5
6
|
interface BaseEditorInputProps {
|
|
6
7
|
type: 'main' | 'secondary';
|
|
7
8
|
value: string;
|
|
@@ -16,6 +17,7 @@ interface BaseEditorInputProps {
|
|
|
16
17
|
hideResultPreview?: boolean;
|
|
17
18
|
api: AdaptableApi;
|
|
18
19
|
style?: CSSProperties;
|
|
20
|
+
columnScope?: ColumnScope;
|
|
19
21
|
}
|
|
20
22
|
export interface OperatorEditorButton {
|
|
21
23
|
functionName: string;
|
|
@@ -206,6 +206,9 @@ function BaseEditorInput(props) {
|
|
|
206
206
|
// clone the class instance to still keep the prototype methods
|
|
207
207
|
return Object.assign(Object.create(Object.getPrototypeOf(firstRowNode)), firstRowNode);
|
|
208
208
|
}, []);
|
|
209
|
+
const scopeColumnId = (0, react_1.useMemo)(() => {
|
|
210
|
+
return props.api.columnScopeApi.getAnyColumnIdForScope(props.columnScope);
|
|
211
|
+
}, [props.columnScope]);
|
|
209
212
|
try {
|
|
210
213
|
// explicitly parsing & evaluating the expression because we need full control of the resulted AST
|
|
211
214
|
const expr = parser.parse(props.value || '');
|
|
@@ -222,6 +225,7 @@ function BaseEditorInput(props) {
|
|
|
222
225
|
functions: expressionFunctions,
|
|
223
226
|
evaluateCustomQueryVariable: props.api.internalApi.getQueryLanguageService().evaluateCustomQueryVariable,
|
|
224
227
|
dataChangedEvent,
|
|
228
|
+
columnScope: scopeColumnId,
|
|
225
229
|
...props.api.internalApi.buildBaseContext(),
|
|
226
230
|
});
|
|
227
231
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { AdaptableApi } from '../../Api/AdaptableApi';
|
|
3
3
|
import { AdaptableModule } from '../../AdaptableState/Common/Types';
|
|
4
|
+
import { ColumnScope } from '../../AdaptableState/Common/ColumnScope';
|
|
4
5
|
interface EditorInputProps {
|
|
5
6
|
type: 'boolean' | 'scalar' | 'aggregatedScalar' | 'cumulativeAggregatedScalar' | 'quantileAggregatedScalar';
|
|
6
7
|
module: AdaptableModule;
|
|
7
8
|
value: string;
|
|
8
9
|
onChange: (value: string) => void;
|
|
10
|
+
api: AdaptableApi;
|
|
9
11
|
testData: any;
|
|
10
12
|
isFullExpression?: boolean;
|
|
11
|
-
|
|
13
|
+
columnScope?: ColumnScope;
|
|
12
14
|
}
|
|
13
15
|
declare function EditorInput(props: EditorInputProps): React.JSX.Element;
|
|
14
16
|
export default EditorInput;
|
|
@@ -41,15 +41,26 @@ function EditorInput(props) {
|
|
|
41
41
|
}, {});
|
|
42
42
|
};
|
|
43
43
|
const expressionFunctions = (0, react_1.useMemo)(() => {
|
|
44
|
-
|
|
44
|
+
if (props.type === 'aggregatedScalar' ||
|
|
45
45
|
props.type === 'cumulativeAggregatedScalar' ||
|
|
46
|
-
props.type === 'quantileAggregatedScalar'
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
props.type === 'quantileAggregatedScalar') {
|
|
47
|
+
return getFilteredAggregatedExpressionFunctions(moduleExpressionFunctions.aggregatedScalarFunctions, props.type);
|
|
48
|
+
}
|
|
49
|
+
let booleanAndScalarFunctions = {
|
|
50
|
+
...moduleExpressionFunctions.booleanFunctions,
|
|
51
|
+
...moduleExpressionFunctions.scalarFunctions,
|
|
52
|
+
};
|
|
53
|
+
if (!props.columnScope) {
|
|
54
|
+
// filter out $SCOPE function if no columnScope is provided
|
|
55
|
+
booleanAndScalarFunctions = Object.keys(booleanAndScalarFunctions)
|
|
56
|
+
.filter((key) => key !== '$SCOPE')
|
|
57
|
+
.reduce((obj, key) => {
|
|
58
|
+
obj[key] = booleanAndScalarFunctions[key];
|
|
59
|
+
return obj;
|
|
60
|
+
}, {});
|
|
61
|
+
}
|
|
62
|
+
return booleanAndScalarFunctions;
|
|
63
|
+
}, [props.type, props.columnScope]);
|
|
53
64
|
const { setSelectedFunction } = (0, EditorContext_1.useExpressionEditor)();
|
|
54
65
|
let queryName;
|
|
55
66
|
switch (props.type) {
|
|
@@ -77,6 +88,6 @@ function EditorInput(props) {
|
|
|
77
88
|
? editorButtonsQuantileAggregatedScalar_1.editorButtonsQuantileAggregatedScalar
|
|
78
89
|
: editorButtonsSearch_1.editorButtonsSearch, testData: props.testData, isFullExpression: props.isFullExpression, hideResultPreview: props.type === 'aggregatedScalar' ||
|
|
79
90
|
props.type === 'cumulativeAggregatedScalar' ||
|
|
80
|
-
props.type === 'quantileAggregatedScalar', api: props.api }));
|
|
91
|
+
props.type === 'quantileAggregatedScalar', api: props.api, columnScope: props.columnScope }));
|
|
81
92
|
}
|
|
82
93
|
exports.default = EditorInput;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { AdaptableColumnDataType, AdaptableModule, BooleanFunctionName } from '../../../types';
|
|
2
|
+
import { AdaptableColumnDataType, AdaptableModule, BooleanFunctionName, ColumnScope } from '../../../types';
|
|
3
3
|
interface QueryBuilderProps {
|
|
4
4
|
query: string;
|
|
5
5
|
getColumns: (type?: AdaptableColumnDataType) => {
|
|
@@ -14,6 +14,7 @@ interface QueryBuilderProps {
|
|
|
14
14
|
}[];
|
|
15
15
|
onChange: (query: string) => void;
|
|
16
16
|
module: AdaptableModule;
|
|
17
|
+
columnScope?: ColumnScope;
|
|
17
18
|
}
|
|
18
19
|
export declare function useQueryBuilderContext(): {
|
|
19
20
|
getColumns: QueryBuilderProps["getColumns"];
|
|
@@ -91,7 +91,6 @@ const QueryBuilder = (props) => {
|
|
|
91
91
|
}
|
|
92
92
|
else if (qlPredicate && !('errorMessage' in qlPredicate)) {
|
|
93
93
|
errorOrEditor = (React.createElement(QueryPredicateBuilder_1.QueryPredicateBuilder, { isRoot: true, index: 0, id: "0", predicate: qlPredicate, onNewPredicate: (type) => {
|
|
94
|
-
// add to its children
|
|
95
94
|
const newPredicate = {
|
|
96
95
|
operator: type === 'filter' ? undefined : 'AND',
|
|
97
96
|
args: [],
|
|
@@ -104,15 +103,7 @@ const QueryBuilder = (props) => {
|
|
|
104
103
|
handleQlPredicateChange(predicate);
|
|
105
104
|
} }));
|
|
106
105
|
}
|
|
107
|
-
return (React.createElement(dnd_1.
|
|
108
|
-
if (!result.destination) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const toPath = `${result.destination.droppableId}/${result.destination.index}`;
|
|
112
|
-
const fromPath = result.draggableId;
|
|
113
|
-
const predicate = (0, utils_1.reorder)(qlPredicate, fromPath, toPath);
|
|
114
|
-
handleQlPredicateChange(predicate);
|
|
115
|
-
} },
|
|
106
|
+
return (React.createElement(dnd_1.DragDropProvider, null,
|
|
116
107
|
React.createElement(QueryBuilderContext.Provider, { value: context },
|
|
117
108
|
React.createElement(Flex_1.Box, { className: QUERY_BUILDER_CLASSNAME },
|
|
118
109
|
React.createElement(HelpBlock_1.default, { "data-name": "query-builder-help", className: "twa:my-2 twa:p-2 twa:text-3" }, "Build the Grid Filter by adding Column Conditions and AND / OR Groups as required"),
|
|
@@ -15,6 +15,7 @@ const SimpleButton_1 = tslib_1.__importDefault(require("../../SimpleButton"));
|
|
|
15
15
|
const QueryBuilderInputs_1 = require("./QueryBuilderInputs");
|
|
16
16
|
const utils_1 = require("./utils");
|
|
17
17
|
const Flex_1 = require("../../Flex");
|
|
18
|
+
const clsx_1 = tslib_1.__importDefault(require("clsx"));
|
|
18
19
|
const ITEM_HEIGHT = 40;
|
|
19
20
|
const BASE_CLASS_NAME = 'ab-QueryBuilder-predicate-editor';
|
|
20
21
|
const Handle = (props) => (react_1.default.createElement(Flex_1.Flex, { className: `${BASE_CLASS_NAME}__handle twa:mr-1`, style: { height: ITEM_HEIGHT }, alignItems: "center", ...props },
|
|
@@ -39,8 +40,12 @@ const LogicalFunctionEditor = (props) => {
|
|
|
39
40
|
${props.lastChild ? `${BASE_CLASS_NAME}--last-child` : ''}
|
|
40
41
|
${props.isRoot ? `${BASE_CLASS_NAME}--root` : `${BASE_CLASS_NAME}--child`}
|
|
41
42
|
`;
|
|
42
|
-
const
|
|
43
|
-
|
|
43
|
+
const handleDrop = (sortedIndexes) => {
|
|
44
|
+
const newArgs = sortedIndexes.map((i) => props.predicate.args[i]);
|
|
45
|
+
props.onChange({ ...props.predicate, args: newArgs });
|
|
46
|
+
};
|
|
47
|
+
const getCombinatorEl = (handleProps) => (react_1.default.createElement(dnd_1.DragList, { dragListId: props.id, orientation: "vertical", onDrop: handleDrop, onDragProxyMove: dnd_1.defaultDragProxyMove }, (listDomProps) => {
|
|
48
|
+
return (react_1.default.createElement("div", { ...listDomProps, className: (0, clsx_1.default)(listDomProps.className) },
|
|
44
49
|
react_1.default.createElement(Flex_1.Flex, null,
|
|
45
50
|
props.isRoot ? null : react_1.default.createElement(Handle, { ...handleProps }),
|
|
46
51
|
react_1.default.createElement(Flex_1.Flex, { className: "twa:flex-1", alignItems: "center", height: ITEM_HEIGHT },
|
|
@@ -98,21 +103,18 @@ const LogicalFunctionEditor = (props) => {
|
|
|
98
103
|
});
|
|
99
104
|
} }));
|
|
100
105
|
}),
|
|
101
|
-
provided.placeholder,
|
|
102
106
|
react_1.default.createElement("div", { className: `${BASE_CLASS_NAME}__root-actions` },
|
|
103
107
|
react_1.default.createElement(QueryPredicateButtons, { ...props, hideDelete: true })))));
|
|
104
108
|
}));
|
|
105
109
|
if (props.isRoot) {
|
|
106
|
-
return getCombinatorEl({ className
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
return (react_1.default.createElement(dnd_1.Draggable, { key: props.id, draggableId: props.id, index: props.index }, (provided, snapshot) => {
|
|
110
|
-
return (react_1.default.createElement("div", { ...provided.draggableProps, ref: provided.innerRef, className: className }, getCombinatorEl(provided.dragHandleProps)));
|
|
111
|
-
}));
|
|
110
|
+
return getCombinatorEl({ className });
|
|
112
111
|
}
|
|
112
|
+
return (react_1.default.createElement(dnd_1.DragList.DraggableItem, { id: props.id }, (itemDomProps) => {
|
|
113
|
+
const { onPointerDown, ...restDomProps } = itemDomProps;
|
|
114
|
+
return (react_1.default.createElement("div", { ...restDomProps, className: (0, clsx_1.default)(className, restDomProps.className) }, getCombinatorEl({ onPointerDown })));
|
|
115
|
+
}));
|
|
113
116
|
};
|
|
114
117
|
const PrimitiveFunctionEditor = (props) => {
|
|
115
|
-
// [handle] [column] [operator-dropdown] [...args] [delete-button] [plus-button]
|
|
116
118
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
117
119
|
const [columnOrFieldExpression, ...restOfArgs] = props.predicate.args;
|
|
118
120
|
const columnOrField = columnOrFieldExpression;
|
|
@@ -120,15 +122,12 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
120
122
|
let columnOrFieldDataType = null;
|
|
121
123
|
let columnInputDataType = null;
|
|
122
124
|
let functionInputInputDataTypes = null;
|
|
123
|
-
// Thsese are the type of inputs ommiting the column
|
|
124
|
-
// [[column-data-type], number, number]
|
|
125
125
|
let restOfFunctionInputDataTypes = [];
|
|
126
126
|
if (columnOrField) {
|
|
127
127
|
if (!(0, predicate_1.isArgumentColumnOrField)(columnOrField)) {
|
|
128
128
|
return react_1.default.createElement(ErrorBox_1.default, null, "Expression must start with a column or a filed!");
|
|
129
129
|
}
|
|
130
130
|
if (columnOrField.includes('FIELD')) {
|
|
131
|
-
// we let the full expression so we can difirienciate between column and field
|
|
132
131
|
columnOrFieldId = columnOrField;
|
|
133
132
|
const fieldValue = (0, utils_1.mapExpressionToFieldValue)(columnOrField);
|
|
134
133
|
columnOrFieldDataType = adaptable.api.expressionApi.internalApi.getFieldType(fieldValue);
|
|
@@ -145,9 +144,10 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
145
144
|
: [];
|
|
146
145
|
}
|
|
147
146
|
const level = props.id.split('/').length - 1;
|
|
148
|
-
return (react_1.default.createElement(dnd_1.
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
return (react_1.default.createElement(dnd_1.DragList.DraggableItem, { id: props.id }, (itemDomProps) => {
|
|
148
|
+
const { onPointerDown, ...restDomProps } = itemDomProps;
|
|
149
|
+
return (react_1.default.createElement(Flex_1.Flex, { ...restDomProps, className: (0, clsx_1.default)(`twa:pb-2 ${BASE_CLASS_NAME} ${BASE_CLASS_NAME}-level-${level} ${BASE_CLASS_NAME}-primitive ${props.lastChild ? `${BASE_CLASS_NAME}--last-child` : ''}`, restDomProps.className), style: { minHeight: ITEM_HEIGHT } },
|
|
150
|
+
react_1.default.createElement(Handle, { onPointerDown: onPointerDown }),
|
|
151
151
|
react_1.default.createElement(Flex_1.Flex, { alignItems: "center", style: { height: ITEM_HEIGHT } },
|
|
152
152
|
react_1.default.createElement(Flex_1.Box, { className: "twa:mr-2" },
|
|
153
153
|
react_1.default.createElement(QueryBuilderInputs_1.PrimitiveColumnOrFieldSelector, { onChange: (colOrField) => {
|
|
@@ -165,7 +165,6 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
165
165
|
props.onChange({
|
|
166
166
|
...props.predicate,
|
|
167
167
|
operator,
|
|
168
|
-
// discard arguments
|
|
169
168
|
args,
|
|
170
169
|
});
|
|
171
170
|
}, value: props.predicate.operator })),
|
|
@@ -186,7 +185,6 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
186
185
|
}
|
|
187
186
|
return (react_1.default.createElement(QueryBuilderInputs_1.PrimitiveValueInput, { ...commonProps, key: key, value: restOfArgs[index] ?? null, onChange: (value) => {
|
|
188
187
|
const args = [...props.predicate.args];
|
|
189
|
-
// +1 because col is the first argument
|
|
190
188
|
args[index + 1] = value;
|
|
191
189
|
props.onChange({
|
|
192
190
|
...props.predicate,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { AdaptableApi, AdaptableColumn, AdaptableField, AdaptableModule, NamedQuery } from '../../types';
|
|
2
|
+
import { AdaptableApi, AdaptableColumn, AdaptableField, AdaptableModule, ColumnScope, NamedQuery } from '../../types';
|
|
3
3
|
export type ExpressionEditorType = 'boolean' | 'scalar' | 'observable' | 'aggregatedBoolean' | 'aggregatedScalar' | 'cumulativeAggregatedScalar' | 'quantileAggregatedScalar';
|
|
4
4
|
interface ExpressionEditorProps {
|
|
5
5
|
value: string;
|
|
@@ -19,6 +19,7 @@ interface ExpressionEditorProps {
|
|
|
19
19
|
api: AdaptableApi;
|
|
20
20
|
showQueryBuilder?: boolean;
|
|
21
21
|
showExpressionEditor?: boolean;
|
|
22
|
+
columnScope?: ColumnScope;
|
|
22
23
|
}
|
|
23
24
|
export declare const baseClassName = "ab-ExpressionEditor";
|
|
24
25
|
export declare function ExpressionEditor(props: ExpressionEditorProps): React.JSX.Element;
|
|
@@ -40,7 +40,7 @@ function ExpressionEditor(props) {
|
|
|
40
40
|
// 'boolean','scalar','aggregatedScalar'/'cumulativeAggregatedScalar'/'quantileAggregatedScalar'
|
|
41
41
|
(React.createElement(
|
|
42
42
|
EditorInput_1.default,
|
|
43
|
-
{ type: type, module: module, value: props.value, onChange: (value) => {
|
|
43
|
+
{ type: type, module: module, columnScope: props.columnScope, value: props.value, onChange: (value) => {
|
|
44
44
|
setExpressionText(value);
|
|
45
45
|
props.onChange(value);
|
|
46
46
|
}, testData: props.initialData, isFullExpression: props.isFullExpression, api: props.api }
|
|
@@ -65,35 +65,46 @@ const getLabelColumn = (field, { includeExpandCollapseButton }) => {
|
|
|
65
65
|
} }));
|
|
66
66
|
},
|
|
67
67
|
renderHeader: ({ dataSourceApi, api, allRowsSelected, someRowsSelected }) => {
|
|
68
|
-
|
|
69
|
-
const allFirstLevelCollapsed = dataSourceApi
|
|
70
|
-
.getOriginalDataArray()
|
|
71
|
-
.every((item) => !treeApi.isNodeExpanded([item.id]));
|
|
72
|
-
return (React.createElement(Flex_1.Flex, { flexDirection: 'row', alignItems: 'center', className: "twa:w-full", onMouseDown: (e) => {
|
|
73
|
-
// so we can keep the focus on the Grid
|
|
74
|
-
e.preventDefault();
|
|
75
|
-
} },
|
|
76
|
-
React.createElement(CheckBox_1.CheckBox, { checked: someRowsSelected && !allRowsSelected ? null : allRowsSelected, className: "twa:mr-2", onChange: () => {
|
|
77
|
-
if (allRowsSelected) {
|
|
78
|
-
dataSourceApi.treeApi.deselectAll();
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
dataSourceApi.treeApi.selectAll();
|
|
82
|
-
}
|
|
83
|
-
api.focus();
|
|
84
|
-
} }, allRowsSelected ? '(Deselect All)' : '(Select All)'),
|
|
85
|
-
React.createElement(Flex_1.Flex, { className: "twa:flex-1" }),
|
|
86
|
-
includeExpandCollapseButton ? (React.createElement(SimpleButton_1.default, { label: "toggle-expand-collapse", icon: allFirstLevelCollapsed ? 'expand-all' : 'collapse-all', onMouseDown: () => {
|
|
87
|
-
if (allFirstLevelCollapsed) {
|
|
88
|
-
dataSourceApi.treeApi.expandAll();
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
dataSourceApi.treeApi.collapseAll();
|
|
92
|
-
}
|
|
93
|
-
}, iconPosition: "end" })) : null));
|
|
68
|
+
return (React.createElement(CustomHeader, { dataSourceApi: dataSourceApi, api: api, allRowsSelected: allRowsSelected, someRowsSelected: someRowsSelected, includeExpandCollapseButton: includeExpandCollapseButton }));
|
|
94
69
|
},
|
|
95
70
|
};
|
|
96
71
|
};
|
|
72
|
+
function useAllFirstLevelCollapsed(treeApi) {
|
|
73
|
+
const { originalDataArray } = (0, InfiniteTable_1.useDataSourceState)((state) => {
|
|
74
|
+
return {
|
|
75
|
+
originalDataArray: state.originalDataArray,
|
|
76
|
+
treeExpandState: state.treeExpandState,
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
return originalDataArray.every((item) => !treeApi.isNodeExpanded([item.id]));
|
|
80
|
+
}
|
|
81
|
+
function CustomHeader({ dataSourceApi, api, allRowsSelected, someRowsSelected, includeExpandCollapseButton, }) {
|
|
82
|
+
const { treeApi } = dataSourceApi;
|
|
83
|
+
const allFirstLevelCollapsed = useAllFirstLevelCollapsed(treeApi);
|
|
84
|
+
const checked = someRowsSelected && !allRowsSelected ? null : allRowsSelected;
|
|
85
|
+
return (React.createElement(Flex_1.Flex, { flexDirection: 'row', alignItems: 'center', className: "twa:w-full", onMouseDown: (e) => {
|
|
86
|
+
// so we can keep the focus on the Grid
|
|
87
|
+
e.preventDefault();
|
|
88
|
+
} },
|
|
89
|
+
React.createElement(CheckBox_1.CheckBox, { checked: checked, className: "twa:mr-2", onChange: () => {
|
|
90
|
+
if (allRowsSelected) {
|
|
91
|
+
dataSourceApi.treeApi.deselectAll();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
dataSourceApi.treeApi.selectAll();
|
|
95
|
+
}
|
|
96
|
+
api.focus();
|
|
97
|
+
} }, allRowsSelected ? '(Deselect All)' : '(Select All)'),
|
|
98
|
+
React.createElement(Flex_1.Flex, { className: "twa:flex-1" }),
|
|
99
|
+
includeExpandCollapseButton ? (React.createElement(SimpleButton_1.default, { label: "toggle-expand-collapse", icon: allFirstLevelCollapsed ? 'expand-all' : 'collapse-all', onMouseDown: () => {
|
|
100
|
+
if (allFirstLevelCollapsed) {
|
|
101
|
+
dataSourceApi.treeApi.expandAll();
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
dataSourceApi.treeApi.collapseAll();
|
|
105
|
+
}
|
|
106
|
+
}, iconPosition: "end" })) : null));
|
|
107
|
+
}
|
|
97
108
|
const sizeFull = {
|
|
98
109
|
width: '100%',
|
|
99
110
|
height: '100%',
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* We're doing all this because the placeholder is not correctly displayed in react-beautiful-dnd
|
|
5
|
-
* with React 19.
|
|
6
|
-
* So we make sure it properly occupies the space of the dragged item, so the
|
|
7
|
-
* container won't flicker when we're dragging an item (as the drag item receives
|
|
8
|
-
* position: fixed while dragging, so content does not have the initial height anymore, therefore,
|
|
9
|
-
* the placeholder is included, with the computed height of the dragging element)
|
|
10
|
-
*/
|
|
11
|
-
declare const Droppable: (props: DroppableProps) => React.JSX.Element;
|
|
12
|
-
declare const DragDropContext: (props: DragDropContextProps) => React.JSX.Element;
|
|
13
|
-
export { type DropResult, Draggable, Droppable, DragDropContext };
|
|
1
|
+
import { DragProxyMoveParams } from '@infinite-table/infinite-react';
|
|
2
|
+
export { DragDropProvider, DragList, useDragDropProvider, useDragListContext, DRAG_ITEM_ATTRIBUTE, type DragListProps, type DragDropSourceAndTarget, } from '@infinite-table/infinite-react';
|
|
3
|
+
export declare function defaultDragProxyMove({ proxyElement, dx, dy }: DragProxyMoveParams): void;
|
|
@@ -1,61 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* position: fixed while dragging, so content does not have the initial height anymore, therefore,
|
|
15
|
-
* the placeholder is included, with the computed height of the dragging element)
|
|
16
|
-
*/
|
|
17
|
-
const Droppable = (props) => {
|
|
18
|
-
const children = props.children;
|
|
19
|
-
const { placeholderStyle } = React.useContext(AdaptableDDContext);
|
|
20
|
-
return (React.createElement(react_beautiful_dnd_1.Droppable, { ...props }, (provided, snapshot) => {
|
|
21
|
-
provided.placeholder = (React.createElement("div", { key: "placeholder", style: placeholderStyle || {
|
|
22
|
-
visibility: 'hidden',
|
|
23
|
-
pointerEvents: 'none',
|
|
24
|
-
height: 0,
|
|
25
|
-
} }));
|
|
26
|
-
return children(provided, snapshot);
|
|
27
|
-
}));
|
|
28
|
-
};
|
|
29
|
-
exports.Droppable = Droppable;
|
|
30
|
-
const queryAttr = 'data-rbd-draggable-id';
|
|
31
|
-
const AdaptableDDContext = React.createContext({
|
|
32
|
-
placeholderStyle: null,
|
|
33
|
-
});
|
|
34
|
-
const DragDropContext = (props) => {
|
|
35
|
-
const getDraggedDom = (draggableId) => {
|
|
36
|
-
const domQuery = `[${queryAttr}='${draggableId}']`;
|
|
37
|
-
const draggedDOM = document.querySelector(domQuery);
|
|
38
|
-
return draggedDOM;
|
|
39
|
-
};
|
|
40
|
-
const [placeholderStyle, setPlaceholderStyle] = (0, react_1.useState)(null);
|
|
41
|
-
const handleDragStart = (initial, provided) => {
|
|
42
|
-
props.onDragStart?.(initial, provided);
|
|
43
|
-
const draggedDOM = getDraggedDom(initial.draggableId);
|
|
44
|
-
if (!draggedDOM) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const { clientHeight, clientWidth } = draggedDOM;
|
|
48
|
-
const computedStyle = window.getComputedStyle(draggedDOM);
|
|
49
|
-
setPlaceholderStyle({
|
|
50
|
-
height: clientHeight + parseFloat(computedStyle.marginTop) + parseFloat(computedStyle.marginBottom),
|
|
51
|
-
width: clientWidth,
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
const handleDragEnd = (result, provided) => {
|
|
55
|
-
props.onDragEnd?.(result, provided);
|
|
56
|
-
setPlaceholderStyle(null);
|
|
57
|
-
};
|
|
58
|
-
return (React.createElement(AdaptableDDContext.Provider, { value: { placeholderStyle } },
|
|
59
|
-
React.createElement(react_beautiful_dnd_1.DragDropContext, { ...props, onDragStart: handleDragStart, onDragEnd: handleDragEnd })));
|
|
60
|
-
};
|
|
61
|
-
exports.DragDropContext = DragDropContext;
|
|
3
|
+
exports.DRAG_ITEM_ATTRIBUTE = exports.useDragListContext = exports.useDragDropProvider = exports.DragList = exports.DragDropProvider = void 0;
|
|
4
|
+
exports.defaultDragProxyMove = defaultDragProxyMove;
|
|
5
|
+
var infinite_react_1 = require("@infinite-table/infinite-react");
|
|
6
|
+
Object.defineProperty(exports, "DragDropProvider", { enumerable: true, get: function () { return infinite_react_1.DragDropProvider; } });
|
|
7
|
+
Object.defineProperty(exports, "DragList", { enumerable: true, get: function () { return infinite_react_1.DragList; } });
|
|
8
|
+
Object.defineProperty(exports, "useDragDropProvider", { enumerable: true, get: function () { return infinite_react_1.useDragDropProvider; } });
|
|
9
|
+
Object.defineProperty(exports, "useDragListContext", { enumerable: true, get: function () { return infinite_react_1.useDragListContext; } });
|
|
10
|
+
Object.defineProperty(exports, "DRAG_ITEM_ATTRIBUTE", { enumerable: true, get: function () { return infinite_react_1.DRAG_ITEM_ATTRIBUTE; } });
|
|
11
|
+
function defaultDragProxyMove({ proxyElement, dx, dy }) {
|
|
12
|
+
proxyElement.style.transform = `translate3d(${Math.round(dx)}px, ${Math.round(dy)}px, 0)`;
|
|
13
|
+
}
|
package/src/env.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = {
|
|
4
4
|
NEXT_PUBLIC_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: "22.0.
|
|
5
|
+
PUBLISH_TIMESTAMP: 1776278148216 || Date.now(),
|
|
6
|
+
VERSION: "22.1.0-canary.0" || '--current-version--',
|
|
7
7
|
};
|