package Ġshow cases Ċ Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġdev . pet us ka . k atalog . runtime . Show case Ċ import Ġdev . pet us ka . k atalog . runtime . layout . Interactive Show case Ċ import Ġdev . pet us ka . k mdc . list .* Ċ import Ġdev . pet us ka . k mdc . list . item .* Ċ import Ġsandbox . control . Boolean Control Ċ import Ġsandbox . control . Choice Control Ċ import Ġsandbox . util . Named Group Ċ Ċ private Ġclass ĠM DC List VM Ġ{ ĊĠ Ġvar Ġtype Ġby Ġmutable State Of ( M DC ListType . Default ) ĊĠ Ġvar Ġsize Ġby Ġmutable State Of ( M DC List Size . Single Line ) ĊĠ Ġvar Ġselection Ġby Ġmutable State Of ( M DC List Selection . Single ) ĊĠ Ġvar Ġdense Ġby Ġmutable State Of ( false ) ĊĠ Ġvar Ġwrap Focus Ġby Ġmutable State Of ( false ) ĊĊĠ Ġvar Ġdivider Ġby Ġmutable State Of ( false ) ĊĠ Ġvar Ġinset Ġby Ġmutable State Of ( M DC List Divider Inset . None ) ĊĊĠ Ġval Ġitems Ġ= ĠlistOf (" Java ", Ġ" Kotlin ", Ġ" Scala ", Ġ" Gro ovy ", Ġ" JavaScript ", Ġ" TypeScript ") Ċ } Ċ Ċ @ Composable Ċ @ Show case ( id Ġ= Ġ" M DC List ") Ċ fun ĠM DC List () Ġ= ĠInteractive Show case ( ĊĠ ĠviewModel Ġ= Ġ{ ĠM DC List VM () Ġ}, ĊĠ Ġcontrols Ġ= Ġ{ ĊĠĠĠ ĠChoice Control (" Type ", ĠM DC ListType . values (). associate By ( M DC ListType :: name ), Ġ:: type ) ĊĠĠĠ ĠChoice Control (" Size ", ĠM DC List Size . values (). associate By ( M DC List Size :: name ), Ġ:: size ) ĊĠĠĠ ĠChoice Control (" Selection ", ĠM DC List Selection . values (). associate By ( M DC List Selection :: name ), Ġ:: selection ) ĊĠĠĠ ĠBoolean Control (" Dense ", Ġ:: dense ) ĊĠĠĠ ĠBoolean Control (" Wrap ĠFocus ", Ġ:: wrap Focus ) ĊĠĠĠ ĠNamed Group (" Divider ") Ġ{ ĊĠĠĠĠĠ ĠBoolean Control (" Enabled ", Ġ:: divider ) ĊĠĠĠĠĠ ĠChoice Control (" Inset ", ĠM DC List Divider Inset . values (). associate By ( M DC List Divider Inset :: name ), Ġ:: in set ) ĊĠĠĠ Ġ} ĊĠ Ġ}, Ċ ) Ġ{ ĊĠ ĠM DC List ( ĊĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠ Ġselection Ġ= Ġselection , ĊĠĠĠ Ġattrs Ġ= Ġ{ ĊĠĠĠĠĠ Ġregister Events () ĊĠĠĠ Ġ} ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġitems . chunk ed ( 2 ). forEach Indexed Ġ{ Ġi , Ġgroup Ġ-> ĊĠĠĠĠĠ ĠM DC List Group Ġ{ ĊĠĠĠĠĠĠĠ ĠSub header (" Group Ġ$ i ") ĊĠĠĠĠĠĠĠ ĠM DC List ( ĊĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠ Ġselection Ġ= Ġselection , ĊĠĠĠĠĠĠĠĠĠ Ġdense Ġ= Ġdense , ĊĠĠĠĠĠĠĠĠĠ Ġwrap Focus Ġ= Ġwrap Focus , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġgroup . forEach Indexed Ġ{ Ġj , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ" k mdc - list - item -${ i Ġ* Ġ 2 Ġ+ Ġj }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( selection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM DC List Selection . Single Radio Ġ-> ĠRadio Graphic ( false , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM DC List Selection . Multi Checkbox Ġ-> ĠCheckbox Graphic ( false , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ== ĠM DC List Size . Two Line ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLabel ( for Id Ġ= Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSecondary ("$ item Ġdescription ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLabel ( text Ġ= Ġitem , Ġfor Id Ġ= Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( divider Ġ&& Ġj Ġ== Ġ 0 ) ĠDiv ider ( in set Ġ= Ġinset ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( divider Ġ&& Ġi Ġ% Ġ 2 Ġ== Ġ 0 ) ĠDiv ider ( in set Ġ= Ġinset ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠM DC List Attrs Scope <* >. register Events () Ġ{ ĊĠ Ġon Action Ġ{ Ġconsole . log (" M DC List # on Action ", Ġit . detail ) Ġ} ĊĠ Ġon Selection Changed Ġ{ Ġconsole . log (" M DC List # on Selection Changed ", Ġit . detail ) Ġ} Ċ } Ċ