From c75064e84e6f81b35d5bf7275c97fae37b68d64d Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 29 Feb 2024 14:19:51 -0600 Subject: [PATCH] added more logic to the text/value properties Signed-off-by: Matt Bruce --- VDS/Components/TextFields/EntryFieldBase.swift | 14 +++++++++++++- .../TextFields/InputField/InputField.swift | 7 +++++-- VDS/Components/TextFields/TextArea/TextArea.swift | 9 ++++++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/VDS/Components/TextFields/EntryFieldBase.swift b/VDS/Components/TextFields/EntryFieldBase.swift index 121b1510..6964ae0a 100644 --- a/VDS/Components/TextFields/EntryFieldBase.swift +++ b/VDS/Components/TextFields/EntryFieldBase.swift @@ -198,8 +198,20 @@ open class EntryFieldBase: Control, Changeable, FormFieldable { open var maxLength: Int? { didSet { setNeedsUpdate() } } open var inputId: String? { didSet { setNeedsUpdate() } } + + /// The text of this textField. + private var _value: AnyHashable? + open var value: AnyHashable? { + get { _value } + set { + if let newValue, newValue != _value { + _value = newValue + text = newValue as? String + } + setNeedsUpdate() + } + } - open var value: AnyHashable? { didSet { setNeedsUpdate() } } open var defaultValue: AnyHashable? { didSet { setNeedsUpdate() } } diff --git a/VDS/Components/TextFields/InputField/InputField.swift b/VDS/Components/TextFields/InputField/InputField.swift index 83768a6b..ac350bc1 100644 --- a/VDS/Components/TextFields/InputField/InputField.swift +++ b/VDS/Components/TextFields/InputField/InputField.swift @@ -82,8 +82,11 @@ open class InputField: EntryFieldBase, UITextFieldDelegate { open override var text: String? { get { textField.text } set { - textField.text = newValue - value = newValue + if let newValue, newValue != text { + textField.text = newValue + value = newValue + } + setNeedsUpdate() } } diff --git a/VDS/Components/TextFields/TextArea/TextArea.swift b/VDS/Components/TextFields/TextArea/TextArea.swift index d4f11a9e..5fe4e68b 100644 --- a/VDS/Components/TextFields/TextArea/TextArea.swift +++ b/VDS/Components/TextFields/TextArea/TextArea.swift @@ -107,12 +107,15 @@ open class TextArea: EntryFieldBase { } } - /// The text of this textField. + /// The text of this textView open override var text: String? { get { textView.text } set { - textView.text = newValue - value = newValue + if let newValue, newValue != text { + textView.text = newValue + value = newValue + } + setNeedsUpdate() } }