Files
SteUP_Dotnet/SteUp.Shared/Components/SingleElements/Modal/ModalAddAttached.razor
2026-02-19 09:52:18 +01:00

121 lines
3.3 KiB
Plaintext

@using SteUp.Shared.Components.Layout
@using SteUp.Shared.Core.Dto
@using SteUp.Shared.Core.Interface.System
@inject IAttachedService AttachedService
<MudDialog Class="disable-safe-area">
<DialogContent>
<HeaderLayout SmallHeader="true" Cancel="true" OnCancel="@(() => MudDialog.Cancel())" Title="@TitleModal"/>
@if (RequireNewName)
{
<MudTextField @bind-Value="NewName" Class="px-3" Variant="Variant.Outlined"/>
}
else
{
<div style="margin-bottom: 1rem;" class="content attached">
<MudFab Size="Size.Small" Color="Color.Primary"
StartIcon="@Icons.Material.Rounded.CameraAlt"
Label="Camera" OnClick="@OnCamera"/>
<MudFab Size="Size.Small" Color="Color.Primary"
StartIcon="@Icons.Material.Rounded.Image"
Label="Galleria" OnClick="@OnGallery"/>
</div>
}
</DialogContent>
<DialogActions>
@if (RequireNewName)
{
<MudButton Disabled="NewName.IsNullOrEmpty()" Class="my-3" Size="Size.Small" Variant="Variant.Filled"
Color="Color.Primary"
StartIcon="@Icons.Material.Rounded.Check" OnClick="@OnNewName">
Salva
</MudButton>
}
</DialogActions>
</MudDialog>
@code {
[CascadingParameter] private IMudDialogInstance MudDialog { get; set; } = null!;
[Parameter] public bool CanAddPosition { get; set; }
private AttachedDto? Attached { get; set; }
private bool _requireNewName;
private bool RequireNewName
{
get => _requireNewName;
set
{
_requireNewName = value;
TitleModal = _requireNewName ? "Nome allegato" : "Aggiungi allegati";
StateHasChanged();
}
}
private string TitleModal { get; set; } = "Aggiungi allegati";
private string? _newName;
private string? NewName
{
get => _newName;
set
{
_newName = value;
StateHasChanged();
}
}
protected override void OnInitialized()
{
RequireNewName = false;
Snackbar.Configuration.PositionClass = Defaults.Classes.Position.TopCenter;
}
private async Task OnCamera()
{
Attached = await AttachedService.SelectImageFromCamera();
if (Attached != null)
{
RequireNewName = true;
StateHasChanged();
}
}
private async Task OnGallery()
{
Attached = await AttachedService.SelectImageFromGallery();
if (Attached != null)
{
RequireNewName = true;
StateHasChanged();
}
}
private void OnNewName()
{
if (Attached != null)
{
switch (Attached.Type)
{
case AttachedDto.TypeAttached.Image:
{
var extension = Path.GetExtension(Attached.Name);
Attached.Name = NewName! + extension;
break;
}
default:
throw new ArgumentOutOfRangeException();
}
}
MudDialog.Close(Attached);
}
}