I am working with the KendoReact data grid for a SPA. The idea is that many elements on the page stay consistent, like a navigation bar and footer, and each 'page' is just different content being conditionally rendered inside of that frame.
In this screenshot a very basic diagram is shown color coding sort of how this is laid out. The root contains the constant elements like the left navbar or footer. And react-router switches the inner content around depending on the route chosen. For this page, a div exists to house a backdrop image (blue area). And another div provides a background for the pages elements (pink). Inside that div is titles, buttons, etc. and then a Kendo grid.
A basic layout for my markup is as follows:
<div className="flex flex-col w-screen h-screen fixed">
<div className="flex flex-grow overflow-hidden">
<LeftNavigationBar />
<TablePage>
<div className="w-full h-full p-8 justify-center">
<div className="h-full w-full overflow-y-auto flex flex-col">
<Grid>
</div>
</div>
</TablePage>
</div>
<Footer />
</div>
The issue I am having is with width sizing. My
goal is that I can set some sort of minWidth property on them. I want
them to proportionally size up to fit the component size, but once the
window is small enough the columns reach their minsize, the grid will
shrink and use horizontal scrolling instead.
I read through a few docs to get this working, but none of them were quite right. The first example on This page
is almost exactly what I am looking for. And I tried implimenting this
solution. The problem is with my navbar and other consistent elements.
It looks like the column width setting causes the table to override the
widths of everything else on the page.
This
screenshot is a rough diagram representing what is happening. When I
shrink the window it will actually start to overlap my other elements
until the columns reach a minsize, and then the scrollbar is shown.
So
my question boils down to how I may be able to implement my solution
while keeping the width of my other persistent elements as a priority.
Thank you for taking the time and let me know if I can clarify the
question or send additional items to help.