#nullable enable
using System;
using UnityEngine.UIElements;
using UVC.UIToolkit.Modal;
namespace UVC.UIToolkit.Property
{
///
/// 날짜 속성 아이템
/// TextField + UTKDatePicker 연동
///
public class UTKDatePropertyItem : UTKPropertyItemBase
{
#region Fields
private TextField? _dateField;
private Button? _pickerButton;
private UTKDatePicker? _currentPicker;
private string _dateFormat = "yyyy-MM-dd";
#endregion
#region Properties
public override UTKPropertyType PropertyType => UTKPropertyType.Date;
/// 날짜 표시 형식
public string DateFormat
{
get => _dateFormat;
set
{
_dateFormat = value ?? "yyyy-MM-dd";
RefreshUI();
}
}
#endregion
#region Constructor
public UTKDatePropertyItem(string id, string name, DateTime initialValue = default)
: base(id, name, initialValue == default ? DateTime.Today : initialValue)
{
}
#endregion
#region Override Methods
public override VisualElement CreateUI()
{
var container = CreateContainer();
var label = CreateNameLabel();
container.Add(label);
var valueContainer = new VisualElement();
valueContainer.AddToClassList("utk-property-item__value");
_dateField = new TextField();
_dateField.name = "date-field";
_dateField.value = Value.ToString(_dateFormat);
_dateField.style.flexGrow = 1;
valueContainer.Add(_dateField);
_pickerButton = new Button();
_pickerButton.name = "picker-btn";
_pickerButton.text = "...";
_pickerButton.AddToClassList("utk-property-item__picker-btn");
valueContainer.Add(_pickerButton);
container.Add(valueContainer);
return container;
}
public override void BindUI(VisualElement element)
{
base.BindUI(element);
_dateField = element.Q("date-field");
_pickerButton = element.Q