Merge branch 'develop' of https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui into feature/open_url_options

This commit is contained in:
Scott Pfeil 2022-01-21 10:29:46 -05:00
commit 54dd5351ed
4 changed files with 27 additions and 31 deletions

View File

@ -337,6 +337,7 @@ CGFloat const PanelAnimationDuration = 0.2;
};
void (^completion)(BOOL) = ^(BOOL finished){
self.leftView.hidden = true;
self.mainViewCoverView.hidden = YES;
[self panelDidDisappear:self.leftPanel animated:animated];
self.mainView.accessibilityElementsHidden = NO;
@ -360,6 +361,7 @@ CGFloat const PanelAnimationDuration = 0.2;
return;
}
[MVMCoreDispatchUtility performBlockOnMainThread:^{
self.leftView.hidden = false;
if (self.mainViewLeading.constant < .1) {
BOOL shouldExtendLeftPanel = [self shouldExtendLeftPanel];
@ -540,6 +542,7 @@ CGFloat const PanelAnimationDuration = 0.2;
};
void (^completion)(BOOL) = ^(BOOL finished){
self.rightView.hidden = true;
self.mainViewCoverView.hidden = YES;
[self panelDidDisappear:self.rightPanel animated:animated];
self.mainView.accessibilityElementsHidden = NO;
@ -563,6 +566,7 @@ CGFloat const PanelAnimationDuration = 0.2;
return;
}
[MVMCoreDispatchUtility performBlockOnMainThread:^{
self.rightView.hidden = false;
if (self.mainViewTrailing.constant < .1) {
BOOL shouldExtendRightPanel = [self shouldExtendRightPanel];
@ -726,9 +730,9 @@ CGFloat const PanelAnimationDuration = 0.2;
[self addPanel:panel];
self.leftView = panel.view;
self.leftPanel = panel;
self.leftView.hidden = YES;
self.leftView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *leftPanelWidth = [NSLayoutConstraint constraintWithItem:self.leftView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:270];
self.leftView.translatesAutoresizingMaskIntoConstraints = NO;
leftPanelWidth.active = YES;
self.leftPanelWidth = leftPanelWidth;
[NSLayoutConstraint constraintWithItem:self.mainView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.leftView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
@ -762,6 +766,7 @@ CGFloat const PanelAnimationDuration = 0.2;
[self addPanel:panel];
self.rightView = panel.view;
self.rightPanel = panel;
self.rightView.hidden = YES;
self.rightView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *rightPanelWidth = [NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:270];
rightPanelWidth.active = YES;

View File

@ -111,22 +111,6 @@ import MVMCore
/// - counter: keeps track of how many times causes another group validation
/// - Returns: validity for the FormGroupRule.rules
public func validateGroup(_ group: FormGroupRule, counter: Int = 0) throws -> Bool {
let tuple = group.validate(fields)
group.rules.forEach { rule in
for formKey in rule.fields {
guard let formField = fields[formKey] as? FormRuleWatcherFieldProtocol,
let fieldValidity = tuple.fieldValidity[formKey] else { continue }
formField.setValidity(fieldValidity, rule: rule)
}
}
// Notify the group watchers of validity.
for watcher in groupWatchers.filter({$0.groupName == group.groupName}) {
watcher.setValidity(tuple.valid)
}
var ruleChange = false
//loop the effects
group.effects?.forEach({ effect in
@ -140,24 +124,30 @@ import MVMCore
//update the group form rules
if let ruleIds = effect.activatedRuleIds {
let didChange = self.updateRules(for: group, with: effectTuple.valid, for: effect.fieldKey, and: ruleIds)
if(didChange) {
ruleChange = didChange
}
self.updateRules(for: group, with: effectTuple.valid, for: effect.fieldKey, and: ruleIds)
}
}
})
if ruleChange {
if counter > 3 {
throw ValidationError.other(error: "Effect caused validation loop error")
} else {
return try self.validateGroup(group, counter: counter + 1)
//validate the form
let tuple = group.validate(fields)
//set the validity for the fields
group.rules.forEach { rule in
for formKey in rule.fields {
guard let formField = fields[formKey] as? FormRuleWatcherFieldProtocol,
let fieldValidity = tuple.fieldValidity[formKey] else { continue }
formField.setValidity(fieldValidity, rule: rule)
}
} else {
return tuple.valid
}
// Notify the group watchers of validity.
for watcher in groupWatchers.filter({$0.groupName == group.groupName}) {
watcher.setValidity(tuple.valid)
}
return tuple.valid
}
/// Updates the Fields in which a specific rule within a FormGroupRule validates against.
@ -166,6 +156,7 @@ import MVMCore
/// - validity: If you the fieldKey should be added or removed from a rule
/// - fieldKey: FieldKey that will be added or removed from a rule
/// - ruleIds: Array of ruleIds to add or remove the fieldKey into the rule.fields property
@discardableResult
public func updateRules(for group: FormGroupRule, with validity: Bool, for fieldKey: String, and ruleIds: [String]) -> Bool{
//update the group rules based on the validation of this rule to show/hide
var ruleChange = false

View File

@ -50,7 +50,7 @@ public class RuleEqualsIgnoreCaseModel: RulesProtocol {
if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false
}
previousValidity[formKey] = valid
break
}

View File

@ -43,6 +43,7 @@ public class RuleEqualsModel: RulesProtocol {
if compareValue != formField.formFieldValue() {
valid = false
previousValidity[formKey] = valid
break
} else {
var fieldValidity = valid
@ -50,9 +51,8 @@ public class RuleEqualsModel: RulesProtocol {
if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false
}
previousValidity[formKey] = valid
}
previousValidity[formKey] = valid
}
return (valid: valid, fieldValidity: previousValidity)
}