Ok Understand, but do you agree that  computeFinalClassNames - is something
which is in the UIBase ?

2018-02-28 18:47 GMT+01:00 Alex Harui <[email protected]>:

> I think that in the shadow setter, it would change _shadow and call
> setClassName(computeFinalClassNames());
>
> On 2/28/18, 9:33 AM, "Piotr Zarzycki" <[email protected]> wrote:
>
> >Alex,
> >
> >So we are getting back to the idea where you proposed to have function
> >which computes everything.
> >
> >override public function computeFinalClassNames():String
> >{
> >  return super.computeFinalClassNames() + " " + _shadow;
> >}
> >
> >Where does that function should be placed ? Does that function should be
> >called in addedToParent plus whenever someone change _shadow ? -
> >
> >Because I really don't know how to handle scenario where you have some
> >property isActive = true/false and I need to add/remove class. - In the
> >first launch I use  computeFinalClassNames, but how to handle changing ?
> >
> >Thanks, Piotr
> >
> >
> >2018-02-28 18:26 GMT+01:00 Alex Harui <[email protected]>:
> >
> >> Hi Piotr,
> >>
> >> I think am I not communicating the principles effectively.
> >>
> >> First, IMO, addClassName and removeClassName should not be in UIBase.
> >> Lots of apps can be written without needing these methods.  I think they
> >> can be written as utility functions.
> >>
> >> Second, the computation of the final element.className should represent
> >> the state of the component, so I don't get why you need an
> >> _internalClassName or should ever set it to "".  The computation for a
> >> component with a shadow would be to check the shadow property and if it
> >>is
> >> true, add a className for the shadow to the list.  Then I think you
> >> wouldn't have the problem you showed in the animated GIF.  When the
> >> classname property is set from the outside by MXMLDataInterpreter or
> >>even
> >> user-written code, those classNames are added to the list with the
> >> typeNames and the shadow className if shadow is true and then set on the
> >> element.
> >>
> >> Finally, for addClassName and removeClassName, and all other Royale
> >>code,
> >> we don't want to do much if any parameter checking.  That is also
> >> just-in-case code.  The production code should not be passing in null or
> >> other bad values.  And once you fix that, then the checks that you have
> >> written do not add value.  I have proposed that there are debug-only
> >>code
> >> that does parameter checking.  There is a goog.DEBUG flag you can use
> >>for
> >> that.
> >>
> >> HTH,
> >> -Alex
> >>
> >> On 2/28/18, 12:40 AM, "Piotr Zarzycki" <[email protected]>
> >>wrote:
> >>
> >> >Hi Alex,
> >> >
> >> >Sorry about that. Let me show you code and I recorded GIF with problem
> >> >debugging.
> >> >
> >> >*Code in UIBase which I have implemented:*
> >> >addClassName and removeClassName [1].
> >> >addedToParent what is happen with internal field which I have added [2]
> >> >
> >> >*Code for Testing* [3] - I'm adding first className, than shadow.
> >> >
> >> >*GIF* [4] We are starting from the constructor. Pay attention to the
> >> >moment
> >> >where className is being wiped out, later I have to use my internal
> >> >variable to get it back.
> >> >
> >> >Does that more clean now ?
> >> >
> >> >[1]
> >> >https://na01.safelinks.protection.outlook.com/?url=
> >> https%3A%2F%2Fpaste.apa
> >> >che.org%2FEumG&data=02%7C01%7Caharui%40adobe.com%
> >> 7Cee5c84b4e3ff4ddb578008d
> >> >57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
> >> 7C636554040718214998&
> >> >sdata=cDT88OF63TdBMPxYY2vwMSIRxD%2FP3DvwHupj%2BQHsofw%3D&reserved=0
> >> >[2]
> >> >https://na01.safelinks.protection.outlook.com/?url=
> >> https%3A%2F%2Fpaste.apa
> >> >che.org%2FArmU&data=02%7C01%7Caharui%40adobe.com%
> >> 7Cee5c84b4e3ff4ddb578008d
> >> >57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
> >> 7C636554040718214998&
> >> >sdata=m6whImrP70u7kzRxCbErlxCHWef8TKNejwm4Sr7bw7g%3D&reserved=0
> >> >[3]
> >> >https://na01.safelinks.protection.outlook.com/?url=
> >> https%3A%2F%2Fpaste.apa
> >> >che.org%2FKrxq&data=02%7C01%7Caharui%40adobe.com%
> >> 7Cee5c84b4e3ff4ddb578008d
> >> >57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
> >> 7C636554040718214998&
> >> >sdata=tpeUYSQIXGXtES8hyr7zSeet528ZTczSltcNccqRGDo%3D&reserved=0
> >> >[4]
> >> >https://na01.safelinks.protection.outlook.com/?url=
> >> https%3A%2F%2F1drv.ms%2
> >> >Fu%2Fs!ApVpLyjpHDC2hPtoCi65kIZZPwjSpQ&data=02%7C01%7Caharui%40adobe
> .com
> >> %7C
> >> >ee5c84b4e3ff4ddb578008d57e87046f%7Cfa7b1b5a7b34438794aed2c178de
> >> cee1%7C0%7C
> >> >0%7C636554040718214998&sdata=eX%2FgZ0MA%2BdQJjcpYtMkk1pw3r0iVkdRa%
> >> 2F6TWRTG
> >> >10OY%3D&reserved=0
> >> >
> >> >Thanks,
> >> >Piotr
> >> >
> >> >2018-02-27 23:31 GMT+01:00 Alex Harui <[email protected]>:
> >> >
> >> >> Hi Piotr,
> >> >>
> >> >> I could not understand this explanation. Might be better to show
> >>actual
> >> >> code.  For example in #3, there is a cssClass variable that I don't
> >>know
> >> >> about.  Also you mention at the bottom setting something as empty,
> >>but
> >> >>I'm
> >> >> not sure what that is.
> >> >>
> >> >> However, IMO, this code should be in utility functions, not in
> >>UIBase.
> >> >>I
> >> >> think plenty of useful applications can be built without changing
> >> >> classNames at runtime.
> >> >>
> >> >> I'm off-line for the next several hours so we can pick this up again
> >>in
> >> >> your morning.
> >> >>
> >> >> Thanks for working on it,
> >> >> -Alex
> >> >>
> >> >> On 2/27/18, 2:21 PM, "Piotr Zarzycki" <[email protected]>
> >> wrote:
> >> >>
> >> >> >Here is how I'm thinking to resolve that issue. I would take Harb's
> >> >> >proposition and add to UIBase  addClassName() and removeClassName().
> >> >>Next
> >> >> >I
> >> >> >would add internal field _internalClassName:String.
> >> >> >
> >> >> >addClassName(value):
> >> >> >1) Will check if provided class name exits in _className and in
> >> >> >_internalClassName.
> >> >> >2) Will add to _internalClassName += value
> >> >> >3) Assign to the element.className in the following way:
> >> >>element.className
> >> >> >= cssClass + " " + _className + " " + typeNames;
> >> >> >
> >> >> >removeClassName(value)
> >> >> >1) Will check if provided classs name exists in  _className or in
> >> >> >_internalClassName
> >> >> >2) Make a replace to empty string if css class name exists.
> >> >> >_className.replace(value, "");
> >> >> >3) Assign to the element.className: element.className = _className
> >>+ "
> >> >>" +
> >> >> >typeNames;
> >> >> >
> >> >> >In added to parent we are computing _internalClassName with
> >>_className
> >> >>and
> >> >> >typeNames. Then it's being set as empty.
> >> >> >
> >> >> >element.className =  _internalClassName  + " " + _className + " " +
> >> >> >typeNames;
> >> >> >
> >> >> >I have implemented it and it seems to be working. Waiting for your
> >> >> >thoughts
> >> >> >on that solution. The last step where we are adding all three
> >>fields is
> >> >> >the
> >> >> >most important. Points 3 in addClassName and removeClassName are
> >> >> >necessary,
> >> >> >because user may want to more dynamically manipulate classes once
> >> >> >component
> >> >> >is created. Ex. "is-active" class is removed and added on demand.
> >> >> >
> >> >> >Thanks, Piotr
> >> >> >
> >> >> >
> >> >> >2018-02-27 13:38 GMT+01:00 Piotr Zarzycki
> >><[email protected]>:
> >> >> >
> >> >> >> I think I have analyzed everything and have some implementation
> >> >> >> proposition. I will try to provide it later today.
> >> >> >>
> >> >> >> Thanks, Piotr
> >> >> >>
> >> >> >> 2018-02-27 13:35 GMT+01:00 Harbs <[email protected]>:
> >> >> >>
> >> >> >>> ExpandableSearch broke too.
> >> >> >>>
> >> >> >>> > On Feb 25, 2018, at 6:15 PM, Piotr Zarzycki
> >> >> >>><[email protected]>
> >> >> >>> wrote:
> >> >> >>> >
> >> >> >>> > Harbs,
> >> >> >>> >
> >> >> >>> > If you are using something more than MDL Dialog in your
> >> >>application
> >> >> >>>it
> >> >> >>> > would be great to get feedback whether I didn't break for you
> >> >> >>>anything.
> >> >> >>> :)
> >> >> >>>
> >> >> >>>
> >> >> >>
> >> >> >>
> >> >> >> --
> >> >> >>
> >> >> >> Piotr Zarzycki
> >> >> >>
> >> >> >> Patreon:
> >> >> >>*https://na01.safelinks.protection.outlook.com/?url=
> >> >> https%3A%2F%2Fwww.pat
> >> >> >>reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
> >> >> %7C45a065853ba1
> >> >> >>4a295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
> >> >> cee1%7C0%7C0%7C6365536
> >> >> >>69427477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
> >> >> 9liXcy%2BPg%3D&rese
> >> >> >>rved=0
> >> >> >>
> >> >> >><https://na01.safelinks.protection.outlook.com/?url=
> >> >> https%3A%2F%2Fwww.pat
> >> >> >>reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
> >> >> %7C45a065853ba1
> >> >> >>4a295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
> >> >> cee1%7C0%7C0%7C6365536
> >> >> >>69427477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
> >> >> 9liXcy%2BPg%3D&rese
> >> >> >>rved=0>*
> >> >> >>
> >> >> >
> >> >> >
> >> >> >
> >> >> >--
> >> >> >
> >> >> >Piotr Zarzycki
> >> >> >
> >> >> >Patreon:
> >> >> >*https://na01.safelinks.protection.outlook.com/?url=
> >> >> https%3A%2F%2Fwww.patr
> >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
> >> >> 7C45a065853ba14a
> >> >> >295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
> >> >> cee1%7C0%7C0%7C6365536694
> >> >> >27477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
> >> >> 9liXcy%2BPg%3D&reserved
> >> >> >=0
> >> >> ><https://na01.safelinks.protection.outlook.com/?url=
> >> >> https%3A%2F%2Fwww.patr
> >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
> >> >> 7C45a065853ba14a
> >> >> >295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
> >> >> cee1%7C0%7C0%7C6365536694
> >> >> >27477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
> >> >> 9liXcy%2BPg%3D&reserved
> >> >> >=0>*
> >> >>
> >> >>
> >> >
> >> >
> >> >--
> >> >
> >> >Piotr Zarzycki
> >> >
> >> >Patreon:
> >> >*https://na01.safelinks.protection.outlook.com/?url=
> >> https%3A%2F%2Fwww.patr
> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
> >> 7Cee5c84b4e3ff4d
> >> >db578008d57e87046f%7Cfa7b1b5a7b34438794aed2c178de
> >> cee1%7C0%7C0%7C6365540407
> >> >18214998&sdata=VYtgB8rsurZAHpO%2FVs%2FqOkmxROz58p7VvQ%2B0EK8VPPc%
> >> 3D&reserv
> >> >ed=0
> >> ><https://na01.safelinks.protection.outlook.com/?url=
> >> https%3A%2F%2Fwww.patr
> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
> >> 7Cee5c84b4e3ff4d
> >> >db578008d57e87046f%7Cfa7b1b5a7b34438794aed2c178de
> >> cee1%7C0%7C0%7C6365540407
> >> >18214998&sdata=VYtgB8rsurZAHpO%2FVs%2FqOkmxROz58p7VvQ%2B0EK8VPPc%
> >> 3D&reserv
> >> >ed=0>*
> >>
> >>
> >
> >
> >--
> >
> >Piotr Zarzycki
> >
> >Patreon:
> >*https://na01.safelinks.protection.outlook.com/?url=
> https%3A%2F%2Fwww.patr
> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
> 7Cda0fd75922c94d
> >cb789208d57ed16c9f%7Cfa7b1b5a7b34438794aed2c178de
> cee1%7C0%7C0%7C6365543602
> >95549968&sdata=rypScmQqTsmVcrUIZRNnaoZP5VMbI0oJqA6J42ZuhcA%3D&reserved=0
> ><https://na01.safelinks.protection.outlook.com/?url=
> https%3A%2F%2Fwww.patr
> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
> 7Cda0fd75922c94d
> >cb789208d57ed16c9f%7Cfa7b1b5a7b34438794aed2c178de
> cee1%7C0%7C0%7C6365543602
> >95549968&sdata=rypScmQqTsmVcrUIZRNnaoZP5VMbI0
> oJqA6J42ZuhcA%3D&reserved=0>*
>
>


-- 

Piotr Zarzycki

Patreon: *https://www.patreon.com/piotrzarzycki
<https://www.patreon.com/piotrzarzycki>*

Reply via email to