GithubHelp home page GithubHelp logo

Comments (6)

connorlanigan avatar connorlanigan commented on July 3, 2024

Hello!

In your example, you are removing the split panel from the page when no item is selected. We recommend not to do that, and instead keep the Split panel always present. Users can open & close the split panel using the arrow icon in the corner. If you have a need for modifying the open/close state of the panel from your code, you can use the splitPanelOpen property on the AppLayout component.

You can see this in action in our "Split view" demo.

There is further documentation in the "Split view" article on our website with more recommendations (including e.g. "When nothing is selected, display the empty state").

from components.

nicolaeClichici avatar nicolaeClichici commented on July 3, 2024

But is there any way to hide the split panel (without 0 selected instances view info) after user selects a record and deselects it ?

from components.

connorlanigan avatar connorlanigan commented on July 3, 2024

It is technically possible, yes. You can conditionally render the split panel by passing undefined into the splitPanel slot if you don't want to render anything (<AppLayout splitPanel={myCondition ? <SplitPanel /> : undefined} />).
Note that in the code example you linked to, you are always passing a component into the splitPanel slot (namely the AppSplitPanel component), which causes the AppLayout to reserve that space on the screen and thus display the table scrollbar above the reserved space. Since your AppSplitPanel component sometimes internally renders nothing, this reserved space is then transparent, so the scrollbar appears to be floating. To not reserve this space, you'd have to move the condition outside of the AppSplitPanel component (as shown in the code above).

However, from a UX perspective, it could be confusing for your users if the split panel disappears sometimes, since there is no clear indication why the split panel is gone and what needs to be done to make it visible. Your users might get confused about the application ("Why is the panel missing - is the application broken? Did they remove that functionality?") or themselves ("Wasn't there a panel here last time I used this website? Am I on the wrong page?").
By always showing the split panel, your users can see that the element they're looking for is there, and they also see what they need to do so that they can use it, since the "0 instances selected" text implies that they should select an instance.

Thus, we recommend to always keep the split panel present (and your users can open/close it).

from components.

nicolaeClichici avatar nicolaeClichici commented on July 3, 2024

Ok, thanks for explanation, but by setting the condition myCondition ? <SplitPanel /> : undefined at AppLayout level, it would re-render the entire AppLayout which is not desired.
Sure I can work around it, and apply the condition there, but isn't it a style bug on the component itself ?
I expect a component with render null not to show a visible scrollbar (that previously was rendered)

WDYT ?

from components.

connorlanigan avatar connorlanigan commented on July 3, 2024

Currently, the AppLayout & SplitPanel components have been designed & implemented with the above-mentioned UX pattern in mind. Conditionally adding and removing the SplitPanel during the lifecycle of the AppLayout is neither intended nor supported, and we do not consider this a bug.

from components.

just-boris avatar just-boris commented on July 3, 2024

Closing due to inactivity. Feel free to reopen if you have additional questions

from components.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.