On 2/23/18, 7:32 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> wrote:

>I have started to work on MDL and move all typeNames from createElement to
>constructor. Unfortunately something is not right here.
>1) I still need to exclude BasicJS.swc:default.css - I did add theme to
>MaterialDesignLite module maven build - it didn't help.
>2) If I cannot setup typeNames and classNames inside my component, how can
>I achieve switching some UI parts of the component ? In MDL it is quite
>common that if I would like to change component I'm adding to it css
>[1] - This is the example. If I remove line it doesn't work. There are
>several places in MDL where we are doing such things. It is common in JS
>world doing such things.

That's because the JS world doesn't have strong typing.  They can
transform a TextInput into a TextArea and not care.  I suspect that if you
set shadow at runtime it won't have an effect because typeNames is not
re-evaluated after adddedToParent.  The className property is suppose to
combine with typeNames and result in the element.classList by setting (in
addedToParent) the element.className to the space-separated list of
everything in typeNames and className.  So, if MDL code manipulates
element.classList, I think it should be echoing those changes into the
className property, not typeNames.  typeNames should be considered
"write-once" or "write during constructor" and not changed afterwards.  It
is the set of things that go in the element.classList that should be
immutable.  As immutable as declaring a true subclass.  className is for
the things that go in element.classList that can change at runtime.

My 2 cents,

>typeNames = element.className;
>Thoughts ?
>2018-02-23 15:55 GMT+01:00 Piotr Zarzycki <piotrzarzyck...@gmail.com>:
>> Peter,
>> That is interesting what you are saying. What will happen then if you
>> class which extends other one. The parent class is setting typeNames and
>> derived one also before super? The parent one will override it?
>> I cannot check now how typeNames is implemented.
>> Piotr
>> On Fri, Feb 23, 2018, 15:13 Peter Ent <p...@adobe.com.invalid> wrote:
>>> I have been guilty of this and have been using typeNames now. I've
>>> that I need to set typeNames before calling super() in the
>>>constructor. I
>>> thought it was done afterwards, but if I set typeNames after calling
>>> super(), the typeName I set does not show up in the HTML produced.
>>> Also, suppose I have this: A Menu with a label inside of it. People
>>> want to change the background color of the menu and the color of the
>>> label's text. If I were doing this in plain HTML/JS/CSS, I would set a
>>> selector:  .Menu .Label { color: blue; } but that's not supported in
>>> Flash Player. So when I set up the typeName for the label inside of the
>>> Menu should I set it to: Menu_Label or MenuLabel or Menu-Label? And is
>>> using "." in a selector name a good idea? I would think the CSS
>>> in the browser would be confused between ".x.y" and ".x .y" which can
>>> be written as ".x.y". Basically, we should have a consist naming
>>> here.
>>> ‹peter
>>> On 2/23/18, 4:09 AM, "Gabe Harbs" <harbs.li...@gmail.com> wrote:
>>> >There¹s some edge cases which seem problematic. One example:
>>> >ComboBoxBiew has the following:
>>> >            input = new TextInput();
>>> >            input.className = "ComboBoxTextInput";
>>> >
>>> >            button = new TextButton();
>>> >            button.className =
>>> >"opt_org-apache.royale-html-ComboBox_Button";
>>> >
>>> >Input and button are both external to the view class, but are managed
>>> >the view class. On the other hand, there is a chance that the user
>>> >wan to style them. I¹m not sure whether className or typeNames is more
>>> >appropriate hereŠ
>>> >
>>> >Harbs
>>> >
>>> >> On Feb 23, 2018, at 11:03 AM, Gabe Harbs <harbs.li...@gmail.com>
>>> wrote:
>>> >>
>>> >> I¹ll help.
>>> >>
>>> >>> On Feb 23, 2018, at 10:50 AM, Alex Harui <aha...@adobe.com.INVALID>
>>> >>>wrote:
>>> >>>
>>> >>> Quick note before I shut down for the night.
>>> >>>
>>> >>> UIBase has both a typeNames and className property.  TypeNames is
>>> >>>to
>>> >>> emulate Flex-like type selectors in the CSS lookup.  It should be
>>> >>>in
>>> >>> the constructor and never set from outside the class.  There are a
>>> >>> classes in Basic and lots of classes in MDL that should be
>>>upgraded to
>>> >>>set
>>> >>> typeNames in the constructor.  Subclasses can append to the base
>>> >>>class's
>>> >>> typeNames
>>> >>>
>>> >>> className is the opposite.  It should never be set inside the
>>> >>>component's
>>> >>> class.  It is for users of that component to set styles on the
>>> >>>component.
>>> >>>
>>> >>> Can we get a volunteer to clean this up?
>>> >>>
>>> >>> Thanks,
>>> >>> -Alex
>>> >>>
>>> >>
>>> >
>Piotr Zarzycki

Reply via email to