I’m pretty sure your solution will only work if the user doesn’t set a 
className of their own. Setting className overwrites the entire classList.

> On Mar 12, 2018, at 5:45 PM, Carlos Rovira <carlosrov...@apache.org> wrote:
> 
> Hi
> 
> I made some simplification that works ok in Jewel:
> 
> 1.- remove CSSClassList and use element.classList since is native and
> supported in all browsers we target, this simplifies code, and removes
> classes from core.
> 2.- I still need to use some additional code that can be simplified. I'm
> doing:
> 
> element.classList.toggle("primary", value);
> setClassName(computeFinalClassNames());
> classList has its own toggle function that makes super easy to manage adds
> and removes, so no need to have a custom function in royale
> 
> that uses:
> 
> COMPILE::JS
> override protected function computeFinalClassNames():String
> {
> return super.computeFinalClassNames() + " " + element.classList;
> }
> 
> I'd like to remove that and change the "setClassName" call to nothing, if
> we change UIBase to simple use classList
> 
> My guess is that we can have "typenames" and "classNames" but once all set,
> all can be managed with classList to add/remove since this is native and
> manages all itself
> 
> thoughts?
> 
> 
> 
> 
> 
> 2018-03-12 14:01 GMT+01:00 Carlos Rovira <carlosrov...@apache.org>:
> 
>> Hi,
>> 
>> long thread and very useful read here. Since Jewel is very similar to MDL
>> in adding/removing classes I want to comment here some things:
>> 
>> 1.- I just changed jewel typenames to the constructor and things works ok,
>> I could remove the createElement override
>> 2.- I have into account the use of typenames as something inmutable (as
>> part of definition of a component) and classNames as things that are put by
>> developer, or change at runtime due to some user operation
>> 
>> Then:
>> 
>> 3.- Why not use classList [1] instead of create our own CSSClassList ? is
>> well supported in the browsers we are targeting
>> 
>> Something more "light" :)
>> 
>> 4.- I know that order in html classes are not relevant, in the execution.
>> And most of people here doesn't mind if typenames are before or after
>> classNames. So hope this doesn't make any problem to anyone here:
>> Can I change the code to put typeNames before classNames in
>> computeFinalClassNames? I think this not affects anyone since is a small
>> change and helps me to get organized classnames and identify things. I
>> think is better to see in final html typeNames first then classNames so
>> "inheritance" (to call it some way), could be easy detected by the eye
>> 
>> Thanks
>> 
>> Carlos
>> 
>> 
>> [1] https://www.w3schools.com/Jsref/prop_element_classlist.asp
>> 
>> 
>> 
>> 
>> 
>> 
>> --
>> Carlos Rovira
>> http://about.me/carlosrovira
>> 
>> 
> 
> 
> -- 
> Carlos Rovira
> http://about.me/carlosrovira

Reply via email to