Yeah, but I also remembered on other thing. The vast majority of components are never made invisible, so adding a check in each layout bead just-in-case they are made invisible isn't very PAYG.
So maybe there is some other way that setting visible=false can inject code that handles sharing the CSS display property with the layouts. Or maybe it isn't worth worrying about right now. My 2 cents, -Alex On 8/3/17, 8:50 AM, "Harbs" <harbs.li...@gmail.com> wrote: >But it it doesn’t set display, we’re going to have to run layout every >time the visibility changes. > >I’ve already made my changes. I’ll commit soon. > >Ah. I see what you mean. By doing it your way, there’s no reason to >actually run layout until (or if) the visibility is set to true. > >That probably *is* better. I’ll commit what I did for now, because it at >least fixes the bug, and when I have time, I’ll look into improving the >layouts. > >Another thought: > >If visibility is turned on and off multiple times, this might be less >efficient, but the layout might be able to store a flag to avoid running >the layout if not needed… > >Harbs > >> On Aug 3, 2017, at 6:24 PM, Alex Harui <aha...@adobe.com.INVALID> wrote: >> >> Right, so layout code would have to check for display=="none" and not >>set >> display and listen for the show event. >> >> Maybe as you clean up the setting of display multiple times it will be >> come clear as to whether listening for "show" is cheaper/cleaner than >> displayStyleForLayout. >> >> -Alex >> >> On 8/3/17, 8:18 AM, "Harbs" <harbs.li...@gmail.com> wrote: >> >>> The problem is that visible is set before the bead exists. >>> >>> BTW, Some of the layout seem to be reading and setting display multiple >>> times. That can cause layout thrashing. That should probably be >>>resolved. >>> >>>> On Aug 3, 2017, at 6:05 PM, Alex Harui <aha...@adobe.com.INVALID> >>>>wrote: >>>> >>>> FWIW, I'm not sure this is the best pattern. It was what we did to >>>>get >>>> the examples to run. >>>> >>>> Another option is that layout beads listen for changes to visible and >>>> reset the CSS display style when visible changes. >>>> >>>> Food for thought, >>>> -Alex >>>> >>>> On 8/3/17, 8:00 AM, "Harbs" <harbs.li...@gmail.com> wrote: >>>> >>>>> I’m using a VerticalFlexLayout in a component. Under certain >>>>> circumstances, I need to set the visibility of the component to >>>>>false. >>>>> >>>>> These two settings are contradictory in JS. >>>>> >>>>> visible=false sets display to none >>>>> VerticalFlexLayout sets the display to flex >>>>> >>>>> When setting visible to false, it uses a property >>>>> “displayStyleForLayout” >>>>> to store the value set by the layout. The problem is that the layout >>>>> might be applied AFTER visible is already set to false (which is the >>>>> case >>>>> in my situation). >>>>> >>>>> I’m thinking of solving this by exposing displayStyleForLayout so it >>>>> can >>>>> be set by beads if necessary. >>>>> >>>>> Scratch that. I see that already exists. Problem solved… I’ll fix the >>>>> layouts. >>>>> >>>>> Harbs >>>> >>> >> >