added isBold, height, text position options

This commit is contained in:
Krishna Kishore Bandaru 2024-03-01 17:17:56 +05:30
parent 7bf3bf4e3b
commit 6e01b697c3

View File

@ -31,6 +31,12 @@ class TileletViewController: BaseViewController<Tilelet> {
items: [.primary, .secondary])
}()
lazy var textPositionPickerSelectorView = {
PickerSelectorView(title: "",
picker: self.picker,
items: Tilelet.TextPosition.allCases.sorted{ $0.rawValue < $1.rawValue })
}()
var clickableSwitch = Toggle()
var titleTextField = TextField()
@ -43,7 +49,8 @@ class TileletViewController: BaseViewController<Tilelet> {
var showDescriptionIconSwitch = Toggle()
var showDirectionalIconSwitch = Toggle()
var badgeTextField = TextField()
var titleIsBold = Toggle().with { $0.isOn = true }
override func viewDidLoad() {
super.viewDidLoad()
addContentTopView(view: .makeWrapper(for: component))
@ -62,12 +69,14 @@ class TileletViewController: BaseViewController<Tilelet> {
addFormRow(label: "Other Style", view: otherStandardStylePickerSelectorView)
addFormRow(label: "Title Text", view: titleTextField)
addFormRow(label: "Title is Bold", view: titleIsBold)
addFormRow(label: "Subtitle Color", view: subtitleColorPickerSelectorView)
addFormRow(label: "Subtitle Text", view: subTitleTextField)
addFormRow(label: "Width", view: widthTextField)
//addFormRow(label: "Height", view: heightTextField)
addFormRow(label: "Height", view: heightTextField)
addFormRow(label: "Text Width", view: textWidthTextField)
addFormRow(label: "Text Percentage", view: textPercentageTextField)
addFormRow(label: "Text Position(Minimum height is configurable.)", view: textPositionPickerSelectorView)
addFormRow(label: "Badge Text", view: badgeTextField)
addFormRow(label: "Description Icon", view: showDescriptionIconSwitch)
addFormRow(label: "Directional Icon", view: showDirectionalIconSwitch)
@ -84,13 +93,21 @@ class TileletViewController: BaseViewController<Tilelet> {
heightTextField
.numberPublisher
.sink { [weak self] number in
self?.component.height = number?.cgFloatValue
guard let self else { return }
if let value = number?.cgFloatValue, value >= 100 && value < self.view.frame.height * 0.65 {
self.component.height = value
self.component.layoutIfNeeded()
}
}.store(in: &subscribers)
widthTextField
.numberPublisher
.sink { [weak self] number in
self?.component.width = number?.cgFloatValue
guard let self else { return }
if let value = number?.cgFloatValue, value >= 100 && value < self.view.frame.width * 0.85 {
self.component.width = value
self.component.layoutIfNeeded()
}
}.store(in: &subscribers)
textWidthTextField
@ -150,7 +167,10 @@ class TileletViewController: BaseViewController<Tilelet> {
self?.component.directionalIconModel = nil
}
}
titleIsBold.publisher(for: .valueChanged).sink { [weak self] toggle in
self?.component.padding = .padding6X
self?.setTitleModel()
}.store(in: &subscribers)
}
func setupModel() {
@ -169,9 +189,8 @@ class TileletViewController: BaseViewController<Tilelet> {
titleTextField.text = titleModel.text
subTitleTextField.text = subTitleModel.text
widthTextField.text = component.width != nil ? "\(component.width!)" : ""
textPositionPickerSelectorView.text = component.textPostion.rawValue
self.updateOtherTextStyles()
}
//sub models
@ -185,7 +204,7 @@ class TileletViewController: BaseViewController<Tilelet> {
func setTitleModel() {
if let text = titleTextField.text, !text.isEmpty {
component.titleModel = Tilelet.TitleModel(text: text, standardStyle: titleStandardStylePickerSelectorView.selectedItem)
component.titleModel = Tilelet.TitleModel(text: text, isBold: titleIsBold.isOn, standardStyle: titleStandardStylePickerSelectorView.selectedItem)
} else {
component.titleModel = nil
}
@ -227,6 +246,11 @@ class TileletViewController: BaseViewController<Tilelet> {
subtitleColorPickerSelectorView.onPickerDidSelect = { [weak self] item in
self?.setSubTitleModel()
}
textPositionPickerSelectorView.onPickerDidSelect = { [weak self] item in
guard let self else { return }
self.component.textPostion = item
}
}
}