You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.6 KiB
C#

using System;
using TMPro;
using UnityEngine;
using UnityEngine.Assertions;
using UnityEngine.UI;
namespace WalletConnectUnity.UI
{
public sealed class WCModalHeader : MonoBehaviour
{
[field: SerializeField] public WCSnackbar Snackbar { get; private set; }
[field: SerializeField] public RectTransform RectTransform { get; private set; }
[field: SerializeField] private TMP_Text TitleText { get; set; }
[field: SerializeField] private Button LeftButton { get; set; }
[field: SerializeField] private Image LeftButtonImage { get; set; }
[field: SerializeField] private Button RightButton { get; set; }
[field: SerializeField, Space] private WCModal Modal { get; set; }
public float Height => RectTransform.rect.height;
private bool _leftButtonCustom;
private Action _leftButtonAction;
private Sprite _leftButtonDefaultSprite;
public string Title
{
get => TitleText.text;
set => TitleText.text = value;
}
private void Awake()
{
Assert.IsNotNull(RectTransform, $"Missing {nameof(RectTransform)} reference in {name}");
Assert.IsNotNull(TitleText, $"Missing {nameof(TitleText)} reference in {name}");
Assert.IsNotNull(LeftButton, $"Missing {nameof(LeftButton)} reference in {name}");
Assert.IsNotNull(RightButton, $"Missing {nameof(RightButton)} reference in {name}");
Assert.IsNotNull(Modal, $"Missing {nameof(Modal)} reference in {name}");
LeftButton.onClick.AddListener(OnLeftButtonClicked);
RightButton.onClick.AddListener(OnRightButtonClicked);
_leftButtonDefaultSprite = LeftButtonImage.sprite;
}
public void SetCustomLeftButton(Sprite sprite, Action onClick)
{
_leftButtonCustom = true;
_leftButtonAction = onClick;
LeftButtonImage.sprite = sprite;
if (LeftButton.gameObject.activeSelf == false)
LeftButton.gameObject.SetActive(true);
}
public void RemoveCustomLeftButton()
{
_leftButtonCustom = false;
_leftButtonAction = null;
LeftButtonImage.sprite = _leftButtonDefaultSprite;
}
private void OnLeftButtonClicked()
{
if (_leftButtonCustom)
{
_leftButtonAction?.Invoke();
}
else
{
Modal.CloseView();
}
}
private void OnRightButtonClicked()
{
Modal.CloseModal();
}
}
}