package Ġcom . github . mv ys ny . k ari bud sl . v 1 0 Ċ Ċ import Ġcom . vaadin . flow . component . Component Ċ import Ġcom . vaadin . flow . dom . Element Ċ import Ġcom . vaadin . flow . dom . Node Ċ import Ġcom . vaadin . flow . shared . util . Shared Util Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ import Ġjava . io . Serializable Ċ Ċ /** Ċ Ġ* ĠReads / writes Ġ[ Pol ymer ĠElement Ġproperty ][ com . vaadin . flow . dom . Element . getProperty ] Ġof Ġthis Ġcomponent . ĠAllows Ġyou Ġto Ġsimply Ċ Ġ* Ġexpose ĠString ĠPol ymer Ġproperties Ġon Ġyour ĠV aad in Ġcomponent Ġas Ġfollows : Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġ@ Tag (" my - test - element ") Ċ Ġ* Ġclass ĠMy Test Ġ: ĠComponent () Ġ{ Ċ Ġ* ĠĠ Ġvar Ġg reeting : ĠString Ġby ĠElement String Property () Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠNo Ġ* camel Case * Ġto Ġ* dash - separated * Ġconversion Ġis Ġperformed . Ċ Ġ* Ġ@ property ĠdefaultValue Ġused Ġin Ġplace Ġof Ġ` null ` Ġvalue Ċ Ġ*/ Ċ class ĠElement String Property ( val ĠdefaultValue : ĠString Ġ= Ġ"") Ġ: ĠRead Write Property < Component , ĠString >, ĠSerializable Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠComponent , Ġproperty : ĠK Property < *> ): ĠString Ġ= Ġthis Ref . element . getProperty ( property . name , ĠdefaultValue ) ĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠComponent , Ġproperty : ĠK Property <* >, Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ref . element . setProperty ( property . name , Ġif Ġ( value Ġ== ĠdefaultValue ) Ġnull Ġelse Ġvalue ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReads / writes Ġ[ Pol ymer ĠElement Ġproperty ][ com . vaadin . flow . dom . Element . getProperty ] Ġof Ġthis Ġcomponent . ĠAllows Ġyou Ġto Ġsimply Ċ Ġ* Ġexpose Ġboolean ĠPol ymer Ġproperties Ġon Ġyour ĠV aad in Ġcomponent Ġas Ġfollows : Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġ@ Tag (" my - test - element ") Ċ Ġ* Ġclass ĠMy Test Ġ: ĠComponent () Ġ{ Ċ Ġ* ĠĠ Ġvar Ġis Dark The med : ĠBoolean Ġby ĠElement Boolean Property () Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠA Ġvalue Ġdefined Ġas Ġsome Ġother Ġtype Ġthan Ġboolean Ġis Ġconverted Ġaccording Ġto Ċ Ġ* ĠJavaScript Ġsemantics : Ċ Ġ* Ġ* ĠString Ġvalues Ġare Ġ` true `, Ġexcept Ġfor Ġthe Ġempty Ġstring . Ċ Ġ* Ġ* ĠNum erical Ġvalues Ġare Ġ< code > true </ code >, Ġexcept Ġfor Ġ 0 Ġand Ġ` NaN `. Ċ Ġ* Ġ* ĠJSON Ġobject Ġand ĠJSON Ġarray Ġvalues Ġare Ġalways Ġ` true `. Ċ Ġ* Ċ Ġ* ĠNo Ġ* camel Case * Ġto Ġ* dash - separated * Ġconversion Ġis Ġperformed . Ċ Ġ* Ġ@ property ĠdefaultValue Ġused Ġin Ġplace Ġof Ġ` null ` Ġvalue Ċ Ġ*/ Ċ class ĠElement Boolean Property ( val ĠdefaultValue : ĠBoolean ) Ġ: ĠRead Write Property < Component , ĠBoolean >, ĠSerializable Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠComponent , Ġproperty : ĠK Property < *> ): ĠBoolean Ġ= Ġthis Ref . element . getProperty ( property . name , ĠdefaultValue ) ĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠComponent , Ġproperty : ĠK Property <* >, Ġvalue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ref . element . setProperty ( property . name , Ġvalue ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReads / writes Ġ[ DOM ĠElement Ġattribute ][ com . vaadin . flow . dom . Element . getAttribute ] Ġof Ġthis Ġcomponent . ĠAllows Ġyou Ġto Ġsimply Ċ Ġ* Ġexpose ĠDOM Ġattributes Ġon Ġyour ĠV aad in Ġcomponent Ġas Ġfollows : Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġ@ Tag (" my - test - element ") Ċ Ġ* Ġclass ĠMy Test Ġ: ĠComponent () Ġ{ Ċ Ġ* ĠĠ Ġvar ĠuserName : ĠString Ġby ĠElement Attribute Property () Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠSetting Ġthe Ġvalue Ġto Ġ` null ` Ġwill Ġremove Ġthe Ġattribute Ġfrom Ġthe Ġelement . Ċ Ġ* Ċ Ġ* ĠThe Ġ* camel Case * Ġproperty Ġname Ġis Ġautomatically Ġconverted Ġto Ġ* dash - separated * Ġstyle . Ċ Ġ* Ċ Ġ* ĠNote : ĠAn Ġempty Ġattribute Ġvalue Ġ(` "" `) Ġwill Ġbe Ġrendered Ġas Ċ Ġ* Ġ`< div Ġsomething >` Ġand Ġnot Ġ`< div Ġsomething =""> `. Ċ Ġ* Ċ Ġ* ĠNote Ġthat Ġattribute Ġchanges Ġmade Ġon Ġthe Ġserver Ġare Ġsent Ġto Ġthe Ġclient Ġbut Ċ Ġ* Ġattribute Ġchanges Ġmade Ġon Ġthe Ġclient Ġside Ġare Ġnot Ġreflected Ġback Ġto Ġthe Ċ Ġ* Ġserver . Ċ Ġ* Ċ Ġ* ĠFor Ġmore Ġinformation Ġsee ĠV aad in Ġ[ com . vaadin . flow . dom . Element . getAttribute ]. Ċ Ġ* Ġ@ property ĠdefaultValue Ġused Ġin Ġplace Ġof Ġ` null ` Ġvalue Ċ Ġ*/ Ċ class ĠElement Attribute Property ( val ĠdefaultValue : ĠString ? Ġ= Ġnull ) Ġ: ĠRead Write Property < Component , ĠString ? >, ĠSerializable Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠComponent , Ġproperty : ĠK Property < *> ): ĠString ? Ġ= Ġthis Ref . element . getAttribute ( Shared Util . camel Case To Dash Separ ated ( property . name )) Ġ?: ĠdefaultValue ĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠComponent , Ġproperty : ĠK Property <* >, Ġvalue : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewValue : ĠString ? Ġ= Ġif Ġ( value Ġ== ĠdefaultValue ) Ġnull Ġelse Ġvalue ĊĠĠĠĠĠĠĠ Ġval Ġattribute Name : ĠString Ġ= ĠShared Util . camel Case To Dash Separ ated ( property . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( newValue Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref . element . removeAttribute ( attribute Name ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref . element . setAttribute ( attribute Name , ĠnewValue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠInser ts Ġ[ new Node ] Ġas Ġa Ġchild , Ġright Ġbefore Ġan Ġ[ existing Node ]. Ċ Ġ*/ Ċ fun ĠElement . insertBefore ( new Node : ĠElement , Ġexisting Node : ĠElement ) Ġ{ ĊĠĠĠ Ġval Ġparent : ĠElement Ġ= Ġrequire NotNull ( existing Node . parent ) Ġ{ Ġ"$ existing Node Ġhas Ġno Ġparent Ġelement " Ġ} ĊĠĠĠ Ġrequire ( parent Ġ== Ġthis ) Ġ{ Ġ"$ existing Node Ġis Ġnot Ġnested Ġin Ġ$ this " Ġ} ĊĠĠĠ Ġinsert Child ( indexOf Child ( existing Node ), ĠnewNode ) Ċ } Ċ