refactored out old code and reorganized

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2024-06-21 14:43:55 -05:00
parent 7770a49f6f
commit beaa2b3a82

View File

@ -31,6 +31,14 @@ open class DatePicker: EntryFieldBase {
// MARK: - Private Properties // MARK: - Private Properties
//-------------------------------------------------- //--------------------------------------------------
internal var minWidthDefault = 186.0 internal var minWidthDefault = 186.0
internal var popoverView: UIView!
internal var popoverVisible = false
internal var outsideTapGesture: UITapGestureRecognizer?
internal var outsidePanGesture: UIPanGestureRecognizer?
internal var overlayView = UIView().with {
$0.backgroundColor = .clear;
$0.isHidden = true
}
internal var bottomStackView: UIStackView = { internal var bottomStackView: UIStackView = {
return UIStackView().with { return UIStackView().with {
@ -109,8 +117,8 @@ open class DatePicker: EntryFieldBase {
.publisher(for: UITapGestureRecognizer()) .publisher(for: UITapGestureRecognizer())
.sink { [weak self] _ in .sink { [weak self] _ in
guard let self else { return } guard let self else { return }
if self.isEnabled && !self.isReadOnly { if isEnabled && !isReadOnly {
self.togglePicker() showPopover()
} }
} }
.store(in: &subscribers) .store(in: &subscribers)
@ -118,9 +126,6 @@ open class DatePicker: EntryFieldBase {
NotificationCenter.default NotificationCenter.default
.publisher(for: UIDevice.orientationDidChangeNotification).sink { [weak self] _ in .publisher(for: UIDevice.orientationDidChangeNotification).sink { [weak self] _ in
guard let self else { return } guard let self else { return }
popoverController?.dismiss(animated: true){ [weak self] in
guard let self else { return }
}
hidePopoverView() hidePopoverView()
} }
.store(in: &subscribers) .store(in: &subscribers)
@ -175,49 +180,11 @@ open class DatePicker: EntryFieldBase {
popoverController = nil popoverController = nil
} }
} }
private var overlayView = UIView().with {
$0.backgroundColor = .clear;
$0.isHidden = true
}
private var popoverView: UIView!
private var popoverVisible = false
private var outsideTapGesture: UITapGestureRecognizer?
private var outsidePanGesture: UIPanGestureRecognizer?
// internal func togglePicker() {
// calendar.activeDates = calendarModel.activeDates
// calendar.hideContainerBorder = calendarModel.hideContainerBorder
// calendar.hideCurrentDateIndicator = calendarModel.hideCurrentDateIndicator
// calendar.inactiveDates = calendarModel.inactiveDates
// calendar.indicators = calendarModel.indicators
// calendar.maxDate = calendarModel.maxDate
// calendar.minDate = calendarModel.minDate
// calendar.surface = calendarModel.surface
// calendar.setNeedsLayout()
// calendar.layoutIfNeeded()
// calendar.onChange = { [weak self] control in
// guard let self else { return }
// didSelect(control.selectedDate)
// }
//
// popoverController = ClearPopoverViewController(contentView: calendar,
// arrow: .any,
// sourceView: containerView,
// sourceRect: .init(x: 0, y: 0, width: 320, height: 45),
// spacing: VDSLayout.space1X)
// popoverController?.maxWidth = 320
// if let viewController = UIApplication.topViewController(), let popoverController {
// viewController.present(popoverController,
// animated: true,
// completion: nil)
// }
// }
} }
extension DatePicker { extension DatePicker {
private func togglePicker() { private func showPopover() {
guard let viewController = UIApplication.topViewController(), let parentView = viewController.view else { return } guard let viewController = UIApplication.topViewController(), let parentView = viewController.view else { return }
if popoverVisible { if popoverVisible {
@ -286,7 +253,12 @@ extension DatePicker {
popoverView.isHidden = false popoverView.isHidden = false
popoverVisible = true popoverVisible = true
UIView.animate(withDuration: 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.2, options: .curveEaseOut, animations: { [weak self] in UIView.animate(withDuration: 0.3,
delay: 0,
usingSpringWithDamping: 0.8,
initialSpringVelocity: 0.2,
options: .curveEaseOut,
animations: { [weak self] in
guard let self else { return } guard let self else { return }
popoverView.alpha = 1 popoverView.alpha = 1
popoverView.transform = CGAffineTransform.identity popoverView.transform = CGAffineTransform.identity
@ -301,13 +273,16 @@ extension DatePicker {
outsideTapGesture = nil outsideTapGesture = nil
outsidePanGesture = nil outsidePanGesture = nil
UIView.animate(withDuration: 0.2, animations: { UIView.animate(withDuration: 0.2,
self.popoverView.alpha = 0 animations: {[weak self] in
self.popoverView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9) guard let self else { return }
}) { _ in popoverView.alpha = 0
self.popoverView.isHidden = true popoverView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
self.popoverView.removeFromSuperview() }) { [weak self] _ in
self.popoverVisible = false guard let self else { return }
popoverView.isHidden = true
popoverView.removeFromSuperview()
popoverVisible = false
} }
} }