Merge branch 'feature/notificationView' into 'develop'

Added Type picker

See merge request BPHV_MIPS/vds_ios_sample!50
This commit is contained in:
Bruce, Matt R 2024-02-14 16:59:22 +00:00
commit 6f1b6fb878
2 changed files with 36 additions and 1 deletions

View File

@ -150,7 +150,7 @@ public class BaseViewController<Component: UIView>: UIViewController, Initable ,
public var formStackView = FormSection()
lazy var stackView = UIStackView().with {
public lazy var stackView = UIStackView().with {
$0.axis = .vertical
$0.distribution = .fill
$0.alignment = .fill

View File

@ -33,10 +33,21 @@ class NotificationViewController: BaseViewController<VDS.Notification> {
PickerSelectorView(title: "vertical", picker: self.picker, items: Notification.Layout.allCases)
}()
// lazy var typePickerSelectorView = {
// PickerSelectorView(title: "inLine", picker: self.picker, items: Notification.Type.allCases)
// }()
var notification = Notification()
override func viewDidLoad() {
super.viewDidLoad()
stackView.insertArrangedSubview(notification, at: 0)
addContentTopView(view: component)
notification.title = titleDefaultText
notification.subTitle = subtitleDefaultText
component.title = titleDefaultText
component.subTitle = subtitleDefaultText
titleTextField.text = titleDefaultText
@ -54,6 +65,7 @@ class NotificationViewController: BaseViewController<VDS.Notification> {
addFormRow(label: "Surface", view: surfacePickerSelectorView)
addFormRow(label: "Style", view: notificationTypePickerSelectorView)
addFormRow(label: "Layout", view: layoutTypePickerSelectorView)
// addFormRow(label: "Type", view: typePickerSelectorView)
addFormRow(label: "Title", view: titleTextField)
addFormRow(label: "SubTitle", view: subTitleTextField)
addFormRow(label: "Hide Button Group", view: buttonGroupToggle)
@ -68,16 +80,21 @@ class NotificationViewController: BaseViewController<VDS.Notification> {
titleTextField.textPublisher.sink { newString in
self.component.title = newString
self.notification.title = newString
}.store(in: &subscribers)
subTitleTextField.textPublisher.sink { newString in
self.component.subTitle = newString
self.notification.subTitle = newString
}.store(in: &subscribers)
buttonGroupToggle.onChange = { [weak self] toggle in
if toggle.isOn {
self?.component.primaryButtonModel = nil
self?.component.secondaryButtonModel = nil
self?.notification.primaryButtonModel = nil
self?.notification.secondaryButtonModel = nil
self?.label.text = ""
} else {
self?.setupButtons(with: self?.firstButtonDefaultText, secondButtonText: self?.secondButtonDefaultText)
@ -103,6 +120,7 @@ class NotificationViewController: BaseViewController<VDS.Notification> {
hideCloseButtonToggle.onChange = { [weak self] toggle in
self?.component.hideCloseButton = toggle.isOn
self?.notification.hideCloseButton = toggle.isOn
}
}
@ -110,20 +128,31 @@ class NotificationViewController: BaseViewController<VDS.Notification> {
func setupPicker() {
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
self?.component.surface = item
self?.notification.surface = item
self?.contentTopView.backgroundColor = item.color
}
notificationTypePickerSelectorView.onPickerDidSelect = { [weak self] item in
self?.component.style = item
self?.notification.style = item
}
layoutTypePickerSelectorView.onPickerDidSelect = { [weak self] item in
guard let self else { return }
self.component.layout = item
self.notification.layout = item
if self.component.layout != item {
self.layoutTypePickerSelectorView.set(item: self.component.layout)
}
}
// typePickerSelectorView.onPickerDidSelect = { [weak self] item in
// guard let self else { return }
// self.component.type = item
// if self.component.type != item {
// self.layoutTypePickerSelectorView.set(item: self.component.layout)
// }
// }
}
func setupButtons(with firstButtonText: String? = nil, secondButtonText: String? = nil) {
@ -131,12 +160,18 @@ class NotificationViewController: BaseViewController<VDS.Notification> {
component.primaryButtonModel = .init(text: firstButtonText, onClick: { [weak self] button in
self?.label.text = "\(button.text!) button click"
})
notification.primaryButtonModel = .init(text: firstButtonText, onClick: { [weak self] button in
self?.label.text = "\(button.text!) button click"
})
}
if let secondButtonText {
component.secondaryButtonModel = .init(text: secondButtonText, onClick: { [weak self] button in
self?.label.text = "\(button.text!) button click"
})
notification.secondaryButtonModel = .init(text: secondButtonText, onClick: { [weak self] button in
self?.label.text = "\(button.text!) button click"
})
}
}
}