blockchainethereumblockchain-walleterc20erc721walletxdaidappdecentralizederc1155erc875iosswifttokens
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.9 KiB
84 lines
2.9 KiB
// Copyright SIX DAY LLC. All rights reserved.
|
|
|
|
import Foundation
|
|
import Eureka
|
|
|
|
struct AppFormAppearance {
|
|
|
|
static func textArea(tag: String? = .none, callback: @escaping (TextAreaRow) -> Void) -> TextAreaRow {
|
|
let textArea = TextAreaRow(tag) {
|
|
$0.title = ""
|
|
}.onRowValidationChanged {
|
|
AppFormAppearance.onRowValidationChanged(baseCell: $0, row: $1)
|
|
}
|
|
callback(textArea)
|
|
return textArea
|
|
}
|
|
|
|
static func textField(tag: String? = .none, callback: @escaping (TextRow) -> Void) -> TextRow {
|
|
let textField = TextRow(tag) {
|
|
$0.title = ""
|
|
}.cellUpdate { cell, row in
|
|
if !row.isValid {
|
|
cell.textField?.textColor = .red
|
|
}
|
|
}.onRowValidationChanged {
|
|
AppFormAppearance.onRowValidationChanged(baseCell: $0, row: $1)
|
|
}
|
|
callback(textField)
|
|
return textField
|
|
}
|
|
|
|
static func textFieldFloat(tag: String? = .none, callback: @escaping (TextFloatLabelRow) -> Void) -> TextFloatLabelRow {
|
|
let textField = TextFloatLabelRow(tag) {
|
|
$0.title = ""
|
|
}.cellUpdate { cell, row in
|
|
if !row.isValid {
|
|
cell.textField?.textColor = .red
|
|
}
|
|
}.onRowValidationChanged {
|
|
AppFormAppearance.onRowValidationChanged(baseCell: $0, row: $1)
|
|
}
|
|
callback(textField)
|
|
return textField
|
|
}
|
|
|
|
static func onRowValidationChanged(baseCell: BaseCell, row: BaseRow) {
|
|
guard let rowIndex = row.indexPath?.row, let rowSection = row.section else {
|
|
return
|
|
}
|
|
while rowSection.count > rowIndex + 1 && rowSection[rowIndex + 1] is LabelRow {
|
|
rowSection.remove(at: rowIndex + 1)
|
|
}
|
|
if !row.isValid {
|
|
for (index, validationMsg) in row.validationErrors.map({ $0.msg }).enumerated() {
|
|
let labelRow = LabelRow {
|
|
$0.title = validationMsg
|
|
$0.cell.height = { 20 }
|
|
$0.cell.textLabel?.textColor = .red
|
|
}
|
|
row.section?.insert(labelRow, at: row.indexPath!.row + index + 1)
|
|
}
|
|
}
|
|
}
|
|
|
|
static func button(_ title: String? = .none, callback: @escaping (ButtonRow) -> Void) -> ButtonRow {
|
|
let button = ButtonRow(title)
|
|
.cellUpdate { cell, _ in
|
|
cell.textLabel?.textAlignment = .left
|
|
cell.textLabel?.textColor = .black
|
|
}
|
|
callback(button)
|
|
return button
|
|
}
|
|
|
|
static func alphaWalletSettingsButton(_ title: String? = .none, callback: @escaping (AlphaWalletSettingsButtonRow ) -> Void) -> AlphaWalletSettingsButtonRow {
|
|
let button = AlphaWalletSettingsButtonRow(title)
|
|
.cellUpdate { cell, _ in
|
|
cell.textLabel?.textAlignment = .left
|
|
cell.textLabel?.textColor = .black
|
|
}
|
|
callback(button)
|
|
return button
|
|
}
|
|
}
|
|
|