diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift index 9860cd5b..9f8111e6 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift @@ -114,11 +114,36 @@ import UIKit setTextWith(date: datePicker?.date) } + //-------------------------------------------------- + // MARK: - MoleculeViewProtocol + //-------------------------------------------------- + public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { super.set(with: model, delegateObject, additionalData) guard let model = model as? DateDropdownEntryFieldModel else { return } dateFormat = model.dateFormat + + if let initialDate = model.initialDate, let date = dateFormatter.date(from: initialDate) { + datePicker?.date = date + setTextWith(date: datePicker?.date) + } + + if let minDate = model.minDate { + datePicker?.minimumDate = dateFormatter.date(from: minDate) + } + + if let maxDate = model.maxDate { + datePicker?.maximumDate = dateFormatter.date(from: maxDate) + } + } + + public override func reset() { + super.reset() + + datePicker?.minimumDate = nil + datePicker?.maximumDate = nil + text = nil } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryFieldModel.swift index 96ec3488..15dda191 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryFieldModel.swift @@ -16,6 +16,9 @@ } public var dateFormat: String = "MMM d, y" + public var initialDate: String? + public var minDate: String? + public var maxDate: String? //-------------------------------------------------- // MARK: - Keys @@ -23,6 +26,9 @@ private enum CodingKeys: String, CodingKey { case dateFormat + case initialDate + case minDate + case maxDate } //-------------------------------------------------- @@ -36,11 +42,26 @@ if let dateFormat = try typeContainer.decodeIfPresent(String.self, forKey: .dateFormat) { self.dateFormat = dateFormat } + + if let initialDate = try typeContainer.decodeIfPresent(String.self, forKey: .initialDate) { + self.initialDate = initialDate + } + + if let minDate = try typeContainer.decodeIfPresent(String.self, forKey: .minDate) { + self.minDate = minDate + } + + if let maxDate = try typeContainer.decodeIfPresent(String.self, forKey: .maxDate) { + self.maxDate = maxDate + } } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(dateFormat, forKey: .dateFormat) + try container.encode(initialDate, forKey: .initialDate) + try container.encode(minDate, forKey: .minDate) + try container.encode(maxDate, forKey: .maxDate) } }