updated samples
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
d59f88f9c6
commit
26c2243d0d
@ -123,5 +123,113 @@ extension AppDelegate: MVMCoreGlobalTopAlertDelegateProtocol {
|
||||
extension AppDelegate {
|
||||
func register(){
|
||||
ModelRegistry.register(handler: TestToggle.self, for: TestToggleModel.self)
|
||||
ModelRegistry.register(handler: DynamicHeadlineBodyToggle.self, for: DynamicHeadlineBodyToggleModel.self)
|
||||
ModelRegistry.register(handler: BiometricLabelToggle.self, for: BiometricLabelToggleModel.self)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class DynamicHeadlineBodyToggleModel: MoleculeModelProtocol {
|
||||
public static var identifier: String = "dynamicHeadlineBodyToggle"
|
||||
open var backgroundColor: Color?
|
||||
public var moleculeName: String?
|
||||
open var headlineBody: HeadlineBodyModel
|
||||
open var toggle: ToggleModel?
|
||||
public var switchOnText: LabelModel?
|
||||
public var switchOffText: LabelModel?
|
||||
}
|
||||
@objcMembers public class DynamicHeadlineBodyToggle: HeadlineBodyToggle {
|
||||
|
||||
//MARK:Declaration
|
||||
var delegate: MVMCoreUIDelegateObject?
|
||||
|
||||
//override the toggles.valueChangedCancellable
|
||||
public override func setupView() {
|
||||
super.setupView()
|
||||
toggle.valueChangedSubscription = toggle.publisher(for: .valueChanged)
|
||||
.sink { [weak self] changed in
|
||||
guard let self = self,
|
||||
let model = self.model as? DynamicHeadlineBodyToggleModel else { return }
|
||||
self.updateDynamicHeadLine(model)
|
||||
self.toggle.executeDefaultAction()
|
||||
}
|
||||
}
|
||||
|
||||
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
guard let dynamicHeadlineBodyToggleModel = model as? DynamicHeadlineBodyToggleModel else { return }
|
||||
delegate = delegateObject
|
||||
self.model = model
|
||||
toggle.setOptional(with: dynamicHeadlineBodyToggleModel.toggle, delegateObject, additionalData)
|
||||
updateDynamicHeadLine(dynamicHeadlineBodyToggleModel)
|
||||
}
|
||||
|
||||
func updateDynamicHeadLine(_ model: DynamicHeadlineBodyToggleModel) {
|
||||
|
||||
let headLineBodyModel: HeadlineBodyModel? = model.headlineBody
|
||||
// check if toogle model present
|
||||
// otherwise toggle should be hidden for member
|
||||
if let _ = model.toggle {
|
||||
if toggle.isOn, let switchOnText = model.switchOnText {
|
||||
headLineBodyModel?.headline = switchOnText
|
||||
} else if let switchOffText = model.switchOffText {
|
||||
headLineBodyModel?.headline = switchOffText
|
||||
}
|
||||
} else {
|
||||
toggle.isHidden = true
|
||||
}
|
||||
headlineBody.setOptional(with: headLineBodyModel, delegate, nil)
|
||||
layoutIfNeeded()
|
||||
}
|
||||
}
|
||||
|
||||
public class BiometricLabelToggleModel: MoleculeModelProtocol {
|
||||
public static var identifier: String = "biometricLabelToggle"
|
||||
public var backgroundColor: Color?
|
||||
public var touchId: LabelToggleModel
|
||||
public var faceId: LabelToggleModel
|
||||
}
|
||||
|
||||
@objc public protocol BiometricLabelToggleDelegate: NSObjectProtocol {
|
||||
@objc func processBiometricID(_ toggle: MVMCoreUI.Toggle?)
|
||||
@objc func setupBiometricID(_ toggle: MVMCoreUI.Toggle?)
|
||||
}
|
||||
|
||||
@objcMembers public class BiometricLabelToggle: LabelToggle {
|
||||
var biometricDelegate: BiometricLabelToggleDelegate?
|
||||
|
||||
// MARK: - MVMCoreViewProtocol
|
||||
public override func setupView() {
|
||||
super.setupView()
|
||||
// alignment fix
|
||||
label.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
|
||||
trailingAnchor.constraint(equalTo: toggle.trailingAnchor).isActive = true
|
||||
|
||||
//overwrite the default logic for value changed
|
||||
toggle.valueChangedSubscription = toggle
|
||||
.publisher(for: .valueChanged)
|
||||
.sink { [weak self] changed in
|
||||
self?.biometricDelegate?.processBiometricID(changed)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK:- MoleculeViewProtocol
|
||||
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||
guard let model = model as? BiometricLabelToggleModel else { return }
|
||||
biometricDelegate = delegateObject?.actionDelegate as? BiometricLabelToggleDelegate
|
||||
// check device/server supports face id
|
||||
if false {
|
||||
// Load the face id label json
|
||||
super.set(with: model.faceId, delegateObject, additionalData)
|
||||
} else {
|
||||
// if device/server supports touch Id
|
||||
super.set(with: model.touchId, delegateObject, additionalData)
|
||||
}
|
||||
biometricDelegate?.setupBiometricID(toggle)
|
||||
}
|
||||
|
||||
public class override func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||
guard let model = model as? BiometricLabelToggleModel else { return nil }
|
||||
return LabelToggle.estimatedHeight(with: model.faceId, delegateObject)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,25 +7,156 @@
|
||||
"suppressPostLaunchRequests": false,
|
||||
"tabBarHidden": true,
|
||||
"header": {
|
||||
"moleculeName": "header",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Zenkey"
|
||||
}
|
||||
"moleculeName": "header",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Zenkey"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
"stack": {
|
||||
"moleculeName": "stack",
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "toggle",
|
||||
"fieldKey": "isActive"
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "toggle",
|
||||
"fieldKey": "isActive"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "labelToggle",
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Enable touch id."
|
||||
},
|
||||
"toggle": {
|
||||
"moleculeName": "toggle"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBodyToggle",
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Business and Marketing Insights"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "Allow use of information."
|
||||
}
|
||||
},
|
||||
"toggle": {
|
||||
"moleculeName": "toggle"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBodyLinkToggle",
|
||||
"headlineBodyLink": {
|
||||
"moleculeName": "headlineBodyLink",
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Relevant Mobile Advertising"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "Allow use of information."
|
||||
}
|
||||
},
|
||||
"link": {
|
||||
"moleculeName": "link",
|
||||
"title": "Tell me more",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "forgotPasswordPage"
|
||||
}
|
||||
}
|
||||
},
|
||||
"toggle": {
|
||||
"moleculeName": "toggle"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "dynamicHeadlineBodyToggle",
|
||||
"toggle": {
|
||||
"moleculeName": "toggle",
|
||||
"fieldKey": "switchImei1",
|
||||
"state": true
|
||||
},
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Safety Mode is On",
|
||||
"fontStyle": "H3"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "Safety Mode protects you from overage fees and still lets you use data at reduced speeds, after you've done over monthly data limit.",
|
||||
"fontStyle": "B2"
|
||||
}
|
||||
},
|
||||
"switchOnText": {
|
||||
"moleculeName": "label",
|
||||
"text": "Safety Mode is On",
|
||||
"fontStyle": "H3"
|
||||
},
|
||||
"switchOffText": {
|
||||
"moleculeName": "label",
|
||||
"text": "Safety Mode is Off",
|
||||
"fontStyle": "H3"
|
||||
},
|
||||
"required": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "biometricLabelToggle",
|
||||
"faceId": {
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Enable face ID"
|
||||
},
|
||||
"toggle": {
|
||||
"moleculeName": "toggle",
|
||||
"actionMap": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "turnOnFaceId"
|
||||
}
|
||||
}
|
||||
},
|
||||
"touchId": {
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Enable Touch ID"
|
||||
},
|
||||
"toggle": {
|
||||
"moleculeName": "toggle",
|
||||
"actionMap": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "turnOnTouchId"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"footer": {
|
||||
@ -50,11 +181,8 @@
|
||||
"formRules": [
|
||||
{
|
||||
"groupName": "default",
|
||||
"rules": [
|
||||
|
||||
]
|
||||
"rules": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user