/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠPeter ĠKen ji ĠY aman aka Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . py am soft . f ridge . ui Ċ Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . material . Dropdown Menu Ċ import Ġandroidx . compose . material . Dropdown MenuItem Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Outlined TextField Ċ import Ġandroidx . compose . material . RadioButton Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . TextField Colors Ċ import Ġandroidx . compose . material . TextField Defaults Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Close Ċ import Ġandroidx . compose . material . icons . filled . More Vert Ċ import Ġandroidx . compose . material . icons . filled . Search Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . vector . Image Vector Ċ import Ġcom . py am soft . py d roid . theme . key lines Ċ Ċ interface ĠNamed Enum Ġ{ ĊĠ Ġval ĠdisplayName : ĠString Ċ } Ċ Ċ data Ġclass ĠBack Button Handler ( ĊĠĠĠ Ġval Ġimage Vector : ĠImage Vector , ĊĠĠĠ Ġval Ġon Back : Ġ() Ġ-> ĠUnit , Ċ ) Ċ Ċ @ Composable Ċ @ Jvm Over loads Ċ fun Ġ< E > ĠSearch Item Enum ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġsort Values : ĠArray < E >, ĊĠĠĠ Ġsearch : ĠString , ĊĠĠĠ Ġcurrent Sort : ĠE , ĊĠĠĠ Ġcolors : ĠTextField Colors Ġ= ĠTextField Defaults . outlined TextField Colors (), ĊĠĠĠ Ġback Button Handler : ĠBack Button Handler ? Ġ= Ġnull , ĊĠĠĠ Ġon Search Updated : Ġ( String ) Ġ-> ĠUnit , ĊĠĠĠ Ġon Sort Updated : Ġ( E ) Ġ-> ĠUnit , Ċ ) Ġwhere ĠE Ġ: ĠEnum < E >, ĠE Ġ: ĠNamed Enum Ġ{ ĊĠ ĠRow ( ĊĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġif Ġ( back Button Handler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠBack Button ( ĊĠĠĠĠĠĠĠĠĠ Ġback Button Handler Ġ= Ġback Button Handler , ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠSearch Box ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 F ), ĊĠĠĠĠĠĠĠ Ġsearch Ġ= Ġsearch , ĊĠĠĠĠĠĠĠ Ġcolors Ġ= Ġcolors , ĊĠĠĠĠĠĠĠ Ġon Search Updated Ġ= Ġon Search Updated , ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠSort Dropdown ( ĊĠĠĠĠĠĠĠ Ġsort Values Ġ= Ġsort Values , ĊĠĠĠĠĠĠĠ Ġcurrent Sort Ġ= Ġcurrent Sort , ĊĠĠĠĠĠĠĠ Ġon Sort Updated Ġ= Ġon Sort Updated , ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ @ Opt In ( Experimental Animation Api :: class ) Ċ private Ġfun ĠSearch Box ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġsearch : ĠString , ĊĠĠĠ Ġcolors : ĠTextField Colors , ĊĠĠĠ Ġon Search Updated : Ġ( String ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠ ĠOut lined TextField ( ĊĠĠĠĠĠ Ġmodifier Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= ĠMaterial Theme . key lines . baseline ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( bottom Ġ= ĠMaterial Theme . key lines . baseline ), ĊĠĠĠĠĠ Ġcolors Ġ= Ġcolors , ĊĠĠĠĠĠ Ġtext Style Ġ= ĠMaterial Theme . typography . body 1 , ĊĠĠĠĠĠ Ġshape Ġ= ĠMaterial Theme . shapes . medium , ĊĠĠĠĠĠ Ġleading Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Filled . Search , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Search ", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ Ġtrailing Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠAnimated Visibility ( visible Ġ= Ġsearch . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Search Updated ("") Ġ}, ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Filled . Close , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Clear ĠSearch ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ Ġsingle Line Ġ= Ġtrue , ĊĠĠĠĠĠ Ġvalue Ġ= Ġsearch , ĊĠĠĠĠĠ Ġon Value Change Ġ= Ġon Search Updated , ĊĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Search ...", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ}, ĊĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġ< E > ĠSort Dropdown ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġsort Values : ĠArray < E >, ĊĠĠĠ Ġcurrent Sort : ĠE , ĊĠĠĠ Ġon Sort Updated : Ġ( E ) Ġ-> ĠUnit , Ċ ) Ġwhere ĠE Ġ: ĠEnum < E >, ĠE Ġ: ĠNamed Enum Ġ{ ĊĠ Ġvar Ġexpanded Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠ ĠBox ( ĊĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġexpanded Ġ= Ġtrue Ġ}, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Filled . More Vert , ĊĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Sorting ", ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠDropdown Menu ( ĊĠĠĠĠĠĠĠ Ġexpanded Ġ= Ġexpanded , ĊĠĠĠĠĠĠĠ Ġon Dismiss Request Ġ= Ġ{ Ġexpanded Ġ= Ġfalse Ġ}, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġfor Ġ( sort Ġin Ġsort Values ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDropdown MenuItem ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sort Updated ( sort ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠRadio Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġcurrent Sort Ġ== Ġsort , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġsort . displayName , ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠBack Button ( modifier : ĠModifier Ġ= ĠModifier , Ġback Button Handler : ĠBack Button Handler ) Ġ{ ĊĠ Ġval Ġimage Vector Ġ= Ġback Button Handler . image Vector ĊĠ Ġval Ġon Back Ġ= Ġback Button Handler . on Back ĊĠ ĠIcon Button ( ĊĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠ ĠonClick Ġ= Ġon Back , ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= Ġimage Vector , ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Back ", ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ