diff --git a/packages/web/src/datagrid/ColumnManager.js b/packages/web/src/datagrid/ColumnManager.js
index 73164a68f..2073f5233 100644
--- a/packages/web/src/datagrid/ColumnManager.js
+++ b/packages/web/src/datagrid/ColumnManager.js
@@ -14,6 +14,7 @@ const Row = styled.div`
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
+ white-space: nowrap;
&:hover {
background-color: lightblue;
}
@@ -103,7 +104,7 @@ export default function ColumnManager(props) {
display.hideAllColumns()}>Hide
display.showAllColumns()}>Show
-
+
{display
.getColumns(columnFilter)
.filter((column) => filterName(columnFilter, column.columnName))
diff --git a/packages/web/src/datagrid/DataGrid.js b/packages/web/src/datagrid/DataGrid.js
index cd66c7dcc..a7bf2c5f4 100644
--- a/packages/web/src/datagrid/DataGrid.js
+++ b/packages/web/src/datagrid/DataGrid.js
@@ -14,6 +14,7 @@ import {
WidgetTitle,
} from './ManagerStyles';
import ReferenceManager from './ReferenceManager';
+import { HorizontalSplitter } from '../widgets/Splitter';
const MainContainer = styled.div`
position: absolute;
@@ -32,6 +33,7 @@ const ColumnManagerContainer = styled.div`
const LeftContainer = styled.div`
background-color: white;
display: flex;
+ flex: 1;
`;
const DataGridContainer = styled.div`
@@ -42,27 +44,47 @@ const DataGridContainer = styled.div`
/** @param props {import('./types').DataGridProps} */
export default function DataGrid(props) {
const Container1 = props.showReferences ? ManagerOuterContainer1 : ManagerOuterContainerFull;
+ const [managerSize, setManagerSize] = React.useState(0);
return (
-
+
-
+
{props.showReferences && (
-
+
)}
- {/*
-
- */}
-
+
+
+ //
+ //
+ //
+ //
+ //
+ //
+ // {props.showReferences && (
+ //
+ //
+ //
+ // )}
+ //
+ //
+
+ // {/*
+ //
+ // */}
+ //
+ //
+ //
+ //
);
}
diff --git a/packages/web/src/datagrid/ManagerStyles.js b/packages/web/src/datagrid/ManagerStyles.js
index 8516b9744..8c16fbf9d 100644
--- a/packages/web/src/datagrid/ManagerStyles.js
+++ b/packages/web/src/datagrid/ManagerStyles.js
@@ -37,7 +37,8 @@ export const ManagerOuterContainerFull = styled(ManagerOuterContainer)`
export const ManagerInnerContainer = styled.div`
flex: 1 1;
- overflow-y: scroll;
+ overflow-y: auto;
+ overflow-x: auto;
`;
export const Input = styled.input`
diff --git a/packages/web/src/datagrid/ReferenceManager.js b/packages/web/src/datagrid/ReferenceManager.js
index 0f4a4210b..06b5fdc1f 100644
--- a/packages/web/src/datagrid/ReferenceManager.js
+++ b/packages/web/src/datagrid/ReferenceManager.js
@@ -23,10 +23,12 @@ const LinkContainer = styled.div`
}
cursor: pointer;
display: flex;
+ flex-wrap: nowrap;
`;
const NameContainer = styled.div`
margin-left: 5px;
+ white-space: nowrap;
`;
function ManagerRow({ tableName, columns, Icon, onClick }) {
@@ -55,7 +57,7 @@ export default function ReferenceManager(props) {
-
+
{foreignKeys && foreignKeys.length > 0 && (
<>
References tables ({foreignKeys.length})
diff --git a/packages/web/src/datagrid/types.ts b/packages/web/src/datagrid/types.ts
index 55fce0d00..65a591ada 100644
--- a/packages/web/src/datagrid/types.ts
+++ b/packages/web/src/datagrid/types.ts
@@ -13,5 +13,6 @@ export interface DataGridProps {
onReferenceClick?: (def: GridReferenceDefinition) => void;
onReferenceSourceChanged?: Function;
refReloadToken?: string;
- masterLoadedTime?: number
+ masterLoadedTime?: number;
+ managerSize?: number;
}
diff --git a/packages/web/src/widgets/Splitter.js b/packages/web/src/widgets/Splitter.js
index d3d666e5a..d95a2bacc 100644
--- a/packages/web/src/widgets/Splitter.js
+++ b/packages/web/src/widgets/Splitter.js
@@ -4,12 +4,17 @@ import styled from 'styled-components';
import useDimensions from '../utility/useDimensions';
import theme from '../theme';
-const MainContainer = styled.div`
+const VerticalMainContainer = styled.div`
flex: 1;
display: flex;
flex-direction: column;
`;
+const HorizontalMainContainer = styled.div`
+ flex: 1;
+ display: flex;
+`;
+
export const VerticalSplitHandle = styled.div`
background-color: #ccc;
height: ${theme.splitter.thickness}px;
@@ -74,27 +79,72 @@ export function useSplitterDrag(axes, onResize) {
return handleResizeDown;
}
-export function VerticalSplitter({ children }) {
+function SplitterCore({
+ children,
+ eventField,
+ dimensionField,
+ styleField,
+ Handle,
+ Main,
+ initialValue = undefined,
+ size = undefined,
+ setSize = undefined,
+}) {
const childrenArray = _.isArray(children) ? children : [children];
if (childrenArray.length !== 1 && childrenArray.length != 2) {
throw new Error('Splitter must have 1 or 2 children');
}
const [refNode, dimensions] = useDimensions();
- const [height1, setHeight1] = React.useState(0);
+ const [mySize, setMySize] = React.useState(0);
+ const size1 = size === undefined ? mySize : size;
+ const setSize1 = setSize === undefined ? setMySize : setSize;
React.useEffect(() => {
- setHeight1(dimensions.height / 2);
+ if (_.isString(initialValue) && initialValue.endsWith('px')) setSize1(parseInt(initialValue.slice(0, -2)));
+ else if (_.isString(initialValue) && initialValue.endsWith('%'))
+ setSize1((dimensions[dimensionField] * parseFloat(initialValue.slice(0, -1))) / 100);
+ else setSize1(dimensions[dimensionField] / 2);
}, [dimensions]);
- const handleResizeDown = useSplitterDrag('clientY', (diff) => setHeight1((v) => v + diff));
+ const handleResizeDown = useSplitterDrag(eventField, (diff) => setSize1((v) => v + diff));
const isSplitter = !!childrenArray[1];
return (
-
- {childrenArray[0]}
- {isSplitter && }
+
+ {childrenArray[0]}
+ {isSplitter && }
{isSplitter && {childrenArray[1]}}
-
+
+ );
+}
+
+export function VerticalSplitter({ children, ...other }) {
+ return (
+
+ {children}
+
+ );
+}
+
+export function HorizontalSplitter({ children, ...other }) {
+ return (
+
+ {children}
+
);
}