Merge branch 'feature/datepicker_additions' into 'develop'
latest additions for date See merge request BPHV_MIPS/mvm_core_ui!550
This commit is contained in:
commit
8b48725c51
@ -22,18 +22,16 @@ import UIKit
|
|||||||
return calendar
|
return calendar
|
||||||
}()
|
}()
|
||||||
|
|
||||||
public var dateFormatter: DateFormatter = {
|
public var dateFormat: String? {
|
||||||
let formatter = DateFormatter()
|
set {
|
||||||
formatter.dateStyle = .medium
|
guard let newValue = newValue else { return }
|
||||||
formatter.timeZone = NSTimeZone.system
|
dateDropdownModel?.dateFormat = newValue
|
||||||
formatter.locale = .current
|
}
|
||||||
formatter.formatterBehavior = .default
|
get { return dateDropdownModel?.dateFormat }
|
||||||
return formatter
|
}
|
||||||
}()
|
|
||||||
|
|
||||||
/// Update the property value to alter the format of how the date is presented.
|
public var dateDropdownModel: DateDropdownEntryFieldModel? {
|
||||||
public var dateFormat: String = "MMM d, y" {
|
return model as? DateDropdownEntryFieldModel
|
||||||
didSet { dateFormatter.dateFormat = dateFormat }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -96,10 +94,12 @@ import UIKit
|
|||||||
|
|
||||||
guard let date = date else { return }
|
guard let date = date else { return }
|
||||||
|
|
||||||
|
dateDropdownModel?.date = date
|
||||||
|
|
||||||
if calendar.isDate(date, inSameDayAs: Date()) {
|
if calendar.isDate(date, inSameDayAs: Date()) {
|
||||||
text = MVMCoreUIUtility.hardcodedString(withKey: "textfield_today_string")
|
text = MVMCoreUIUtility.hardcodedString(withKey: "textfield_today_string")
|
||||||
} else {
|
} else {
|
||||||
text = dateFormatter.string(from: date)
|
text = dateDropdownModel?.dateFormatter.string(from: date)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,11 +114,35 @@ import UIKit
|
|||||||
setTextWith(date: datePicker?.date)
|
setTextWith(date: datePicker?.date)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - MoleculeViewProtocol
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.set(with: model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? DateDropdownEntryFieldModel else { return }
|
guard let model = model as? DateDropdownEntryFieldModel else { return }
|
||||||
|
|
||||||
dateFormat = model.dateFormat
|
if let date = model.date {
|
||||||
|
datePicker?.date = date
|
||||||
|
setTextWith(date: datePicker?.date)
|
||||||
|
}
|
||||||
|
|
||||||
|
if let minDate = model.minDate {
|
||||||
|
datePicker?.minimumDate = minDate
|
||||||
|
}
|
||||||
|
|
||||||
|
if let maxDate = model.maxDate {
|
||||||
|
datePicker?.maximumDate = maxDate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override func reset() {
|
||||||
|
super.reset()
|
||||||
|
|
||||||
|
datePicker?.minimumDate = nil
|
||||||
|
datePicker?.maximumDate = nil
|
||||||
|
datePicker?.date = Date()
|
||||||
|
text = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,14 +15,33 @@
|
|||||||
return "dateDropdownEntryField"
|
return "dateDropdownEntryField"
|
||||||
}
|
}
|
||||||
|
|
||||||
public var dateFormat: String = "MMM d, y"
|
public var dateFormatter: DateFormatter = {
|
||||||
|
let formatter = DateFormatter()
|
||||||
|
formatter.dateStyle = .medium
|
||||||
|
formatter.timeZone = NSTimeZone.system
|
||||||
|
formatter.locale = .current
|
||||||
|
formatter.formatterBehavior = .default
|
||||||
|
return formatter
|
||||||
|
}()
|
||||||
|
|
||||||
|
/// Update the property value to alter the format of how the date is presented.
|
||||||
|
public var dateFormat: String = "MMM d, y" {
|
||||||
|
didSet { dateFormatter.dateFormat = dateFormat }
|
||||||
|
}
|
||||||
|
|
||||||
|
public var date: Date?
|
||||||
|
public var minDate: Date?
|
||||||
|
public var maxDate: Date?
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Keys
|
// MARK: - Keys
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
private enum CodingKeys: String, CodingKey {
|
private enum CodingKeys: String, CodingKey {
|
||||||
|
case date
|
||||||
case dateFormat
|
case dateFormat
|
||||||
|
case minDate
|
||||||
|
case maxDate
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -35,6 +54,20 @@
|
|||||||
|
|
||||||
if let dateFormat = try typeContainer.decodeIfPresent(String.self, forKey: .dateFormat) {
|
if let dateFormat = try typeContainer.decodeIfPresent(String.self, forKey: .dateFormat) {
|
||||||
self.dateFormat = dateFormat
|
self.dateFormat = dateFormat
|
||||||
|
dateFormatter.dateFormat = dateFormat
|
||||||
|
}
|
||||||
|
|
||||||
|
if let date = try typeContainer.decodeIfPresent(String.self, forKey: .date) {
|
||||||
|
baseValue = date
|
||||||
|
self.date = dateFormatter.date(from: date)
|
||||||
|
}
|
||||||
|
|
||||||
|
if let minDate = try typeContainer.decodeIfPresent(String.self, forKey: .minDate) {
|
||||||
|
self.minDate = dateFormatter.date(from: minDate)
|
||||||
|
}
|
||||||
|
|
||||||
|
if let maxDate = try typeContainer.decodeIfPresent(String.self, forKey: .maxDate) {
|
||||||
|
self.maxDate = dateFormatter.date(from: maxDate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,5 +75,17 @@
|
|||||||
try super.encode(to: encoder)
|
try super.encode(to: encoder)
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(dateFormat, forKey: .dateFormat)
|
try container.encode(dateFormat, forKey: .dateFormat)
|
||||||
|
|
||||||
|
if let date = date {
|
||||||
|
try container.encode(dateFormatter.string(from: date), forKey: .date)
|
||||||
|
}
|
||||||
|
|
||||||
|
if let minDate = minDate {
|
||||||
|
try container.encode(dateFormatter.string(from: minDate), forKey: .minDate)
|
||||||
|
}
|
||||||
|
|
||||||
|
if let maxDate = maxDate {
|
||||||
|
try container.encode(dateFormatter.string(from: maxDate), forKey: .maxDate)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user