@using Iceshrimp.Frontend.Core.Services
@using Iceshrimp.Shared.Schemas.Web
@inject EmojiService EmojiService
@if (_display)
{
@foreach (var el in EmojiList)
{
![]()
Select(el)" src="@el.PublicUrl" alt="@el.Name"/>
}
}
@code {
[Parameter] public bool Fixed { get; set; }
[Parameter] [EditorRequired] public required EventCallback OnEmojiSelect { get; set; }
private List EmojiList { get; set; } = [];
private bool _display = false;
private ElementReference EmojiPickerRef { get; set; }
protected override async Task OnInitializedAsync()
{
EmojiList = await EmojiService.GetEmoji();
}
private async void Select(EmojiResponse emoji)
{
await OnEmojiSelect.InvokeAsync(emoji);
_display = false;
StateHasChanged();
}
private void Close()
{
_display = false;
StateHasChanged();
}
protected override void OnAfterRender(bool firstRender)
{
if (_display)
{
EmojiPickerRef.FocusAsync();
}
}
public async Task Toggle()
{
_display = !_display;
await InvokeAsync(StateHasChanged);
}
}