2025-05-20 01:19:37 -03:00
|
|
|
@inject NavMenuService navMenuService
|
|
|
|
|
|
|
|
|
|
<div class="top-row ps-3 navbar navbar-dark border-bottom" style="padding: 0; border:0px solid red;">
|
|
|
|
|
<div class="container-fluid" style="padding:0; border:0px solid green;">
|
|
|
|
|
<a class="navbar-brand d-flex align-items-center" href="" style="height: 56px; border:0px solid yellow; display: block;">
|
|
|
|
|
@if (!navMenuService.Minimized)
|
|
|
|
|
{
|
|
|
|
|
<img src="images/Icono.png" alt="Logo" style="height: 50px; display: block; border:0px solid blue;" />
|
|
|
|
|
}
|
|
|
|
|
</a>
|
|
|
|
|
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
|
|
|
|
|
<span class="navbar-toggler-icon"></span>
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="@($"{NavMenuCssClass} nav-scrollable bg-dark text-white")" @onclick="ToggleNavMenu" style="padding-top:4px;">
|
|
|
|
|
<nav class="flex-column text-center">
|
|
|
|
|
<div class="nav-item px-2 py-0">
|
|
|
|
|
<NavLink class="nav-link text-white d-flex align-items-center gap-2 py-0 px-2" href="/DashboardPanel" Match="NavLinkMatch.All" activeClass="bg-secondary text-white">
|
|
|
|
|
<span class="oi oi-home" aria-hidden="true"></span>
|
|
|
|
|
@if (!navMenuService.Minimized)
|
|
|
|
|
{
|
|
|
|
|
<label class="mb-0">Home</label>
|
|
|
|
|
}
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<AuthorizeView Roles="Admin">
|
|
|
|
|
<div class="nav-item px-2 py-0">
|
|
|
|
|
<NavLink class="nav-link text-white d-flex align-items-center gap-2 py-0 px-2" href="roles" activeClass="bg-secondary text-white">
|
|
|
|
|
<span class="oi oi-shield" aria-hidden="true"></span>
|
|
|
|
|
@if (!navMenuService.Minimized)
|
|
|
|
|
{
|
|
|
|
|
<label class="mb-0">Roles</label>
|
|
|
|
|
}
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item px-2 py-0">
|
|
|
|
|
<NavLink class="nav-link text-white d-flex align-items-center gap-2 py-0 px-2" href="users" activeClass="bg-secondary text-white">
|
|
|
|
|
<span class="oi oi-people" aria-hidden="true"></span>
|
|
|
|
|
@if (!navMenuService.Minimized)
|
|
|
|
|
{
|
|
|
|
|
<label class="mb-0">Usuarios</label>
|
|
|
|
|
}
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
</AuthorizeView>
|
2025-06-27 13:52:22 -03:00
|
|
|
<div class="nav-item px-2 py-0">
|
|
|
|
|
<NavLink class="nav-link text-white d-flex align-items-center gap-2 py-0 px-2" @onclick="() => expStock = !expStock">
|
|
|
|
|
<span class="oi oi-box" aria-hidden="true"></span>
|
|
|
|
|
@if (!navMenuService.Minimized)
|
|
|
|
|
{
|
|
|
|
|
<label class="mb-0">Stock</label>
|
|
|
|
|
}
|
|
|
|
|
</NavLink>
|
|
|
|
|
|
|
|
|
|
@if (expStock)
|
|
|
|
|
{
|
|
|
|
|
<ul class="nav flex-column">
|
|
|
|
|
<!-- Productos -->
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/products" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<span class="oi oi-tags me-2 text-warning"></span> Productos
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- Divisiones de productos -->
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/productdivisions" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<span class="oi oi-grid-three-up me-2 text-info"></span> Divisiones
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- Unidades de medida -->
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/units" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<span class="oi oi-resize-both me-2 text-success"></span> Unidades
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/locations" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<span class="oi oi-map-marker me-2 text-success"></span> Ubicaciones
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/current" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<span class="oi oi-inbox me-2 text-info"></span> Stock actual
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/movements" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<span class="oi oi-loop-circular me-2 text-primary"></span> Movimientos
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
2025-08-18 00:47:37 -03:00
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/expeditions/create" activeClass="bg-secondary text-white fw-semibold">
|
2025-06-27 13:52:22 -03:00
|
|
|
<span class="oi oi-data-transfer-download me-2 text-danger"></span> Expediciones
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="stock/consumptions" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<span class="oi oi-check me-2 text-secondary"></span> Consumos
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
</ul>
|
|
|
|
|
}
|
|
|
|
|
</div>
|
2025-05-20 01:19:37 -03:00
|
|
|
|
|
|
|
|
<div class="nav-item px-2 py-0">
|
|
|
|
|
<NavLink class="nav-link text-white d-flex align-items-center gap-2 py-0 px-2" @onclick="() => expClientes = !expClientes">
|
|
|
|
|
<span class="oi oi-briefcase" aria-hidden="true"></span>
|
|
|
|
|
@if (!navMenuService.Minimized)
|
|
|
|
|
{
|
|
|
|
|
<label class="mb-0">Ventas</label>
|
|
|
|
|
}
|
|
|
|
|
</NavLink>
|
|
|
|
|
|
|
|
|
|
@if (expClientes)
|
|
|
|
|
{
|
|
|
|
|
<ul class="nav flex-column">
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="sales/customers/" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<i class="bi bi-person-lines-fill me-2 text-primary"></i> Clientes
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
2025-06-09 11:32:32 -03:00
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="quotes/dashboard" activeClass="bg-secondary text-white fw-semibold">
|
2025-05-20 01:19:37 -03:00
|
|
|
<i class="bi bi-receipt me-2 text-white"></i> Presupuesto
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="sales/institutions/" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<i class="bi bi-building me-2 text-info"></i> Instituciones
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="sales/patients/" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<i class="bi bi-person-heart me-2 text-danger"></i> Pacientes
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="sales/products/" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<i class="bi bi-box-seam me-2 text-warning"></i> Productos
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="sales/professionals/" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<i class="bi bi-person-badge me-2 text-info"></i> Profesionales
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="nav-item ps-4 py-0 border-start border-2 border-white">
|
|
|
|
|
<NavLink class="nav-link small py-0 px-2 text-start d-flex align-items-center" href="sales/people/" activeClass="bg-secondary text-white fw-semibold">
|
|
|
|
|
<i class="bi bi-people me-2 text-success"></i> Vendedores
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
</ul>
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="nav-item px-2 py-0">
|
|
|
|
|
<NavLink class="nav-link text-white d-flex align-items-center gap-2 py-0 px-2" href="tickets/ticketform/" activeClass="bg-secondary text-white">
|
|
|
|
|
<span class="oi oi-list-rich" aria-hidden="true"></span>
|
|
|
|
|
@if (!navMenuService.Minimized)
|
|
|
|
|
{
|
|
|
|
|
<label class="mb-0">Nuevo Ticket</label>
|
|
|
|
|
}
|
|
|
|
|
</NavLink>
|
|
|
|
|
</div>
|
|
|
|
|
</nav>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
@code {
|
|
|
|
|
private bool collapseNavMenu = true;
|
|
|
|
|
private bool minimizeNavMenu = false;
|
2025-06-27 13:52:22 -03:00
|
|
|
private bool expStock = true;
|
2025-05-20 12:30:57 -03:00
|
|
|
private bool expClientes = true;
|
2025-05-20 01:19:37 -03:00
|
|
|
|
|
|
|
|
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
|
|
|
|
|
|
|
|
|
|
[Parameter]
|
|
|
|
|
public EventCallback<bool> MinStatus { get; set; }
|
|
|
|
|
|
|
|
|
|
[CascadingParameter]
|
|
|
|
|
public IModalService Modal { get; set; } = default!;
|
|
|
|
|
|
|
|
|
|
private void ToggleNavMenu()
|
|
|
|
|
{
|
|
|
|
|
collapseNavMenu = !collapseNavMenu;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async void ToggleIconMenu()
|
|
|
|
|
{
|
|
|
|
|
minimizeNavMenu = !minimizeNavMenu;
|
|
|
|
|
await MinStatus.InvokeAsync(minimizeNavMenu);
|
|
|
|
|
}
|
|
|
|
|
}
|