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.

59 lines
1.9 KiB
C#

using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace WalletConnectUnity.UI
{
public class WCInputField : TMP_InputField
{
[SerializeField] private Image _backgroundImage;
[SerializeField] private Image _borderImage;
[SerializeField] private Image _ringImage;
[SerializeField] private ComponentState _defaultState;
[SerializeField] private ComponentState _selectedState;
[SerializeField] private ComponentState _highlightedState;
public override void OnSelect(BaseEventData eventData)
{
// Unity automatically 'selects' the input field after pressed which we don't want when using a cursor
var currentState = currentSelectionState;
if (currentState is SelectionState.Highlighted) return;
base.OnSelect(eventData);
}
protected override void DoStateTransition(SelectionState state, bool instant)
{
base.DoStateTransition(state, instant);
#if UNITY_EDITOR
if (!Application.isPlaying)
return;
#endif
var targetState = state switch
{
SelectionState.Normal => _defaultState,
SelectionState.Highlighted => _highlightedState,
SelectionState.Selected => _selectedState,
_ => _defaultState
};
ApplyComponentState(targetState);
}
private void ApplyComponentState(ComponentState state)
{
_backgroundImage.enabled = state.backgroundEnabled;
_backgroundImage.color = state.backgroundColor;
_borderImage.enabled = state.borderEnabled;
_borderImage.color = state.borderColor;
_ringImage.enabled = state.ringEnabled;
_ringImage.color = state.ringColor;
}
}
}