11package com.kavi.droid.color.picker.ui
22
3+ import androidx.compose.foundation.background
4+ import androidx.compose.foundation.border
35import androidx.compose.foundation.layout.Column
46import androidx.compose.foundation.layout.Row
57import androidx.compose.foundation.layout.fillMaxWidth
68import androidx.compose.foundation.layout.padding
79import androidx.compose.foundation.shape.RoundedCornerShape
810import androidx.compose.material3.Button
911import androidx.compose.material3.ExperimentalMaterial3Api
12+ import androidx.compose.material3.MaterialTheme
1013import androidx.compose.material3.ModalBottomSheet
1114import androidx.compose.material3.OutlinedButton
1215import androidx.compose.material3.SheetState
1316import androidx.compose.material3.Tab
1417import androidx.compose.material3.TabRow
18+ import androidx.compose.material3.TabRowDefaults
19+ import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset
1520import androidx.compose.material3.Text
1621import androidx.compose.runtime.Composable
1722import androidx.compose.runtime.MutableState
@@ -21,10 +26,16 @@ import androidx.compose.runtime.mutableStateOf
2126import androidx.compose.runtime.remember
2227import androidx.compose.runtime.setValue
2328import androidx.compose.ui.Modifier
29+ import androidx.compose.ui.draw.shadow
2430import androidx.compose.ui.graphics.Color
31+ import androidx.compose.ui.res.stringResource
32+ import androidx.compose.ui.text.input.TextFieldValue
2533import androidx.compose.ui.text.style.TextAlign
2634import androidx.compose.ui.unit.dp
2735import androidx.compose.ui.unit.sp
36+ import com.kavi.droid.color.palette.util.ColorUtil
37+ import com.kavi.droid.color.picker.R
38+ import com.kavi.droid.color.picker.ui.common.SelectedColorDetail
2839import com.kavi.droid.color.picker.ui.pickers.GridColorPicker
2940import com.kavi.droid.color.picker.ui.pickers.RGBAColorPicker
3041
@@ -44,34 +55,57 @@ import com.kavi.droid.color.picker.ui.pickers.RGBAColorPicker
4455@OptIn(ExperimentalMaterial3Api ::class )
4556@Composable
4657fun KvColorPickerBottomSheet (showSheet : MutableState <Boolean >, sheetState : SheetState , onColorSelected : (selectedColor: Color ) -> Unit ) {
47- ModalBottomSheet (
58+ ModalBottomSheet (
4859 onDismissRequest = {
4960 showSheet.value = false
5061 },
5162 sheetState = sheetState,
63+ containerColor = MaterialTheme .colorScheme.background
5264 ) {
5365 Column {
5466 var selectedColor by remember { mutableStateOf(Color .Black ) }
67+ val colorHex = remember { mutableStateOf(TextFieldValue (" #000000" )) }
5568 var tabIndex by remember { mutableIntStateOf(0 ) }
56- val tabs = listOf (" RGB-A" , " GRID" )
69+ val tabs = listOf (
70+ stringResource(R .string.label_rgba),
71+ stringResource(R .string.label_grid)
72+ )
5773
5874 Text (
59- text = " Pick you color " ,
75+ text = stringResource( R .string.title_pick_color) ,
6076 textAlign = TextAlign .Start ,
6177 modifier = Modifier
62- .fillMaxWidth().padding(start = 16 .dp, end = 16 .dp),
63- fontSize = 32 .sp
78+ .fillMaxWidth()
79+ .padding(start = 16 .dp, end = 16 .dp),
80+ fontSize = 36 .sp
6481 )
6582
6683 TabRow (
6784 modifier = Modifier .padding(start = 12 .dp, end = 12 .dp, top = 8 .dp),
68- selectedTabIndex = tabIndex
85+ selectedTabIndex = tabIndex,
86+ containerColor = Color .Transparent ,
87+ indicator = { tabPositions ->
88+ TabRowDefaults .PrimaryIndicator (
89+ modifier = Modifier
90+ .tabIndicatorOffset(tabPositions[tabIndex]),
91+ color = MaterialTheme .colorScheme.secondary,
92+ width = 150 .dp
93+ )
94+ }
6995 ) {
7096 tabs.forEachIndexed { index, title ->
7197 Tab (
72- text = { Text (title) },
98+ text = {
99+ Text (
100+ text = title,
101+ color = MaterialTheme .colorScheme.secondary,
102+ style = MaterialTheme .typography.bodySmall,
103+ fontSize = 12 .sp
104+ )
105+ },
73106 selected = tabIndex == index,
74- onClick = { tabIndex = index }
107+ onClick = { tabIndex = index },
108+ selectedContentColor = MaterialTheme .colorScheme.secondary,
75109 )
76110 }
77111 }
@@ -80,44 +114,60 @@ fun KvColorPickerBottomSheet(showSheet: MutableState<Boolean>, sheetState: Sheet
80114 modifier = Modifier .padding(16 .dp),
81115 onColorSelected = {
82116 selectedColor = it
117+ colorHex.value = TextFieldValue (ColorUtil .getHex(it))
83118 }
84119 )
85120 1 -> GridColorPicker (
86121 modifier = Modifier .padding(16 .dp),
87122 onColorSelected = {
88123 selectedColor = it
124+ colorHex.value = TextFieldValue (ColorUtil .getHex(it))
89125 }
90126 )
91127 }
92128
93- Row (
129+ Column (
94130 modifier = Modifier
95- .fillMaxWidth()
96- .padding(start = 16 .dp, end = 16 .dp, bottom = 4 .dp),
131+ .padding(start = 16 .dp, end = 16 .dp, bottom = 12 .dp)
132+ .border(1 .dp, Color .White , shape = RoundedCornerShape (8 .dp))
133+ .shadow(
134+ elevation = 10 .dp,
135+ shape = RoundedCornerShape (8 .dp)
136+ )
137+ .background(color = MaterialTheme .colorScheme.background)
138+ .padding(start = 12 .dp, end = 12 .dp)
97139 ) {
98- OutlinedButton (
140+ SelectedColorDetail (color = selectedColor, colorHex = colorHex)
141+
142+ Row (
99143 modifier = Modifier
100- .padding(start = 4 .dp, end = 4 .dp)
101- .weight(1f ),
102- shape = RoundedCornerShape (8 .dp),
103- onClick = {
104- showSheet.value = false
105- }
144+ .fillMaxWidth()
145+ .padding(bottom = 12 .dp),
106146 ) {
107- Text (" Close" )
108- }
147+ OutlinedButton (
148+ modifier = Modifier
149+ .padding(start = 4 .dp, end = 4 .dp)
150+ .weight(1f ),
151+ shape = RoundedCornerShape (8 .dp),
152+ onClick = {
153+ showSheet.value = false
154+ }
155+ ) {
156+ Text (text = stringResource(R .string.label_close), color = MaterialTheme .colorScheme.secondary)
157+ }
109158
110- Button (
111- modifier = Modifier
112- .padding(start = 4 .dp, end = 4 .dp)
113- .weight(1f ),
114- shape = RoundedCornerShape (8 .dp),
115- onClick = {
116- showSheet.value = false
117- onColorSelected.invoke(selectedColor)
159+ Button (
160+ modifier = Modifier
161+ .padding(start = 4 .dp, end = 4 .dp)
162+ .weight(1f ),
163+ shape = RoundedCornerShape (8 .dp),
164+ onClick = {
165+ showSheet.value = false
166+ onColorSelected.invoke(selectedColor)
167+ }
168+ ) {
169+ Text (text = stringResource(R .string.label_select), color = MaterialTheme .colorScheme.onPrimary)
118170 }
119- ) {
120- Text (" Select" )
121171 }
122172 }
123173 }
0 commit comments