302 lines
21 KiB
Plaintext
302 lines
21 KiB
Plaintext
@using Prefab.Web.Client.Services
|
|
@inherits LayoutComponentBase
|
|
|
|
<TelerikRootComponent>
|
|
<TelerikNotification @ref="GlobalNotification"
|
|
HorizontalPosition="@NotificationHorizontalPosition.Right"
|
|
VerticalPosition="@NotificationVerticalPosition.Top">
|
|
</TelerikNotification>
|
|
|
|
<!-- site -->
|
|
<div class="site">
|
|
<div class="site__container">
|
|
<!-- site__header -->
|
|
<header class="site__header">
|
|
<div class="header">
|
|
<div class="header__body">
|
|
<div class="search">
|
|
<form class="search__form">
|
|
<input class="search__input" type="search" placeholder="Search Query...">
|
|
<button class="search__button" type="submit">
|
|
<svg width="20px" height="20px">
|
|
<use xlink:href="images/sprite.svg#search-20"></use>
|
|
</svg>
|
|
</button>
|
|
<button class="search__button search-trigger" type="button">
|
|
<svg width="20px" height="20px">
|
|
<use xlink:href="images/sprite.svg#cross-20"></use>
|
|
</svg>
|
|
</button>
|
|
</form>
|
|
</div>
|
|
<button class="header__mobilemenu" type="button">
|
|
<svg width="22px" height="16px">
|
|
<use xlink:href="images/sprite.svg#menu"></use>
|
|
</svg>
|
|
</button>
|
|
<a href="/" class="header__logo">
|
|
<!-- logo -->
|
|
<svg class="logo" xmlns="http://www.w3.org/2000/svg" width="82px" height="24px">
|
|
@* <path d="M79.011,17.987 L79.011,15.978 C79.011,15.978 77.402,17.366 76.739,17.672 C76.074,17.979 75.110,17.987 74.043,17.987 C72.730,17.987 71.698,17.757 70.944,17.004 C70.191,16.252 70.001,15.282 70.001,13.892 C70.001,12.437 70.421,10.962 71.435,10.272 C72.450,9.581 73.878,9.020 75.924,8.947 L78.295,8.953 C78.295,7.563 77.586,6.768 76.168,6.768 C75.077,6.768 73.794,7.099 72.319,7.761 L71.085,5.235 C72.657,4.409 74.400,3.997 76.315,3.997 C78.149,3.997 79.555,4.397 80.532,5.198 C81.510,6 81.999,7.217 81.999,8.852 L81.999,17.987 L79.011,17.987 ZM78.295,11.636 L76.852,11.685 C75.769,11.718 74.963,11.914 74.434,12.273 C73.904,12.633 73.639,13.181 73.639,13.917 C73.639,14.971 74.242,15.297 75.448,15.297 C76.311,15.297 77.101,14.948 77.619,14.449 C78.135,13.951 78.295,13.590 78.295,12.764 L78.295,11.636 ZM57.289,24 C56.646,24 55,23.994 55,23.994 L55,20.995 C55,20.995 56.332,20.998 56.861,20.998 C59.189,20.998 59.962,17.898 59.962,17.898 L54,4 L58,4 L61.720,14.396 L65,4 L69,4 L62.989,19.741 C61.931,22.589 59.909,24 57.289,24 ZM49,0 L52,0 L52,18 L49,18 L49,0 ZM41.500,18 C40.163,18 38.953,17.368 38,16.358 L38,18 L35,18 L35,0 L38,0 L38,5.642 C38.953,4.632 40.163,4 41.500,4 C44.538,4 47,7.134 47,11 C47,14.866 44.538,18 41.500,18 ZM41,7 C39.343,7 38,8.791 38,11 C38,13.209 39.343,15 41,15 C42.657,15 44,13.209 44,11 C44,8.791 42.657,7 41,7 ZM25.157,14.338 C25.743,14.932 26.565,15.229 27.623,15.229 C28.444,15.229 29.222,15.144 29.954,14.973 C30.687,14.802 31.451,14.529 32,14.155 L32,17.036 C31.598,17.361 30.902,17.603 30.162,17.762 C29.421,17.921 28.518,18 27.452,18 C24,18 21,16 21,11 C21,8 22,4 27,4 C32,4 33,8 33,11 L33,12 L24.217,12 C24.257,13.162 24.571,13.744 25.157,14.338 ZM29.527,9 C29.510,8.081 29,7 27,7 C25,7 24.367,8.081 24.302,9 L29.527,9 ZM16,4.500 L10.977,18 L8,18 L3,4.500 L3,18 L0,18 L0,0 L5,0 L9.500,13.400 L14,0 L19,0 L19,18 L16,18 L16,4.500 Z"></path> *@
|
|
<text x="2" y="16" font-family="Arial, sans-serif" font-size="22" font-weight="600" fill="currentColor">
|
|
Prefab
|
|
</text>
|
|
<path class="logo__accent" d="M0,22 L52,22 L52,24 L0,24 L0,22"></path>
|
|
</svg>
|
|
<!-- logo / end -->
|
|
</a>
|
|
<NavMenu />
|
|
<div class="header__spring"></div>
|
|
<div class="header__indicator">
|
|
<button type="button" class="header__indicator-button indicator search-trigger">
|
|
<span class="indicator__area">
|
|
<svg class="indicator__icon" width="20px" height="20px">
|
|
<use xlink:href="images/sprite.svg#search-20"></use>
|
|
</svg>
|
|
</span>
|
|
</button>
|
|
</div>
|
|
<div class="header__indicator">
|
|
<a href="/wishlist" class="header__indicator-button indicator">
|
|
<span class="indicator__area">
|
|
<svg class="indicator__icon" width="20px" height="20px">
|
|
<use xlink:href="images/sprite.svg#heart-20"></use>
|
|
</svg>
|
|
</span>
|
|
</a>
|
|
</div>
|
|
<div class="header__indicator" data-dropdown-trigger="click">
|
|
<a href="/cart" class="header__indicator-button indicator">
|
|
<span class="indicator__area">
|
|
<span class="indicator__value" data-testid="mini-cart-count">@* @MiniCount() *@</span>
|
|
<svg class="indicator__icon" width="20px" height="20px">
|
|
<use xlink:href="images/sprite.svg#cart-20"></use>
|
|
</svg>
|
|
</span>
|
|
</a>
|
|
<div class="header__indicator-dropdown">
|
|
<div class="dropcart">
|
|
@* <div class="dropcart__products-list">
|
|
@if (miniCart?.Items?.Count > 0)
|
|
{
|
|
@foreach (var i in miniCart.Items)
|
|
{
|
|
<div class="dropcart__product">
|
|
<div class="dropcart__product-image">
|
|
<a href="/products">
|
|
<img src="images/logo.png" alt="@i.Sku">
|
|
</a>
|
|
</div>
|
|
<div class="dropcart__product-info">
|
|
<div class="dropcart__product-name"><a href="/products">@DisplayName(i.Sku)</a></div>
|
|
<div class="d-flex align-items-center gap-2">
|
|
<TelerikNumericTextBox Value="@i.Quantity" Min="1" Format="0" Width="80px"
|
|
ValueChanged="@(async (int v) => { await CartService.UpdateItemQuantityAsync(miniCartId, i.Id, v); miniCart = await CartService.GetCartAsync(miniCartId); StateHasChanged(); })" />
|
|
<span>@i.UnitPrice.ToString("C2")</span>
|
|
</div>
|
|
</div>
|
|
<button type="button" class="dropcart__product-remove button-remove" @onclick="() => RemoveMiniItem(i)">
|
|
<svg width="10px" height="10px">
|
|
<use xlink:href="images/sprite.svg#cross-10"></use>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<div class="p-2 text-muted">Your cart is empty.</div>
|
|
}
|
|
</div>
|
|
<div class="dropcart__totals">
|
|
<table>
|
|
<tr>
|
|
<th>Subtotal</th>
|
|
<td>@MiniSubtotal().ToString("C2")</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Shipping</th>
|
|
<td>Free Shipping</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Tax</th>
|
|
<td>$0.00</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Total</th>
|
|
<td>@MiniSubtotal().ToString("C2")</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="dropcart__buttons">
|
|
<a class="btn btn-secondary" href="/cart">View Cart</a>
|
|
<a class="btn btn-primary" href="/checkout">Checkout</a>
|
|
</div> *@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
<!-- site__header / end -->
|
|
<!-- site__body -->
|
|
<div class="site__body">
|
|
<!-- page -->
|
|
<div class="page">
|
|
<!-- page__body -->
|
|
<div class="page__body">
|
|
<ErrorBoundary @ref="_errorBoundary">
|
|
<ChildContent>
|
|
@Body
|
|
</ChildContent>
|
|
</ErrorBoundary>
|
|
</div>
|
|
<!-- page__body / end -->
|
|
</div>
|
|
<!-- page / end -->
|
|
</div>
|
|
<!-- site__body / end -->
|
|
<!-- site__footer -->
|
|
<footer class="site__footer">
|
|
<div class="footer">
|
|
<div class="container container--max--xl">
|
|
<div class="row g-custom-30">
|
|
<div class="col">
|
|
<div class="footer__widgets">
|
|
<div class="row g-custom-30 justify-content-between">
|
|
<div class="col-12 col-lg-4 col-sm-6 footer__aboutus">
|
|
<div class="footer-aboutus">
|
|
<div class="footer-aboutus__title">
|
|
<h4 class="footer-aboutus__header decor-header">About Us</h4>
|
|
</div>
|
|
<div class="footer-aboutus__text">
|
|
We are a leading provider of pre-fabricated solutions for the electrical and construction industries. Our products are designed to save time and reduce costs while maintaining the highest quality standards.
|
|
</div>
|
|
<ul class="footer-aboutus__contacts">
|
|
<li class="footer-aboutus__contacts-item">
|
|
<a href="">6504 111th Ave, Kenosha, WI 53142</a>
|
|
</li>
|
|
<li class="footer-aboutus__contacts-item"><a href="">info@wemsoftware.com</a></li>
|
|
<li class="footer-aboutus__contacts-item"><a href="">+1 (810) 232 9797</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-2 col-sm-6 col-md-3">
|
|
<div class="footer-links" data-collapse data-collapse-open-class="footer-links--open" data-collapse-item>
|
|
<div class="footer-links__title">
|
|
<h4 class="footer-links__header" data-collapse-trigger>
|
|
Information
|
|
<svg class="footer-links__header-arrow" width="9px" height="6px">
|
|
<use xlink:href="images/sprite.svg#arrow-down-9x6"></use>
|
|
</svg>
|
|
</h4>
|
|
</div>
|
|
<div class="footer-links__content" data-collapse-content>
|
|
<ul class="footer-links__list">
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">About Us</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Delivery Information</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Privacy Policy</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Brands</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Contact Us</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Returns</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Site Map</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-2 col-sm-6 col-md-3">
|
|
<div class="footer-links" data-collapse data-collapse-open-class="footer-links--open" data-collapse-item>
|
|
<div class="footer-links__title">
|
|
<h4 class="footer-links__header" data-collapse-trigger>
|
|
My Account
|
|
<svg class="footer-links__header-arrow" width="9px" height="6px">
|
|
<use xlink:href="images/sprite.svg#arrow-down-9x6"></use>
|
|
</svg>
|
|
</h4>
|
|
</div>
|
|
<div class="footer-links__content" data-collapse-content>
|
|
<ul class="footer-links__list">
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">My Account</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Order History</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Wish List</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Newsletter</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Specials</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Gift Certificates</a></li>
|
|
<li class="footer-links__item"><a href="" class="footer-links__link">Affiliate</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-4 footer__followus">
|
|
<div class="footer-followus">
|
|
<div class="footer-followus__title">
|
|
<h4 class="footer-followus__header">Follow Us</h4>
|
|
</div>
|
|
<div class="footer-followus__text">
|
|
Sign up for our newsletter to get the latest news, updates and special offers delivered directly to your inbox.
|
|
</div>
|
|
<form class="footer-followus__subscribe-form">
|
|
<input type="email" class="form-control form-control--footer" placeholder="Email address">
|
|
<button type="submit" class="btn btn-primary">Subscribe</button>
|
|
</form>
|
|
<ul class="footer-followus__social-links">
|
|
<li class="footer-followus__social-link"><a href="#" target="_blank"><i class="fab fa-facebook-f"></i></a></li>
|
|
<li class="footer-followus__social-link"><a href="#" target="_blank"><i class="fab fa-twitter"></i></a></li>
|
|
<li class="footer-followus__social-link"><a href="#" target="_blank"><i class="fab fa-youtube"></i></a></li>
|
|
<li class="footer-followus__social-link"><a href="#" target="_blank"><i class="fab fa-instagram"></i></a></li>
|
|
<li class="footer-followus__social-link"><a href="#" target="_blank"><i class="fas fa-rss"></i></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row g-custom-30 justify-content-between">
|
|
<div class="col-12 col-sm-auto">
|
|
<div class="copyright">
|
|
<!-- copyright -->
|
|
<span class="copyright__text">Prefab.Server © 2023-@DateTime.Now.Year. All Rights Reserved.</span>
|
|
<!-- copyright / end -->
|
|
</div>
|
|
</div>
|
|
<div class="footer__payments col-auto">
|
|
<img srcset="images/payments.png 1x, images/payments@2x.png 2x" src="images/payments.png" alt="">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
<!-- site__footer / end -->
|
|
</div>
|
|
</div>
|
|
<!-- site / end -->
|
|
</TelerikRootComponent>
|
|
|
|
<div id="blazor-error-ui" data-nosnippet>
|
|
An unhandled error has occurred.
|
|
<a href="." class="reload">Reload</a>
|
|
<span class="dismiss">🗙</span>
|
|
</div>
|
|
|
|
@code {
|
|
|
|
private ErrorBoundary? _errorBoundary;
|
|
private TelerikNotification GlobalNotification { get; set; } = new();
|
|
|
|
[Inject]
|
|
public INotificationService NotificationService { get; set; } = null!;
|
|
|
|
protected override void OnParametersSet()
|
|
{
|
|
_errorBoundary?.Recover();
|
|
}
|
|
|
|
protected override void OnAfterRender(bool firstRender)
|
|
{
|
|
if (!firstRender)
|
|
return;
|
|
|
|
NotificationService.Attach(GlobalNotification);
|
|
}
|
|
} |