From dce172bb640b51a65236cb1f29012e831e1701d7 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Mon, 28 Nov 2022 14:57:53 +0530 Subject: [PATCH 1/4] CXTDT-352289 - disabled clipboard actions --- .../Atoms/FormFields/TextFields/TextEntryField.swift | 1 + .../FormFields/TextFields/TextEntryFieldModel.swift | 7 +++++++ MVMCoreUI/BaseClasses/TextField.swift | 10 +++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift index 07260ac1..18749c8a 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift @@ -338,6 +338,7 @@ import UIKit placeholder = model.placeholder textField.shouldMaskWhileRecording = model.shouldMaskRecordedView ?? true + textField.enableClipboardActions = model.enableClipboardActions switch model.type { case .password, .secure: diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift index 7d2eb987..053a5ac5 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift @@ -37,6 +37,7 @@ public var clearTextOnTap: Bool = false public var displayFormat: String? public var displayMask: String? + public var enableClipboardActions: Bool = true //-------------------------------------------------- // MARK: - Initializers @@ -112,6 +113,7 @@ case clearTextOnTap case displayFormat case displayMask + case enableClipboardActions } //-------------------------------------------------- @@ -143,6 +145,10 @@ if let textAlignment = try typeContainer.decodeIfPresent(NSTextAlignment.self, forKey: .textAlignment) { self.textAlignment = textAlignment } + + if let enableClipboardActions = try typeContainer.decodeIfPresent(Bool.self, forKey: .enableClipboardActions) { + self.enableClipboardActions = enableClipboardActions + } } open override func encode(to encoder: Encoder) throws { @@ -157,5 +163,6 @@ try container.encode(enabledTextColor, forKey: .enabledTextColor) try container.encode(disabledTextColor, forKey: .disabledTextColor) try container.encode(clearTextOnTap, forKey: .clearTextOnTap) + try container.encode(enableClipboardActions, forKey: .enableClipboardActions) } } diff --git a/MVMCoreUI/BaseClasses/TextField.swift b/MVMCoreUI/BaseClasses/TextField.swift index 306b363f..1f5d1b09 100644 --- a/MVMCoreUI/BaseClasses/TextField.swift +++ b/MVMCoreUI/BaseClasses/TextField.swift @@ -23,7 +23,7 @@ public protocol TextInputDidDeleteProtocol: AnyObject { /// Set to true to hide the blinking textField cursor. public var hideBlinkingCaret = false - + public var enableClipboardActions: Bool = true public var shouldMaskWhileRecording: Bool = true //-------------------------------------------------- @@ -74,6 +74,14 @@ public protocol TextInputDidDeleteProtocol: AnyObject { super.deleteBackward() didDeleteDelegate?.textInputDidDelete() } + + open override func buildMenu(with builder: UIMenuBuilder) { + defer { super.buildMenu(with: builder) } + guard !enableClipboardActions else { return } + builder.remove(menu: .lookup) + } + + open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { enableClipboardActions } } /// MARK:- MVMCoreViewProtocol From 8858018620b2437f3490355dcc5d44e809c3fe29 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Fri, 2 Dec 2022 13:31:30 +0530 Subject: [PATCH 2/4] removed unused code --- MVMCoreUI/BaseClasses/TextField.swift | 6 ------ 1 file changed, 6 deletions(-) diff --git a/MVMCoreUI/BaseClasses/TextField.swift b/MVMCoreUI/BaseClasses/TextField.swift index 1f5d1b09..00a81464 100644 --- a/MVMCoreUI/BaseClasses/TextField.swift +++ b/MVMCoreUI/BaseClasses/TextField.swift @@ -75,12 +75,6 @@ public protocol TextInputDidDeleteProtocol: AnyObject { didDeleteDelegate?.textInputDidDelete() } - open override func buildMenu(with builder: UIMenuBuilder) { - defer { super.buildMenu(with: builder) } - guard !enableClipboardActions else { return } - builder.remove(menu: .lookup) - } - open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { enableClipboardActions } } From 4963c311d44a4407678a06637f9308ffbc583d46 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Fri, 2 Dec 2022 13:52:59 +0530 Subject: [PATCH 3/4] access specifier changed --- MVMCoreUI/BaseClasses/TextField.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MVMCoreUI/BaseClasses/TextField.swift b/MVMCoreUI/BaseClasses/TextField.swift index 00a81464..34e301a3 100644 --- a/MVMCoreUI/BaseClasses/TextField.swift +++ b/MVMCoreUI/BaseClasses/TextField.swift @@ -93,7 +93,7 @@ extension TextField: MVMCoreViewProtocol { /// MARK:- MoleculeViewProtocol extension TextField: MoleculeViewProtocol { - open func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { + public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { if let color = model.backgroundColor?.uiColor { backgroundColor = color From e66924dc1f9ce001402c60ea5f57c257d431ccd7 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Mon, 12 Dec 2022 13:33:10 +0530 Subject: [PATCH 4/4] added setDefaults func --- .../TextFields/Dropdown Fields/BaseDropdownFieldModel.swift | 5 +++++ .../Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/BaseDropdownFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/BaseDropdownFieldModel.swift index 39701016..6c2131ac 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/BaseDropdownFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/BaseDropdownFieldModel.swift @@ -26,6 +26,11 @@ case action } + open override func setDefaults() { + super.setDefaults() + enableClipboardActions = false + } + //-------------------------------------------------- // MARK: - Codec //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift index 4e35ce30..7b3eee03 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift @@ -83,6 +83,9 @@ import Foundation case shouldMaskRecordedView } + /// Sets the default values. Should be called on init. + open func setDefaults() { } + //-------------------------------------------------- // MARK: - Validation Methods //-------------------------------------------------- @@ -119,6 +122,7 @@ import Foundation baseValue = text self.titleStateLabel = FormLabelModel(text: "") self.feedbackStateLabel = FormLabelModel(text: "") + setDefaults() } //-------------------------------------------------- @@ -157,6 +161,7 @@ import Foundation self.feedbackStateLabel = FormLabelModel(model: LabelModel(text: feedback ?? "", fontStyle: FormLabelModel.defaultFontStyle, textColor: Color(uiColor: .mvmCoolGray6))) + setDefaults() } public func encode(to encoder: Encoder) throws {