Carlos,

The browser is only one runtime.  Setting Sprite.width to NaN is not allowed in 
the Flash runtime.  What will the next runtime's requirements be?
Width as a style is a platform-specific API that, by deleting it, AFAICT, has 
the meaning "I want this thing sized to content instead of sized to parent".  
IMO, we do not want to bake platform-specific API usage into our base classes.

Feel free to make private things protected in UIBase, but please do not bake 
platform-specific API usage into Basic.

Thanks,
-Alex
 
On 12/19/19, 10:49 AM, "Carlos Rovira" <[email protected]> wrote:

    Hi Alex,
    
    I can try to add to StyledUIBase instead to UIBase. I think I'll need to
    make some UIBase vars protected instead of private to be able to do so
    
    Anyway, I don't think this is "just-in-case" code. Is a real value width
    can take in Javascript platform. The portability of the code is not
    affected this way since is the standard in browsers: setting style
    properties to null removes the property in all browsers. If we set width to
    NaN in AS3, what does the browser?
    
    I think the problem could be that you're identifying this case with a
    particular layout scenario of a concrete component. It's not the case, I
    found this issue other times when working on Royale, and is not about to
    make a component to size as the parent or size as its content, is about to
    allow to assign a value in a concrete property.
    
    I found that need around three times working on ComboBox, DateField, and
    now in DataGrid. I solved hardcoding the style.width in that concrete code,
    but I think is not the right solution to add code of that kind in the
    framework.
    
    The fact other users does not find this problem is maybe that a part that
    we are few yet in royale, and people is not going to that lower level, is
    that me and you are the only ones working in components most of the time,
    And between both, maybe I'm doing more styling work with css, layouts and
    other kind of visuals.
    
    The solution of adding to StyledUIBase seems to me not the right one, since
    we end adding lots of code (override all that width and height methods) for
    something that is just a particular JS case that all users of UIBase should
    have available, and I'm afraid that some components that are coming from
    other basic components (like Group or DataContiner) will not have that
    properties, and I'll need to add the same code (again) to all that classes.
    
    I think if we are so strict in this kind of cases, we are not using ok
    PAYG, moreover when as I said before I think we are interpreting PAYG not
    right in this concrete case that is just part of the JS platform still not
    considered in Basic implementation.
    
    After this explanation, do you still think I need to add all that code to
    StyledUIBase? Or maybe could it be better to add directly to UIBase the NaN
    case, so the rest of code in Royale could have this missing JS
    implementation?
    
    Thanks! :)
    
    Carlos
    
    
    
    
    
    El jue., 19 dic. 2019 a las 17:34, Alex Harui (<[email protected]>)
    escribió:
    
    > IMO, your proposed change adds code "just-in-case" someone wants to change
    > from sizing-to-parent to sizing-to-content.  We've written lots of
    > FlexJS/Royale code over the years that works just fine without that
    > change.  That implies to me that this scenario is not a "standard case".
    >
    > If you want to build that in as a standard case to Jewel, that's fine.
    > Jewel does not have to be as lightweight as Basic.
    >
    > If, over more years, we hear more folks with these cases for Basic then we
    > can consider adding it to Basic, but I would probably just add a Utils
    > function like "sizeToContent()" that "does the right thing".  In some
    > component sets, sizing to content might force a measuring API to run, for
    > example.
    >
    > IMO, it is better to think of the "semantics" or "meaning" of some code so
    > that we don't bake platform-specific patterns into the framework.  We want
    > the framework to be easily portable to other runtimes someday.
    >
    > My 2 cents,
    > -Alex
    >
    > On 12/19/19, 2:47 AM, "Carlos Rovira" <[email protected]> wrote:
    >
    >     Hi Alex,
    >
    >     My perception for this particular case in the JS platform we are
    > missing a
    >     standard case.
    >     To try to make a comparison is like if we could add to an int var any
    >     number except "0".
    >
    >     IMHO, the PAYG concept does not apply since Basic (and any other set)
    >     should need in some cases to remove width (so browsers apply the
    > default)
    >     and that make JS set "width=null'" to remove it.
    >     IOW, we are not translating correctly to JS in all possible cases.
    >
    >     In other words we have in UIBase this code:
    >
    >     this.positioner.style.width = value.toString() + '%';
    >
    >     I tested UIBase with this change worked:
    >
    >     this.positioner.style.width = isNaN(value) ? null : value.toString() +
    > 'px';
    >
    >     It's ok to do this change?
    >
    >     Thanks
    >
    >     Carlos
    >
    >
    >
    >     El jue., 19 dic. 2019 a las 3:57, Alex Harui 
(<[email protected]
    > >)
    >     escribió:
    >
    >     > Basic has the most minimal support for changing things.  Supporting
    > change
    >     > takes more code, so because of PAYG, only the most expected change
    > are
    >     > supported.
    >     >
    >     > What is the "semantics" behind removing percentWidth?  That you want
    >     > something to go back to sizing to its content?  One option is that
    > could be
    >     > a utils function like sizeToContent(widget:IUIBase) that knows how 
to
    >     > manipulate a particular component set's widgets.  What needs to be
    > done to
    >     > a component might depend on the component set.
    >     >
    >     > My 2 cents,
    >     > -Alex
    >     >
    >     > On 12/18/19, 2:32 PM, "Carlos Rovira" <[email protected]>
    > wrote:
    >     >
    >     >     Hi,
    >     >
    >     >     I think I had this issue at other time.
    >     >
    >     >     Let's say we have a container where percentWidth is configured
    > to 100,
    >     > so
    >     >     in html this is:
    >     >
    >     >     <div style="width:100%"/>
    >     >
    >     >     then we need to remove style="width:100%" so we end with:
    >     >
    >     >     <div/>
    >     >
    >     >     In royale we can do container.percentWidth=100, but there's no
    > way back
    >     >     right?
    >     >     we can't do container.percentWidth = NaN or undefined.
    >     >
    >     >     Or I'm missing something?
    >     >
    >     >     Thanks
    >     >
    >     >
    >     >     --
    >     >     Carlos Rovira
    >     >
    >     >
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C0b3d6057d1b14cb7586308d784b424a8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637123781559401902&amp;sdata=Y0ybUSs3HxewOk9koltEkQ2FNoUYYYpYzIXApau3MYU%3D&amp;reserved=0
    >     >
    >     >
    >     >
    >
    >     --
    >     Carlos Rovira
    >
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C0b3d6057d1b14cb7586308d784b424a8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637123781559401902&amp;sdata=Y0ybUSs3HxewOk9koltEkQ2FNoUYYYpYzIXApau3MYU%3D&amp;reserved=0
    >
    >
    >
    
    -- 
    Carlos Rovira
    
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C0b3d6057d1b14cb7586308d784b424a8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637123781559401902&amp;sdata=Y0ybUSs3HxewOk9koltEkQ2FNoUYYYpYzIXApau3MYU%3D&amp;reserved=0
    

Reply via email to