@inject ILogger<Details> Logger @inject IJSRuntime JSRuntime @inject ICatalogItemService CatalogItemService @inherits BlazorAdmin.Helpers.BlazorComponent @namespace BlazorAdmin.Pages.CatalogItemPage <div class="modal @_modalClass" tabindex="-1" role="dialog" style="display:@_modalDisplay"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Details @_item.Name</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close" @onclick="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> @if (_item == null) { <Spinner></Spinner> } else { <div class="container"> <div class="row"> @if (HasPicture) { <img class="col-md-6 esh-picture" src="@($"{_item.PictureUri}")"> } <dl class="col-md-@(HasPicture?"6":"12") dl-horizontal"> <dt> Name </dt> <dd> @_item.Name </dd> <dt> Description </dt> <dd> @_item.Description </dd> <dt> Brand </dt> <dd> @_item.CatalogBrand </dd> <dt> Type </dt> <dd> @_item.CatalogType </dd> <dt> Price </dt> <dd> @_item.Price </dd> </dl> </div> </div> } </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal" @onclick="Close">Close</button> <button class="btn btn-primary" @onclick="EditClick"> Edit </button> </div> </div> </div> </div> @if (_showDetailsModal) { <div class="modal-backdrop fade show"></div> } @code { [Parameter] public IEnumerable<CatalogBrand> Brands { get; set; } [Parameter] public IEnumerable<CatalogType> Types { get; set; } [Parameter] public EventCallback<int> OnEditClick { get; set; } private bool HasPicture => !string.IsNullOrEmpty(_item.PictureUri); private string _modalDisplay = "none;"; private string _modalClass = ""; private bool _showDetailsModal = false; private CatalogItem _item = new CatalogItem(); public async Task EditClick() { await OnEditClick.InvokeAsync(_item.Id); await Close(); } public async Task Open(int id) { Logger.LogInformation("Now loading... /Catalog/Details/{Id}", id); await new Css(JSRuntime).HideBodyOverflow(); _item = await CatalogItemService.GetById(id); _modalDisplay = "block;"; _modalClass = "Show"; _showDetailsModal = true; StateHasChanged(); } public async Task Close() { await new Css(JSRuntime).ShowBodyOverflow(); _modalDisplay = "none"; _modalClass = ""; _showDetailsModal = false; } }