Merge pull request #2901 from remychantenay/ios-label-textfield-lgt-indicator
iOS: Add length indicator to new label textfield
This commit is contained in:
@ -116,8 +116,16 @@ struct CreateLabelView: View {
|
||||
}
|
||||
.padding(.bottom, 8)
|
||||
|
||||
TextField("Label Name", text: $newLabelName)
|
||||
TextField(LocalText.labelNamePlaceholder, text: $newLabelName)
|
||||
.textFieldStyle(StandardTextFieldStyle())
|
||||
.onChange(of: newLabelName) { inputLabelName in
|
||||
newLabelName = String(inputLabelName.prefix(viewModel.labelNameMaxLength))
|
||||
}
|
||||
|
||||
Text("\(newLabelName.count)/\(viewModel.labelNameMaxLength)")
|
||||
.font(.caption)
|
||||
.frame(maxWidth: .infinity, alignment: .trailing)
|
||||
.foregroundColor(newLabelName.count < viewModel.labelNameMaxLength ? .gray : .red)
|
||||
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
LazyHGrid(rows: rows, alignment: .top, spacing: 20) {
|
||||
|
||||
@ -5,6 +5,8 @@ import SwiftUI
|
||||
import Views
|
||||
|
||||
@MainActor final class LabelsViewModel: ObservableObject {
|
||||
let labelNameMaxLength = 64
|
||||
|
||||
@Published var isLoading = false
|
||||
@Published var selectedLabels = Set<LinkedItemLabel>()
|
||||
@Published var unselectedLabels = Set<LinkedItemLabel>()
|
||||
|
||||
@ -26,6 +26,7 @@ public enum LocalText {
|
||||
public static let labelsViewAssignNameColor = localText(key: "labelsViewAssignNameColor")
|
||||
public static let createLabelMessage = localText(key: "createLabelMessage")
|
||||
public static let labelsPurposeDescription = localText(key: "labelsPurposeDescription")
|
||||
public static let labelNamePlaceholder = localText(key: "labelNamePlaceholder")
|
||||
|
||||
// Manage Account View
|
||||
public static let manageAccountDelete = localText(key: "manageAccountDelete")
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
"labelsViewAssignNameColor" = "Assign a name and color.";
|
||||
"createLabelMessage" = "Create a new Label";
|
||||
"labelsPurposeDescription" = "Use labels to create curated collections of links.";
|
||||
"labelNamePlaceholder" = "Label Name";
|
||||
|
||||
// Manage Account View
|
||||
"manageAccountDelete" = "Delete Account";
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
"labelsViewAssignNameColor" = "Asigna un nombre y un color.";
|
||||
"createLabelMessage" = "Crea una nueva Etiqueta";
|
||||
"labelsPurposeDescription" = "Usa Etiquetas para coleccione de enlaces organizadas.";
|
||||
"labelNamePlaceholder" = "Nombre de la etiqueta";
|
||||
|
||||
// Manage Account View
|
||||
"manageAccountDelete" = "Borrar Cuenta";
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
"labelsViewAssignNameColor" = "指定名称和颜色。";
|
||||
"createLabelMessage" = "创建新标签";
|
||||
"labelsPurposeDescription" = "使用标签创建精选的链接集合。";
|
||||
"labelNamePlaceholder" = "标签名称";
|
||||
|
||||
// Manage Account View
|
||||
"manageAccountDelete" = "删除帐户";
|
||||
|
||||
Reference in New Issue
Block a user