I think that in the shadow setter, it would change _shadow and call setClassName(computeFinalClassNames());
On 2/28/18, 9:33 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> 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 <aha...@adobe.com.invalid>: > >> 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" <piotrzarzyck...@gmail.com> >>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 <aha...@adobe.com.invalid>: >> > >> >> 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" <piotrzarzyck...@gmail.com> >> 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 >><piotrzarzyck...@gmail.com>: >> >> > >> >> >> 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 <harbs.li...@gmail.com>: >> >> >> >> >> >>> ExpandableSearch broke too. >> >> >>> >> >> >>> > On Feb 25, 2018, at 6:15 PM, Piotr Zarzycki >> >> >>><piotrzarzyck...@gmail.com> >> >> >>> 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%7Cfa7b1b5a7b34438794aed2c178decee1%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%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365543602 >95549968&sdata=rypScmQqTsmVcrUIZRNnaoZP5VMbI0oJqA6J42ZuhcA%3D&reserved=0>*