This commit is contained in:
Suresh, Kamlesh 2019-03-27 11:16:58 -04:00
parent 69309cf3b1
commit 629736b7fc
14 changed files with 126 additions and 89 deletions

View File

@ -7,13 +7,11 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
01174B912243E54200A8FE68 /* MVMCoreUIFormValidator+TextFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01174B902243E54200A8FE68 /* MVMCoreUIFormValidator+TextFields.swift */; }; 0105618D224BBE7700E1557D /* FormValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618A224BBE7700E1557D /* FormValidator.swift */; };
01BDA2D522442E6B001DACC9 /* MVMCoreUIFormValidator+FormParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01BDA2D422442E6B001DACC9 /* MVMCoreUIFormValidator+FormParams.swift */; }; 0105618E224BBE7700E1557D /* FormValidator+TextFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */; };
0105618F224BBE7700E1557D /* FormValidator+FormParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */; };
01056191224BBE8000E1557D /* FormValidationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01056190224BBE7F00E1557D /* FormValidationProtocol.swift */; };
01BDA2D722442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */; }; 01BDA2D722442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */; };
01C0B24A224A9C2000F89DF2 /* FormValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C0B249224A9C2000F89DF2 /* FormValidator.swift */; };
01C74D8C22429978009C25A3 /* MVMCoreUIFormValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 01C74D8A22429978009C25A3 /* MVMCoreUIFormValidator.h */; settings = {ATTRIBUTES = (Public, ); }; };
01C74D8D22429978009C25A3 /* MVMCoreUIFormValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 01C74D8B22429978009C25A3 /* MVMCoreUIFormValidator.m */; };
01C74D8F22429A0F009C25A3 /* MVMCoreUIFormValidationProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 01C74D8E22429A0F009C25A3 /* MVMCoreUIFormValidationProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
01DF55E021F8FAA800CC099B /* MFTextFieldListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */; }; 01DF55E021F8FAA800CC099B /* MFTextFieldListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */; };
01DF567021FA5AB300CC099B /* TextFieldListFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */; }; 01DF567021FA5AB300CC099B /* TextFieldListFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */; };
01E569D3223FFFA500327251 /* ThreeLayerViewController.swift in Headers */ = {isa = PBXBuildFile; fileRef = D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */; settings = {ATTRIBUTES = (Public, ); }; }; 01E569D3223FFFA500327251 /* ThreeLayerViewController.swift in Headers */ = {isa = PBXBuildFile; fileRef = D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */; settings = {ATTRIBUTES = (Public, ); }; };
@ -169,13 +167,11 @@
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
01174B902243E54200A8FE68 /* MVMCoreUIFormValidator+TextFields.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MVMCoreUIFormValidator+TextFields.swift"; sourceTree = "<group>"; }; 0105618A224BBE7700E1557D /* FormValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValidator.swift; sourceTree = "<group>"; };
01BDA2D422442E6B001DACC9 /* MVMCoreUIFormValidator+FormParams.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MVMCoreUIFormValidator+FormParams.swift"; sourceTree = "<group>"; }; 0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+TextFields.swift"; sourceTree = "<group>"; };
0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+FormParams.swift"; sourceTree = "<group>"; };
01056190224BBE7F00E1557D /* FormValidationProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValidationProtocol.swift; sourceTree = "<group>"; };
01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIFormMoleculesProtocol.h; sourceTree = "<group>"; }; 01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIFormMoleculesProtocol.h; sourceTree = "<group>"; };
01C0B249224A9C2000F89DF2 /* FormValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormValidator.swift; sourceTree = "<group>"; };
01C74D8A22429978009C25A3 /* MVMCoreUIFormValidator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIFormValidator.h; sourceTree = "<group>"; };
01C74D8B22429978009C25A3 /* MVMCoreUIFormValidator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIFormValidator.m; sourceTree = "<group>"; };
01C74D8E22429A0F009C25A3 /* MVMCoreUIFormValidationProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIFormValidationProtocol.h; sourceTree = "<group>"; };
01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MFTextFieldListView.swift; sourceTree = "<group>"; }; 01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MFTextFieldListView.swift; sourceTree = "<group>"; };
01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldListFormViewController.swift; sourceTree = "<group>"; }; 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldListFormViewController.swift; sourceTree = "<group>"; };
D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = "<group>"; }; D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = "<group>"; };
@ -349,7 +345,7 @@
01C74D86224298C3009C25A3 /* Protocols */ = { 01C74D86224298C3009C25A3 /* Protocols */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
01C74D8E22429A0F009C25A3 /* MVMCoreUIFormValidationProtocol.h */, 01056190224BBE7F00E1557D /* FormValidationProtocol.swift */,
01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */, 01BDA2D622442F59001DACC9 /* MVMCoreUIFormMoleculesProtocol.h */,
); );
path = Protocols; path = Protocols;
@ -358,11 +354,9 @@
01C74D87224298E2009C25A3 /* Models */ = { 01C74D87224298E2009C25A3 /* Models */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
01C0B249224A9C2000F89DF2 /* FormValidator.swift */, 0105618A224BBE7700E1557D /* FormValidator.swift */,
01C74D8A22429978009C25A3 /* MVMCoreUIFormValidator.h */, 0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */,
01C74D8B22429978009C25A3 /* MVMCoreUIFormValidator.m */, 0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */,
01174B902243E54200A8FE68 /* MVMCoreUIFormValidator+TextFields.swift */,
01BDA2D422442E6B001DACC9 /* MVMCoreUIFormValidator+FormParams.swift */,
); );
path = Models; path = Models;
sourceTree = "<group>"; sourceTree = "<group>";
@ -739,7 +733,6 @@
D29DF27921E7A533003B2FB9 /* MVMCoreUISession.h in Headers */, D29DF27921E7A533003B2FB9 /* MVMCoreUISession.h in Headers */,
D29DF25C21E6A2B6003B2FB9 /* DashLine.h in Headers */, D29DF25C21E6A2B6003B2FB9 /* DashLine.h in Headers */,
D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */, D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */,
01C74D8C22429978009C25A3 /* MVMCoreUIFormValidator.h in Headers */,
D29DF29D21E7AE38003B2FB9 /* MFStyler.h in Headers */, D29DF29D21E7AE38003B2FB9 /* MFStyler.h in Headers */,
D29DF2B021E7B3A4003B2FB9 /* MFTextView.h in Headers */, D29DF2B021E7B3A4003B2FB9 /* MFTextView.h in Headers */,
D29DF2A921E7B2F9003B2FB9 /* MVMCoreUIConstants.h in Headers */, D29DF2A921E7B2F9003B2FB9 /* MVMCoreUIConstants.h in Headers */,
@ -799,7 +792,6 @@
D29DF17421E69E1F003B2FB9 /* MFCustomButton.h in Headers */, D29DF17421E69E1F003B2FB9 /* MFCustomButton.h in Headers */,
D29DF29721E7ADB8003B2FB9 /* MFScrollingViewController.h in Headers */, D29DF29721E7ADB8003B2FB9 /* MFScrollingViewController.h in Headers */,
D29DF26F21E6AA0B003B2FB9 /* FLAnimatedImageView.h in Headers */, D29DF26F21E6AA0B003B2FB9 /* FLAnimatedImageView.h in Headers */,
01C74D8F22429A0F009C25A3 /* MVMCoreUIFormValidationProtocol.h in Headers */,
D29DF2A121E7AF4E003B2FB9 /* MVMCoreUIUtility.h in Headers */, D29DF2A121E7AF4E003B2FB9 /* MVMCoreUIUtility.h in Headers */,
D29DF17621E69E1F003B2FB9 /* PrimaryButton.h in Headers */, D29DF17621E69E1F003B2FB9 /* PrimaryButton.h in Headers */,
D29DF2C821E7BFC1003B2FB9 /* MFSizeObject.h in Headers */, D29DF2C821E7BFC1003B2FB9 /* MFSizeObject.h in Headers */,
@ -892,7 +884,6 @@
files = ( files = (
D29DF32121ED0CBA003B2FB9 /* LabelView.m in Sources */, D29DF32121ED0CBA003B2FB9 /* LabelView.m in Sources */,
D29770F221F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.m in Sources */, D29770F221F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.m in Sources */,
01BDA2D522442E6B001DACC9 /* MVMCoreUIFormValidator+FormParams.swift in Sources */,
D29DF29621E7ADB8003B2FB9 /* StackableViewController.m in Sources */, D29DF29621E7ADB8003B2FB9 /* StackableViewController.m in Sources */,
D22D1F1F220343560077CEC0 /* MVMCoreUICheckMarkView.m in Sources */, D22D1F1F220343560077CEC0 /* MVMCoreUICheckMarkView.m in Sources */,
D282AAB4223FDDAE00C46919 /* MFLoadImageView.swift in Sources */, D282AAB4223FDDAE00C46919 /* MFLoadImageView.swift in Sources */,
@ -920,6 +911,7 @@
D28B4F8B21FF967C00712C7A /* MVMCoreUIObject.m in Sources */, D28B4F8B21FF967C00712C7A /* MVMCoreUIObject.m in Sources */,
D29DF26D21E6AA0B003B2FB9 /* FLAnimatedImageView.m in Sources */, D29DF26D21E6AA0B003B2FB9 /* FLAnimatedImageView.m in Sources */,
D29DF2EF21ECEAE1003B2FB9 /* MFFonts.m in Sources */, D29DF2EF21ECEAE1003B2FB9 /* MFFonts.m in Sources */,
0105618F224BBE7700E1557D /* FormValidator+FormParams.swift in Sources */,
D29DF2AE21E7B3A4003B2FB9 /* MFTextView.m in Sources */, D29DF2AE21E7B3A4003B2FB9 /* MFTextView.m in Sources */,
D29DF18121E69E50003B2FB9 /* MFView.m in Sources */, D29DF18121E69E50003B2FB9 /* MFView.m in Sources */,
D29DF18321E69E54003B2FB9 /* SeparatorView.m in Sources */, D29DF18321E69E54003B2FB9 /* SeparatorView.m in Sources */,
@ -927,7 +919,6 @@
D274CA332236A78900B01B62 /* StandardFooterView.swift in Sources */, D274CA332236A78900B01B62 /* StandardFooterView.swift in Sources */,
D29DF2BF21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.m in Sources */, D29DF2BF21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.m in Sources */,
D29DF28321E7AB24003B2FB9 /* MVMCoreUICommonViewsUtility.m in Sources */, D29DF28321E7AB24003B2FB9 /* MVMCoreUICommonViewsUtility.m in Sources */,
01C74D8D22429978009C25A3 /* MVMCoreUIFormValidator.m in Sources */,
D29DF28A21E7AC2B003B2FB9 /* MFLabel.m in Sources */, D29DF28A21E7AC2B003B2FB9 /* MFLabel.m in Sources */,
D206997821FB8A0B00CAE0DE /* MVMCoreUINavigationController.m in Sources */, D206997821FB8A0B00CAE0DE /* MVMCoreUINavigationController.m in Sources */,
D29DF27A21E7A533003B2FB9 /* MVMCoreUISession.m in Sources */, D29DF27A21E7A533003B2FB9 /* MVMCoreUISession.m in Sources */,
@ -942,6 +933,7 @@
D22D1F47220496A30077CEC0 /* MVMCoreUISwitch.m in Sources */, D22D1F47220496A30077CEC0 /* MVMCoreUISwitch.m in Sources */,
D29DF28C21E7AC2B003B2FB9 /* ViewConstrainingView.m in Sources */, D29DF28C21E7AC2B003B2FB9 /* ViewConstrainingView.m in Sources */,
D29DF17B21E69E1F003B2FB9 /* PrimaryButton.m in Sources */, D29DF17B21E69E1F003B2FB9 /* PrimaryButton.m in Sources */,
01056191224BBE8000E1557D /* FormValidationProtocol.swift in Sources */,
D29DF11D21E684A9003B2FB9 /* MVMCoreUISplitViewController.m in Sources */, D29DF11D21E684A9003B2FB9 /* MVMCoreUISplitViewController.m in Sources */,
D29DF29821E7ADB8003B2FB9 /* MFScrollingViewController.m in Sources */, D29DF29821E7ADB8003B2FB9 /* MFScrollingViewController.m in Sources */,
D29770C821F7C4AE00B2F0D0 /* TopLabelsView.m in Sources */, D29770C821F7C4AE00B2F0D0 /* TopLabelsView.m in Sources */,
@ -950,18 +942,18 @@
D29DF17821E69E1F003B2FB9 /* MFCaretButton.m in Sources */, D29DF17821E69E1F003B2FB9 /* MFCaretButton.m in Sources */,
D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */, D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */,
D29DF26C21E6AA0B003B2FB9 /* FLAnimatedImage.m in Sources */, D29DF26C21E6AA0B003B2FB9 /* FLAnimatedImage.m in Sources */,
01C0B24A224A9C2000F89DF2 /* FormValidator.swift in Sources */,
D29770FC21F7C77400B2F0D0 /* MVMCoreUITextFieldView.m in Sources */, D29770FC21F7C77400B2F0D0 /* MVMCoreUITextFieldView.m in Sources */,
D29DF25121E6A177003B2FB9 /* MFDigitTextBox.m in Sources */, D29DF25121E6A177003B2FB9 /* MFDigitTextBox.m in Sources */,
D29DF13221E6851E003B2FB9 /* MVMCoreUITopAlertBaseView.m in Sources */, D29DF13221E6851E003B2FB9 /* MVMCoreUITopAlertBaseView.m in Sources */,
D2C5001E21F8EE67001DA659 /* LabelWithInternalButton.m in Sources */, D2C5001E21F8EE67001DA659 /* LabelWithInternalButton.m in Sources */,
01174B912243E54200A8FE68 /* MVMCoreUIFormValidator+TextFields.swift in Sources */,
D29DF29C21E7ADB9003B2FB9 /* MFProgrammaticTableViewController.m in Sources */, D29DF29C21E7ADB9003B2FB9 /* MFProgrammaticTableViewController.m in Sources */,
0105618E224BBE7700E1557D /* FormValidator+TextFields.swift in Sources */,
D29DF2BE21E7BEA4003B2FB9 /* TopTabbar.m in Sources */, D29DF2BE21E7BEA4003B2FB9 /* TopTabbar.m in Sources */,
D2A514632213643100345BFB /* MoleculeStackCenteredTemplate.swift in Sources */, D2A514632213643100345BFB /* MoleculeStackCenteredTemplate.swift in Sources */,
D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */, D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */,
D29DF29E21E7AE3B003B2FB9 /* MFStyler.m in Sources */, D29DF29E21E7AE3B003B2FB9 /* MFStyler.m in Sources */,
D2A514592211C53C00345BFB /* MVMCoreUIMoleculeMappingObject.m in Sources */, D2A514592211C53C00345BFB /* MVMCoreUIMoleculeMappingObject.m in Sources */,
0105618D224BBE7700E1557D /* FormValidator.swift in Sources */,
D22D1F1B220341F60077CEC0 /* MVMCoreUICheckBox.m in Sources */, D22D1F1B220341F60077CEC0 /* MVMCoreUICheckBox.m in Sources */,
D29DF2CB21E7BFCC003B2FB9 /* MFSizeThreshold.m in Sources */, D29DF2CB21E7BFCC003B2FB9 /* MFSizeThreshold.m in Sources */,
D29770F521F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.m in Sources */, D29770F521F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.m in Sources */,

View File

@ -11,7 +11,6 @@
#import <MVMCoreUI/MFTextField.h> #import <MVMCoreUI/MFTextField.h>
#import <MVMCoreUI/MFView.h> #import <MVMCoreUI/MFView.h>
#import <MVMCoreUI/MVMCoreUIMoleculeViewProtocol.h> #import <MVMCoreUI/MVMCoreUIMoleculeViewProtocol.h>
#import "MVMCoreUIFormValidationProtocol.h"
typedef enum : NSUInteger { typedef enum : NSUInteger {
PrimaryButtonTypeRed, PrimaryButtonTypeRed,
@ -27,7 +26,7 @@ typedef enum : NSUInteger {
static CGFloat const PrimaryButtonHeight = 42.0; static CGFloat const PrimaryButtonHeight = 42.0;
static CGFloat const PrimaryButtonSmallHeight = 30.0; static CGFloat const PrimaryButtonSmallHeight = 30.0;
@interface PrimaryButton : MFCustomButton <MFTextFieldDelegate, UITextFieldDelegate, MVMCoreViewProtocol, MVMCoreUIMoleculeViewProtocol, MVMCoreUIFormValidationProtocol> @interface PrimaryButton : MFCustomButton <MFTextFieldDelegate, UITextFieldDelegate, MVMCoreViewProtocol, MVMCoreUIMoleculeViewProtocol>
@property (nonatomic, readonly, assign) PrimaryButtonType primaryButtonType; //use reset function to set @property (nonatomic, readonly, assign) PrimaryButtonType primaryButtonType; //use reset function to set

View File

@ -12,14 +12,14 @@
#import "MVMCoreUISplitViewController.h" #import "MVMCoreUISplitViewController.h"
#import "MFStyler.h" #import "MFStyler.h"
#import "UIColor+MFConvenience.h" #import "UIColor+MFConvenience.h"
#import <MVMCoreUI/MVMCoreUI-Swift.h>
#import "MVMCoreUIFormValidator.h"
@import MVMCore.MVMCoreDispatchUtility; @import MVMCore.MVMCoreDispatchUtility;
@import MVMCore.MVMCoreGetterUtility; @import MVMCore.MVMCoreGetterUtility;
@import MVMCore.NSDictionary_MFConvenience; @import MVMCore.NSDictionary_MFConvenience;
@interface PrimaryButton() @interface PrimaryButton() <FormValidationProtocol>
@property (nonatomic) BOOL validationRequired; @property (nonatomic) BOOL validationRequired;
@property (nonatomic) BOOL smallButton; @property (nonatomic) BOOL smallButton;
@ -31,7 +31,7 @@
@property (strong, nonatomic) NSMutableArray <MFTextField *>*textFields; @property (strong, nonatomic) NSMutableArray <MFTextField *>*textFields;
@property (nonatomic, readwrite, assign) PrimaryButtonType primaryButtonType; @property (nonatomic, readwrite, assign) PrimaryButtonType primaryButtonType;
@property (strong, nonatomic) MVMCoreUIFormValidator* formValidator; @property (nonnull, strong, nonatomic) FormValidator* formValidator;
@end @end
@ -648,8 +648,8 @@
} }
- (void)setWithJSON:(NSDictionary *)json delegate:(NSObject *)delegate additionalData:(nullable NSDictionary *)additionalData { - (void)setWithJSON:(NSDictionary *)json delegate:(NSObject *)delegate additionalData:(nullable NSDictionary *)additionalData {
[MVMCoreUIFormValidator setupValidationFor:self delegate:delegate]; [FormValidator setupValidationWithMolecule:self delegate:(id<FormValidationProtocol>)delegate];
self.primaryButtonType = PrimaryButtonTypeCustom; self.primaryButtonType = PrimaryButtonTypeCustom;
NSString *color = [json string:@"fillColor"]; NSString *color = [json string:@"fillColor"];
@ -758,13 +758,13 @@
} }
} }
#pragma mark - MVMCoreUIFormValidationProtocol #pragma mark - FormValidationProtocol
- (nullable MVMCoreUIFormValidator *) formValidatorModel { - (nullable FormValidator*) formValidatorModel {
return self.formValidator; return self.formValidator;
} }
- (void)setFormValidationModel:(nonnull MVMCoreUIFormValidator *) formValidatorModel { - (void)setFormValidationModel:(nonnull FormValidator*) formValidatorModel {
self.formValidator = formValidatorModel; self.formValidator = formValidatorModel;
} }

View File

@ -8,7 +8,6 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <MVMCoreUI/MFView.h> #import <MVMCoreUI/MFView.h>
#import "MVMCoreUIFormValidationProtocol.h"
@class PrimaryButton; @class PrimaryButton;
@class MFTextField; @class MFTextField;
@ -29,7 +28,7 @@
@end @end
@interface MFTextField : MFView <MVMCoreUIMoleculeViewProtocol, MVMCoreUIFormValidationProtocol> @interface MFTextField : MFView <MVMCoreUIMoleculeViewProtocol>
@property (nullable, weak, nonatomic) UIView *view; @property (nullable, weak, nonatomic) UIView *view;

View File

@ -15,17 +15,16 @@
#import "MFLabel.h" #import "MFLabel.h"
#import "MVMCoreUIUtility.h" #import "MVMCoreUIUtility.h"
#import "MVMCoreUIConstants.h" #import "MVMCoreUIConstants.h"
#import "MVMCoreUIFormValidator.h"
#import <MVMCore/MVMCore-Swift.h> #import <MVMCoreUI/MVMCoreUI-Swift.h>
@import MVMCore.MVMCoreDispatchUtility; @import MVMCore.MVMCoreDispatchUtility;
@import MVMCore.NSDictionary_MFConvenience; @import MVMCore.NSDictionary_MFConvenience;
@import MVMCore.MVMCoreJSONConstants; @import MVMCore.MVMCoreJSONConstants;
@interface MFTextField() @interface MFTextField() <FormValidationProtocol>
@property (strong, nonatomic) MVMCoreUIFormValidator* formValidator; @property (strong, nonatomic) FormValidator* formValidator;
@property (strong, nonatomic) UIColor *customPlaceHolderColor; @property (strong, nonatomic) UIColor *customPlaceHolderColor;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *separatorHeightConstraint; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *separatorHeightConstraint;
@property (strong, nonatomic) UIBezierPath *borderPath; @property (strong, nonatomic) UIBezierPath *borderPath;
@ -111,7 +110,7 @@
} }
- (void)setWithJSON:(NSDictionary *)json delegate:(nullable id<UITextFieldDelegate, MFTextFieldDelegate>)delegate additionalData:(NSDictionary *)additionalData { - (void)setWithJSON:(NSDictionary *)json delegate:(nullable id<UITextFieldDelegate, MFTextFieldDelegate>)delegate additionalData:(NSDictionary *)additionalData {
[MVMCoreUIFormValidator setupValidationFor:self delegate:delegate]; [FormValidator setupValidationWithMolecule:self delegate: (id<FormValidationProtocol>)delegate];
[self setWithMap:json bothDelegates:delegate]; [self setWithMap:json bothDelegates:delegate];
self.mfTextFieldDelegate = self.formValidator; self.mfTextFieldDelegate = self.formValidator;
@ -563,11 +562,11 @@
#pragma mark - MVMCoreUIMoleculeViewProtocol #pragma mark - MVMCoreUIMoleculeViewProtocol
- (nullable MVMCoreUIFormValidator *) formValidatorModel { - (nullable FormValidator*) formValidatorModel {
return self.formValidator; return self.formValidator;
} }
- (void)setFormValidationModel:(nonnull MVMCoreUIFormValidator *) formValidatorModel { - (void)setFormValidationModel:(nonnull FormValidator*) formValidatorModel {
self.formValidator = formValidatorModel; self.formValidator = formValidatorModel;
} }

View File

@ -36,14 +36,12 @@
#import "MVMCoreUILoggingHandler.h" #import "MVMCoreUILoggingHandler.h"
#import "MVMCoreUITabBarPageControlViewController.h" #import "MVMCoreUITabBarPageControlViewController.h"
#import "MVMCoreUINavigationController.h" #import "MVMCoreUINavigationController.h"
#import "MVMCoreUIFormValidationProtocol.h"
#import "MVMCoreUIFormValidator.h"
#import <MVMCoreUI/MVMCoreUI-Swift.h> #import <MVMCoreUI/MVMCoreUI-Swift.h>
@import MVMAnimationFramework; @import MVMAnimationFramework;
@interface MFViewController() <MVMCoreUIFormValidationProtocol> @interface MFViewController() <FormValidationProtocol>
// A flag for if this view controller is observing for cache updates or not. // A flag for if this view controller is observing for cache updates or not.
@property (nonatomic) BOOL observingForResponseJSONUpdates; @property (nonatomic) BOOL observingForResponseJSONUpdates;
@ -57,15 +55,15 @@
// title view for navigation bar, used for custom navigation titles // title view for navigation bar, used for custom navigation titles
@property (weak, nonatomic) UILabel *titleLabel; @property (weak, nonatomic) UILabel *titleLabel;
@property (strong, nonatomic) MVMCoreUIFormValidator* formValidator; @property (strong, nonatomic) FormValidator* formValidator;
@end @end
@implementation MFViewController @implementation MFViewController
- (MVMCoreUIFormValidator *)formValidatorModel { - (FormValidator *)formValidatorModel {
if (self.formValidator == nil) { if (self.formValidator == nil) {
self.formValidator = [MVMCoreUIFormValidator new]; self.formValidator = [FormValidator new];
} }
return self.formValidator; return self.formValidator;
} }
@ -429,7 +427,7 @@
- (void) updateUI { - (void) updateUI {
[self newDataBuildScreen]; [self newDataBuildScreen];
[self.formValidator setEnabledByValidity]; [self.formValidator enableByValidation];
// Update the UI after the view is loaded. // Update the UI after the view is loaded.
self.needToUpdateUI = YES; self.needToUpdateUI = YES;

View File

@ -110,11 +110,5 @@ FOUNDATION_EXPORT const unsigned char MVMCoreUIVersionString[];
#pragma mark - Molecules #pragma mark - Molecules
#import <MVMCoreUI/TopLabelsView.h> #import <MVMCoreUI/TopLabelsView.h>
#import <MVMCoreUI/PrimaryButtonView.h> #import <MVMCoreUI/PrimaryButtonView.h>
#import <MVMCoreUI/MVMCoreUIMoleculeViewProtocol.h>
#import <MVMCoreUI/MVMCoreUIFormValidator.h>
#import <MVMCoreUI/MVMCoreUIFormValidationProtocol.h>
#pragma mark - Templates #pragma mark - Templates

View File

@ -8,7 +8,7 @@
import Foundation import Foundation
@objc public extension MVMCoreUIFormValidator { @objc public extension FormValidator {
@objc public func addFormParams(requestParameters: MVMCoreRequestParameters) { @objc public func addFormParams(requestParameters: MVMCoreRequestParameters) {
DispatchQueue.main.sync { DispatchQueue.main.sync {
requestParameters.add(self.getFormParams()) requestParameters.add(self.getFormParams())
@ -19,8 +19,7 @@ import Foundation
var extraParam: [String: Any] = [:] var extraParam: [String: Any] = [:]
for molecule in self.molecules { for molecule in self.molecules {
if let molecule = molecule as? MVMCoreUIFormValidationProtocol, if let formFieldName = molecule.formFieldName,
let formFieldName = molecule.formFieldName,
let formFieldValue = molecule.formFieldValue, let formFieldValue = molecule.formFieldValue,
let fieldName = formFieldName(), let fieldName = formFieldName(),
let fieldValue = formFieldValue() { let fieldValue = formFieldValue() {

View File

@ -8,39 +8,39 @@
import Foundation import Foundation
@objc extension MVMCoreUIFormValidator: UITextFieldDelegate, UITextViewDelegate, MFTextFieldDelegate{ @objc extension FormValidator: UITextFieldDelegate, UITextViewDelegate, MFTextFieldDelegate{
@objc public func textFieldDidEndEditing(_ textField: UITextField) { public func textFieldDidEndEditing(_ textField: UITextField) {
setEnabledByValidity() enableByValidation()
} }
@objc public func dismissFieldInput(_ sender: Any?) { public func dismissFieldInput(_ sender: Any?) {
if let delegate = delegate as? MFTextFieldDelegate, if let delegate = delegate as? MFTextFieldDelegate,
let dismissFieldInput = delegate.dismissFieldInput { let dismissFieldInput = delegate.dismissFieldInput {
dismissFieldInput(sender) dismissFieldInput(sender)
} }
} }
@objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool { public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder() textField.resignFirstResponder()
return true return true
} }
@objc public func textFieldDidBeginEditing(_ textField: UITextField) { public func textFieldDidBeginEditing(_ textField: UITextField) {
if let delegate = delegate as? UITextFieldDelegate, if let delegate = delegate as? UITextFieldDelegate,
let textFieldDidBeginEditing = delegate.textFieldDidBeginEditing { let textFieldDidBeginEditing = delegate.textFieldDidBeginEditing {
textFieldDidBeginEditing(textField) textFieldDidBeginEditing(textField)
} }
} }
@objc public func entryIsValid(_ textfield: MFTextField?) { public func entryIsValid(_ textfield: MFTextField?) {
DispatchQueue.main.async { DispatchQueue.main.async {
self.setEnabledByValidity() self.enableByValidation()
} }
} }
@objc public func entryIsInvalid(_ textfield: MFTextField?) { public func entryIsInvalid(_ textfield: MFTextField?) {
DispatchQueue.main.async { DispatchQueue.main.async {
self.setEnabledByValidity() self.enableByValidation()
} }
} }
} }

View File

@ -7,8 +7,48 @@
// //
import Foundation import Foundation
import UIKit
class FormValidator: NSObject { @objcMembers public class FormValidator: NSObject {
var delegate: MVMCoreUIFormValidationProtocol?
var molecules: [MVMCoreUIFormValidationProtocol]? var delegate: FormValidationProtocol?
var molecules: [UIView & FormValidationProtocol] = []
var extraValidationBlock: (() -> Bool)?
public func insertMolecule(_ molecule: UIView & FormValidationProtocol) {
molecules.append(molecule)
}
public static func setupValidation(molecule: UIView & FormValidationProtocol, delegate: FormValidationProtocol?) {
if let delegateFormValidatorModel = delegate?.formValidatorModel,
let setFormValidationModel = molecule.setFormValidationModel,
let validator = delegateFormValidatorModel() {
validator.delegate = delegate
validator.insertMolecule(molecule)
setFormValidationModel(validator)
}
}
public func enableByValidation() {
var valid = true
for molecule in molecules {
if let isValidField = molecule.isValidField,
isValidField() == false {
valid = false
}
}
let enableField = valid && (extraValidationBlock?() ?? true)
shouldEnable(enableField)
}
public func shouldEnable(_ enable: Bool) {
for molecule in molecules {
if let enableField = molecule.enableField {
enableField(enable)
}
}
}
} }

View File

@ -8,23 +8,21 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "MVMCoreUIFormValidationProtocol.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class MFTextField; @class MFTextField;
@interface MVMCoreUIFormValidator : NSObject @interface MVMCoreUIFormValidator : NSObject
@property (weak, nonatomic) NSObject <MVMCoreUIFormValidationProtocol>* delegate; @property (weak, nonatomic) NSObject <FormValidationProtocol>* delegate;
@property (strong, nonatomic) NSMutableArray <UIView <MVMCoreUIFormValidationProtocol>*>* molecules; @property (strong, nonatomic) NSMutableArray <UIView <FormValidationProtocol>*>* molecules;
@property (nullable, copy, nonatomic) BOOL(^extraValidationBlock)(void); @property (nullable, copy, nonatomic) BOOL(^extraValidationBlock)(void);
- (void)setEnabledByValidity; - (void)setEnabledByValidity;
- (void)insertMolecule:(nonnull UIView <MVMCoreUIFormValidationProtocol>*) molecule; - (void)insertMolecule:(nonnull UIView <FormValidationProtocol>*) molecule;
+ (void)setupValidationFor:(nonnull UIView <MVMCoreUIFormValidationProtocol>*) molecule delegate:(nonnull NSObject <MVMCoreUIFormValidationProtocol>*)delegate; + (void)setupValidationFor:(nonnull UIView <FormValidationProtocol>*) molecule delegate:(nonnull NSObject <FormValidationProtocol>*)delegate;
@end @end

View File

@ -11,14 +11,10 @@
@import MVMCore.MVMCoreDispatchUtility; @import MVMCore.MVMCoreDispatchUtility;
@interface MVMCoreUIFormValidator() <MFTextFieldDelegate, UITextFieldDelegate>
@property (strong, nonatomic) NSMutableArray <MFTextField *>*textFields;
@end
@implementation MVMCoreUIFormValidator @implementation MVMCoreUIFormValidator
- (void)insertMolecule:(nonnull UIView <MVMCoreUIFormValidationProtocol>*) molecule { - (void)insertMolecule:(nonnull UIView <FormValidationProtocol>*) molecule {
if (self.molecules == nil) { if (self.molecules == nil) {
self.molecules = [NSMutableArray array]; self.molecules = [NSMutableArray array];
} }
@ -27,10 +23,10 @@
} }
} }
+ (void)setupValidationFor:(nonnull UIView <MVMCoreUIFormValidationProtocol>*) molecule delegate:(nonnull NSObject <MVMCoreUIFormValidationProtocol>*)delegate { + (void)setupValidationFor:(nonnull UIView <FormValidationProtocol>*) molecule delegate:(nonnull NSObject <FormValidationProtocol>*)delegate {
if ([delegate conformsToProtocol:@protocol(MVMCoreUIFormValidationProtocol)] if ([delegate conformsToProtocol:@protocol(FormValidationProtocol)]
&& [delegate respondsToSelector:@selector(formValidatorModel)] && [delegate respondsToSelector:@selector(formValidatorModel)]
&& [molecule conformsToProtocol:@protocol(MVMCoreUIFormValidationProtocol)] && [molecule conformsToProtocol:@protocol(FormValidationProtocol)]
&& [molecule respondsToSelector:@selector(setFormValidationModel:)]) { && [molecule respondsToSelector:@selector(setFormValidationModel:)]) {
MVMCoreUIFormValidator *validator = [delegate formValidatorModel]; MVMCoreUIFormValidator *validator = [delegate formValidatorModel];
@ -43,7 +39,7 @@
- (void)setEnabledByValidity { - (void)setEnabledByValidity {
__block BOOL valid = YES; __block BOOL valid = YES;
[self.molecules enumerateObjectsUsingBlock:^(UIView<MVMCoreUIFormValidationProtocol> * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { [self.molecules enumerateObjectsUsingBlock:^(UIView<FormValidationProtocol> * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj conformsToProtocol:@protocol(MVMCoreUIFormValidationProtocol)] if ([obj conformsToProtocol:@protocol(MVMCoreUIFormValidationProtocol)]
&& [obj respondsToSelector:@selector(isValidField)] && [obj respondsToSelector:@selector(isValidField)]
&& [obj isValidField] == NO) { && [obj isValidField] == NO) {
@ -56,8 +52,8 @@
} }
- (void)shouldEnable:(BOOL) enable { - (void)shouldEnable:(BOOL) enable {
[self.molecules enumerateObjectsUsingBlock:^(UIView<MVMCoreUIFormValidationProtocol> * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { [self.molecules enumerateObjectsUsingBlock:^(UIView<FormValidationProtocol> * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj conformsToProtocol:@protocol(MVMCoreUIFormValidationProtocol)] if ([obj conformsToProtocol:@protocol(FormValidationProtocol)]
&& [obj respondsToSelector:@selector(enableField:)]) { && [obj respondsToSelector:@selector(enableField:)]) {
[MVMCoreDispatchUtility performBlockOnMainThread:^{ [MVMCoreDispatchUtility performBlockOnMainThread:^{

View File

@ -0,0 +1,21 @@
//
// FormValidationProtocol.swift
// MVMCoreUI
//
// Created by Suresh, Kamlesh on 3/26/19.
// Copyright © 2019 Verizon Wireless. All rights reserved.
//
import Foundation
@objc public protocol FormValidationProtocol: NSObjectProtocol {
@objc func formValidatorModel() -> FormValidator?
@objc optional func setFormValidationModel(_ formValidatorModel:FormValidator)
@objc optional func isValidField() -> Bool
@objc optional func enableField(_ enable: Bool)
@objc optional func formFieldName() -> String?
@objc optional func formFieldValue() -> String?
}

View File

@ -7,6 +7,8 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
//#import <MVMCoreUI/MVMCoreUI-Swift.h>
//#import "MVMCoreUI-Swift.h"
@class MVMCoreUIFormValidator; @class MVMCoreUIFormValidator;