Compare commits
4 Commits
develop
...
update/til
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8077a5c9ef | ||
|
|
b4c1c919c6 | ||
|
|
e1e82ae995 | ||
|
|
d6828532e8 |
@ -32,6 +32,13 @@
|
||||
/* End PBXAggregateTarget section */
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
D21B3A27259B93ED001483DC /* SelfSizingCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D21B3A25259B93ED001483DC /* SelfSizingCollectionView.swift */; };
|
||||
D2431DEB25E93A4F001C7AAC /* buttimag.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2431DEA25E93A4F001C7AAC /* buttimag.swift */; };
|
||||
D27564B62590FADB003CA713 /* ListDeviceRightVariableCaretModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D27564B42590FADB003CA713 /* ListDeviceRightVariableCaretModel.swift */; };
|
||||
D27564B72590FADB003CA713 /* ListDeviceRightVariableCaret.swift in Sources */ = {isa = PBXBuildFile; fileRef = D27564B52590FADB003CA713 /* ListDeviceRightVariableCaret.swift */; };
|
||||
D27564C825939E91003CA713 /* LinkCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D27564C525939E91003CA713 /* LinkCollectionViewCell.swift */; };
|
||||
D27564C925939E91003CA713 /* Links.swift in Sources */ = {isa = PBXBuildFile; fileRef = D27564C625939E91003CA713 /* Links.swift */; };
|
||||
D27564CA25939E91003CA713 /* LinksModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D27564C725939E91003CA713 /* LinksModel.swift */; };
|
||||
D29C557825BF1F340082E7D6 /* JSONCreatorActionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D29C557725BF1F340082E7D6 /* JSONCreatorActionHandler.swift */; };
|
||||
D2B1E3F322F4A68F0065F95C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B1E3F222F4A68F0065F95C /* AppDelegate.swift */; };
|
||||
D2B1E3F522F4A68F0065F95C /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B1E3F422F4A68F0065F95C /* MasterViewController.swift */; };
|
||||
@ -40,6 +47,10 @@
|
||||
D2B1E3FC22F4A6930065F95C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D2B1E3FB22F4A6930065F95C /* Assets.xcassets */; };
|
||||
D2B1E3FF22F4A6930065F95C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D2B1E3FD22F4A6930065F95C /* LaunchScreen.storyboard */; };
|
||||
D2B1E40A22F4C9F00065F95C /* JSON in Resources */ = {isa = PBXBuildFile; fileRef = D2B1E40922F4C9F00065F95C /* JSON */; };
|
||||
D2FC4FAD25897ACB00061EA4 /* StepModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2FC4FA925897ACB00061EA4 /* StepModel.swift */; };
|
||||
D2FC4FAE25897ACB00061EA4 /* OrderTrackerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2FC4FAA25897ACB00061EA4 /* OrderTrackerModel.swift */; };
|
||||
D2FC4FAF25897ACB00061EA4 /* Step.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2FC4FAB25897ACB00061EA4 /* Step.swift */; };
|
||||
D2FC4FB025897ACB00061EA4 /* OrderTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2FC4FAC25897ACB00061EA4 /* OrderTracker.swift */; };
|
||||
EA09CDBD282C3FD800A7835F /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA09CDBC282C3FD800A7835F /* CoreBluetooth.framework */; };
|
||||
EA33618B288B1B630071C351 /* VDS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA33618A288B1B630071C351 /* VDS.framework */; };
|
||||
EA33618C288B1B630071C351 /* VDS.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EA33618A288B1B630071C351 /* VDS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
@ -75,6 +86,13 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
D21B3A25259B93ED001483DC /* SelfSizingCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelfSizingCollectionView.swift; sourceTree = "<group>"; };
|
||||
D2431DEA25E93A4F001C7AAC /* buttimag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = buttimag.swift; sourceTree = "<group>"; };
|
||||
D27564B42590FADB003CA713 /* ListDeviceRightVariableCaretModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListDeviceRightVariableCaretModel.swift; sourceTree = "<group>"; };
|
||||
D27564B52590FADB003CA713 /* ListDeviceRightVariableCaret.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListDeviceRightVariableCaret.swift; sourceTree = "<group>"; };
|
||||
D27564C525939E91003CA713 /* LinkCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinkCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
D27564C625939E91003CA713 /* Links.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Links.swift; sourceTree = "<group>"; };
|
||||
D27564C725939E91003CA713 /* LinksModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinksModel.swift; sourceTree = "<group>"; };
|
||||
D29C557725BF1F340082E7D6 /* JSONCreatorActionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONCreatorActionHandler.swift; sourceTree = "<group>"; };
|
||||
D2B1E3EF22F4A68F0065F95C /* JSONCreator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JSONCreator.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D2B1E3F222F4A68F0065F95C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
@ -88,6 +106,10 @@
|
||||
D2B1E51222F9F9590065F95C /* MVMAnimationFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MVMAnimationFramework.framework; path = ../SharedFrameworks/MVMAnimationFramework.framework; sourceTree = "<group>"; };
|
||||
D2B1E51C22FA0DF50065F95C /* MVMCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MVMCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D2B1E51E22FA0DF80065F95C /* MVMCoreUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MVMCoreUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D2FC4FA925897ACB00061EA4 /* StepModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StepModel.swift; sourceTree = "<group>"; };
|
||||
D2FC4FAA25897ACB00061EA4 /* OrderTrackerModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderTrackerModel.swift; sourceTree = "<group>"; };
|
||||
D2FC4FAB25897ACB00061EA4 /* Step.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Step.swift; sourceTree = "<group>"; };
|
||||
D2FC4FAC25897ACB00061EA4 /* OrderTracker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderTracker.swift; sourceTree = "<group>"; };
|
||||
EA09CDBC282C3FD800A7835F /* CoreBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBluetooth.framework; path = System/Library/Frameworks/CoreBluetooth.framework; sourceTree = SDKROOT; };
|
||||
EA2ED278285BB3F400781478 /* MVMCoreUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MVMCoreUI.xcframework; path = ../SharedFrameworks/MVMCoreUI.xcframework; sourceTree = "<group>"; };
|
||||
EA2ED279285BB3F400781478 /* MVMCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MVMCore.xcframework; path = ../SharedFrameworks/MVMCore.xcframework; sourceTree = "<group>"; };
|
||||
@ -124,7 +146,9 @@
|
||||
D288D69B26CAE26900A5C365 /* MF */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D2431DEA25E93A4F001C7AAC /* buttimag.swift */,
|
||||
D29C557725BF1F340082E7D6 /* JSONCreatorActionHandler.swift */,
|
||||
D2FC4FA825897ACB00061EA4 /* Order Tracker */,
|
||||
);
|
||||
path = MF;
|
||||
sourceTree = "<group>";
|
||||
@ -185,6 +209,23 @@
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D2FC4FA825897ACB00061EA4 /* Order Tracker */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D21B3A25259B93ED001483DC /* SelfSizingCollectionView.swift */,
|
||||
D27564C525939E91003CA713 /* LinkCollectionViewCell.swift */,
|
||||
D27564C625939E91003CA713 /* Links.swift */,
|
||||
D27564C725939E91003CA713 /* LinksModel.swift */,
|
||||
D27564B52590FADB003CA713 /* ListDeviceRightVariableCaret.swift */,
|
||||
D27564B42590FADB003CA713 /* ListDeviceRightVariableCaretModel.swift */,
|
||||
D2FC4FA925897ACB00061EA4 /* StepModel.swift */,
|
||||
D2FC4FAA25897ACB00061EA4 /* OrderTrackerModel.swift */,
|
||||
D2FC4FAB25897ACB00061EA4 /* Step.swift */,
|
||||
D2FC4FAC25897ACB00061EA4 /* OrderTracker.swift */,
|
||||
);
|
||||
path = "Order Tracker";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@ -306,9 +347,20 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D2B1E3F722F4A68F0065F95C /* DetailViewController.swift in Sources */,
|
||||
D27564CA25939E91003CA713 /* LinksModel.swift in Sources */,
|
||||
D2B1E3F522F4A68F0065F95C /* MasterViewController.swift in Sources */,
|
||||
D27564B62590FADB003CA713 /* ListDeviceRightVariableCaretModel.swift in Sources */,
|
||||
D27564B72590FADB003CA713 /* ListDeviceRightVariableCaret.swift in Sources */,
|
||||
D2431DEB25E93A4F001C7AAC /* buttimag.swift in Sources */,
|
||||
D27564C825939E91003CA713 /* LinkCollectionViewCell.swift in Sources */,
|
||||
D2FC4FB025897ACB00061EA4 /* OrderTracker.swift in Sources */,
|
||||
D27564C925939E91003CA713 /* Links.swift in Sources */,
|
||||
D2FC4FAE25897ACB00061EA4 /* OrderTrackerModel.swift in Sources */,
|
||||
D21B3A27259B93ED001483DC /* SelfSizingCollectionView.swift in Sources */,
|
||||
D2B1E3F322F4A68F0065F95C /* AppDelegate.swift in Sources */,
|
||||
D29C557825BF1F340082E7D6 /* JSONCreatorActionHandler.swift in Sources */,
|
||||
D2FC4FAD25897ACB00061EA4 /* StepModel.swift in Sources */,
|
||||
D2FC4FAF25897ACB00061EA4 /* Step.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -455,7 +507,7 @@
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 59V5935DHZ;
|
||||
DEVELOPMENT_TEAM = FCMA4QKS77;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/../SharedFrameworks",
|
||||
@ -479,7 +531,7 @@
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 59V5935DHZ;
|
||||
DEVELOPMENT_TEAM = FCMA4QKS77;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/../SharedFrameworks",
|
||||
|
||||
@ -1,66 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1430"
|
||||
version = "1.7">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "EA985CBC298AE8CB00F2FF2E"
|
||||
BuildableName = "Artifactory"
|
||||
BlueprintName = "Artifactory"
|
||||
ReferencedContainer = "container:JSONCreator.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
shouldAutocreateTestPlan = "YES">
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "EA985CBC298AE8CB00F2FF2E"
|
||||
BuildableName = "Artifactory"
|
||||
BlueprintName = "Artifactory"
|
||||
ReferencedContainer = "container:JSONCreator.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@ -14,7 +14,6 @@ import VDS
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
var splitViewController: UISplitViewController?
|
||||
var mvcNav: UINavigationController?
|
||||
var dvcNav: UINavigationController?
|
||||
var mvc: UIViewController?
|
||||
@ -29,20 +28,19 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
|
||||
// Override point for customization after application launch.
|
||||
splitViewController = window!.rootViewController as? UISplitViewController
|
||||
NavigationHandler.shared().viewControllerToPresentOn = splitViewController
|
||||
mvcNav = splitViewController?.viewControllers[0] as? UINavigationController
|
||||
let splitViewController = window!.rootViewController as! UISplitViewController
|
||||
mvcNav = splitViewController.viewControllers[0] as? UINavigationController
|
||||
mvcNav?.delegate = self
|
||||
mvc = mvcNav?.topViewController
|
||||
dvcNav = splitViewController?.viewControllers[splitViewController!.viewControllers.count-1] as? UINavigationController
|
||||
dvcNav = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as? UINavigationController
|
||||
dvc = dvcNav?.topViewController
|
||||
dvc?.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
|
||||
dvc?.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
|
||||
dvc?.navigationItem.leftItemsSupplementBackButton = true
|
||||
splitViewController?.delegate = self
|
||||
splitViewController?.preferredDisplayMode = .allVisible
|
||||
splitViewController.delegate = self
|
||||
splitViewController.preferredDisplayMode = .allVisible
|
||||
|
||||
let gr = UILongPressGestureRecognizer(target: self, action: #selector(jsonPasteAndGo))
|
||||
splitViewController?.view.addGestureRecognizer(gr)
|
||||
splitViewController.view.addGestureRecognizer(gr)
|
||||
|
||||
NotificationCenter.default.addObserver(forName: UIViewController.showDetailTargetDidChangeNotification, object: splitViewController, queue: nil) { [weak self] (notification) in
|
||||
if let strongSelf = self, let svc = notification.object as? UISplitViewController {
|
||||
|
||||
@ -20,7 +20,9 @@ class DetailViewController: UIViewController {
|
||||
return
|
||||
}
|
||||
|
||||
modalPresentationStyle = .fullScreen
|
||||
modalPresentationStyle = .formSheet
|
||||
MVMCoreNavigationHandler.shared()?.viewControllerToPresentOn = self
|
||||
|
||||
view.addSubview(textView)
|
||||
if UIDevice.current.userInterfaceIdiom == .pad {
|
||||
textView.font = UIFont.systemFont(ofSize: 40)
|
||||
@ -68,45 +70,36 @@ class DetailViewController: UIViewController {
|
||||
@objc func play() {
|
||||
do {
|
||||
if let data = textView.text.data(using: .utf8), let jsonObject = try JSONSerialization.jsonObject(with: data, options: []) as? [AnyHashable: Any] {
|
||||
guard let page = jsonObject.optionalDictionaryForKey(KeyPage) else {
|
||||
let error = NSError(domain: ErrorDomainNative, code: ErrorCode.parsingJSON.rawValue, userInfo: [NSLocalizedDescriptionKey: "Needs a Page to show."])
|
||||
showError(error)
|
||||
return
|
||||
}
|
||||
guard let pageType = page.optionalStringForKey(KeyPageType) else {
|
||||
let error = NSError(domain: ErrorDomainNative, code: ErrorCode.parsingJSON.rawValue, userInfo: [NSLocalizedDescriptionKey: "Needs a pageType."])
|
||||
showError(error)
|
||||
return
|
||||
}
|
||||
let template = page.optionalStringForKey("template")
|
||||
let moduleMap = jsonObject.optionalDictionaryForKey(KeyModuleMap)
|
||||
let page = jsonObject.optionalDictionaryForKey(KeyPage)
|
||||
let pageType = page?.optionalStringForKey(KeyPageType)
|
||||
let template = page?.optionalStringForKey("template")
|
||||
var errorObject: MVMCoreErrorObject? = MVMCoreErrorObject(title: nil, message: "No Template Found", code: ErrorCode.initViewController.rawValue, domain: ErrorDomainNative, location: nil)
|
||||
if let viewController = MVMCoreUIViewControllerMappingObject.shared()?.createMFViewController(ofTemplate: template, pageType: pageType),
|
||||
let loadObject = MVMCoreLoadObject(pageJSON: page, modulesJSON: moduleMap, requestParameters: nil, dataForPage: nil, delegateObject: nil),
|
||||
let loadObject = MVMCoreLoadObject(pageJSON: page, modulesJSON: jsonObject.optionalDictionaryForKey(KeyModuleMap), requestParameters: nil, dataForPage: nil, delegateObject: nil),
|
||||
viewController.shouldFinishProcessingLoad(loadObject, error: &errorObject) {
|
||||
|
||||
Task(priority: .userInitiated) { @MainActor in
|
||||
let gr = UILongPressGestureRecognizer(target: self, action: #selector(DetailViewController.close))
|
||||
viewController.view.addGestureRecognizer(gr)
|
||||
|
||||
let topAlert = NotificationContainerView()
|
||||
CoreUIObject.sharedInstance()?.topNotificationHandler = NotificationHandler(with: topAlert)
|
||||
let split = MVMCoreUISplitViewController.setup(asMainController: nil, rightPanel: nil, topAlert: topAlert)!
|
||||
_ = split.view // Force loadView
|
||||
|
||||
let done = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.close))
|
||||
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
|
||||
split.navigationController?.isToolbarHidden = false
|
||||
viewController.setToolbarItems([spacer, done], animated: false)
|
||||
split.navigationController?.setToolbarItems([spacer, done], animated: false)
|
||||
|
||||
NavigationHandler.shared().viewControllerToPresentOn = split
|
||||
UIApplication.shared.delegate?.window??.rootViewController = split
|
||||
|
||||
await MVMCoreLoadRequestOperation.processJSON(fromServer: jsonObject, loadObject: loadObject)
|
||||
|
||||
await NavigationHandler.shared().push(viewController: viewController, animated: false)
|
||||
//let split = MVMCoreUISplitViewController.setup(asMainController: nil, rightPanel: nil)!
|
||||
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) {
|
||||
viewController.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.close))
|
||||
}
|
||||
let gr = UILongPressGestureRecognizer(target: self, action: #selector(DetailViewController.close))
|
||||
viewController.view.addGestureRecognizer(gr)
|
||||
let navigation = NavigationController.setupNavigationControllerAsMainController()!
|
||||
navigation.pushViewController(viewController, animated: false)
|
||||
MVMCoreNavigationHandler.shared()?.viewControllerToPresentOn = splitViewController
|
||||
MVMCoreNavigationHandler.shared()?.present(navigation, animated: true)
|
||||
|
||||
// Notify of json change
|
||||
let systemParameters = jsonObject.optionalDictionaryForKey(KeySystemParameters)
|
||||
loadObject.responseJSON = jsonObject
|
||||
loadObject.systemParametersJSON = systemParameters
|
||||
loadObject.responseInfoMap = jsonObject.optionalDictionaryForKey(KeyResponseInfo)
|
||||
var pages = jsonObject.dictionaryForKey(KeyPageMap)
|
||||
if !pages.isEmpty {
|
||||
MVMCoreLoadRequestOperation.cachePages(pages, loadObject: loadObject, error: &errorObject)
|
||||
}
|
||||
|
||||
|
||||
} else if let errorObject = errorObject {
|
||||
let error = NSError(domain: ErrorDomainNative, code: ErrorCode.initViewController.rawValue, userInfo: [NSLocalizedDescriptionKey: errorObject.messageToLog ?? errorObject.messageToDisplay!])
|
||||
showError(error)
|
||||
@ -118,9 +111,7 @@ class DetailViewController: UIViewController {
|
||||
}
|
||||
|
||||
@objc func close() {
|
||||
guard let splitViewController = (UIApplication.shared.delegate as? AppDelegate)?.splitViewController else { return }
|
||||
NavigationHandler.shared().viewControllerToPresentOn = splitViewController
|
||||
UIApplication.shared.delegate?.window??.rootViewController = splitViewController
|
||||
MVMCoreNavigationHandler.shared()?.dismissTopViewController(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
"moleculeName":"headerH1",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "headline"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text": "body"
|
||||
}
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
"moleculeName":"headerH1Btn",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "headline"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text": "body"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "primary",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
},
|
||||
"secondaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,23 +1,23 @@
|
||||
"moleculeName":"headerH1Landing",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline"
|
||||
"text":"x"
|
||||
},
|
||||
"headline2":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline2"
|
||||
"text":"x"
|
||||
},
|
||||
"subHeadline":{
|
||||
"moleculeName": "label",
|
||||
"text":"subHeadline"
|
||||
"text":"y"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"body"
|
||||
"text":"y"
|
||||
},
|
||||
"link":{
|
||||
"moleculeName": "link",
|
||||
"title":"link",
|
||||
"title":"y",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
@ -26,16 +26,17 @@
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"primary",
|
||||
"title":"x",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
"actionType": "openPage",
|
||||
"pageType": "verifyZip"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"secondary",
|
||||
"title":"x",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
"moleculeName": "headlineBody",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline"
|
||||
"text":"x"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"body"
|
||||
"text":"y"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
"moleculeName":"headerH2Btns",
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"body"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "primary",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
},
|
||||
"secondaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
"moleculeName":"headerH2CrtBtn",
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"body"
|
||||
}
|
||||
},
|
||||
"caretLink": {
|
||||
"moleculeName": "caretLink",
|
||||
"title": "link",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
"moleculeName":"headerH2Link",
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"body"
|
||||
}
|
||||
},
|
||||
"link": {
|
||||
"moleculeName": "link",
|
||||
"title": "link",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
@ -1,29 +1,29 @@
|
||||
"moleculeName":"headerH2TwoRows",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline"
|
||||
"text":"x"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"body"
|
||||
"text":"y"
|
||||
},
|
||||
"subBody":{
|
||||
"moleculeName": "label",
|
||||
"text":"subBody"
|
||||
"text":"y"
|
||||
},
|
||||
"body2":{
|
||||
"moleculeName": "label",
|
||||
"text":"body2"
|
||||
"text":"y"
|
||||
},
|
||||
"subBody2":{
|
||||
"moleculeName": "label",
|
||||
"text":"subBody2"
|
||||
"text":"y"
|
||||
},
|
||||
"body3":{
|
||||
"moleculeName": "label",
|
||||
"text":"body3"
|
||||
"text":"y"
|
||||
},
|
||||
"subBody3":{
|
||||
"moleculeName": "label",
|
||||
"text":"subBody3"
|
||||
"text":"y"
|
||||
}
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
"moleculeName":"headerH2BtnTny",
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"headline"
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"body"
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"moleculeName": "button",
|
||||
"title": "button",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
"moleculeName" : "listDvcBtnS",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "8.0 GB"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Verizon L data"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "2.0 GB"
|
||||
},
|
||||
"body2" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Additional data"
|
||||
},
|
||||
"button": {
|
||||
"moleculeName": "button",
|
||||
"title":"hello",
|
||||
"action": {
|
||||
"actionType":"openPage",
|
||||
"pageType":"hello"
|
||||
}
|
||||
},
|
||||
"image":{
|
||||
"moleculeName":"image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/iPhoneXr_Black_PureAngles"
|
||||
}
|
||||
@ -1,31 +0,0 @@
|
||||
"moleculeName" : "listDvcLnkS",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "8.0 GB"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Verizon L data"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "2.0 GB"
|
||||
},
|
||||
"body2" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Additional data"
|
||||
},
|
||||
"twoLinkView": {
|
||||
"leftLink": {
|
||||
"moleculeName": "link",
|
||||
"title":"hello",
|
||||
"action": {
|
||||
"actionType":"openPage",
|
||||
"pageType":"hello"
|
||||
}
|
||||
}
|
||||
},
|
||||
"image":{
|
||||
"moleculeName":"image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/iPhoneXr_Black_PureAngles"
|
||||
}
|
||||
@ -6,19 +6,19 @@
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "link",
|
||||
"title" : "Hello",
|
||||
"action": {
|
||||
"actionType":"back"
|
||||
}
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello"
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,15 +2,15 @@
|
||||
"moleculeName": "listLVImg",
|
||||
"leftLabel": {
|
||||
"moleculeName": "label",
|
||||
"text": "left"
|
||||
"text": "Lorem ipsum"
|
||||
},
|
||||
"rightLabel": {
|
||||
"moleculeName": "label",
|
||||
"text": "right"
|
||||
"text": "Label"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "alert_standard"
|
||||
"image": "imageName_PayPal_logo"
|
||||
},
|
||||
"action" : {
|
||||
"disabled" : false,
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
|
||||
"moleculeName": "listLVImgAll",
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "link",
|
||||
"action": {
|
||||
"actionType":"back"
|
||||
}
|
||||
}
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "alert_standard"
|
||||
},
|
||||
"action" : {
|
||||
"disabled" : false,
|
||||
"analyticsData" : {
|
||||
},
|
||||
"title" : "Manage plan",
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "planLanding"
|
||||
}
|
||||
@ -1,40 +0,0 @@
|
||||
|
||||
"moleculeName": "listLVImgRCAll",
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "link",
|
||||
"action": {
|
||||
"actionType":"back"
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightLabel": {
|
||||
"moleculeName": "label",
|
||||
"text": "right"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "alert_standard"
|
||||
},
|
||||
"action" : {
|
||||
"disabled" : false,
|
||||
"analyticsData" : {
|
||||
},
|
||||
"title" : "Manage plan",
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "planLanding"
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
"number": 1,
|
||||
"moleculeName" : "listLVNAll",
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "link",
|
||||
"action": {
|
||||
"actionType":"back"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
"number": 1,
|
||||
"moleculeName" : "listLVNLBdy",
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
}
|
||||
@ -1,26 +0,0 @@
|
||||
"radioButton" : {
|
||||
"moleculeName" : "radioButton"
|
||||
},
|
||||
"moleculeName" : "listLVRBAll",
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "link",
|
||||
"action": {
|
||||
"actionType":"back"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,15 +0,0 @@
|
||||
"radioButton" : {
|
||||
"moleculeName" : "radioButton"
|
||||
},
|
||||
"moleculeName" : "listLVRBBdy",
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
"radioButton" : {
|
||||
"moleculeName" : "radioButton"
|
||||
},
|
||||
"moleculeName" : "listLVRBImg",
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "alert_standard"
|
||||
},
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "Hello",
|
||||
"action": {
|
||||
"actionType":"back"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
"moleculeName" : "listPrgBarData",
|
||||
"progressBar" : {
|
||||
"moleculeName" : "multiProgressBar",
|
||||
"progressList": [{
|
||||
"percent" : 40,
|
||||
"color" : "red"
|
||||
},{
|
||||
"percent" : 30,
|
||||
"color" : "blue"
|
||||
}]
|
||||
|
||||
},
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"action" : {
|
||||
"actionType" : "back"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
|
||||
"moleculeName": "planLockup",
|
||||
"planLabel": {
|
||||
"moleculeName": "label",
|
||||
"text": "XL"
|
||||
},
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "headline"
|
||||
},
|
||||
"subHeadline": {
|
||||
"moleculeName": "label",
|
||||
"text": "subHeadline"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "body"
|
||||
}
|
||||
@ -5,21 +5,18 @@
|
||||
},
|
||||
"leftHeadline": {
|
||||
"moleculeName": "label",
|
||||
"text": "headline"
|
||||
"text": "Lorem ipsum dolor sit."
|
||||
},
|
||||
"leftBody": {
|
||||
"moleculeName": "label",
|
||||
"text": "body"
|
||||
"text": "Lorem ipsum dolor sit."
|
||||
},
|
||||
"leftSubBody": {
|
||||
"moleculeName": "label",
|
||||
"text": "subBody"
|
||||
"text": "Lorem ipsum dolor sit."
|
||||
},
|
||||
"rightLabel": {
|
||||
"moleculeName": "label",
|
||||
"text": "right"
|
||||
},
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
"text": "Label"
|
||||
}
|
||||
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
"moleculeName" : "list1CTxt",
|
||||
"eyebrow": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
},
|
||||
"headline": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"subHeadline": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "subHeadline"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
},
|
||||
"link": {
|
||||
"moleculeName" : "link",
|
||||
"title" : "link",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
@ -2,13 +2,13 @@
|
||||
"headlineBody" : {
|
||||
"headline": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
"actionType": "back"
|
||||
}
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
"moleculeName" : "listPrgBarThin",
|
||||
"leftBody" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "x alkdfjaldf kjasdlkfj salkdfj aslkfdj lksafdj aslkdfj slkfd jsalk jasdlk jsadl kjakslfj "
|
||||
},
|
||||
"action" : {
|
||||
"actionType" : "back"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightBar" : {
|
||||
"moleculeName" : "line",
|
||||
@ -21,5 +21,5 @@
|
||||
},
|
||||
"leftHeadline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "alkjf dsalkjf kjadfl kja"
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
"moleculeName" : "listRVBtn",
|
||||
"button" : {
|
||||
"moleculeName" : "button",
|
||||
"title": "button",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
},
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Body"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "TextButton",
|
||||
"action" : {
|
||||
"actionType" : "back"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Eyebrow"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Headline"
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
"text" : "heeeeyy"
|
||||
},
|
||||
"moleculeName" : "listRVLine",
|
||||
"bar" : {
|
||||
@ -9,7 +9,7 @@
|
||||
},
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
|
||||
@ -4,5 +4,5 @@
|
||||
},
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
"text" : "Hello Ryan!!!"
|
||||
}
|
||||
|
||||
@ -2,19 +2,19 @@
|
||||
"eyebrowHeadlineBodyLink": {
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "eyebrow"
|
||||
"text" : "Hello Ryan!!!"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "Hello Ryan!!!"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello Ryan!!!"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "link",
|
||||
"title" : "Hello",
|
||||
"action": {
|
||||
"actionType":"back"
|
||||
}
|
||||
@ -22,7 +22,7 @@
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
"text" : "Hello Ryan!!!"
|
||||
},
|
||||
"arrow": {
|
||||
"moleculeName": "arrow"
|
||||
|
||||
@ -3,16 +3,16 @@
|
||||
"moleculeName":"headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "Hello Ryan!!!"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello Ryan!!!"
|
||||
}
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
"text" : "Hello Ryan!!!"
|
||||
},
|
||||
"arrow": {
|
||||
"moleculeName": "arrow"
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
"moleculeName" : "listRVCaretAll",
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text": "right"
|
||||
},
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Body"
|
||||
},
|
||||
"link" : {
|
||||
"moleculeName" : "link",
|
||||
"title" : "TextButton",
|
||||
"action" : {
|
||||
"actionType" : "back"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"eyebrow" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Eyebrow"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Headline"
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
"text" : "heeeeyy"
|
||||
},
|
||||
"moleculeName" : "listRVWheel",
|
||||
"wheel" : {
|
||||
@ -8,7 +8,7 @@
|
||||
},
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "list3CBillChg",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "center"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "list3CBillHst",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "center"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "list3CDataUsg",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "8.0 GB"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Verizon L data"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "2.0 GB"
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
"moleculeName" : "list3CIntData",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "8.0 GB"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Verizon L data"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "2.0 GB"
|
||||
},
|
||||
"arrow": {
|
||||
"moleculeName": "arrow",
|
||||
"color": "green",
|
||||
"degrees": 270
|
||||
}
|
||||
@ -1,71 +0,0 @@
|
||||
"moleculeName" : "list3CSpdTst",
|
||||
"title": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "title"
|
||||
},
|
||||
"topLeftHeadlineBody" : {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
},
|
||||
"topCenterHeadlineBody" : {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
},
|
||||
"topRightHeadlineBody" : {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
},
|
||||
"bottomLeftHeadlineBody" : {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
},
|
||||
"bottomCenterHeadlineBody" : {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
},
|
||||
"bottomRightHeadlineBody" : {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
}
|
||||
@ -1,46 +1,46 @@
|
||||
"moleculeName" : "list2CCmpr1",
|
||||
"leftHeadline1" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline1"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"leftHeadline2" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline2"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"leftHeadline3" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline3"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"leftBody" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"leftLink" : {
|
||||
"moleculeName" : "label",
|
||||
"title" : "link",
|
||||
"title" : "Hello",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
},
|
||||
"rightHeadline1" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline1"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightHeadline2" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline2"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightHeadline3" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline3"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightBody" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightLink" : {
|
||||
"moleculeName" : "label",
|
||||
"title" : "link",
|
||||
"title" : "Hello",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
"moleculeName" : "list2CDrpDrp1",
|
||||
"leftDropDown" : {
|
||||
"moleculeName": "dropDown",
|
||||
"options": ["Option1","Option2","Option3"]
|
||||
},
|
||||
"rightDropDown" : {
|
||||
"moleculeName": "dropDown",
|
||||
"options": ["Option1","Option2","Option3"]
|
||||
}
|
||||
@ -1,17 +1,17 @@
|
||||
"moleculeName" : "list2CTxtPrc1",
|
||||
"leftHeadline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"leftBody" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightSubLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "rightSub"
|
||||
"text" : "Hello"
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
"moleculeName" : "list2CTxtPrc2",
|
||||
"moleculeName" : "list2CTxtPrc1",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
"text" : "Hello"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
"text" : "Hello"
|
||||
}
|
||||
|
||||
@ -1,34 +0,0 @@
|
||||
"moleculeName" : "doughnutChart",
|
||||
"title" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "title"
|
||||
},
|
||||
"subtitle" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "subtitle"
|
||||
},
|
||||
"sections" : [{
|
||||
"moleculeName": "doughnutChartItem",
|
||||
"label": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "subtitle"
|
||||
},
|
||||
"percent": 22,
|
||||
"color": "green"
|
||||
},{
|
||||
"moleculeName": "doughnutChartItem",
|
||||
"label": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "subtitle"
|
||||
},
|
||||
"percent": 15,
|
||||
"color": "blue"
|
||||
},{
|
||||
"moleculeName": "doughnutChartItem",
|
||||
"label": {
|
||||
"moleculeName" : "label",
|
||||
"text" : "subtitle"
|
||||
},
|
||||
"percent": 35,
|
||||
"color": "green"
|
||||
}]
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "planNamesLockup",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"subHeadline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "subHeadline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
"moleculeName" : "listPrgBarThin",
|
||||
"leftBody" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
},
|
||||
"action" : {
|
||||
"actionType" : "back"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
},
|
||||
"rightBar" : {
|
||||
"moleculeName" : "line",
|
||||
"backgroundColor" : "red"
|
||||
},
|
||||
"progressBar" : {
|
||||
"moleculeName" : "progressBar",
|
||||
"percent" : 40,
|
||||
"color" : "red"
|
||||
},
|
||||
"leftHeadline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
}
|
||||
@ -1,9 +0,0 @@
|
||||
"moleculeName" : "list1CTxtDiv1",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
@ -1,9 +0,0 @@
|
||||
"moleculeName" : "list1CTxtDiv2",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
"moleculeName" : "list1CTxtDiv3",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "headline"
|
||||
"text" : "8.0 GB"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "body"
|
||||
"text" : "Verizon L data"
|
||||
}
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "list3CBillChgDiv",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "list3CBillHisDiv",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "list3CDataUsgDiv",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "8.0 GB"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Verizon L data"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "2.0 GB"
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
"moleculeName" : "list3CSpdTstDiv",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"centerLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
}
|
||||
@ -1,9 +0,0 @@
|
||||
"moleculeName" : "list2CSbscDiv",
|
||||
"leftLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "left"
|
||||
},
|
||||
"rightLabel" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "right"
|
||||
}
|
||||
21
JSONCreator_iOS/JSONCreator/JSON/Samples/Badge.json
Normal file
21
JSONCreator_iOS/JSONCreator/JSON/Samples/Badge.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"ResponseInfo": {
|
||||
"code": "00000",
|
||||
"type": "Success"
|
||||
},
|
||||
"Page": {
|
||||
"pageType": "x",
|
||||
"template": "threeLayer",
|
||||
"header": {},
|
||||
"footer": {},
|
||||
"middle": {
|
||||
"moleculeName": "container",
|
||||
"molecule": {
|
||||
"moleculeName": "badge",
|
||||
"text": "hello my name is",
|
||||
"numberOfLines": 4,
|
||||
"surface": "light"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,399 +0,0 @@
|
||||
{
|
||||
"ResponseInfo": {},
|
||||
"Page": {
|
||||
"pageType": "contactUs",
|
||||
"screenHeading": "Select an international plan",
|
||||
"template": "list",
|
||||
"formRules": [{
|
||||
"groupName": "default",
|
||||
"rules": [{
|
||||
"type": "anyValueChanged",
|
||||
"fields": [
|
||||
"c1"
|
||||
]
|
||||
}]
|
||||
}],
|
||||
"molecules": [{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "default",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "primary",
|
||||
"style": "primary",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "large",
|
||||
"size": "large",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "standard",
|
||||
"size": "standard",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "small",
|
||||
"size": "small",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "tiny",
|
||||
"size": "tiny",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary",
|
||||
"style": "secondary",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary large",
|
||||
"style": "secondary",
|
||||
"size": "large",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary standard",
|
||||
"style": "secondary",
|
||||
"size": "standard",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary small",
|
||||
"style": "secondary",
|
||||
"size": "small",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary tiny",
|
||||
"style": "secondary",
|
||||
"size": "tiny",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "primary disabled",
|
||||
"enabled": false,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "small disabled",
|
||||
"enabled": false,
|
||||
"size": "small",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary disabled",
|
||||
"enabled": false,
|
||||
"style": "secondary",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary small disabled",
|
||||
"style": "secondary",
|
||||
"enabled": false,
|
||||
"size": "small",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "default",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "primary",
|
||||
"style": "primary",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "large",
|
||||
"size": "large",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "standard",
|
||||
"size": "standard",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "small",
|
||||
"size": "small",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "tiny",
|
||||
"size": "tiny",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary",
|
||||
"style": "secondary",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary large",
|
||||
"style": "secondary",
|
||||
"size": "large",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary standard",
|
||||
"style": "secondary",
|
||||
"size": "standard",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary small",
|
||||
"style": "secondary",
|
||||
"size": "small",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary tiny",
|
||||
"style": "secondary",
|
||||
"size": "tiny",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "primary disabled",
|
||||
"enabled": false,
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "small disabled",
|
||||
"enabled": false,
|
||||
"size": "small",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary disabled",
|
||||
"enabled": false,
|
||||
"style": "secondary",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName": "listItem",
|
||||
"backgroundColor": "black",
|
||||
"molecule": {
|
||||
"moleculeName": "button",
|
||||
"title": "secondary small disabled",
|
||||
"style": "secondary",
|
||||
"enabled": false,
|
||||
"size": "small",
|
||||
"inverted": true,
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
},{
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey": "c1",
|
||||
"groupName": "default",
|
||||
},
|
||||
"moleculeName" : "listLVCB",
|
||||
"eyebrowHeadlineBodyLink" : {
|
||||
"moleculeName" : "eyebrowHeadlineBodyLink",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Change to enable the primary footer button."
|
||||
}
|
||||
}
|
||||
|
||||
}],
|
||||
"footer": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"x",
|
||||
"groupName": "default",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -86,7 +86,7 @@
|
||||
"moleculeName": "button",
|
||||
"title": "Learn more",
|
||||
"style": "secondary",
|
||||
"size": "small",
|
||||
"size": "tiny",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "x"
|
||||
@ -147,7 +147,7 @@
|
||||
"moleculeName": "button",
|
||||
"title": "Learn more",
|
||||
"style": "secondary",
|
||||
"size": "small",
|
||||
"size": "tiny",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "x"
|
||||
|
||||
@ -1,931 +0,0 @@
|
||||
{
|
||||
"SystemParams":{
|
||||
"googleMapsAPIKey":"AIzaSyD9-5Q4fTMYESxmbZhYpA98sy7XFK2d0BE",
|
||||
"enableGoogleMapsIOS":true
|
||||
},
|
||||
"Page":{
|
||||
"ResponseInfo":{
|
||||
"type":"Success",
|
||||
"code":"00000"
|
||||
},
|
||||
"pageType":"prospectWelcomeTrial",
|
||||
"backgroundColor":"coolGray1",
|
||||
"tabBarIndex":0,
|
||||
"navigationBar":{
|
||||
"line":{
|
||||
"moleculeName":"line",
|
||||
"type":"none"
|
||||
},
|
||||
"moleculeName":"navigationBar",
|
||||
"additionalLeftButtons":[
|
||||
{
|
||||
"accessibilityText":"Verizon logo, tap anytime to scroll to top of page",
|
||||
"moleculeName":"navigationImageButton",
|
||||
"image":"nav_vz_mark",
|
||||
"imageRenderingMode":"alwaysOriginal",
|
||||
"action":{
|
||||
"analyticsData":{
|
||||
"vzdl.page.linkName":"global black bar nav: vz icon"
|
||||
},
|
||||
"actionType":"scrollToTop"
|
||||
}
|
||||
}
|
||||
],
|
||||
"additionalRightButtons":[
|
||||
{
|
||||
"moleculeName":"navigationLabelButton",
|
||||
"title":"Sign in",
|
||||
"action":{
|
||||
"hideCloseButton":false,
|
||||
"appContext":"mobileFirstSS",
|
||||
"analyticsData":{
|
||||
"vzdl.page.id":"prospectTrailWelcome",
|
||||
"vzdl.target.engagement.intent":"customer sign in",
|
||||
"vzdl.page.displayChannel":"MVA",
|
||||
"vzdl.page.linkName":"I'm a customer",
|
||||
"vzdl.page.name":"prospectTrailWelcome"
|
||||
},
|
||||
"requestURL":"https:\/\/mobile-exp.vzw.com\/mobile\/nsa\/nos\/gw\/launchapp\/oauthSignIn?",
|
||||
"extraParameters":{
|
||||
"oAuthLaunchAppFlow":"Y"
|
||||
},
|
||||
"disableNativeAction":false,
|
||||
"customUserAgent":"MY_VZW_APP;IOS;16.3.1;iPhone15,2;10.5.0;VZW-MFA-IOS",
|
||||
"openInWebview":true,
|
||||
"disableOfflineDevice":false,
|
||||
"hideUrl":false,
|
||||
"actionType":"openPage",
|
||||
"pageType":"userSignIn",
|
||||
"presentationStyle":"root",
|
||||
"isSelected":false,
|
||||
"openOauthWebView":false,
|
||||
"hideWebNavigation":false,
|
||||
"selected":false
|
||||
}
|
||||
}
|
||||
],
|
||||
"style":"dark"
|
||||
},
|
||||
"line":{
|
||||
"moleculeName":"line",
|
||||
"type":"none"
|
||||
},
|
||||
"header":{
|
||||
"moleculeName":"header",
|
||||
"useVerticalMargins":true,
|
||||
"backgroundColor":"coolGray1",
|
||||
"topPadding":32,
|
||||
"bottomPadding":24,
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Join the best mobile\nnetwork.",
|
||||
"textAlignment":"center",
|
||||
"fontStyle":"BoldTitleXLarge"
|
||||
}
|
||||
},
|
||||
"template":"list",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"useVerticalMargins":false,
|
||||
"backgroundColor":"coolGray1",
|
||||
"molecule":{
|
||||
"moleculeName": "stack",
|
||||
"axis": "vertical",
|
||||
"backgroundColor":"black",
|
||||
"cornerRadius":8,
|
||||
"useVerticalMargins":true,
|
||||
"topPadding":24,
|
||||
"bottomPadding":24,
|
||||
"molecules": [{
|
||||
"moleculeName":"stackItem",
|
||||
"spacing": 0,
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Bring your own\ndevice",
|
||||
"fontStyle":"BoldTitleXLarge",
|
||||
"textColor":"white",
|
||||
"textAlignment":"center"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Bring your device and get up to\n$540 on select plans.",
|
||||
"fontStyle":"RegularBodyLarge",
|
||||
"textColor":"white",
|
||||
"textAlignment":"center"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"verticalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"button",
|
||||
"size":"small",
|
||||
"style":"primary",
|
||||
"inverted":true,
|
||||
"title":"Get started",
|
||||
"action":{
|
||||
"analyticsData":{
|
||||
"vzdl.page.id":"prospectTrailWelcome",
|
||||
"vzdl.target.engagement.intent":"prospectJoinVerizon",
|
||||
"vzdl.page.displayChannel":"MVA",
|
||||
"vzdl.page.linkName":"Join Verizon",
|
||||
"vzdl.page.name":"prospectTrailWelcome"
|
||||
},
|
||||
"presentationStyle":"root",
|
||||
"pageType":"joinByodProspect",
|
||||
"disableOfflineDevice":false,
|
||||
"showNativeNavigation":true,
|
||||
"disableAction":false,
|
||||
"hideCloseButton":true,
|
||||
"hideWebNavigation":false,
|
||||
"checkCameraPermission":false,
|
||||
"enableNativeScroll":true,
|
||||
"appContext":"mobileFirstSS",
|
||||
"disableNativeAction":false,
|
||||
"openInWebview":true,
|
||||
"isSelected":false,
|
||||
"requestURL":"https:\/\/www.verizon.com\/onedp\/api\/mva\/verifyDevice?identifier=IPHONE15,2&promptZip=true",
|
||||
"tryToReplaceFirst":false,
|
||||
"browserUrl":"https:\/\/www.verizon.com\/onedp\/api\/mva\/verifyDevice?identifier=IPHONE15,2&promptZip=true",
|
||||
"actionType":"openURL",
|
||||
"length":0,
|
||||
"openOauthWebView":true,
|
||||
"selected":false,
|
||||
"clientParameters":{
|
||||
"timeout":30,
|
||||
"list":[
|
||||
{
|
||||
"type":"eSimCapable"
|
||||
}
|
||||
]
|
||||
},
|
||||
"customUserAgent":"MY_VZW_APP;IOS;16.3.1;iPhone15,2;10.5.0;VZW-MFA-IOS",
|
||||
"hideUrl":true
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"useHorizontalMargins":false,
|
||||
"topPadding":48,
|
||||
"bottomPadding":0,
|
||||
"backgroundColor":"coolGray1",
|
||||
"molecule":{
|
||||
"moleculeName":"carousel",
|
||||
"accessibilityText":"carousel",
|
||||
"pagingMolecule":{
|
||||
"moleculeName":"barsCarouselIndicator",
|
||||
"position":-20
|
||||
},
|
||||
"height":92,
|
||||
"spacing":12,
|
||||
"itemWidthPercent":45,
|
||||
"useHorizontalMargins":true,
|
||||
"leftPadding":16,
|
||||
"rightPadding":16,
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"carouselItem",
|
||||
"backgroundColor":"white",
|
||||
"cornerRadius":8,
|
||||
"useVerticalMargins":true,
|
||||
"topPadding":16,
|
||||
"bottomPadding":16,
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"vertical",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"spacing":0,
|
||||
"horizontalAlignment":"leading",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Deals",
|
||||
"fontStyle":"BoldTitleSmall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"trailing",
|
||||
"verticalAlignment":"trailing",
|
||||
"molecule":{
|
||||
"moleculeName":"arrow"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"action":{
|
||||
"presentationStyle":"push",
|
||||
"actionType":"openPage",
|
||||
"pageType":"deals"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"carouselItem",
|
||||
"backgroundColor":"white",
|
||||
"cornerRadius":8,
|
||||
"useVerticalMargins":true,
|
||||
"topPadding":16,
|
||||
"bottomPadding":16,
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"vertical",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"spacing":0,
|
||||
"horizontalAlignment":"leading",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Shop phones",
|
||||
"fontStyle":"BoldTitleSmall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"trailing",
|
||||
"verticalAlignment":"trailing",
|
||||
"molecule":{
|
||||
"moleculeName":"arrow"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"action":{
|
||||
"presentationStyle":"push",
|
||||
"actionType":"openPage",
|
||||
"pageType":"smartphones"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"carouselItem",
|
||||
"backgroundColor":"white",
|
||||
"cornerRadius":8,
|
||||
"useVerticalMargins":true,
|
||||
"topPadding":16,
|
||||
"bottomPadding":16,
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"vertical",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"spacing":0,
|
||||
"horizontalAlignment":"leading",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Shop plans",
|
||||
"fontStyle":"BoldTitleSmall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"trailing",
|
||||
"verticalAlignment":"trailing",
|
||||
"molecule":{
|
||||
"moleculeName":"arrow"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"action":{
|
||||
"presentationStyle":"push",
|
||||
"actionType":"openPage",
|
||||
"pageType":"plans"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"topPadding":48,
|
||||
"bottomPadding":0,
|
||||
"horizontalAlignment":"center",
|
||||
"backgroundColor":"coolGray1",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"The network America\nrelies on.",
|
||||
"textAlignment":"center",
|
||||
"fontStyle":"BoldTitleMedium"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"topPadding":24,
|
||||
"bottomPadding":0,
|
||||
"backgroundColor":"coolGray1",
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"horizontal",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"molecule":{
|
||||
"moleculeName":"image",
|
||||
"image":"Prospect5GChart",
|
||||
"width":35,
|
||||
"height":32,
|
||||
"contentMode":"scaleAspectFit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"5G Nationwide covers 200+ million people in 2,700+ cities.",
|
||||
"fontStyle":"RegularBodyLarge"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"backgroundColor":"coolGray1",
|
||||
"topPadding":16,
|
||||
"bottomPadding":0,
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"horizontal",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"molecule":{
|
||||
"moleculeName":"image",
|
||||
"image":"ProspectDevice",
|
||||
"width":35,
|
||||
"height":32,
|
||||
"contentMode":"scaleAspectFit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Highest in Customer Satisfaction with Small Business Wireless Service.",
|
||||
"fontStyle":"RegularBodyLarge"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"topPadding":24,
|
||||
"bottomPadding":0,
|
||||
"backgroundColor":"coolGray1",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"caretLink",
|
||||
"title":"Check out the mobile coverage map",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"coverage"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"topPadding":48,
|
||||
"bottomPadding":0,
|
||||
"horizontalAlignment":"center",
|
||||
"backgroundColor":"coolGray1",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"The fastest home\ninternet.",
|
||||
"textAlignment":"center",
|
||||
"fontStyle":"BoldTitleXLarge"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"topPadding":24,
|
||||
"bottomPadding":0,
|
||||
"backgroundColor":"coolGray1",
|
||||
"hideArrow":true,
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"vertical",
|
||||
"backgroundColor":"#EE0000",
|
||||
"cornerRadius":8,
|
||||
"useHorizontalMargins":true,
|
||||
"useVerticalMargins":true,
|
||||
"topPadding":16,
|
||||
"bottomPadding":16,
|
||||
"leftPadding":16,
|
||||
"rightPadding":16,
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"spacing":0,
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"textAlignment":"center",
|
||||
"text":"Get Verizon Home Internet and save.",
|
||||
"fontStyle":"BoldTitleSmall",
|
||||
"textColor":"white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"vertical",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"leading",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"textAlignment":"center",
|
||||
"text":"Starting at",
|
||||
"fontStyle":"BoldTitleSmall",
|
||||
"textColor":"white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"spacing":4,
|
||||
"molecule":{
|
||||
"moleculeName":"stack",
|
||||
"axis":"horizontal",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"verticalAlignment":"leading",
|
||||
"spacing":0,
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"$",
|
||||
"fontStyle":"BoldTitleXLarge",
|
||||
"textColor":"white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"verticalAlignment":"fill",
|
||||
"spacing":0,
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"25",
|
||||
"fontStyle":"BoldFeatureMedium",
|
||||
"textColor":"white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"verticalAlignment":"trailing",
|
||||
"spacing":0,
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"/mo.",
|
||||
"fontStyle":"BoldBodySmall",
|
||||
"textColor":"white"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"textAlignment":"center",
|
||||
"text":"Switch to Verizon Home Internet starting at a low price, guaranteed. The network America relies on, at a price you can rely on.",
|
||||
"fontStyle":"RegularBodySmall",
|
||||
"textColor":"white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"button",
|
||||
"size":"small",
|
||||
"style":"secondary",
|
||||
"inverted":true,
|
||||
"title":"Get started",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"home"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ModuleMap":{
|
||||
"tabBar":{
|
||||
"tabs":[
|
||||
{
|
||||
"title":"Discover",
|
||||
"image":"tab_discover",
|
||||
"tabBarIndex":0,
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"prospectWelcomeTrial",
|
||||
"presentationStyle":"root"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title":"Account",
|
||||
"image":"tab_account",
|
||||
"tabBarIndex":1,
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"account",
|
||||
"presentationStyle":"root"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title":"Shop",
|
||||
"image":"tab_shop_3_0",
|
||||
"tabBarIndex":2,
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"shop",
|
||||
"requestURL":"https:\/\/mobile-exp-qa3.vzw.com\/mobile\/nsa\/nos\/gw\/launchapp\/unauthenticatedWebview",
|
||||
"presentationStyle":"root"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title":"Stores",
|
||||
"image":"nav_stores_white",
|
||||
"tabBarIndex":3,
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"rtlStoreJourney",
|
||||
"presentationStyle":"root",
|
||||
"extraParameters":{
|
||||
"fromPage":"rtlStoreJourney",
|
||||
"makeFavourite":"N"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"SearchField":{
|
||||
"searchField":{
|
||||
"moleculeName":"searchTextField",
|
||||
"placeholder":"What are you looking for?",
|
||||
"fieldKey":"searchInput"
|
||||
},
|
||||
"searchAction":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"search"
|
||||
},
|
||||
"searchDoneAction":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"searchDone"
|
||||
}
|
||||
},
|
||||
"HabContent":{
|
||||
"habSearch":{
|
||||
"label":{
|
||||
"moleculeName":"label",
|
||||
"text":"How can we help?"
|
||||
},
|
||||
"image":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_search_black",
|
||||
"width":17,
|
||||
"height":17
|
||||
},
|
||||
"image_inverted":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_search_white",
|
||||
"width":17,
|
||||
"height":17
|
||||
},
|
||||
"action":{
|
||||
"actionType":"openURL",
|
||||
"browserUrl":"https://www.verizon.com/onesearch/search?source=MFNative",
|
||||
"openInWebview":true,
|
||||
"showNativeNavigation":true
|
||||
}
|
||||
},
|
||||
"habAssistant":{
|
||||
"label":{
|
||||
"moleculeName":"label",
|
||||
"text":"Chat with the Verizon Assistant"
|
||||
},
|
||||
"image":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_assistant_black",
|
||||
"width":20,
|
||||
"height":20
|
||||
},
|
||||
"image_inverted":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_assistant_white",
|
||||
"width":20,
|
||||
"height":20
|
||||
},
|
||||
"action":{
|
||||
"actionType":"openPanel",
|
||||
"panel":"right"
|
||||
}
|
||||
},
|
||||
"habLiveChat":{
|
||||
"label":{
|
||||
"moleculeName":"label",
|
||||
"text":"Chat with an agent"
|
||||
},
|
||||
"image":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_live_chat_black",
|
||||
"imageFormat":"gif",
|
||||
"width":20,
|
||||
"height":20
|
||||
},
|
||||
"image_inverted":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_live_chat_white",
|
||||
"imageFormat":"gif",
|
||||
"width":20,
|
||||
"height":20
|
||||
},
|
||||
"action":{
|
||||
"actionType":"openPanel",
|
||||
"panel":"right"
|
||||
}
|
||||
},
|
||||
"habLiveChatNewMessages":{
|
||||
"label":{
|
||||
"moleculeName":"label",
|
||||
"text":"Return to chat with an agent"
|
||||
},
|
||||
"image":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_live_chat_newmessage_black",
|
||||
"imageFormat":"gif",
|
||||
"width":20,
|
||||
"height":20
|
||||
},
|
||||
"image_inverted":{
|
||||
"moleculeName":"image",
|
||||
"image":"hab_live_chat_newmessage_white",
|
||||
"imageFormat":"gif",
|
||||
"width":20,
|
||||
"height":20
|
||||
},
|
||||
"action":{
|
||||
"actionType":"openPanel",
|
||||
"panel":"right"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SavedCart":{
|
||||
"ButtonMap":{
|
||||
"PrimaryButton":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"cart"
|
||||
}
|
||||
},
|
||||
"itemCount":0,
|
||||
"IS_SHARED_CART":true
|
||||
},
|
||||
"webParams":{
|
||||
"mvaServerDomainUrl":"https://mobile-exp-qa3.vzw.com",
|
||||
"lob":"vzp",
|
||||
"isTabBarFlowAllowed":"true"
|
||||
}
|
||||
},
|
||||
"PageMap":{
|
||||
"shop":{
|
||||
"pageType":"shop",
|
||||
"template":"webView",
|
||||
"browserUrl":"https:\/\/vzwqa3.verizonwireless.com\/sales\/next\/shop.html?isShopFlow=true&entrypoint=tabbar&isProspect=true",
|
||||
"cache":true,
|
||||
"tabBarIndex":1,
|
||||
"navigationBar":{
|
||||
"line":{
|
||||
"moleculeName":"line",
|
||||
"type":"none"
|
||||
},
|
||||
"moleculeName":"navigationBar",
|
||||
"additionalLeftButtons":[
|
||||
{
|
||||
"accessibilityText":"Verizon logo, tap anytime to scroll to top of page",
|
||||
"moleculeName":"navigationImageButton",
|
||||
"image":"nav_vz_mark",
|
||||
"imageRenderingMode":"alwaysOriginal",
|
||||
"action":{
|
||||
"analyticsData":{
|
||||
"vzdl.page.linkName":"global black bar nav: vz icon"
|
||||
},
|
||||
"actionType":"scrollToTop"
|
||||
}
|
||||
}
|
||||
],
|
||||
"additionalRightButtons":[
|
||||
{
|
||||
"moleculeName":"navigationLabelButton",
|
||||
"title":"Sign in",
|
||||
"action":{
|
||||
"hideCloseButton":false,
|
||||
"appContext":"mobileFirstSS",
|
||||
"analyticsData":{
|
||||
"vzdl.page.id":"prospectTrailWelcome",
|
||||
"vzdl.target.engagement.intent":"customer sign in",
|
||||
"vzdl.page.displayChannel":"MVA",
|
||||
"vzdl.page.linkName":"I'm a customer",
|
||||
"vzdl.page.name":"prospectTrailWelcome"
|
||||
},
|
||||
"requestURL":"https:\/\/mobile-exp.vzw.com\/mobile\/nsa\/nos\/gw\/launchapp\/oauthSignIn?",
|
||||
"extraParameters":{
|
||||
"oAuthLaunchAppFlow":"Y"
|
||||
},
|
||||
"disableNativeAction":false,
|
||||
"customUserAgent":"MY_VZW_APP;IOS;16.3.1;iPhone15,2;10.5.0;VZW-MFA-IOS",
|
||||
"openInWebview":true,
|
||||
"disableOfflineDevice":false,
|
||||
"hideUrl":false,
|
||||
"actionType":"openPage",
|
||||
"pageType":"userSignIn",
|
||||
"presentationStyle":"root",
|
||||
"isSelected":false,
|
||||
"openOauthWebView":false,
|
||||
"hideWebNavigation":false,
|
||||
"selected":false
|
||||
}
|
||||
}
|
||||
],
|
||||
"style":"dark"
|
||||
}
|
||||
},
|
||||
"cart":{
|
||||
"pageType":"cart",
|
||||
"template":"webView",
|
||||
"browserUrl":"https://www.verizon.com/sales/next/expresscheckout.html?pageName=cart&fromMVA=true&preConfigCart=true&isShopFlow=true&entrypoint=carticon",
|
||||
"tabBarHidden":true,
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"deals":{
|
||||
"pageType":"deals",
|
||||
"template":"webView",
|
||||
"browserUrl":"https://www.verizon.com/deals",
|
||||
"tabBarHidden":true,
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"smartphones":{
|
||||
"pageType":"smartphones",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/smartphones",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"plans":{
|
||||
"pageType":"plans",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/plans",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"coverage":{
|
||||
"pageType":"coverage",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/coverage-map",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"home":{
|
||||
"pageType":"home",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/home",
|
||||
"backgroundColor":"black",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"homeavailability":{
|
||||
"pageType":"homeavailability",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"backgroundColor":"black",
|
||||
"browserUrl":"https://www.verizon.com/home#checkAvailability",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"legal":{
|
||||
"pageType":"legal",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/about/terms-conditions/overview",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"feedback":{
|
||||
"pageType":"feedback",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/about/terms-conditions/overview",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"preowned":{
|
||||
"pageType":"preowned",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/certified-pre-owned",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"tablets":{
|
||||
"pageType":"tablets",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/tablets",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"watches":{
|
||||
"pageType":"watches",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/connected-devices",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"hotspots":{
|
||||
"pageType":"hotspots",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/internet-devices",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"accessories":{
|
||||
"pageType":"accessories",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/products",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
},
|
||||
"tradein":{
|
||||
"pageType":"tradein",
|
||||
"template":"webView",
|
||||
"tabBarHidden":true,
|
||||
"browserUrl":"https://www.verizon.com/trade-in",
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"style":"light"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,557 +0,0 @@
|
||||
{
|
||||
"ResponseInfo": {
|
||||
"locale": "EN",
|
||||
"type": "Success"
|
||||
},
|
||||
"Page": {
|
||||
"pageType": "shopLanding",
|
||||
"template": "list",
|
||||
"presentationStyle": "root",
|
||||
"hab": {
|
||||
"configuration": "single",
|
||||
"inverted": true
|
||||
},
|
||||
"tabBarIndex": 2,
|
||||
"navigationBar": {
|
||||
"style" : "dark",
|
||||
"moleculeName" : "navigationBar",
|
||||
"additionalLeftButtons" : [
|
||||
{
|
||||
"accessibilityText" : "Verizon logo button, tap anytime to scroll to top of page",
|
||||
"moleculeName" : "navigationImageButton",
|
||||
"image" : "nav_vz_mark",
|
||||
"imageRenderingMode" : "alwaysOriginal",
|
||||
"action" : {
|
||||
"actionType" : "scrollToTop"
|
||||
}
|
||||
}
|
||||
],
|
||||
"additionalRightButtons" : [
|
||||
{
|
||||
"accessibilityText" : "Stores",
|
||||
"moleculeName" : "navigationImageButton",
|
||||
"image" : "nav_stores_white",
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "global tab nav:stores"
|
||||
},
|
||||
"title" : "Stores",
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "rtlStoreJourney"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"header": {
|
||||
"moleculeName" : "header",
|
||||
"backgroundColor": "white",
|
||||
"bottomPadding": 0,
|
||||
"topPadding": 16,
|
||||
"molecule": {
|
||||
"moleculeName" : "carousel",
|
||||
"accessibilityText":"carousel",
|
||||
"pagingMolecule": {
|
||||
"moleculeName":"barsCarouselIndicator",
|
||||
"position": -20
|
||||
},
|
||||
"height" : 265,
|
||||
"spacing": 16,
|
||||
"itemWidthPercent": 70,
|
||||
"molecules" : [{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor": "black",
|
||||
"useHorizontalMargins": false,
|
||||
"useVerticalMargins": false,
|
||||
"cornerRadius": 8,
|
||||
"molecule" : {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/vzw-191302-iconic-2022-launch-vbm-shop-tile-live-9-16-22-r2?hei=400&bgc=000000",
|
||||
"imageFormat": "jpg",
|
||||
"allowServerParameters": true
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/smartphones/apple/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor": "coolGray1",
|
||||
"topPadding": 12,
|
||||
"bottomPadding": 12,
|
||||
"cornerRadius": 8,
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Your next phone could be on us.",
|
||||
"fontStyle": "RegularTitleLarge"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName" : "stack",
|
||||
"axis": "horizontal",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Includes online exclusive deals. New smartphone line required.",
|
||||
"fontStyle": "RegularMicro"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://ss71.vzw.com/is/image/VerizonWireless/samsung-galaxy-a03s-black-sm-a037?bgc=f6f6f6&fit=fit,1",
|
||||
"height": 128,
|
||||
"imageFormat": "jpg",
|
||||
"allowServerParameters": true
|
||||
}
|
||||
}]
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"spacing": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "caretLink",
|
||||
"title": "Shop",
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/shop/online/free-cell-phones/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
}
|
||||
}]
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/shop/online/free-cell-phones/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor": "coolGray1",
|
||||
"topPadding": 12,
|
||||
"bottomPadding": 12,
|
||||
"cornerRadius": 8,
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Great deals on our best tablets.",
|
||||
"fontStyle": "RegularTitleLarge"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName" : "stack",
|
||||
"axis": "horizontal",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Find incredible savings on all the latest models.",
|
||||
"fontStyle": "RegularMicro"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://ss72.vzw.com/is/image/VerizonWireless/app-189419-sidxxx-generic-tablet-shop-tile-8-19?bgColor=f6f6f6&fit=fit,1",
|
||||
"height": 128,
|
||||
"imageFormat": "jpg",
|
||||
"allowServerParameters": true
|
||||
}
|
||||
}]
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"spacing": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "caretLink",
|
||||
"title": "Shop",
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/tablets/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
}
|
||||
}]
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/tablets/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor": "coolGray1",
|
||||
"topPadding": 12,
|
||||
"bottomPadding": 12,
|
||||
"cornerRadius": 8,
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Stay connected on the go.",
|
||||
"fontStyle": "RegularTitleLarge"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName" : "stack",
|
||||
"axis": "horizontal",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Save on our latest smartwatch.",
|
||||
"fontStyle": "RegularMicro"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://ss71.vzw.com/is/image/VerizonWireless/app-189420-sidxxx-generic-smartwatch-shop-tile-8-19?bgc=f6f6f6&fit=fit,1",
|
||||
"height": 128,
|
||||
"imageFormat": "jpg",
|
||||
"allowServerParameters": true
|
||||
}
|
||||
}]
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"spacing": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "caretLink",
|
||||
"title": "Shop",
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/connected-smartwatches/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
}
|
||||
}]
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/connected-smartwatches/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor": "coolGray1",
|
||||
"topPadding": 12,
|
||||
"bottomPadding": 12,
|
||||
"cornerRadius": 8,
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Bring your device. Get our best deals.",
|
||||
"fontStyle": "RegularTitleLarge"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName" : "stack",
|
||||
"axis": "horizontal",
|
||||
"molecules": [{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Activate your favorite device in minutes.",
|
||||
"fontStyle": "RegularMicro"
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"verticalAlignment": "center",
|
||||
"molecule": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://ss71.vzw.com/is/image/VerizonWireless/app-189422-sidxxx-generic-boyd-shop-tile-8-19?bgc=f6f6f6&fit=fit,1",
|
||||
"height": 128,
|
||||
"imageFormat": "jpg",
|
||||
"allowServerParameters": true
|
||||
}
|
||||
}]
|
||||
}
|
||||
},{
|
||||
"moleculeName": "stackItem",
|
||||
"spacing": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "caretLink",
|
||||
"title": "Shop",
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/sales/next/shop.html?intcmp=mva-vzw-tabbar",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
}
|
||||
}]
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/sales/next/shop.html?intcmp=mva-vzw-tabbar",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
}]
|
||||
}
|
||||
},
|
||||
"molecules": [{
|
||||
"moleculeName":"list1CTxtDiv1",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Mobile"
|
||||
},
|
||||
"line": {
|
||||
"moleculeName": "line",
|
||||
"type": "none"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Deals"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/deals/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Smartphones"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "collection",
|
||||
"browserUrl": "https://www.verizon.com/smartphones/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Certified Pre-Owned"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/sales/next/shop.html?intcmp=mva-vzw-tabbar",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Tablets"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/tablets/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Watches"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "gridwall",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/connected-smartwatches/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Mobile accessories"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "accessories",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/sales/next/shop/accessories.html",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Bring your own devices"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "accessories",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/sales/digital/byod.html",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Trade in a device"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "byod",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/sales/digital/tradein.html#/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "My Offers"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "offers",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://myvpostpay.verizon.com/ui/hub/ao/myoffers?fromMVA=true",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CTxtDiv1",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Home"
|
||||
},
|
||||
"line": {
|
||||
"moleculeName": "line",
|
||||
"type": "none"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Home Internets"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "offers",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/vfw/auth/fiveGLandingPage?fromApp=true",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Smart home accessories"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "offers",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/products/smart-home/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
},{
|
||||
"moleculeName":"list1CFWBdy",
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Home phone"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"pageType": "offers",
|
||||
"template": "webView",
|
||||
"browserUrl": "https://www.verizon.com/home-office-solutions/",
|
||||
"openInWebview": true,
|
||||
"showNativeNavigation": true
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
@ -187,7 +187,7 @@
|
||||
"pageType":"manageSafeWIFI"
|
||||
},
|
||||
"style":"secondary",
|
||||
"size":"small",
|
||||
"size":"tiny",
|
||||
"validationRequired":false
|
||||
}
|
||||
}]
|
||||
@ -241,7 +241,7 @@
|
||||
"pageType":"manageSafeWIFI"
|
||||
},
|
||||
"style":"secondary",
|
||||
"size":"small",
|
||||
"size":"tiny",
|
||||
"validationRequired":false
|
||||
}
|
||||
}]
|
||||
@ -290,7 +290,7 @@
|
||||
"pageType":"manageSafeWIFI"
|
||||
},
|
||||
"style":"secondary",
|
||||
"size":"small",
|
||||
"size":"tiny",
|
||||
"validationRequired":false
|
||||
}
|
||||
}]
|
||||
|
||||
@ -1,297 +1,355 @@
|
||||
{
|
||||
"ResponseInfo" : {
|
||||
"code" : "00000",
|
||||
"type" : "Success"
|
||||
},
|
||||
"Page": {
|
||||
"pageType":"x",
|
||||
"template":"list",
|
||||
"header": {
|
||||
"moleculeName":"header",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text":"Your lines are on Unlimited plans."
|
||||
},
|
||||
"body":{
|
||||
"moleculeName": "label",
|
||||
"text":"Need something different? Take a minute to explore other plan options."
|
||||
}
|
||||
}
|
||||
|
||||
"ResponseInfo": {
|
||||
"code": "00000",
|
||||
"type": "Success"
|
||||
},
|
||||
"Page": {
|
||||
"pageType": "x",
|
||||
"template": "list",
|
||||
"header": {
|
||||
"moleculeName": "header",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Your lines are on Unlimited plans."
|
||||
},
|
||||
"footer":{
|
||||
"moleculeName":"footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"Explore",
|
||||
"action":{
|
||||
"actionType": "openPage",
|
||||
"pageType": "explore"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"Recommend",
|
||||
"action":{
|
||||
"actionType": "openPage",
|
||||
"pageType": "recommend"
|
||||
}
|
||||
}
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "Need something different? Take a minute to explore other plan options."
|
||||
}
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Explore",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "explore"
|
||||
}
|
||||
},
|
||||
"secondaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Recommend",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "recommend"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "tabsListItem",
|
||||
"tabs": {
|
||||
"moleculeName": "tabs",
|
||||
"tabs": [
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "All"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Work Devices"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "6 Devices"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "7 Devices"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "8 Devices"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "9 Devices"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "10 Devices"
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
"molecules": [
|
||||
[
|
||||
{
|
||||
"moleculeName": "tabsListItem",
|
||||
"tabs": {
|
||||
"moleculeName": "tabs",
|
||||
"tabs": [{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "All"
|
||||
}
|
||||
} ,{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "Work Devices"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "3"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "4"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "5"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "6 Devices"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "7 Devices"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "8 Devices"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "9 Devices"
|
||||
}},{
|
||||
"label":{
|
||||
"moleculeName": "label",
|
||||
"text": "10 Devices"
|
||||
}
|
||||
}]
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "1 0"
|
||||
}
|
||||
},
|
||||
"molecules": [
|
||||
[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"1 0"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"1 1"
|
||||
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 2"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 3"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 4"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 5"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 6"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 7"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 8"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 9"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 10"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 11"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"2 12"
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"3 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"3 2"
|
||||
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"4 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"4 2"
|
||||
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"5 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"5 2"
|
||||
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"6 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"6 2"
|
||||
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"7 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"7 2"
|
||||
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"8 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"8 2"
|
||||
|
||||
}
|
||||
}],[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"9 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"9 2"
|
||||
|
||||
}
|
||||
}],
|
||||
[{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"10 1"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label"
|
||||
,"text":"10 2"
|
||||
|
||||
}
|
||||
}]
|
||||
]
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName":"label",
|
||||
"text":"after"
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "1 1"
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 10"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 11"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "2 12"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "3 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "3 2"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "4 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "4 2"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "5 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "5 2"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "6 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "6 2"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "7 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "7 2"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "8 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "8 2"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "9 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "9 2"
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "10 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "10 2"
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "This is a List Item label outside of tabs"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,74 @@
|
||||
"screenHeading": "Select an international plan",
|
||||
"template": "list",
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"directionalIcon": {
|
||||
"size": "medium"
|
||||
},
|
||||
"moleculeName": "tilelet",
|
||||
"subTitle": {
|
||||
"text": "You are enrolled in Auto Pay & paper-free billing."
|
||||
},
|
||||
"title": {
|
||||
"text": "You’re getting $50 off on your monthly bill."
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "tileletPush",
|
||||
"presentationStyle": "push",
|
||||
"title": "Test"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Edit",
|
||||
"groupName": "default",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "updateProfile",
|
||||
"extraParameters": {
|
||||
"from": "none"
|
||||
},
|
||||
"presentationStyle": "push"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
@ -41,70 +109,103 @@
|
||||
"title": "Auto Pay discount"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Edit",
|
||||
"groupName": "default",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "updateProfile",
|
||||
"extraParameters": {
|
||||
"from": "none"
|
||||
},
|
||||
"presentationStyle": "push"
|
||||
}
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\ndafsdssfafs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
}
|
||||
],
|
||||
"middle": {
|
||||
"middle": {}
|
||||
},
|
||||
"PageMap": {
|
||||
"tileletPush": {
|
||||
"pageType": "tileletPush",
|
||||
"screenHeading": "Select an international plan",
|
||||
"template": "list",
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"directionalIcon": {
|
||||
"size": "medium"
|
||||
},
|
||||
"moleculeName": "tilelet",
|
||||
"subTitle": {
|
||||
"text": "You are enrolled in Auto Pay & paper-free billing."
|
||||
},
|
||||
"title": {
|
||||
"text": "This was a push test --- awesome."
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Edit",
|
||||
"groupName": "default",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "updateProfile",
|
||||
"extraParameters": {
|
||||
"from": "none"
|
||||
},
|
||||
"presentationStyle": "push"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"directionalIcon": {
|
||||
"size": "medium"
|
||||
},
|
||||
"moleculeName": "tilelet",
|
||||
"subTitle": {
|
||||
"text": "You are enrolled in Auto Pay & paper-free billing."
|
||||
},
|
||||
"title": {
|
||||
"text": "You’re getting $50 off on your monthly bill."
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"analyticsData": {
|
||||
"vzdl.page.displayChannel": "mva",
|
||||
"vzwi.mvmapp.pageTypeLink": "settingsLanding|Auto Pay discount",
|
||||
"vzdl.page.id": "settingslanding",
|
||||
"vzdl.page.linkName": "Auto Pay discount",
|
||||
"vzdl.page.sourceChannel": "mva",
|
||||
"vzdl.page.name": "settings landing"
|
||||
},
|
||||
"pageType": "managePmts",
|
||||
"presentationStyle": "push",
|
||||
"requestURL": "https://mobile-exp-qa2.vzw.com/mobile/nsa/nos/gw/launchapp/l2/webview",
|
||||
"extraParameters": {
|
||||
"pageTitle": "Auto Pay discount",
|
||||
"screenHeading": "Auto Pay discount",
|
||||
"browserUrl": "https://vzwqa2.verizonwireless.com/digital/nsa/secure/ui/payment/settings#/enrollAandP",
|
||||
"locale": "EN",
|
||||
"flowName": "accountsettings"
|
||||
},
|
||||
"title": "Auto Pay discount"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"middle": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -56,7 +56,24 @@
|
||||
"title": "Auto Pay discount"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule":
|
||||
{
|
||||
"directionalIcon": {
|
||||
"size": "medium"
|
||||
},
|
||||
"moleculeName": "tilelet",
|
||||
"subTitle": {
|
||||
"text": "Details"
|
||||
},
|
||||
"title": {
|
||||
"text": "You’re getting $50 off on your monthly bill."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
"footer": {}
|
||||
|
||||
@ -25,6 +25,13 @@
|
||||
"moleculeName": "toggle",
|
||||
"fieldKey": "isActive"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "badge",
|
||||
"text": "This is the badge"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -58,3 +65,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,46 +0,0 @@
|
||||
{
|
||||
"ResponseInfo" : {
|
||||
"code" : "00000",
|
||||
"type" : "Success"
|
||||
},
|
||||
"TopNotification": {
|
||||
"type": "testing",
|
||||
"molecule": {
|
||||
"moleculeName": "notification",
|
||||
"style": "warning",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "headline"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "body"
|
||||
},
|
||||
"button": {
|
||||
"moleculeName": "button",
|
||||
"title": "button",
|
||||
"action": {
|
||||
"actionType": "noop"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Page": {
|
||||
"pageType":"x",
|
||||
"template":"stack",
|
||||
"header": {
|
||||
"moleculeName": "headerH2",
|
||||
"headlineBody": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline":{
|
||||
"moleculeName": "label",
|
||||
"text": "Top Notification Testing!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"stack": {
|
||||
"moleculeName": "stack",
|
||||
"molecules": []
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9,42 +9,15 @@
|
||||
import Foundation
|
||||
import MVMCoreUI
|
||||
|
||||
public protocol MVMCoreActionScrollProtocol: MVMCoreActionDelegateProtocol {
|
||||
|
||||
@MainActor
|
||||
func handleScrollTopAction(action: ActionModelProtocol, additionalData: [AnyHashable: Any]?)
|
||||
}
|
||||
|
||||
public struct ActionScrollToTopModel: ActionModelProtocol {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public static var identifier: String = "scrollToTop"
|
||||
public var actionType: String = ActionScrollToTopModel.identifier
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
}
|
||||
|
||||
public struct ScrollToTopActionHandler: MVMCoreActionHandlerProtocol {
|
||||
public init(){}
|
||||
public func execute(with model: ActionModelProtocol, delegateObject: DelegateObject?, additionalData: [AnyHashable : Any]?) async throws {
|
||||
guard let model = model as? ActionScrollToTopModel else { return }
|
||||
await (delegateObject?.actionDelegate as? MVMCoreActionScrollProtocol)?.handleScrollTopAction(action: model, additionalData: additionalData)
|
||||
}
|
||||
}
|
||||
|
||||
extension ScrollingViewController: MVMCoreActionScrollProtocol {
|
||||
@MainActor
|
||||
public func handleScrollTopAction(action: ActionModelProtocol, additionalData: [AnyHashable: Any]?) {
|
||||
scrollView.setContentOffset(CGPoint(x: 0, y: -scrollView.adjustedContentInset.top), animated: true)
|
||||
}
|
||||
}
|
||||
public class JSONCreatorActionHandler: MVMCoreUIActionHandler {
|
||||
|
||||
public static func doStuff() {
|
||||
MVMCoreObject.sharedInstance()?.actionHandler = JSONCreatorActionHandler()
|
||||
ModelRegistry.register(handler: ScrollToTopActionHandler.self, for: ActionScrollToTopModel.self)
|
||||
ModelRegistry.register(handler: ButtonWithImage.self, for: ButtonWithImageModel.self)
|
||||
ModelRegistry.register(handler: OrderTracker.self, for: OrderTrackerModel.self)
|
||||
ModelRegistry.register(handler: ListDeviceRightVariableCaret.self, for: ListDeviceRightVariableCaretModel.self)
|
||||
ModelRegistry.register(handler: Links.self, for: LinksModel.self)
|
||||
try? ModelRegistry.throwable_register(handler: neView.self, model: neViewModl.self)
|
||||
if let bundle = MVMCoreUIUtility.bundleForMVMCoreUI() {
|
||||
MVMCoreCache.shared()?.registerBundle(forImages: bundle)
|
||||
}
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
//
|
||||
// LinkCollectionViewCell.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Lekshmi S on 15/12/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
import MVMCoreUI
|
||||
|
||||
open class LinkCollectionViewCell: CollectionViewCell {
|
||||
public let link = Link()
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
isAccessibilityElement = true
|
||||
addMolecule(link)
|
||||
MVMCoreUIUtility.setMarginsFor(contentView, leading: 0, top: 0, trailing: 0, bottom: 0)
|
||||
}
|
||||
|
||||
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
guard let model = model as? LinkModel else { return }
|
||||
link.set(with: model, delegateObject, additionalData)
|
||||
updateAccessibility()
|
||||
}
|
||||
|
||||
open func updateAccessibility() {
|
||||
accessibilityLabel = link.accessibilityLabel
|
||||
accessibilityHint = link.accessibilityHint
|
||||
accessibilityTraits = link.accessibilityTraits
|
||||
}
|
||||
}
|
||||
|
||||
108
JSONCreator_iOS/JSONCreator/MF/Order Tracker/Links.swift
Normal file
108
JSONCreator_iOS/JSONCreator/MF/Order Tracker/Links.swift
Normal file
@ -0,0 +1,108 @@
|
||||
//
|
||||
// Links.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Lekshmi S on 15/12/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
import MVMCoreUI
|
||||
|
||||
open class Links: View, UICollectionViewDelegate {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
public var collectionView: SelfSizingCollectionView!
|
||||
public var links: [LinkModel]?
|
||||
private var size: CGFloat?
|
||||
private var delegateObject: MVMCoreUIDelegateObject?
|
||||
private let itemSpacing: CGFloat = 24.0
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Lifecycle
|
||||
//--------------------------------------------------
|
||||
|
||||
override open var intrinsicContentSize: CGSize {
|
||||
return collectionView.intrinsicContentSize
|
||||
}
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
collectionView = createCollectionView()
|
||||
addSubview(collectionView)
|
||||
isAccessibilityElement = false
|
||||
NSLayoutConstraint.activate(Array(NSLayoutConstraint.pinView(toSuperview: collectionView, useMargins: false).values))
|
||||
}
|
||||
|
||||
@objc override open func updateView(_ size: CGFloat) {
|
||||
super.updateView(size)
|
||||
self.size = size
|
||||
collectionView.updateView(size)
|
||||
}
|
||||
|
||||
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
super.set(with: model, delegateObject, additionalData)
|
||||
self.delegateObject = delegateObject
|
||||
|
||||
guard let linksModel = model as? LinksModel else { return }
|
||||
links = linksModel.links
|
||||
collectionView.reloadData()
|
||||
}
|
||||
|
||||
open override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
|
||||
frame = CGRect(x: 0, y: 0, width: targetSize.width, height: CGFloat(MAXFLOAT))
|
||||
layoutIfNeeded()
|
||||
print("sssC \(targetSize.width) \(collectionView.contentSize)")
|
||||
return collectionView.contentSize
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Methods
|
||||
//------------------------------------------------------
|
||||
/// Creates the collection view.
|
||||
open func createCollectionView() -> SelfSizingCollectionView {
|
||||
let collection = SelfSizingCollectionView(frame: .zero, collectionViewLayout: createCollectionViewLayout())
|
||||
collection.dataSource = self
|
||||
collection.delegate = self
|
||||
collection.register(LinkCollectionViewCell.self, forCellWithReuseIdentifier: "LinkCollectionViewCell")
|
||||
return collection
|
||||
}
|
||||
|
||||
/// Creates the layout for the collection.
|
||||
func createCollectionViewLayout() -> UICollectionViewLeftAlignedLayout {
|
||||
let layout = UICollectionViewLeftAlignedLayout()
|
||||
layout.scrollDirection = .vertical
|
||||
layout.minimumLineSpacing = itemSpacing
|
||||
layout.minimumInteritemSpacing = itemSpacing
|
||||
layout.estimatedItemSize = CGSize(width: 20, height: 30)
|
||||
return layout
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Delegate methods
|
||||
//------------------------------------------------------
|
||||
|
||||
extension Links: UICollectionViewDataSource {
|
||||
open func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||
return links?.count ?? 0
|
||||
}
|
||||
|
||||
open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||
guard let molecule = links?[indexPath.item], let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "LinkCollectionViewCell", for: indexPath) as? LinkCollectionViewCell else {
|
||||
fatalError()
|
||||
}
|
||||
cell.reset()
|
||||
cell.set(with: molecule, delegateObject, nil)
|
||||
return cell
|
||||
}
|
||||
}
|
||||
|
||||
//extension Links: MoleculeTableViewCellMoleculeProtocol {
|
||||
// public func getSystemFittingTargetSize(for targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority, cell: MoleculeTableViewCell) -> CGSize {
|
||||
// print("sss \(targetSize.width)")
|
||||
// cell.frame = CGRect(x: 0, y: 0, width: targetSize.width, height: CGFloat(MAXFLOAT))
|
||||
// cell.layoutIfNeeded()
|
||||
//
|
||||
// return CGSize(width: collectionView.contentSize.width + cell.contentView.directionalLayoutMargins.leading + cell.contentView.directionalLayoutMargins.trailing, height: collectionView.contentSize.height + cell.contentView.directionalLayoutMargins.top + cell.contentView.directionalLayoutMargins.bottom)
|
||||
// }
|
||||
//}
|
||||
@ -0,0 +1,34 @@
|
||||
//
|
||||
// LinksModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Lekshmi S on 15/12/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import MVMCoreUI
|
||||
|
||||
@objcMembers public class LinksModel: MoleculeModelProtocol {
|
||||
public static var identifier: String = "links"
|
||||
public var backgroundColor: Color?
|
||||
public var links: [LinkModel]
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case moleculeName
|
||||
case backgroundColor
|
||||
case links
|
||||
}
|
||||
|
||||
required public init(from decoder: Decoder) throws {
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
||||
links = try typeContainer.decode([LinkModel].self, forKey: .links)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(moleculeName, forKey: .moleculeName)
|
||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
||||
try container.encode(links, forKey: .links)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,129 @@
|
||||
//
|
||||
// ListDeviceRightVariableCaret.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Lekshmi S on 09/12/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
import MVMCoreUI
|
||||
|
||||
@objcMembers open class ListDeviceRightVariableCaret: TableViewCell {
|
||||
//-----------------------------------------------------
|
||||
// MARK: - Outlets
|
||||
//-----------------------------------------------------
|
||||
public let eyebrow = Label(fontStyle: .RegularMicro)
|
||||
public let headline = Label(fontStyle: .BoldBodySmall)
|
||||
public let body1 = Label(fontStyle: .RegularBodySmall)
|
||||
public let body2 = Label(fontStyle: .RegularBodySmall)
|
||||
public let body3 = Label(fontStyle: .RegularBodySmall)
|
||||
public let rightLabel = Label(fontStyle: .RegularBodySmall)
|
||||
public let rightImage = LoadImageView()
|
||||
public weak var rightVerticalStackTopConstraint: NSLayoutConstraint?
|
||||
|
||||
public lazy var leftVerticalStack: Stack<StackModel> = {
|
||||
return Stack<StackModel>.createStack(with: [eyebrow, headline, body1, body2, body3], axis: .vertical, spacing: 2)
|
||||
}()
|
||||
|
||||
public lazy var rightVerticalStack: Stack<StackModel> = {
|
||||
return Stack<StackModel>.createStack(with: [(view: rightLabel, model: StackItemModel(horizontalAlignment: .trailing)),
|
||||
(view: rightImage, model: StackItemModel(horizontalAlignment: .trailing))],
|
||||
axis: .vertical)
|
||||
}()
|
||||
|
||||
public lazy var stack: Stack<StackModel> = {
|
||||
return Stack<StackModel>.createStack(with: [(view: leftVerticalStack, model: StackItemModel(verticalAlignment: .top)),
|
||||
(view: rightVerticalStack, model: StackItemModel(verticalAlignment: .top))],
|
||||
axis: .horizontal)
|
||||
}()
|
||||
|
||||
//-----------------------------------------------------
|
||||
// MARK: - Lifecycle
|
||||
//-----------------------------------------------------
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
addMolecule(stack)
|
||||
rightImage.imageView.contentMode = .scaleAspectFit
|
||||
rightLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 900), for: .horizontal)
|
||||
rightLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 900), for: .horizontal)
|
||||
rightLabel.numberOfLines = 1
|
||||
leftVerticalStack.restack()
|
||||
rightVerticalStack.restack()
|
||||
stack.restack()
|
||||
}
|
||||
|
||||
func alignRightStack(toHeadline: Bool) {
|
||||
if toHeadline {
|
||||
rightVerticalStack.containerHelper.topConstraint?.isActive = false
|
||||
if rightVerticalStackTopConstraint == nil {
|
||||
rightVerticalStackTopConstraint = headline.topAnchor.constraint(equalTo: rightVerticalStack.contentView.topAnchor)
|
||||
}
|
||||
rightVerticalStackTopConstraint?.isActive = true
|
||||
} else {
|
||||
rightVerticalStack.containerHelper.topConstraint?.isActive = true
|
||||
rightVerticalStackTopConstraint?.isActive = false
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Molecule
|
||||
//------------------------------------------------------
|
||||
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
super.set(with: model, delegateObject, additionalData)
|
||||
|
||||
guard let model = model as? ListDeviceRightVariableCaretModel else { return }
|
||||
leftVerticalStack.updateContainedMolecules(with: [model.eyebrow, model.headline, model.body1, model.body2, model.body3], delegateObject, additionalData)
|
||||
rightVerticalStack.updateContainedMolecules(with: [model.rightLabel, model.image], delegateObject, additionalData)
|
||||
alignRightStack(toHeadline: model.headline != nil)
|
||||
updateAccessibilityLabel()
|
||||
}
|
||||
|
||||
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||
return 230
|
||||
}
|
||||
|
||||
open override func reset() {
|
||||
super.reset()
|
||||
eyebrow.setFontStyle(.RegularMicro)
|
||||
headline.setFontStyle(.BoldBodySmall)
|
||||
body1.setFontStyle(.RegularBodySmall)
|
||||
body2.setFontStyle(.RegularBodySmall)
|
||||
body3.setFontStyle(.RegularBodySmall)
|
||||
rightLabel.setFontStyle(.RegularBodySmall)
|
||||
eyebrow.textColor = .mvmCoolGray6
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
// MARK: - Accessibility
|
||||
//----------------------------------------------------
|
||||
|
||||
func updateAccessibilityLabel() {
|
||||
isAccessibilityElement = true
|
||||
var message = ""
|
||||
|
||||
if let eyebrowText = eyebrow.text, !eyebrowText.isEmpty {
|
||||
message += eyebrowText + ", "
|
||||
}
|
||||
if let headlineText = headline.text, !headlineText.isEmpty {
|
||||
message += headlineText + ", "
|
||||
}
|
||||
if let body1Text = body1.text, !body1Text.isEmpty {
|
||||
message += body1Text + ", "
|
||||
}
|
||||
if let body2Text = body2.text, !body2Text.isEmpty {
|
||||
message += body2Text + ", "
|
||||
}
|
||||
if let body3Text = body3.text, !body3Text.isEmpty {
|
||||
message += body3Text + ", "
|
||||
}
|
||||
if let rightLabelText = rightLabel.text, !rightLabelText.isEmpty {
|
||||
message += rightLabelText + ", "
|
||||
}
|
||||
if let rightImageViewText = rightImage.imageView.accessibilityLabel, !rightImageViewText.isEmpty {
|
||||
message += rightImageViewText
|
||||
}
|
||||
|
||||
accessibilityLabel = message
|
||||
accessibilityTraits = (accessoryView != nil) ? .button : .none
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,107 @@
|
||||
//
|
||||
// ListDeviceRightVariableCaretModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Lekshmi S on 09/12/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
import MVMCoreUI
|
||||
|
||||
public class ListDeviceRightVariableCaretModel: ListItemModel, MoleculeModelProtocol {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public static var identifier: String = "listDvcRvCaret"
|
||||
public var eyebrow: LabelModel?
|
||||
public var headline: LabelModel?
|
||||
public var body1: LabelModel?
|
||||
public var body2: LabelModel?
|
||||
public var body3: LabelModel?
|
||||
public var image: ImageViewModel
|
||||
public var rightLabel: LabelModel
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Initializer
|
||||
//--------------------------------------------------
|
||||
|
||||
public init(eyebrow: LabelModel? = nil, headline: LabelModel? = nil, body1: LabelModel? = nil, body2: LabelModel? = nil, body3: LabelModel? = nil, image: ImageViewModel, rightLabel: LabelModel) {
|
||||
self.eyebrow = eyebrow
|
||||
self.headline = headline
|
||||
self.body1 = body1
|
||||
self.body2 = body2
|
||||
self.body3 = body3
|
||||
self.image = image
|
||||
self.rightLabel = rightLabel
|
||||
super.init()
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Method
|
||||
//--------------------------------------------------
|
||||
|
||||
override public func setDefaults() {
|
||||
super.setDefaults()
|
||||
rightLabel.hero = 0
|
||||
if image.width == nil, image.height == nil {
|
||||
image.width = 36
|
||||
image.height = 72
|
||||
}
|
||||
}
|
||||
|
||||
/// The left stack requires content.
|
||||
func validateContent() throws {
|
||||
if eyebrow == nil,
|
||||
headline == nil,
|
||||
body1 == nil,
|
||||
body2 == nil,
|
||||
body3 == nil {
|
||||
throw ModelRegistry.Error.decoderOther(message: "\(self) requires one left label")
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Keys
|
||||
//--------------------------------------------------
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case moleculeName
|
||||
case eyebrow
|
||||
case headline
|
||||
case body1
|
||||
case body2
|
||||
case body3
|
||||
case image
|
||||
case rightLabel
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Keys
|
||||
//--------------------------------------------------
|
||||
|
||||
required public init(from decoder: Decoder) throws {
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
eyebrow = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .eyebrow)
|
||||
headline = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .headline)
|
||||
body1 = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .body1)
|
||||
body2 = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .body2)
|
||||
body3 = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .body3)
|
||||
image = try typeContainer.decode(ImageViewModel.self, forKey: .image)
|
||||
rightLabel = try typeContainer.decode(LabelModel.self, forKey: .rightLabel)
|
||||
try super.init(from: decoder)
|
||||
try validateContent()
|
||||
}
|
||||
|
||||
public override func encode(to encoder: Encoder) throws {
|
||||
try super.encode(to: encoder)
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(moleculeName, forKey: .moleculeName)
|
||||
try container.encodeIfPresent(eyebrow, forKey: .eyebrow)
|
||||
try container.encodeIfPresent(headline, forKey: .headline)
|
||||
try container.encodeIfPresent(body1, forKey: .body1)
|
||||
try container.encodeIfPresent(body2, forKey: .body2)
|
||||
try container.encodeIfPresent(body3, forKey: .body3)
|
||||
try container.encode(image, forKey: .image)
|
||||
try container.encode(rightLabel, forKey: .rightLabel)
|
||||
}
|
||||
}
|
||||
138
JSONCreator_iOS/JSONCreator/MF/Order Tracker/OrderTracker.swift
Normal file
138
JSONCreator_iOS/JSONCreator/MF/Order Tracker/OrderTracker.swift
Normal file
@ -0,0 +1,138 @@
|
||||
//
|
||||
// OrderTracker.swift
|
||||
// MVMCoreUI
|
||||
//
|
||||
// Created by Kevin Christiano on 7/1/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MVMCoreUI
|
||||
|
||||
open class OrderTracker: View {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
var steps = [Step]()
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Life Cycle
|
||||
//--------------------------------------------------
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
isOpaque = false
|
||||
}
|
||||
|
||||
open override func reset() {
|
||||
super.reset()
|
||||
|
||||
resetSteps()
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Methods
|
||||
//--------------------------------------------------
|
||||
|
||||
func constrain(stepModels: [StepModel]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||
|
||||
resetSteps()
|
||||
|
||||
guard let stepModels = stepModels else { return }
|
||||
|
||||
var anchor = topAnchor
|
||||
|
||||
for stepModel in stepModels {
|
||||
|
||||
let step = Step()
|
||||
step.set(with: stepModel, delegateObject, additionalData)
|
||||
addSubview(step)
|
||||
steps.append(step)
|
||||
|
||||
step.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
|
||||
trailingAnchor.constraint(equalTo: step.trailingAnchor).isActive = true
|
||||
step.topAnchor.constraint(equalTo: anchor).isActive = true
|
||||
|
||||
anchor = step.bottomAnchor
|
||||
}
|
||||
|
||||
bottomAnchor.constraint(equalTo: anchor).isActive = true
|
||||
(subviews.last as? Step)?.heightConstraint?.isActive = false
|
||||
}
|
||||
|
||||
func resetSteps() {
|
||||
|
||||
steps.forEach {
|
||||
$0.reset()
|
||||
$0.removeFromSuperview()
|
||||
}
|
||||
|
||||
steps = []
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Draw
|
||||
//--------------------------------------------------
|
||||
|
||||
open override func draw(_ rect: CGRect) {
|
||||
|
||||
guard let context = UIGraphicsGetCurrentContext(),
|
||||
let firstStep = steps.first
|
||||
else { return }
|
||||
|
||||
context.setLineWidth(1)
|
||||
let imageDimension = firstStep.stateImage.bounds.height
|
||||
let halfDimension = imageDimension / 2
|
||||
let startPoint = CGPoint(x: halfDimension, y: halfDimension)
|
||||
let defaultGrey: UIColor = .mvmCoolGray3
|
||||
context.move(to: startPoint)
|
||||
|
||||
var lineColor = (firstStep.state?.color() ?? defaultGrey).cgColor
|
||||
|
||||
for (i, step) in steps.dropFirst().enumerated() {
|
||||
|
||||
if let state = step.state, state == .incomplete {
|
||||
lineColor = defaultGrey.cgColor
|
||||
}
|
||||
|
||||
// Allows server to override the line color for a custom color.
|
||||
if let customLineColor = step.stepModel?.lineColor?.cgColor {
|
||||
lineColor = customLineColor
|
||||
}
|
||||
|
||||
context.setStrokeColor(lineColor)
|
||||
let relativeRect = convert(step.stateImage.frame, from: step.stateImage)
|
||||
let point = CGPoint(x: halfDimension, y: relativeRect.midY)
|
||||
|
||||
context.addLine(to: point)
|
||||
context.strokePath()
|
||||
|
||||
// Break out of loop since we're on the last step.
|
||||
if i == steps.count - 2 {
|
||||
break
|
||||
}
|
||||
|
||||
lineColor = (step.state?.color() ?? defaultGrey).cgColor
|
||||
context.move(to: point)
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - MoleculeViewProtocol
|
||||
//------------------------------------------------------
|
||||
|
||||
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||
return 196
|
||||
}
|
||||
|
||||
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
super.set(with: model, delegateObject, additionalData)
|
||||
|
||||
guard let model = model as? OrderTrackerModel else { return }
|
||||
|
||||
constrain(stepModels: model.steps, delegateObject: delegateObject, additionalData: additionalData)
|
||||
setNeedsLayout()
|
||||
setNeedsDisplay()
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
//
|
||||
// OrderTrackerModel.swift
|
||||
// MVMCoreUI
|
||||
//
|
||||
// Created by Kevin Christiano on 7/1/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MVMCoreUI
|
||||
|
||||
open class OrderTrackerModel: MoleculeModelProtocol {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public var backgroundColor: Color?
|
||||
|
||||
public static var identifier: String = "orderTracker"
|
||||
public var steps: [StepModel]
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Keys
|
||||
//--------------------------------------------------
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case moleculeName
|
||||
case backgroundColor
|
||||
case steps
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Codec
|
||||
//--------------------------------------------------
|
||||
|
||||
required public init(from decoder: Decoder) throws {
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
||||
steps = try typeContainer.decode([StepModel].self, forKey: .steps)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(moleculeName, forKey: .moleculeName)
|
||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
||||
try container.encode(steps, forKey: .steps)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
//
|
||||
// SelfSizingCollectionView.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Dhamodaram Nandi on 24/12/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
import MVMCoreUI
|
||||
|
||||
public class SelfSizingCollectionView: CollectionView {
|
||||
|
||||
override open var intrinsicContentSize: CGSize {
|
||||
return contentSize
|
||||
}
|
||||
|
||||
override open var contentSize: CGSize {
|
||||
didSet {
|
||||
guard bounds.size.height != contentSize.height else { return }
|
||||
frame.size.height = contentSize.height
|
||||
invalidateIntrinsicContentSize()
|
||||
}
|
||||
}
|
||||
}
|
||||
120
JSONCreator_iOS/JSONCreator/MF/Order Tracker/Step.swift
Normal file
120
JSONCreator_iOS/JSONCreator/MF/Order Tracker/Step.swift
Normal file
@ -0,0 +1,120 @@
|
||||
//
|
||||
// Step.swift
|
||||
// MVMCoreUI
|
||||
//
|
||||
// Created by Kevin Christiano on 7/6/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MVMCoreUI
|
||||
|
||||
open class Step: View {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public var headline = Label(fontStyle: .BoldMicro)
|
||||
public var bodyTop = Label(fontStyle: .RegularMicro)
|
||||
public var bodyBottom = Label(fontStyle: .RegularMicro)
|
||||
public var stateImage = ImageView()
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Constraints
|
||||
//--------------------------------------------------
|
||||
|
||||
public var heightConstraint: NSLayoutConstraint?
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Computed Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public var stepModel: StepModel? {
|
||||
return model as? StepModel
|
||||
}
|
||||
|
||||
public var state: StepModel.State? {
|
||||
return stepModel?.state
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Life Cycle
|
||||
//--------------------------------------------------
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
|
||||
addSubview(stateImage)
|
||||
addSubview(headline)
|
||||
addSubview(bodyTop)
|
||||
addSubview(bodyBottom)
|
||||
|
||||
stateImage.contentMode = .scaleAspectFit
|
||||
stateImage.layer.backgroundColor = UIColor.white.cgColor
|
||||
stateImage.topAnchor.constraint(equalTo: topAnchor).isActive = true
|
||||
stateImage.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
|
||||
stateImage.heightAnchor.constraint(equalToConstant: 18).isActive = true
|
||||
stateImage.widthAnchor.constraint(equalToConstant: 18).isActive = true
|
||||
|
||||
headline.topAnchor.constraint(equalTo: topAnchor, constant: 2).isActive = true
|
||||
headline.leadingAnchor.constraint(equalTo: stateImage.trailingAnchor, constant: Padding.Four).isActive = true
|
||||
trailingAnchor.constraint(equalTo: headline.trailingAnchor).isActive = true
|
||||
|
||||
bodyTop.topAnchor.constraint(equalTo: headline.bottomAnchor).isActive = true
|
||||
bodyTop.leadingAnchor.constraint(equalTo: stateImage.trailingAnchor, constant: Padding.Four).isActive = true
|
||||
trailingAnchor.constraint(equalTo: bodyTop.trailingAnchor).isActive = true
|
||||
|
||||
bodyBottom.topAnchor.constraint(equalTo: bodyTop.bottomAnchor).isActive = true
|
||||
bodyBottom.leadingAnchor.constraint(equalTo: stateImage.trailingAnchor, constant: Padding.Four).isActive = true
|
||||
trailingAnchor.constraint(equalTo: bodyBottom.trailingAnchor).isActive = true
|
||||
let bodyBottomConstraint = bottomAnchor.constraint(greaterThanOrEqualTo: bodyBottom.bottomAnchor)
|
||||
bodyBottomConstraint.priority = .defaultHigh
|
||||
bodyBottomConstraint.isActive = true
|
||||
|
||||
heightConstraint = heightAnchor.constraint(equalToConstant: 58)
|
||||
heightConstraint?.priority = .defaultLow
|
||||
heightConstraint?.isActive = true
|
||||
}
|
||||
|
||||
public override func reset() {
|
||||
super.reset()
|
||||
|
||||
headline.reset()
|
||||
bodyTop.reset()
|
||||
bodyBottom.reset()
|
||||
stateImage.reset()
|
||||
heightConstraint?.isActive = true
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - MoleculeViewProtocol
|
||||
//------------------------------------------------------
|
||||
|
||||
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||
return 64
|
||||
}
|
||||
|
||||
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
super.set(with: model, delegateObject, additionalData)
|
||||
|
||||
guard let model = model as? StepModel else { return }
|
||||
|
||||
headline.set(with: model.headline, delegateObject, additionalData)
|
||||
|
||||
if let bodyTopModel = model.bodyTop {
|
||||
bodyTop.set(with: bodyTopModel, delegateObject, additionalData)
|
||||
}
|
||||
|
||||
if let bodyBottomModel = model.bodyBottom {
|
||||
bodyBottom.set(with: bodyBottomModel, delegateObject, additionalData)
|
||||
}
|
||||
|
||||
stateImage.image = model.state?.image()
|
||||
|
||||
if let iconColor = model.iconColor?.uiColor {
|
||||
stateImage.tintColor = iconColor
|
||||
} else {
|
||||
stateImage.tintColor = model.state?.color()
|
||||
}
|
||||
}
|
||||
}
|
||||
109
JSONCreator_iOS/JSONCreator/MF/Order Tracker/StepModel.swift
Normal file
109
JSONCreator_iOS/JSONCreator/MF/Order Tracker/StepModel.swift
Normal file
@ -0,0 +1,109 @@
|
||||
//
|
||||
// StepModel.swift
|
||||
// MVMCoreUI
|
||||
//
|
||||
// Created by Kevin Christiano on 7/6/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MVMCoreUI
|
||||
|
||||
open class StepModel: MoleculeModelProtocol {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public var backgroundColor: Color?
|
||||
|
||||
public static var identifier: String = "step"
|
||||
public var state: State?
|
||||
public var headline: LabelModel
|
||||
public var bodyTop: LabelModel?
|
||||
public var bodyBottom: LabelModel?
|
||||
public var iconColor: Color?
|
||||
public var lineColor: Color?
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Enum
|
||||
//--------------------------------------------------
|
||||
|
||||
public enum State: String, Codable {
|
||||
case complete
|
||||
case incomplete
|
||||
case invalid
|
||||
case cancel
|
||||
|
||||
func image() -> UIImage? {
|
||||
|
||||
switch self {
|
||||
case .complete:
|
||||
return UIImage(named: "icon_tracker_complete")?.withRenderingMode(.alwaysTemplate)
|
||||
|
||||
case .incomplete:
|
||||
return UIImage(named: "icon_tracker_incomplete")?.withRenderingMode(.alwaysTemplate)
|
||||
|
||||
case .invalid:
|
||||
return UIImage(named:"icon_tracker_invalid")?.withRenderingMode(.alwaysTemplate)
|
||||
|
||||
case .cancel:
|
||||
return UIImage(named:"mf_orange_failed_checkmark")?.withRenderingMode(.alwaysTemplate)
|
||||
}
|
||||
}
|
||||
|
||||
func color() -> UIColor {
|
||||
|
||||
switch self {
|
||||
case .complete:
|
||||
return .mvmGreen
|
||||
|
||||
case .incomplete, .invalid:
|
||||
return .mvmCoolGray3
|
||||
|
||||
case .cancel:
|
||||
return .mvmOrangeAA
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Keys
|
||||
//--------------------------------------------------
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case moleculeName
|
||||
case backgroundColor
|
||||
case state
|
||||
case headline
|
||||
case bodyTop
|
||||
case bodyBottom
|
||||
case iconColor
|
||||
case lineColor
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Codec
|
||||
//--------------------------------------------------
|
||||
|
||||
required public init(from decoder: Decoder) throws {
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
||||
state = try typeContainer.decodeIfPresent(State.self, forKey: .state)
|
||||
headline = try typeContainer.decode(LabelModel.self, forKey: .headline)
|
||||
bodyTop = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .bodyTop)
|
||||
bodyBottom = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .bodyBottom)
|
||||
iconColor = try typeContainer.decodeIfPresent(Color.self, forKey: .iconColor)
|
||||
lineColor = try typeContainer.decodeIfPresent(Color.self, forKey: .lineColor)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(moleculeName, forKey: .moleculeName)
|
||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
||||
try container.encode(headline, forKey: .headline)
|
||||
try container.encodeIfPresent(bodyTop, forKey: .bodyTop)
|
||||
try container.encodeIfPresent(bodyBottom, forKey: .bodyBottom)
|
||||
try container.encodeIfPresent(iconColor, forKey: .iconColor)
|
||||
try container.encodeIfPresent(lineColor, forKey: .lineColor)
|
||||
}
|
||||
}
|
||||
339
JSONCreator_iOS/JSONCreator/MF/buttimag.swift
Normal file
339
JSONCreator_iOS/JSONCreator/MF/buttimag.swift
Normal file
@ -0,0 +1,339 @@
|
||||
//
|
||||
// ButtonWithImage.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Bandaru, Krishna Kishore on 23/02/21.
|
||||
// Copyright © 2021 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MVMCoreUI
|
||||
|
||||
public class ButtonWithImage: PillButton {
|
||||
|
||||
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
super.set(with: model, delegateObject, additionalData)
|
||||
|
||||
guard let model = model as? ButtonWithImageModel, var buttonImage = MVMCoreCache.shared()?.getImageFromRegisteredBundles(model.image) else {
|
||||
return
|
||||
}
|
||||
|
||||
if let tintColor = model.tintColor {
|
||||
buttonImage = buttonImage.withRenderingMode(.alwaysTemplate)
|
||||
self.tintColor = tintColor.uiColor
|
||||
}
|
||||
|
||||
setImage(buttonImage, for: .normal)
|
||||
semanticContentAttribute = model.imagePosition == .left ? .forceLeftToRight : .forceRightToLeft
|
||||
updateContentInsets(with: Padding.OneHalf)
|
||||
}
|
||||
|
||||
//Adding space between image and text & content to be centered in container
|
||||
public func updateContentInsets(with insetAmount: CGFloat) {
|
||||
|
||||
guard let imagePosition = (model as? ButtonWithImageModel)?.imagePosition else { return }
|
||||
|
||||
imageEdgeInsets = UIEdgeInsets(top: 0, left: imagePosition == .left ? -insetAmount: insetAmount, bottom: 0, right: imagePosition == .left ? insetAmount : -insetAmount)
|
||||
titleEdgeInsets = UIEdgeInsets(top: 0, left: imagePosition == .left ? insetAmount : -insetAmount, bottom: 0, right: imagePosition == .left ? -insetAmount : insetAmount)
|
||||
contentEdgeInsets = UIEdgeInsets(top: 0, left: insetAmount, bottom: 0, right: insetAmount)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// ButtonWithImageModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Bandaru, Krishna Kishore on 23/02/21.
|
||||
// Copyright © 2021 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
public class ButtonWithImageModel: ButtonModel {
|
||||
|
||||
public enum ImagePosition: String, Codable {
|
||||
case left, right
|
||||
}
|
||||
|
||||
public override class var identifier: String {
|
||||
"buttonWithImage"
|
||||
}
|
||||
|
||||
let image: String
|
||||
var imagePosition: ImagePosition
|
||||
var tintColor: Color?
|
||||
|
||||
public init(with title: String, image: String, imagePosition: ImagePosition = .left, action: ActionModelProtocol) {
|
||||
self.image = image
|
||||
self.imagePosition = imagePosition
|
||||
super.init(with: title, action: action)
|
||||
}
|
||||
|
||||
public init(secondaryButtonWith title: String, image: String, imagePosition: ImagePosition = .left, action: ActionModelProtocol) {
|
||||
self.image = image
|
||||
self.imagePosition = imagePosition
|
||||
super.init(secondaryButtonWith: title, action: action)
|
||||
}
|
||||
|
||||
public init(primaryButtonWith title: String, image: String, imagePosition: ImagePosition = .left, action: ActionModelProtocol) {
|
||||
self.image = image
|
||||
self.imagePosition = imagePosition
|
||||
super.init(primaryButtonWith: title, action: action)
|
||||
}
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case image
|
||||
case imagePosition
|
||||
case tintColor
|
||||
}
|
||||
|
||||
required public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
image = try container.decode(String.self, forKey: .image)
|
||||
imagePosition = try container.decodeIfPresent(ImagePosition.self, forKey: .imagePosition) ?? .left
|
||||
tintColor = try container.decodeIfPresent(Color.self, forKey: .tintColor)
|
||||
try super.init(from: decoder)
|
||||
}
|
||||
|
||||
public override func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(image, forKey: .image)
|
||||
try container.encode(imagePosition, forKey: .imagePosition)
|
||||
try container.encodeIfPresent(tintColor, forKey: .tintColor)
|
||||
try super.encode(to: encoder)
|
||||
}
|
||||
}
|
||||
|
||||
public class neViewModl: ListItemModel, MoleculeModelProtocol {
|
||||
public static var identifier: String = "fios"
|
||||
}
|
||||
|
||||
public class neView: TableViewCell {
|
||||
public let voicemailReadView: View = {
|
||||
let view = View()
|
||||
view.backgroundColor = .mvmRed
|
||||
view.heightAnchor.constraint(equalToConstant: 10).isActive = true
|
||||
view.widthAnchor.constraint(equalToConstant: 10).isActive = true
|
||||
view.layer.cornerRadius = 5
|
||||
return view
|
||||
}()
|
||||
|
||||
public let mdn: Label = {
|
||||
let label = Label(fontStyle: .RegularBodySmall)
|
||||
label.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||
return label
|
||||
}()
|
||||
|
||||
public let contact: Label = {
|
||||
let label = Label(fontStyle: .BoldBodySmall)
|
||||
// label.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||
// label.setContentCompressionResistancePriority(.required, for: .vertical)
|
||||
// label.setContentHuggingPriority(.required, for: .horizontal)
|
||||
return label
|
||||
}()
|
||||
|
||||
public let shortDate: Label = {
|
||||
let label = Label(fontStyle: .RegularBodySmall)
|
||||
label.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||
label.textAlignment = .right
|
||||
return label
|
||||
}()
|
||||
|
||||
public let fullDate: Label = {
|
||||
let label = Label(fontStyle: .RegularBodySmall)
|
||||
label.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||
return label
|
||||
}()
|
||||
|
||||
public let duration: Label = {
|
||||
let label = Label(fontStyle: .RegularBodySmall)
|
||||
label.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||
label.textAlignment = .right
|
||||
return label
|
||||
}()
|
||||
|
||||
public let callDetailsButton: ImageView = {
|
||||
let button = ImageView()
|
||||
button.heightAnchor.constraint(equalToConstant: 20).isActive = true
|
||||
button.widthAnchor.constraint(equalToConstant: 20).isActive = true
|
||||
button.contentMode = .scaleAspectFit
|
||||
button.backgroundColor = .blue
|
||||
return button
|
||||
}()
|
||||
|
||||
public let callBackButton: PillButton = {
|
||||
let button = PillButton()
|
||||
return button
|
||||
}()
|
||||
|
||||
public let sendTextButton: PillButton = {
|
||||
let button = PillButton()
|
||||
return button
|
||||
}()
|
||||
//
|
||||
// public lazy var leftLabelStack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [contact, mdn])
|
||||
// stack.translatesAutoresizingMaskIntoConstraints = false
|
||||
// stack.axis = .vertical
|
||||
// stack.alignment = .leading
|
||||
// stack.distribution = .fill
|
||||
// return stack
|
||||
// }()
|
||||
|
||||
// public lazy var row1Stack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [voicemailReadView, contact, shortDate, callDetailsButton])
|
||||
// stack.translatesAutoresizingMaskIntoConstraints = false
|
||||
// stack.axis = .horizontal
|
||||
// stack.alignment = .center
|
||||
// stack.distribution = .fill
|
||||
// return stack
|
||||
// }()
|
||||
|
||||
public lazy var row1Stack: Stack<StackModel> = {
|
||||
Stack<StackModel>.createStack(with: [(view: voicemailReadView, model: StackItemModel()),
|
||||
(view: contact, model: StackItemModel(horizontalAlignment: .leading)),
|
||||
(view: shortDate, model: StackItemModel()),
|
||||
(view: callDetailsButton, model: StackItemModel())],
|
||||
axis: .horizontal, spacing: PaddingOne)
|
||||
}()
|
||||
|
||||
// public lazy var row2Stack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [mdn, duration])
|
||||
// stack.translatesAutoresizingMaskIntoConstraints = false
|
||||
// stack.axis = .horizontal
|
||||
// stack.alignment = .center
|
||||
// stack.distribution = .fill
|
||||
// return stack
|
||||
// }()
|
||||
public lazy var row2Stack: Stack<StackModel> = {
|
||||
Stack<StackModel>.createStack(with: [(view: mdn, model: StackItemModel(horizontalAlignment: .leading)),
|
||||
(view: duration, model: StackItemModel())],
|
||||
axis: .horizontal)
|
||||
}()
|
||||
|
||||
// public lazy var leftTopStack: Stack<StackModel> = {
|
||||
// Stack<StackModel>.createStack(with: [(view: voicemailReadView, model: StackItemModel()),
|
||||
// (view: contact, model: StackItemModel())],
|
||||
// axis: .horizontal)
|
||||
// }()
|
||||
|
||||
// public lazy var leftStack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [leftTopStack, mdn])
|
||||
// stack.translatesAutoresizingMaskIntoConstraints = false
|
||||
// stack.axis = .vertical
|
||||
// stack.alignment = .fill
|
||||
// return stack
|
||||
// }()
|
||||
|
||||
// public lazy var leftStack: Stack<StackModel> = {
|
||||
// Stack<StackModel>.createStack(with: [(view: leftTopStack, model: StackItemModel(horizontalAlignment: .leading)),
|
||||
// (view: mdn, model: StackItemModel(horizontalAlignment: .leading))],
|
||||
// axis: .vertical)
|
||||
// }()
|
||||
|
||||
// public lazy var rightStack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [rightLabelStack, callDetailsButton])
|
||||
// stack.translatesAutoresizingMaskIntoConstraints = false
|
||||
// stack.axis = .horizontal
|
||||
// stack.alignment = .trailing
|
||||
// return stack
|
||||
// }()
|
||||
//
|
||||
// public lazy var rightStack: Stack<StackModel> = {
|
||||
// Stack<StackModel>.createStack(with: [(view: rightLabelStack, model: StackItemModel(verticalAlignment: .leading)),
|
||||
// (view: callDetailsButton, model: StackItemModel(verticalAlignment: .leading))],
|
||||
// axis: .horizontal)
|
||||
// }()
|
||||
|
||||
// public lazy var rightLabelStack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [shortDate, duration])
|
||||
// stack.translatesAutoresizingMaskIntoConstraints = false
|
||||
// stack.axis = .vertical
|
||||
// stack.alignment = .fill
|
||||
// return stack
|
||||
// }()
|
||||
//
|
||||
// public lazy var rightLabelStack: Stack<StackModel> = {
|
||||
// Stack<StackModel>.createStack(with: [(view: shortDate, model: StackItemModel()),
|
||||
// (view: duration, model: StackItemModel())],
|
||||
// axis: .vertical)
|
||||
// }()
|
||||
|
||||
// public lazy var topStack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [row1Stack, row2Stack])
|
||||
// stack.translatesAutoresizingMaskIntoConstraints = false
|
||||
// stack.axis = .vertical
|
||||
// stack.alignment = .fill
|
||||
// stack.distribution = .fill
|
||||
// return stack
|
||||
// }()
|
||||
public lazy var topStack: Stack<StackModel> = {
|
||||
Stack<StackModel>.createStack(with: [(view: row1Stack, model: StackItemModel()),
|
||||
(view: row2Stack, model: StackItemModel())],
|
||||
axis: .vertical, spacing: 0)
|
||||
}()
|
||||
//
|
||||
// public lazy var topStack: Stack<StackModel> = {
|
||||
// Stack<StackModel>.createStack(with: [(view: row1Stack, model: StackItemModel(verticalAlignment: .leading)),
|
||||
// (view: row2Stack, model: StackItemModel(verticalAlignment: .leading))],
|
||||
// axis: .horizontal)
|
||||
// }()
|
||||
|
||||
// public lazy var mainStack: UIStackView = {
|
||||
// let stack = UIStackView(arrangedSubviews: [leftHeadline, leftBody])
|
||||
// stack.axis = .vertical
|
||||
// stack.alignment = .leading
|
||||
// return stack
|
||||
// }()
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
|
||||
addMolecule(topStack)
|
||||
row1Stack.restack()
|
||||
row2Stack.restack()
|
||||
topStack.restack()
|
||||
}
|
||||
|
||||
open override func updateView(_ size: CGFloat) {
|
||||
super.updateView(size)
|
||||
// leftLabelStack.updateView(size)
|
||||
topStack.updateView(size)
|
||||
}
|
||||
|
||||
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
super.set(with: model, delegateObject, additionalData)
|
||||
let mdnModel: LabelModel? = LabelModel(text: "555-555-5555")
|
||||
let contactModel: LabelModel? = LabelModel(text: "Unknown caller")
|
||||
contactModel?.fontStyle = .BoldBodySmall
|
||||
let shortDateModel: LabelModel? = LabelModel(text: "5/15/2020")
|
||||
shortDateModel?.textAlignment = .right
|
||||
let durationModel: LabelModel? = LabelModel(text: "34 sec")
|
||||
durationModel?.textAlignment = .right
|
||||
|
||||
// voicemailReadView.isHidden = false
|
||||
contact.setOptional(with: contactModel, delegateObject, additionalData)
|
||||
mdn.setOptional(with: mdnModel, delegateObject, additionalData)
|
||||
shortDate.setOptional(with: shortDateModel, delegateObject, additionalData)
|
||||
duration.setOptional(with: durationModel, delegateObject, additionalData)
|
||||
|
||||
// fullDate.setOptional(with: nil, delegateObject, additionalData)
|
||||
// audioPlayer.setOptional(with: model.audioPlayer, delegateObject, additionalData)
|
||||
// callBackButton.setOptional(with: model.callBackButton, delegateObject, additionalData)
|
||||
// sendTextButton.setOptional(with: model.sendTextButton, delegateObject, additionalData)
|
||||
// callDetailsButton.setOptional(with: model.callDetailsImageButton, delegateObject, additionalData)
|
||||
// voiceMailModel?.audioPlayer.messageID = model.messageID
|
||||
//
|
||||
// if let isHeard = model.isHeard, !isHeard, let messageNumber = model.messageID, !MFUtility.checkIfVoicemailExists(messageNumber){
|
||||
// changeVoicemailReadStatus(isHeard: false)
|
||||
// } else {
|
||||
// changeVoicemailReadStatus(isHeard: true)
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||
200
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user