From 8f9f9dcca86b4c11daaf7d1e141534d5803f83f1 Mon Sep 17 00:00:00 2001 From: RAHEEL Date: Wed, 3 Apr 2024 17:59:01 +0500 Subject: [PATCH 1/2] Fix module comps shaking issue --- .../src/components/ScrollBar.tsx | 2 +- .../comps/comps/gridLayoutComp/canvasView.tsx | 26 +++++----- .../src/comps/comps/moduleComp/moduleComp.tsx | 4 +- .../moduleContainerComp/moduleLayoutComp.tsx | 48 ++++++++----------- .../lowcoder/src/comps/comps/rootComp.tsx | 2 +- 5 files changed, 36 insertions(+), 46 deletions(-) diff --git a/client/packages/lowcoder-design/src/components/ScrollBar.tsx b/client/packages/lowcoder-design/src/components/ScrollBar.tsx index 99385cb4b..668646a58 100644 --- a/client/packages/lowcoder-design/src/components/ScrollBar.tsx +++ b/client/packages/lowcoder-design/src/components/ScrollBar.tsx @@ -59,7 +59,6 @@ interface IProps { } export const ScrollBar = ({ - height = "100%", className, children, style, @@ -68,6 +67,7 @@ export const ScrollBar = ({ $hideplaceholder = false, ...otherProps }: IProps) => { + const height = style?.height ?? '100%'; // You can now use the style prop directly or pass it to SimpleBar const combinedStyle = { ...style, height }; // Example of combining height with passed style diff --git a/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx b/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx index 0f8f04164..e368c185b 100644 --- a/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx +++ b/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx @@ -114,21 +114,17 @@ export function CanvasView(props: ContainerBaseProps) { className={CNRootContainer} $bgColor={bgColor} > -
- - - - - -
+ + + ); } diff --git a/client/packages/lowcoder/src/comps/comps/moduleComp/moduleComp.tsx b/client/packages/lowcoder/src/comps/comps/moduleComp/moduleComp.tsx index b20f3c414..d193165b8 100644 --- a/client/packages/lowcoder/src/comps/comps/moduleComp/moduleComp.tsx +++ b/client/packages/lowcoder/src/comps/comps/moduleComp/moduleComp.tsx @@ -123,7 +123,7 @@ class ModuleTmpComp extends ModuleCompBase { )}
{!this.autoScaleCompHeight() && this.children.autoHeight.getPropertyView()} - {this.children.scrollbars.propertyView({ + {!this.autoScaleCompHeight() && this.children.scrollbars.propertyView({ label: trans("prop.scrollbar"), })} {hiddenPropertyView(this.children)} @@ -531,7 +531,7 @@ const ModuleCompWithView = withViewFn(ModuleTmpComp, (comp) => { if (comp.moduleRootComp && comp.isReady) { content = ( - + {comp.moduleRootComp.getView()} diff --git a/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleLayoutComp.tsx b/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleLayoutComp.tsx index e3885175f..6468422bf 100644 --- a/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleLayoutComp.tsx +++ b/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleLayoutComp.tsx @@ -67,9 +67,7 @@ function ModuleLayoutView(props: IProps) { if (readOnly) { return ( - - {props.containerView} - + {props.containerView} ); } @@ -115,30 +113,26 @@ export class ModuleLayoutComp extends ModuleLayoutCompBase implements IContainer const isRowCountLocked = this.children.autoScaleCompHeight.getView(); const rowCount = this.children.containerRowCount.getView(); return ( -
- - { - this.children.containerRowCount.dispatchChangeValueAction(rowCount); - }, - })} - onPositionParamsChange={(params) => { - setTimeout(() => this.children.positionParams.dispatchChangeValueAction(params)); - }} - onLayoutChange={(layout) => { - this.children.containerSize.dispatchChangeValueAction({ - height: layout[moduleContainerId].h, - width: layout[moduleContainerId].w, - }); - }} - /> - -
+ { + this.children.containerRowCount.dispatchChangeValueAction(rowCount); + }, + })} + onPositionParamsChange={(params) => { + setTimeout(() => this.children.positionParams.dispatchChangeValueAction(params)); + }} + onLayoutChange={(layout) => { + this.children.containerSize.dispatchChangeValueAction({ + height: layout[moduleContainerId].h, + width: layout[moduleContainerId].w, + }); + }} + /> ); } getPropertyView() { diff --git a/client/packages/lowcoder/src/comps/comps/rootComp.tsx b/client/packages/lowcoder/src/comps/comps/rootComp.tsx index cc65f7342..b0db715ee 100644 --- a/client/packages/lowcoder/src/comps/comps/rootComp.tsx +++ b/client/packages/lowcoder/src/comps/comps/rootComp.tsx @@ -122,7 +122,7 @@ function RootView(props: RootViewProps) { } return ( -
+
From b64a6ce010711e77b0ee5a0158b3d3bab95a4cc4 Mon Sep 17 00:00:00 2001 From: RAHEEL Date: Wed, 3 Apr 2024 21:48:27 +0500 Subject: [PATCH 2/2] fix broken gridview UI --- .../comps/comps/gridLayoutComp/canvasView.tsx | 1 - .../src/comps/comps/listViewComp/listView.tsx | 56 ++++++++++++++----- .../comps/comps/listViewComp/listViewComp.tsx | 3 +- .../listViewComp/listViewPropertyView.tsx | 1 + .../moduleContainerComp.tsx | 1 + 5 files changed, 47 insertions(+), 15 deletions(-) diff --git a/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx b/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx index e368c185b..1a15ba9d3 100644 --- a/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx +++ b/client/packages/lowcoder/src/comps/comps/gridLayoutComp/canvasView.tsx @@ -105,7 +105,6 @@ export function CanvasView(props: ContainerBaseProps) { cols: parseInt(defaultGrid), }; ////////////////////// - if (readOnly) { return ( ` - overflow: auto; - overflow: overlay; height: ${(props) => (props.$autoHeight ? "100%" : "calc(100% - 32px)")}; `; @@ -55,12 +53,23 @@ const ListOrientationWrapper = styled.div<{ $isHorizontal: boolean, $autoHeight height: 100%; `; -const MinHorizontalWidthContext = createContext(0); +const MinHorizontalWidthContext = createContext({ + horizontalWidth: '100%', + minHorizontalWidth: '100px', +}); const ContainerInListView = (props: ContainerBaseProps ) => { - const minHorizontalWidth = useContext(MinHorizontalWidthContext); + const { + horizontalWidth, + minHorizontalWidth + } = useContext(MinHorizontalWidthContext); return ( -
0 ? `${minHorizontalWidth}px` : "100%"}}> +
; minHeight?: string; unMountFn?: () => void; - minHorizontalWidth: number; + minHorizontalWidth: string; + horizontalWidth: string; }; -function ListItem({ minHorizontalWidth, ...props }: ListItemProps) { - const { itemIdx, offset, containerProps, autoHeight, scrollContainerRef, minHeight } = props; +function ListItem({ + minHorizontalWidth, + horizontalWidth, + ...props +}: ListItemProps) { + const { + itemIdx, + offset, + containerProps, + autoHeight, + scrollContainerRef, + minHeight + } = props; // disable the unmount function to save user's state with pagination // useEffect(() => { @@ -94,14 +115,23 @@ function ListItem({ minHorizontalWidth, ...props }: ListItemProps) { // }, []); return ( - + @@ -217,7 +246,8 @@ export function ListView(props: Props) { scrollContainerRef={ref} minHeight={minHeight} unMountFn={unMountFn} - minHorizontalWidth={horizontal ? minHorizontalWidth : 0} + horizontalWidth={`${100 / noOfColumns}%`} + minHorizontalWidth={horizontal ? minHorizontalWidth : '0px'} /> ); })} diff --git a/client/packages/lowcoder/src/comps/comps/listViewComp/listViewComp.tsx b/client/packages/lowcoder/src/comps/comps/listViewComp/listViewComp.tsx index ebb65eaa6..1e6fe932e 100644 --- a/client/packages/lowcoder/src/comps/comps/listViewComp/listViewComp.tsx +++ b/client/packages/lowcoder/src/comps/comps/listViewComp/listViewComp.tsx @@ -3,6 +3,7 @@ import { BoolControl } from "comps/controls/boolControl"; import { NumberControl, NumberOrJSONObjectArrayControl, + RadiusControl, StringControl, } from "comps/controls/codeControl"; import { styleControl } from "comps/controls/styleControl"; @@ -53,7 +54,7 @@ const childrenMap = { pagination: withDefault(PaginationControl, { pageSize: "6" }), style: styleControl(ListViewStyle), horizontal: withDefault(BoolControl, false), - minHorizontalWidth: withDefault(NumberControl, 100), + minHorizontalWidth: withDefault(RadiusControl, '100px'), }; const ListViewTmpComp = new UICompBuilder(childrenMap, () => <>) diff --git a/client/packages/lowcoder/src/comps/comps/listViewComp/listViewPropertyView.tsx b/client/packages/lowcoder/src/comps/comps/listViewComp/listViewPropertyView.tsx index 4459b9e40..bfd5f7d0a 100644 --- a/client/packages/lowcoder/src/comps/comps/listViewComp/listViewPropertyView.tsx +++ b/client/packages/lowcoder/src/comps/comps/listViewComp/listViewPropertyView.tsx @@ -73,6 +73,7 @@ export function listPropertyView(compType: ListCompType) { {children.horizontal.getView() && ( children.minHorizontalWidth.propertyView({ label: trans("prop.minHorizontalWidth"), + placeholder: '100px', }) )}
diff --git a/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleContainerComp.tsx b/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleContainerComp.tsx index e2a1f0bac..f89cf5cf3 100644 --- a/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleContainerComp.tsx +++ b/client/packages/lowcoder/src/comps/comps/moduleContainerComp/moduleContainerComp.tsx @@ -17,6 +17,7 @@ import { const StyledInnerGrid = styled(InnerGrid)` border: ${(props) => (!props.$bordered ? "0px" : `1px solid ${BorderColor}`)}; height: 100%; + overflow: auto; `; function ModuleContainerView(props: ContainerBaseProps) {