From 54912489990d274ee1d6741cafd4e3ba52b2b608 Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Mon, 24 Aug 2020 19:31:11 -0400 Subject: [PATCH 1/9] webView.scrollView.contentSize --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 1ce2b123..159d758d 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -132,7 +132,7 @@ extension WebView : WKUIDelegate { so webView.isLoading to check load finished state */ if !webView.isLoading { - webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in + webView.evaluateJavaScript("webView.scrollView.contentSize", completionHandler: { [weak self] (result, error) in guard let self = self else { return } From 61c3231965a0e857b6db86b9d2e6ccacd2623dee Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Mon, 24 Aug 2020 21:43:44 -0400 Subject: [PATCH 2/9] fix --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 159d758d..b1696a1d 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -132,16 +132,17 @@ extension WebView : WKUIDelegate { so webView.isLoading to check load finished state */ if !webView.isLoading { - webView.evaluateJavaScript("webView.scrollView.contentSize", completionHandler: { [weak self] (result, error) in + webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in guard let self = self else { return } - if let height = result as? CGFloat { + let scrollHeight = self.webView?.scrollView.contentSize.height ?? 44.0 + if let height = result as? CGFloat, + height < scrollHeight { self.webViewHeight?.constant = height } else { //if failed to get height from javascript, using scrollview.contensize's height - let scrollHeight = self.webView?.scrollView.contentSize.height - self.webViewHeight?.constant = scrollHeight ?? 44 + self.webViewHeight?.constant = scrollHeight } self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) }) From db851b00a9106c2a5ec1011d02d34ca0d6392be8 Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Mon, 24 Aug 2020 22:09:03 -0400 Subject: [PATCH 3/9] fiix --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 32 ++++++++++++++-------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index b1696a1d..374f0497 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -128,23 +128,31 @@ extension WebView : WKUIDelegate { if !dynamicHeight { return } - /* was using "document.readyState" to check the state, while evaluateJavaScript "document.readyState",only works when webview contains userscrpt.otherwise, it would return WKErrorDomain Code=4 "A JavaScript exception occurred". + /* + //TODO: Check and remove the comment + was using "document.readyState" to check the state, + while evaluateJavaScript "document.readyState",only works when webview contains userscrpt.otherwise, it would return WKErrorDomain Code=4 "A JavaScript exception occurred". so webView.isLoading to check load finished state */ if !webView.isLoading { - webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in - guard let self = self else { + webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in + if complete == nil { return } - let scrollHeight = self.webView?.scrollView.contentSize.height ?? 44.0 - if let height = result as? CGFloat, - height < scrollHeight { - self.webViewHeight?.constant = height - } else { - //if failed to get height from javascript, using scrollview.contensize's height - self.webViewHeight?.constant = scrollHeight - } - self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) + webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in + guard let self = self else { + return + } + let scrollHeight = self.webView?.scrollView.contentSize.height ?? 44.0 + if let height = result as? CGFloat, + height < scrollHeight { + self.webViewHeight?.constant = height + } else { + //if failed to get height from javascript, using scrollview.contensize's height + self.webViewHeight?.constant = scrollHeight + } + self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) + }) }) } } From d2f334067af3f00b9fe3ad71db289c3807c37151 Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Mon, 24 Aug 2020 22:14:05 -0400 Subject: [PATCH 4/9] fix --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 42 +++++++++++----------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 374f0497..68c3b5fc 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -129,32 +129,30 @@ extension WebView : WKUIDelegate { return } /* - //TODO: Check and remove the comment + //TODO: Check and remove the comment was using "document.readyState" to check the state, while evaluateJavaScript "document.readyState",only works when webview contains userscrpt.otherwise, it would return WKErrorDomain Code=4 "A JavaScript exception occurred". so webView.isLoading to check load finished state */ - if !webView.isLoading { - webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in - if complete == nil { - return - } - webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in - guard let self = self else { - return - } - let scrollHeight = self.webView?.scrollView.contentSize.height ?? 44.0 - if let height = result as? CGFloat, - height < scrollHeight { - self.webViewHeight?.constant = height - } else { - //if failed to get height from javascript, using scrollview.contensize's height - self.webViewHeight?.constant = scrollHeight - } - self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) - }) - }) - } + webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in + if complete == nil { + return + } + webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in + guard let self = self else { + return + } + let scrollHeight = self.webView?.scrollView.contentSize.height ?? 44.0 + if let height = result as? CGFloat, + height < scrollHeight { + self.webViewHeight?.constant = height + } else { + //if failed to get height from javascript, using scrollview.contensize's height + self.webViewHeight?.constant = scrollHeight + } + self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) + }) + }) } From f67b8a644d93ff25490a5667843c5793c0134f67 Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Tue, 25 Aug 2020 18:00:07 -0400 Subject: [PATCH 5/9] fix --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 68c3b5fc..533725ff 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -142,7 +142,7 @@ extension WebView : WKUIDelegate { guard let self = self else { return } - let scrollHeight = self.webView?.scrollView.contentSize.height ?? 44.0 + let scrollHeight = webView.scrollView.contentSize.height if let height = result as? CGFloat, height < scrollHeight { self.webViewHeight?.constant = height From f3c3ba9799ee4014d33fa916bd4962688b4d28b8 Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Tue, 25 Aug 2020 19:32:48 -0400 Subject: [PATCH 6/9] remove code --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 39 +++++++++++----------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 533725ff..54805815 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -134,25 +134,26 @@ extension WebView : WKUIDelegate { while evaluateJavaScript "document.readyState",only works when webview contains userscrpt.otherwise, it would return WKErrorDomain Code=4 "A JavaScript exception occurred". so webView.isLoading to check load finished state */ - webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in - if complete == nil { - return - } - webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in - guard let self = self else { - return - } - let scrollHeight = webView.scrollView.contentSize.height - if let height = result as? CGFloat, - height < scrollHeight { - self.webViewHeight?.constant = height - } else { - //if failed to get height from javascript, using scrollview.contensize's height - self.webViewHeight?.constant = scrollHeight - } - self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) - }) - }) + if !webView.isLoading { + webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in + guard let self = self else { + return + } + MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in + let scrollHeight = webView.scrollView.contentSize.height + guard let self = self else { + return + } + if let height = result as? CGFloat { + self.webViewHeight?.constant = height + } else { + //if failed to get height from javascript, using scrollview.contensize's height + self.webViewHeight?.constant = scrollHeight + } + self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) + }) + }) + } } From dce1c5cdf2276c129e2fc222f659b0dfe2ddcf63 Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Tue, 25 Aug 2020 19:34:25 -0400 Subject: [PATCH 7/9] cleanup --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 54805815..3de42935 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -129,7 +129,6 @@ extension WebView : WKUIDelegate { return } /* - //TODO: Check and remove the comment was using "document.readyState" to check the state, while evaluateJavaScript "document.readyState",only works when webview contains userscrpt.otherwise, it would return WKErrorDomain Code=4 "A JavaScript exception occurred". so webView.isLoading to check load finished state @@ -140,17 +139,16 @@ extension WebView : WKUIDelegate { return } MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in - let scrollHeight = webView.scrollView.contentSize.height guard let self = self else { return } - if let height = result as? CGFloat { - self.webViewHeight?.constant = height - } else { - //if failed to get height from javascript, using scrollview.contensize's height - self.webViewHeight?.constant = scrollHeight - } - self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) + if let height = result as? CGFloat { + self.webViewHeight?.constant = height + } else { + //if failed to get height from javascript, using scrollview.contensize's height + self.webViewHeight?.constant = webView.scrollView.contentSize.height + } + self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self) }) }) } From a8e13263e6f224e76301ea565dbc29b6dafb6a7d Mon Sep 17 00:00:00 2001 From: Damodaram Date: Mon, 14 Sep 2020 16:56:38 +0530 Subject: [PATCH 8/9] added action attribute for radiobutton --- MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift | 5 ++++- MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift index 371d3f7a..239a368b 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift @@ -9,7 +9,7 @@ import UIKit -@objcMembers open class RadioButton: Control { +@objcMembers open class RadioButton: Control,MFButtonProtocol { //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- @@ -99,6 +99,9 @@ import UIKit } else { isSelected = !isSelected } + if let actionModel = radioModel?.action, isSelected { + Button.performButtonAction(with: actionModel, button: self, delegateObject: delegateObject, additionalData: nil) + } _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) setNeedsDisplay() } diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift index ea1a4627..7d50cf56 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift @@ -26,6 +26,7 @@ open class RadioButtonModel: MoleculeModelProtocol, FormFieldProtocol { public var baseValue: AnyHashable? public var groupName: String = FormValidator.defaultGroupName public var fieldKey: String? + public var action: ActionModelProtocol? //-------------------------------------------------- // MARK: - Keys @@ -39,6 +40,7 @@ open class RadioButtonModel: MoleculeModelProtocol, FormFieldProtocol { case fieldValue case fieldKey case groupName + case action } //-------------------------------------------------- @@ -81,6 +83,7 @@ open class RadioButtonModel: MoleculeModelProtocol, FormFieldProtocol { self.groupName = groupName } fieldValue = try typeContainer.decodeIfPresent(String.self, forKey: .fieldValue) + action = try typeContainer.decodeModelIfPresent(codingKey: .action) } public func encode(to encoder: Encoder) throws { @@ -92,5 +95,6 @@ open class RadioButtonModel: MoleculeModelProtocol, FormFieldProtocol { try container.encodeIfPresent(fieldKey, forKey: .fieldKey) try container.encodeIfPresent(groupName, forKey: .groupName) try container.encodeIfPresent(fieldValue, forKey: .fieldValue) + try container.encodeModelIfPresent(action, forKey: .action) } } From c76911e76e4a4adb1661beeaf444861edea9b2bb Mon Sep 17 00:00:00 2001 From: Damodaram Date: Mon, 14 Sep 2020 20:07:56 +0530 Subject: [PATCH 9/9] review changes. --- MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift index 239a368b..e1f3ab93 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButton.swift @@ -9,7 +9,7 @@ import UIKit -@objcMembers open class RadioButton: Control,MFButtonProtocol { +@objcMembers open class RadioButton: Control, MFButtonProtocol { //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- @@ -100,7 +100,7 @@ import UIKit isSelected = !isSelected } if let actionModel = radioModel?.action, isSelected { - Button.performButtonAction(with: actionModel, button: self, delegateObject: delegateObject, additionalData: nil) + Button.performButtonAction(with: actionModel, button: self, delegateObject: delegateObject, additionalData: nil) } _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) setNeedsDisplay()