Files
Servers/MoonlightServers.Frontend/Admin/Templates/ConfigFilesEditor.razor

77 lines
2.9 KiB
Plaintext

@using LucideBlazor
@using MoonlightServers.Shared.Admin.Templates
@using ShadcnBlazor.Accordions
@using ShadcnBlazor.Buttons
@using ShadcnBlazor.Fields
@using ShadcnBlazor.Inputs
<div class="mb-5 flex justify-end">
<Button @onclick="Add">
<PlusIcon/>
Create
</Button>
</div>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
@foreach (var file in FilesConfig.ConfigurationFiles)
{
<Accordion ClassName="-space-y-px" Type="AccordionType.Single">
<AccordionItem
ClassName="overflow-hidden border bg-card px-4 first:rounded-t-lg last:rounded-b-lg last:border-b"
Value="element">
<AccordionTrigger ClassName="hover:no-underline">
<div class="flex items-center gap-3">
<FileCogIcon/>
<span class="text-left">@file.Path</span>
</div>
</AccordionTrigger>
<AccordionContent ClassName="ps-7">
<FieldGroup>
<FieldSet>
<Field>
@{
var id = $"configFilePath{file.GetHashCode()}";
}
<FieldLabel for="@id">Path</FieldLabel>
<TextInputField
@bind-Value="file.Path"
id="@id"/>
</Field>
<Field>
@{
var id = $"configFileParser{file.GetHashCode()}";
}
<FieldLabel for="@id">Parser</FieldLabel>
<TextInputField
@bind-Value="file.Parser"
id="@id"/>
</Field>
</FieldSet>
<FieldSet>
<ConfigFileMappingEditor @bind-Value="file.Mappings" />
</FieldSet>
<Field Orientation="FieldOrientation.Horizontal" ClassName="justify-end">
<Button Variant="ButtonVariant.Destructive"
@onclick="() => Delete(file)">
Delete
</Button>
</Field>
</FieldGroup>
</AccordionContent>
</AccordionItem>
</Accordion>
}
</div>
@code
{
[Parameter] public UpdateFilesConfigDto FilesConfig { get; set; }
private void Add()
=> FilesConfig.ConfigurationFiles.Add(new());
private void Delete(UpdateConfigurationFileDto dto)
=> FilesConfig.ConfigurationFiles.Remove(dto);
}