Skip to content

Commit 725eefb

Browse files
authored
Merge pull request #10601 from woocommerce/issue/10519-character-counter
Blaze: Show character counter in edit-ad screen
2 parents 971305d + c8c5188 commit 725eefb

File tree

1 file changed

+48
-15
lines changed

1 file changed

+48
-15
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/ad/BlazeCampaignCreationEditAdScreen.kt

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import androidx.compose.ui.res.dimensionResource
3939
import androidx.compose.ui.res.painterResource
4040
import androidx.compose.ui.res.stringResource
4141
import androidx.compose.ui.text.input.ImeAction
42+
import androidx.compose.ui.text.style.TextAlign
4243
import androidx.compose.ui.unit.dp
4344
import coil.compose.SubcomposeAsyncImage
4445
import coil.request.ImageRequest.Builder
@@ -169,13 +170,20 @@ private fun AdDataSection(
169170
.fillMaxWidth(),
170171
horizontalAlignment = Alignment.CenterHorizontally
171172
) {
172-
WCOutlinedTextField(
173-
value = viewState.tagLine,
174-
onValueChange = onTagLineChanged,
175-
label = stringResource(id = string.blaze_campaign_edit_ad_change_tagline_title),
176-
singleLine = true,
177-
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next)
178-
)
173+
Box {
174+
WCOutlinedTextField(
175+
value = viewState.tagLine,
176+
onValueChange = onTagLineChanged,
177+
label = stringResource(id = string.blaze_campaign_edit_ad_change_tagline_title),
178+
singleLine = true,
179+
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next)
180+
)
181+
182+
CornerCharacterWarning(
183+
charsLeft = viewState.taglineCharactersRemaining,
184+
modifier = Modifier.align(Alignment.TopEnd)
185+
)
186+
}
179187

180188
Text(
181189
text = stringResource(
@@ -189,16 +197,24 @@ private fun AdDataSection(
189197
.fillMaxWidth()
190198
)
191199

192-
WCOutlinedTextField(
193-
value = viewState.description,
194-
onValueChange = onDescriptionChanged,
195-
label = stringResource(id = string.blaze_campaign_edit_ad_change_description_title),
196-
maxLines = 3,
197-
minLines = 3,
198-
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
200+
Box(
199201
modifier = Modifier
200202
.padding(top = dimensionResource(id = dimen.major_150))
201-
)
203+
) {
204+
WCOutlinedTextField(
205+
value = viewState.description,
206+
onValueChange = onDescriptionChanged,
207+
label = stringResource(id = string.blaze_campaign_edit_ad_change_description_title),
208+
maxLines = 3,
209+
minLines = 3,
210+
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next)
211+
)
212+
213+
CornerCharacterWarning(
214+
charsLeft = viewState.descriptionCharactersRemaining,
215+
modifier = Modifier.align(Alignment.TopEnd)
216+
)
217+
}
202218

203219
Text(
204220
text = stringResource(
@@ -247,6 +263,23 @@ private fun AdDataSection(
247263
}
248264
}
249265

266+
@Composable
267+
private fun CornerCharacterWarning(charsLeft: Int, modifier: Modifier = Modifier) {
268+
if (charsLeft < 10) {
269+
Text(
270+
text = charsLeft.toString(),
271+
style = MaterialTheme.typography.caption,
272+
color = colorResource(id = color.color_error),
273+
textAlign = TextAlign.End,
274+
modifier = modifier
275+
.padding(
276+
top = dimensionResource(id = dimen.major_75),
277+
end = dimensionResource(id = dimen.minor_75)
278+
)
279+
)
280+
}
281+
}
282+
250283
@Composable
251284
private fun AdImageSection(viewState: ViewState, onChangeImageTapped: () -> Unit) {
252285
Column(

0 commit comments

Comments
 (0)