#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