mirror of
https://github.com/bitwarden/mobile
synced 2025-12-11 22:03:27 +00:00
PM-3349 PM-3350 MAUI Migration Initial
This commit is contained in:
87
src/Core/Controls/ExtendedDatePicker.cs
Normal file
87
src/Core/Controls/ExtendedDatePicker.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using Microsoft.Maui.Controls;
|
||||
using Microsoft.Maui;
|
||||
|
||||
namespace Bit.App.Controls
|
||||
{
|
||||
public class ExtendedDatePicker : DatePicker
|
||||
{
|
||||
private string _format;
|
||||
|
||||
public static readonly BindableProperty PlaceHolderProperty = BindableProperty.Create(
|
||||
nameof(PlaceHolder), typeof(string), typeof(ExtendedDatePicker));
|
||||
|
||||
public string PlaceHolder
|
||||
{
|
||||
get { return (string)GetValue(PlaceHolderProperty); }
|
||||
set { SetValue(PlaceHolderProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly BindableProperty NullableDateProperty = BindableProperty.Create(
|
||||
nameof(NullableDate), typeof(DateTime?), typeof(ExtendedDatePicker));
|
||||
|
||||
public DateTime? NullableDate
|
||||
{
|
||||
get { return (DateTime?)GetValue(NullableDateProperty); }
|
||||
set
|
||||
{
|
||||
SetValue(NullableDateProperty, value);
|
||||
UpdateDate();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateDate()
|
||||
{
|
||||
if (NullableDate.HasValue)
|
||||
{
|
||||
if (_format != null)
|
||||
{
|
||||
Format = _format;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Format = PlaceHolder;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnBindingContextChanged()
|
||||
{
|
||||
base.OnBindingContextChanged();
|
||||
if (BindingContext != null)
|
||||
{
|
||||
_format = Format;
|
||||
UpdateDate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPropertyChanged(string propertyName = null)
|
||||
{
|
||||
base.OnPropertyChanged(propertyName);
|
||||
|
||||
if (propertyName == DateProperty.PropertyName || (propertyName == IsFocusedProperty.PropertyName &&
|
||||
!IsFocused && (Date.ToString("d") ==
|
||||
DateTime.Now.ToString("d"))))
|
||||
{
|
||||
NullableDate = Date;
|
||||
UpdateDate();
|
||||
}
|
||||
|
||||
if (propertyName == NullableDateProperty.PropertyName)
|
||||
{
|
||||
if (NullableDate.HasValue)
|
||||
{
|
||||
Date = NullableDate.Value;
|
||||
if (Date.ToString(_format) == DateTime.Now.ToString(_format))
|
||||
{
|
||||
UpdateDate();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateDate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user