From 185912467ed309d30a019d3e4da2988d7e203c8b Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 17 Apr 2024 16:24:03 -0500 Subject: [PATCH 1/5] VDS Team removed 2x and replaced with 3x in the spec. Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift b/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift index 3e6ed245..d78e7be6 100644 --- a/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift +++ b/MVMCoreUI/Atomic/Extensions/VDS-Enums+Codable.swift @@ -112,8 +112,8 @@ extension VDS.TileContainer.Padding: Codable { do { let type = try container.decode(String.self) switch type { - case "padding2X": - self = .padding2X + case "padding3X": + self = .padding3X case "padding4X": self = .padding4X case "padding6X": From c48eab03eca01a71062a396758caedb46f705b37 Mon Sep 17 00:00:00 2001 From: "Hedden, Kyle Matthew" Date: Wed, 17 Apr 2024 19:23:45 -0400 Subject: [PATCH 2/5] Digital PCT265 defect CXTDT-546577 - Track UI updates from module changes. --- .../Atomic/Protocols/MoleculeDelegateProtocol.swift | 3 ++- MVMCoreUI/BaseControllers/ViewController.swift | 3 ++- .../Behaviors/ReplaceableMoleculeBehaviorModel.swift | 9 ++++++--- MVMCoreUI/OtherHandlers/MVMCoreUILoggingHandler.swift | 3 +++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/MVMCoreUI/Atomic/Protocols/MoleculeDelegateProtocol.swift b/MVMCoreUI/Atomic/Protocols/MoleculeDelegateProtocol.swift index e7a4bdef..e8cae35b 100644 --- a/MVMCoreUI/Atomic/Protocols/MoleculeDelegateProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/MoleculeDelegateProtocol.swift @@ -22,7 +22,8 @@ public protocol MoleculeDelegateProtocol: AnyObject { /// Notifies the delegate that the molecule layout update. Should be called when the layout may change due to an async method. Mainly used for list or collections. func moleculeLayoutUpdated(_ molecule: MoleculeViewProtocol) //optional - func replaceMoleculeData(_ moleculeModels: [MoleculeModelProtocol]) + /// Attempts to replace the molecules provided. Returns the ones that replaced successfully. + func replaceMoleculeData(_ moleculeModels: [MoleculeModelProtocol], completionHandler: (([MoleculeModelProtocol])->Void)?) } extension MoleculeDelegateProtocol { diff --git a/MVMCoreUI/BaseControllers/ViewController.swift b/MVMCoreUI/BaseControllers/ViewController.swift index 5997847d..452d2962 100644 --- a/MVMCoreUI/BaseControllers/ViewController.swift +++ b/MVMCoreUI/BaseControllers/ViewController.swift @@ -511,7 +511,7 @@ import MVMCore // Needed otherwise when subclassed, the extension gets called. open func moleculeLayoutUpdated(_ molecule: MoleculeViewProtocol) { } - public func replaceMoleculeData(_ moleculeModels: [MoleculeModelProtocol]) { + public func replaceMoleculeData(_ moleculeModels: [MoleculeModelProtocol], completionHandler: (([MoleculeModelProtocol])->Void)? = nil) { pageUpdateQueue.addOperation { let replacedModels:[MoleculeModelProtocol] = moleculeModels.compactMap { model in guard self.attemptToReplace(with: model) else { @@ -524,6 +524,7 @@ import MVMCore self.updateUI(for: replacedModels) } } + completionHandler?(replacedModels) } } diff --git a/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift b/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift index 2e38017c..e52ee464 100644 --- a/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift +++ b/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift @@ -62,7 +62,7 @@ public class ReplaceableMoleculeBehavior: PageMoleculeTransformationBehavior { } } if moleculeModels.count > 0 { - delegateObject?.moleculeDelegate?.replaceMoleculeData(moleculeModels) + delegateObject?.moleculeDelegate?.replaceMoleculeData(moleculeModels, completionHandler: nil) } } @@ -95,8 +95,11 @@ public class ReplaceableMoleculeBehavior: PageMoleculeTransformationBehavior { return nil } } - if modules.count > 0 { - delegateObject?.moleculeDelegate?.replaceMoleculeData(modules) + guard modules.count > 0 else { return } + delegateObject?.moleculeDelegate?.replaceMoleculeData(modules) { replacedModels in + let modules = replacedModels.compactMap { modulesLoaded.dictionaryForKey($0.id) } + guard let viewController = self.delegateObject?.moleculeDelegate as? MVMCoreViewControllerProtocol else { return } + modules.forEach { MVMCoreUILoggingHandler.shared()?.defaultLogPageUpdate(forController: viewController, from: $0) } } } diff --git a/MVMCoreUI/OtherHandlers/MVMCoreUILoggingHandler.swift b/MVMCoreUI/OtherHandlers/MVMCoreUILoggingHandler.swift index e74bc580..74a27f7f 100644 --- a/MVMCoreUI/OtherHandlers/MVMCoreUILoggingHandler.swift +++ b/MVMCoreUI/OtherHandlers/MVMCoreUILoggingHandler.swift @@ -13,4 +13,7 @@ // Action Logging @objc open func defaultLogAction(forController controller: MVMCoreViewControllerProtocol?, actionInformation: [AnyHashable : Any]?, additionalData: [AnyHashable : Any]?) { } + + // Module Update Logging + @objc open func defaultLogPageUpdate(forController controller: MVMCoreViewControllerProtocol, from module: [AnyHashable: Any]) { } } From 652fcddcdace74048e4bc2eddf02910203870009 Mon Sep 17 00:00:00 2001 From: "Hedden, Kyle Matthew" Date: Tue, 23 Apr 2024 09:40:22 -0400 Subject: [PATCH 3/5] Digital PCT265 defect CXTDT-546577 - Remove transcendsPageUpdates to prevent multiple replaces from muliple ReplaceMoleculeBehaviors listening and replacing. --- .../ReplaceableMoleculeBehaviorModel.swift | 2 -- MVMCoreUI/SupportingFiles/mvmcoreui.xcconfig | 13 +++++++++++++ MVMCoreUI/SupportingFiles/mvmcoreui_dev.xcconfig | 16 ++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 MVMCoreUI/SupportingFiles/mvmcoreui.xcconfig create mode 100644 MVMCoreUI/SupportingFiles/mvmcoreui_dev.xcconfig diff --git a/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift b/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift index e52ee464..d8d0c476 100644 --- a/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift +++ b/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift @@ -21,8 +21,6 @@ public class ReplaceableMoleculeBehavior: PageMoleculeTransformationBehavior { private var observingForResponses: NSObjectProtocol? private var delegateObject: MVMCoreUIDelegateObject? - public var transcendsPageUpdates: Bool { true } - public required init(model: PageBehaviorModelProtocol, delegateObject: MVMCoreUIDelegateObject?) { moleculeIds = (model as! ReplaceableMoleculeBehaviorModel).moleculeIds let shouldListenForListUpdates = delegateObject?.moleculeListDelegate != nil diff --git a/MVMCoreUI/SupportingFiles/mvmcoreui.xcconfig b/MVMCoreUI/SupportingFiles/mvmcoreui.xcconfig new file mode 100644 index 00000000..91c90442 --- /dev/null +++ b/MVMCoreUI/SupportingFiles/mvmcoreui.xcconfig @@ -0,0 +1,13 @@ +// +// mvmcore_ui.xcconfig +// MVMCoreUI +// +// Created by Kyle Hedden on 4/23/24. +// Copyright © 2024 Verizon Wireless. All rights reserved. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +// Refer back to the workspace settings if they exist. +#include? "../../../workspaceSettings.xcconfig" diff --git a/MVMCoreUI/SupportingFiles/mvmcoreui_dev.xcconfig b/MVMCoreUI/SupportingFiles/mvmcoreui_dev.xcconfig new file mode 100644 index 00000000..d6815c1d --- /dev/null +++ b/MVMCoreUI/SupportingFiles/mvmcoreui_dev.xcconfig @@ -0,0 +1,16 @@ +// +// mvmcore_ui_dev.xcconfig +// MVMCoreUI +// +// Created by Kyle Hedden on 4/23/24. +// Copyright © 2024 Verizon Wireless. All rights reserved. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +SWIFT_ACTIVE_COMPILATION_CONDITIONS = $(inherited) LOGGING +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) LOGGING=1 + +// Refer back to the workspace settings if they exist. +#include? "../../../workspaceSettings.xcconfig" From adda10efb052e0fc85ef7c9952c5f15f44f8034c Mon Sep 17 00:00:00 2001 From: "Hedden, Kyle Matthew" Date: Tue, 23 Apr 2024 09:41:35 -0400 Subject: [PATCH 4/5] Digital PCT265 defect CXTDT-546577 - Logging for clarity. --- MVMCoreUI.xcodeproj/project.pbxproj | 8 +++++++- .../Behaviors/ReplaceableMoleculeBehaviorModel.swift | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 64bcc3ed..8fafb0c9 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -771,6 +771,8 @@ 5822720A2B1FC55F00F75BAE /* RotorHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RotorHandler.swift; sourceTree = ""; }; 5846ABF52B4762A600FA6C76 /* PollingBehaviorModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PollingBehaviorModel.swift; sourceTree = ""; }; 5870636E2ACF238E00CA18D5 /* ReadableDecodingErrors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadableDecodingErrors.swift; sourceTree = ""; }; + 5878F0A42BD7E68800ADE23D /* mvmcoreui.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = mvmcoreui.xcconfig; sourceTree = ""; }; + 5878F0A52BD7E6BE00ADE23D /* mvmcoreui_dev.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = mvmcoreui_dev.xcconfig; sourceTree = ""; }; 58A9DD7C2AC2103300F5E0B0 /* ReplaceableMoleculeBehaviorModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReplaceableMoleculeBehaviorModel.swift; sourceTree = ""; }; 608211262AC6AF8200C3FC39 /* MVMCoreUILoggingHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVMCoreUILoggingHandler.swift; sourceTree = ""; }; 8D070BAF241B56530099AC56 /* ListRightVariableTotalDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListRightVariableTotalDataModel.swift; sourceTree = ""; }; @@ -2345,6 +2347,8 @@ D29DF31421ECECA7003B2FB9 /* SupportingFiles */ = { isa = PBXGroup; children = ( + 5878F0A52BD7E6BE00ADE23D /* mvmcoreui_dev.xcconfig */, + 5878F0A42BD7E68800ADE23D /* mvmcoreui.xcconfig */, D29DF32721EE8736003B2FB9 /* Strings */, D29DF26621E6A9E4003B2FB9 /* ThirdParty */, D29DF31521ECECC0003B2FB9 /* Fonts */, @@ -3230,6 +3234,7 @@ /* Begin XCBuildConfiguration section */ D29DF0D221E404D4003B2FB9 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5878F0A52BD7E6BE00ADE23D /* mvmcoreui_dev.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = YES; @@ -3288,7 +3293,7 @@ MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -3297,6 +3302,7 @@ }; D29DF0D321E404D4003B2FB9 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5878F0A42BD7E68800ADE23D /* mvmcoreui.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = YES; diff --git a/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift b/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift index d8d0c476..51428234 100644 --- a/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift +++ b/MVMCoreUI/Behaviors/ReplaceableMoleculeBehaviorModel.swift @@ -94,6 +94,10 @@ public class ReplaceableMoleculeBehavior: PageMoleculeTransformationBehavior { } } guard modules.count > 0 else { return } + #if LOGGING + let requestParams = (notification.userInfo?["MVMCoreLoadObject"] as? MVMCoreLoadObject)?.requestParameters + MVMCoreLoggingHandler.shared()?.handleDebugMessage("Replacing \(modules.map { $0.id }) from \(requestParams?.url?.absoluteString ?? "unknown"), e2eId: \(requestParams?.identifier ?? "unknown")") + #endif delegateObject?.moleculeDelegate?.replaceMoleculeData(modules) { replacedModels in let modules = replacedModels.compactMap { modulesLoaded.dictionaryForKey($0.id) } guard let viewController = self.delegateObject?.moleculeDelegate as? MVMCoreViewControllerProtocol else { return } From 5698f1f5c1fe8f9b6e98c351f7a504d40e43ec1c Mon Sep 17 00:00:00 2001 From: Xi Zhang Date: Tue, 23 Apr 2024 17:18:59 -0400 Subject: [PATCH 5/5] Provide an API for checking selected date is today. --- MVMCoreUI.xcodeproj/project.pbxproj | 4 ++++ .../DateDropdownEntryField.swift | 8 +------ ...ateDropdownEntryFieldModel+Extension.swift | 21 +++++++++++++++++++ .../DateDropdownEntryFieldModel.swift | 6 ++++++ 4 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel+Extension.swift diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 8fafb0c9..5d09ab93 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -152,6 +152,7 @@ 444FB7C12821B73200DFE692 /* TitleLockup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 444FB7C02821B73200DFE692 /* TitleLockup.swift */; }; 444FB7C32821B76B00DFE692 /* TitleLockupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 444FB7C22821B76B00DFE692 /* TitleLockupModel.swift */; }; 4457904E27ECE989002B1E1E /* UIImageRenderingMode+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4457904D27ECE989002B1E1E /* UIImageRenderingMode+Extension.swift */; }; + 4B002ACA2BD855EC009BC9C1 /* DateDropdownEntryFieldModel+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B002AC92BD855EC009BC9C1 /* DateDropdownEntryFieldModel+Extension.swift */; }; 522679C123FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */; }; 522679C223FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinksModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522679C023FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinksModel.swift */; }; 52267A0723FFE25000906CBA /* ListOneColumnFullWidthTextAllTextAndLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52267A0623FFE25000906CBA /* ListOneColumnFullWidthTextAllTextAndLinks.swift */; }; @@ -752,6 +753,7 @@ 444FB7C02821B73200DFE692 /* TitleLockup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockup.swift; sourceTree = ""; }; 444FB7C22821B76B00DFE692 /* TitleLockupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupModel.swift; sourceTree = ""; }; 4457904D27ECE989002B1E1E /* UIImageRenderingMode+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImageRenderingMode+Extension.swift"; sourceTree = ""; }; + 4B002AC92BD855EC009BC9C1 /* DateDropdownEntryFieldModel+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateDropdownEntryFieldModel+Extension.swift"; sourceTree = ""; }; 522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListLeftVariableCheckboxAllTextAndLinks.swift; sourceTree = ""; }; 522679C023FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinksModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListLeftVariableCheckboxAllTextAndLinksModel.swift; sourceTree = ""; }; 52267A0623FFE25000906CBA /* ListOneColumnFullWidthTextAllTextAndLinks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListOneColumnFullWidthTextAllTextAndLinks.swift; sourceTree = ""; }; @@ -1339,6 +1341,7 @@ children = ( 0A7EF86623D8B0AE00B2AAD1 /* DateDropdownEntryFieldModel.swift */, 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */, + 4B002AC92BD855EC009BC9C1 /* DateDropdownEntryFieldModel+Extension.swift */, ); path = "Date Dropdown"; sourceTree = ""; @@ -3084,6 +3087,7 @@ 8DE5BECF2456F7B100772E76 /* ListTwoColumnDropdownSelectors.swift in Sources */, D2E1FADF2268B8E700AEFD8C /* ThreeLayerTableViewController.swift in Sources */, 0A21DB83235DFBC500C160A2 /* MdnEntryField.swift in Sources */, + 4B002ACA2BD855EC009BC9C1 /* DateDropdownEntryFieldModel+Extension.swift in Sources */, 0AE98BB723FF18E9004C5109 /* ArrowModel.swift in Sources */, 01F2C20427C81F9700DC3D36 /* SubNavInteractor.swift.swift in Sources */, D28A837D23CCA86A00DFE4FC /* TabsListItemModel.swift in Sources */, diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryField.swift index 234809d3..129dbc0b 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryField.swift @@ -16,12 +16,6 @@ import UIKit public weak var datePicker: UIDatePicker? - private var calendar: Calendar = { - var calendar: Calendar = .current - calendar.timeZone = NSTimeZone.system - return calendar - }() - public var dateFormat: String? { get { dateDropdownModel?.dateFormat } set { @@ -97,7 +91,7 @@ import UIKit dateDropdownModel?.date = date - if calendar.isDate(date, inSameDayAs: Date()) { + if let isToday = dateDropdownModel?.isSelectedToday(), isToday { text = MVMCoreUIUtility.hardcodedString(withKey: "textfield_today_string") } else { text = dateDropdownModel?.dateFormatter.string(from: date) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel+Extension.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel+Extension.swift new file mode 100644 index 00000000..9ce5d051 --- /dev/null +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel+Extension.swift @@ -0,0 +1,21 @@ +// +// DateDropdownEntryFieldModel+Extension.swift +// MVMCoreUI +// +// Created by Xi Zhang on 4/23/24. +// Copyright © 2024 Verizon Wireless. All rights reserved. +// + +import Foundation + +extension DateDropdownEntryFieldModel { + + public func isSelectedToday() -> Bool { + + guard let date = date else { + return false + } + + return calendar.isDate(date, inSameDayAs: Date()) + } +} diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel.swift index 53c7206c..f2f4df05 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Date Dropdown/DateDropdownEntryFieldModel.swift @@ -31,6 +31,12 @@ public var minDate: Date? public var maxDate: Date? + var calendar: Calendar = { + var calendar: Calendar = .current + calendar.timeZone = NSTimeZone.system + return calendar + }() + //-------------------------------------------------- // MARK: - Keys //--------------------------------------------------