@ -0,0 +1,50 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
namespace Catalog.API.Extensions | |||
{ | |||
public static class LinqSelectExtensions | |||
{ | |||
public static IEnumerable<SelectTryResult<TSource, TResult>> SelectTry<TSource, TResult>(this IEnumerable<TSource> enumerable, Func<TSource, TResult> selector) | |||
{ | |||
foreach (TSource element in enumerable) | |||
{ | |||
SelectTryResult<TSource, TResult> returnedValue; | |||
try | |||
{ | |||
returnedValue = new SelectTryResult<TSource, TResult>(element, selector(element), null); | |||
} | |||
catch (Exception ex) | |||
{ | |||
returnedValue = new SelectTryResult<TSource, TResult>(element, default(TResult), ex); | |||
} | |||
yield return returnedValue; | |||
} | |||
} | |||
public static IEnumerable<TResult> OnCaughtException<TSource, TResult>(this IEnumerable<SelectTryResult<TSource, TResult>> enumerable, Func<Exception, TResult> exceptionHandler) | |||
{ | |||
return enumerable.Select(x => x.CaughtException == null ? x.Result : exceptionHandler(x.CaughtException)); | |||
} | |||
public static IEnumerable<TResult> OnCaughtException<TSource, TResult>(this IEnumerable<SelectTryResult<TSource, TResult>> enumerable, Func<TSource, Exception, TResult> exceptionHandler) | |||
{ | |||
return enumerable.Select(x => x.CaughtException == null ? x.Result : exceptionHandler(x.Source, x.CaughtException)); | |||
} | |||
public class SelectTryResult<TSource, TResult> | |||
{ | |||
internal SelectTryResult(TSource source, TResult result, Exception exception) | |||
{ | |||
Source = source; | |||
Result = result; | |||
CaughtException = exception; | |||
} | |||
public TSource Source { get; private set; } | |||
public TResult Result { get; private set; } | |||
public Exception CaughtException { get; private set; } | |||
} | |||
} | |||
} |
@ -0,0 +1,8 @@ | |||
CatalogBrand | |||
Azure | |||
.NET | |||
Visual Studio | |||
SQL Server | |||
Other | |||
CatalogBrandTestOne | |||
CatalogBrandTestTwo |
@ -0,0 +1,13 @@ | |||
CatalogTypeName,CatalogBrandName,Description,Name,Price,PictureUri | |||
T-Shirt,.NET,".NET Bot Black Hoodie, and more",.NET Bot Black Hoodie,19.5,1.png | |||
Mug,.NET,.NET Black & White Mug,.NET Black & White Mug,8.50,2.png | |||
T-Shirt,Other,Prism White T-Shirt,Prism White T-Shirt,12,3.png | |||
T-Shirt,.NET,.NET Foundation T-shirt,.NET Foundation T-shirt,12,4.png | |||
Sheet,Other,Roslyn Red Sheet,Roslyn Red Sheet,8.5,5.png | |||
T-Shirt,.NET,.NET Blue Hoodie,.NET Blue Hoodie,12,6.png | |||
T-Shirt,Other,Roslyn Red T-Shirt,Roslyn Red T-Shirt",12,7.png | |||
T-Shirt,Other,Kudu Purple Hoodie,Kudu Purple Hoodie,8.5,8.png | |||
Mug,Other,Cup<T> White Mug,Cup<T> White Mug,12,9.png | |||
Sheet,.NET,.NET Foundation Sheet,.NET Foundation Sheet,12,10.png | |||
Sheet,.NET,Cup<T> Sheet,Cup<T> Sheet,8.5,11.png | |||
T-Shirt,Other,Prism White TShirt,Prism White TShirt,12,12.png |
@ -0,0 +1,7 @@ | |||
CatalogType | |||
Mug | |||
T-Shirt | |||
Sheet | |||
USB Memory Stick | |||
CatalogTypeTestOne | |||
CatalogTypeTestTwo |
@ -0,0 +1,50 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
namespace Identity.API.Extensions | |||
{ | |||
public static class LinqSelectExtensions | |||
{ | |||
public static IEnumerable<SelectTryResult<TSource, TResult>> SelectTry<TSource, TResult>(this IEnumerable<TSource> enumerable, Func<TSource, TResult> selector) | |||
{ | |||
foreach (TSource element in enumerable) | |||
{ | |||
SelectTryResult<TSource, TResult> returnedValue; | |||
try | |||
{ | |||
returnedValue = new SelectTryResult<TSource, TResult>(element, selector(element), null); | |||
} | |||
catch (Exception ex) | |||
{ | |||
returnedValue = new SelectTryResult<TSource, TResult>(element, default(TResult), ex); | |||
} | |||
yield return returnedValue; | |||
} | |||
} | |||
public static IEnumerable<TResult> OnCaughtException<TSource, TResult>(this IEnumerable<SelectTryResult<TSource, TResult>> enumerable, Func<Exception, TResult> exceptionHandler) | |||
{ | |||
return enumerable.Select(x => x.CaughtException == null ? x.Result : exceptionHandler(x.CaughtException)); | |||
} | |||
public static IEnumerable<TResult> OnCaughtException<TSource, TResult>(this IEnumerable<SelectTryResult<TSource, TResult>> enumerable, Func<TSource, Exception, TResult> exceptionHandler) | |||
{ | |||
return enumerable.Select(x => x.CaughtException == null ? x.Result : exceptionHandler(x.Source, x.CaughtException)); | |||
} | |||
public class SelectTryResult<TSource, TResult> | |||
{ | |||
internal SelectTryResult(TSource source, TResult result, Exception exception) | |||
{ | |||
Source = source; | |||
Result = result; | |||
CaughtException = exception; | |||
} | |||
public TSource Source { get; private set; } | |||
public TResult Result { get; private set; } | |||
public Exception CaughtException { get; private set; } | |||
} | |||
} | |||
} |
@ -0,0 +1,2 @@ | |||
CardHolderName,CardNumber,CardType,City,Country,Email,Expiration,LastName,Name,PhoneNumber,UserName,ZipCode,State,Street,SecurityNumber,NormalizedEmail,NormalizedUserName,Password | |||
DemoUser,4012888888881881,1,Redmond,U.S.,demouser@microsoft.com,12/20,DemoLastName,DemoUser,1234567890,demouser@microsoft.com,98052,WA,15703 NE 61st Ct,535,DEMOUSER@MICROSOFT.COM,DEMOUSER@MICROSOFT.COM,Pass@word1 |
@ -0,0 +1,50 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
namespace Ordering.API.Extensions | |||
{ | |||
public static class LinqSelectExtensions | |||
{ | |||
public static IEnumerable<SelectTryResult<TSource, TResult>> SelectTry<TSource, TResult>(this IEnumerable<TSource> enumerable, Func<TSource, TResult> selector) | |||
{ | |||
foreach (TSource element in enumerable) | |||
{ | |||
SelectTryResult<TSource, TResult> returnedValue; | |||
try | |||
{ | |||
returnedValue = new SelectTryResult<TSource, TResult>(element, selector(element), null); | |||
} | |||
catch (Exception ex) | |||
{ | |||
returnedValue = new SelectTryResult<TSource, TResult>(element, default(TResult), ex); | |||
} | |||
yield return returnedValue; | |||
} | |||
} | |||
public static IEnumerable<TResult> OnCaughtException<TSource, TResult>(this IEnumerable<SelectTryResult<TSource, TResult>> enumerable, Func<Exception, TResult> exceptionHandler) | |||
{ | |||
return enumerable.Select(x => x.CaughtException == null ? x.Result : exceptionHandler(x.CaughtException)); | |||
} | |||
public static IEnumerable<TResult> OnCaughtException<TSource, TResult>(this IEnumerable<SelectTryResult<TSource, TResult>> enumerable, Func<TSource, Exception, TResult> exceptionHandler) | |||
{ | |||
return enumerable.Select(x => x.CaughtException == null ? x.Result : exceptionHandler(x.Source, x.CaughtException)); | |||
} | |||
public class SelectTryResult<TSource, TResult> | |||
{ | |||
internal SelectTryResult(TSource source, TResult result, Exception exception) | |||
{ | |||
Source = source; | |||
Result = result; | |||
CaughtException = exception; | |||
} | |||
public TSource Source { get; private set; } | |||
public TResult Result { get; private set; } | |||
public Exception CaughtException { get; private set; } | |||
} | |||
} | |||
} |
@ -0,0 +1,7 @@ | |||
namespace Microsoft.eShopOnContainers.Services.Ordering.API | |||
{ | |||
public class OrderingSettings | |||
{ | |||
public bool UseCustomizationData { get; set; } | |||
} | |||
} |
@ -0,0 +1,5 @@ | |||
CardType | |||
Amex | |||
Visa | |||
MasterCard | |||
Capital One |
@ -0,0 +1,7 @@ | |||
OrderStatus | |||
Submitted | |||
AwaitingValidation | |||
StockConfirmed | |||
Paid | |||
Shipped | |||
Cancelled |
@ -0,0 +1,97 @@ | |||
using Microsoft.AspNetCore.Builder; | |||
using Microsoft.AspNetCore.Hosting; | |||
using Microsoft.eShopOnContainers.WebMVC; | |||
using Microsoft.Extensions.DependencyInjection; | |||
using Microsoft.Extensions.Logging; | |||
using Microsoft.Extensions.Options; | |||
using System; | |||
using System.IO; | |||
using System.IO.Compression; | |||
using System.Linq; | |||
namespace WebMVC.Infrastructure | |||
{ | |||
public class WebContextSeed | |||
{ | |||
public static void Seed(IApplicationBuilder applicationBuilder, IHostingEnvironment env, ILoggerFactory loggerFactory) | |||
{ | |||
var log = loggerFactory.CreateLogger("WebMVC seed"); | |||
var settings = (AppSettings)applicationBuilder | |||
.ApplicationServices.GetRequiredService<IOptions<AppSettings>>().Value; | |||
var useCustomizationData = settings.UseCustomizationData; | |||
var contentRootPath = env.ContentRootPath; | |||
var webroot = env.WebRootPath; | |||
if (useCustomizationData) | |||
{ | |||
GetPreconfiguredImages(contentRootPath, webroot, log); | |||
GetPreconfiguredCSS(contentRootPath, webroot, log); | |||
} | |||
} | |||
static void GetPreconfiguredCSS(string contentRootPath, string webroot, ILogger log) | |||
{ | |||
try | |||
{ | |||
string overrideCssFile = Path.Combine(contentRootPath, "Setup", "override.css"); | |||
if (!File.Exists(overrideCssFile)) | |||
{ | |||
log.LogError($" override css file '{overrideCssFile}' does not exists."); | |||
return; | |||
} | |||
string destinationFilename = Path.Combine(webroot, "css", "override.css"); | |||
File.Copy(overrideCssFile, destinationFilename, true ); | |||
} | |||
catch (Exception ex) | |||
{ | |||
log.LogError($"Exception in method GetPreconfiguredCSS WebMVC. Exception Message={ex.Message}"); | |||
} | |||
} | |||
static void GetPreconfiguredImages(string contentRootPath, string webroot, ILogger log) | |||
{ | |||
try | |||
{ | |||
string imagesZipFile = Path.Combine(contentRootPath, "Setup", "images.zip"); | |||
if (!File.Exists(imagesZipFile)) | |||
{ | |||
log.LogError($" zip file '{imagesZipFile}' does not exists."); | |||
return; | |||
} | |||
string imagePath = Path.Combine(webroot, "images"); | |||
string[] imageFiles = Directory.GetFiles(imagePath).Select(file => Path.GetFileName(file)).ToArray(); | |||
using (ZipArchive zip = ZipFile.Open(imagesZipFile, ZipArchiveMode.Read)) | |||
{ | |||
foreach (ZipArchiveEntry entry in zip.Entries) | |||
{ | |||
if (imageFiles.Contains(entry.Name)) | |||
{ | |||
string destinationFilename = Path.Combine(imagePath, entry.Name); | |||
if (File.Exists(destinationFilename)) | |||
{ | |||
File.Delete(destinationFilename); | |||
} | |||
entry.ExtractToFile(destinationFilename); | |||
} | |||
else | |||
{ | |||
log.LogWarning($"Skip file '{entry.Name}' in zipfile '{imagesZipFile}'"); | |||
} | |||
} | |||
} | |||
} | |||
catch ( Exception ex ) | |||
{ | |||
log.LogError($"Exception in method GetPreconfiguredImages WebMVC. Exception Message={ex.Message}"); | |||
} | |||
} | |||
} | |||
} |
@ -0,0 +1,6 @@ | |||
.esh-catalog-button { | |||
background-color: #FF001b; | |||
border: 2px; | |||
color: #fff; | |||
cursor: pointer; | |||
} |
@ -0,0 +1,42 @@ | |||
[ | |||
{ | |||
"outputFile": "wwwroot/css/orders/orders.component.css", | |||
"inputFile": "wwwroot/css/orders/orders.component.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/orders/orders-new/orders-new.component.css", | |||
"inputFile": "wwwroot/css/orders/orders-new/orders-new.component.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/orders/orders-detail/orders-detail.component.css", | |||
"inputFile": "wwwroot/css/orders/orders-detail/orders-detail.component.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/catalog/catalog.component.css", | |||
"inputFile": "wwwroot/css/catalog/catalog.component.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/basket/basket.component.css", | |||
"inputFile": "wwwroot/css/basket/basket.component.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/basket/basket-status/basket-status.component.css", | |||
"inputFile": "wwwroot/css/basket/basket-status/basket-status.component.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/shared/components/header/header.css", | |||
"inputFile": "wwwroot/css/shared/components/header/header.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/shared/components/identity/identity.css", | |||
"inputFile": "wwwroot/css/shared/components/identity/identity.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/shared/components/pager/pager.css", | |||
"inputFile": "wwwroot/css/shared/components/pager/pager.scss" | |||
}, | |||
{ | |||
"outputFile": "wwwroot/css/app.component.css", | |||
"inputFile": "wwwroot/css/app.component.scss" | |||
} | |||
] |
@ -0,0 +1,49 @@ | |||
{ | |||
"compilers": { | |||
"less": { | |||
"autoPrefix": "", | |||
"cssComb": "none", | |||
"ieCompat": true, | |||
"strictMath": false, | |||
"strictUnits": false, | |||
"relativeUrls": true, | |||
"rootPath": "", | |||
"sourceMapRoot": "", | |||
"sourceMapBasePath": "", | |||
"sourceMap": false | |||
}, | |||
"sass": { | |||
"includePath": "", | |||
"indentType": "space", | |||
"indentWidth": 2, | |||
"outputStyle": "expanded", | |||
"Precision": 5, | |||
"relativeUrls": true, | |||
"sourceMapRoot": "", | |||
"sourceMap": false | |||
}, | |||
"stylus": { | |||
"sourceMap": false | |||
}, | |||
"babel": { | |||
"sourceMap": false | |||
}, | |||
"coffeescript": { | |||
"bare": false, | |||
"runtimeMode": "node", | |||
"sourceMap": false | |||
} | |||
}, | |||
"minifiers": { | |||
"css": { | |||
"enabled": true, | |||
"termSemicolons": true, | |||
"gzip": false | |||
}, | |||
"javascript": { | |||
"enabled": true, | |||
"termSemicolons": true, | |||
"gzip": false | |||
} | |||
} | |||
} |
@ -0,0 +1,58 @@ | |||
// Colors | |||
$color-brand: #00A69C; | |||
$color-brand-dark: darken($color-brand, 10%); | |||
$color-brand-darker: darken($color-brand, 20%); | |||
$color-brand-bright: lighten($color-brand, 10%); | |||
$color-brand-brighter: lighten($color-brand, 20%); | |||
$color-secondary: #83D01B; | |||
$color-secondary-dark: darken($color-secondary, 5%); | |||
$color-secondary-darker: darken($color-secondary, 20%); | |||
$color-secondary-bright: lighten($color-secondary, 10%); | |||
$color-secondary-brighter: lighten($color-secondary, 20%); | |||
$color-background-dark: #333333; | |||
$color-background-darker: #000000; | |||
$color-background-bright: #EEEEFF; | |||
$color-background-brighter: #FFFFFF; | |||
$color-foreground-dark: #333333; | |||
$color-foreground-darker: #000000; | |||
$color-foreground-bright: #EEEEEE; | |||
$color-foreground-brighter: #FFFFFF; | |||
// Animations | |||
$animation-speed-default: .35s; | |||
$animation-speed-slow: .5s; | |||
$animation-speed-fast: .15s; | |||
// Fonts | |||
$font-weight-light: 200; | |||
$font-weight-semilight: 300; | |||
$font-weight-normal: 400; | |||
$font-weight-semibold: 600; | |||
$font-weight-bold: 700; | |||
$font-size-xs: .65rem; // 10.4px | |||
$font-size-s: .85rem; // 13.6px | |||
$font-size-m: 1rem; // 16px | |||
$font-size-l: 1.25rem; // 20px | |||
$font-size-xl: 1.5rem; // 24px | |||
// Medias | |||
$media-screen-xxs: 360px; | |||
$media-screen-xs: 640px; | |||
$media-screen-s: 768px; | |||
$media-screen-m: 1024px; | |||
$media-screen-l: 1280px; | |||
$media-screen-xl: 1440px; | |||
$media-screen-xxl: 1680px; | |||
$media-screen-xxxl: 1920px; | |||
// Borders | |||
$border-light: 1px; | |||
// Images | |||
$image_path: '../../images/'; | |||
$image-main_banner: '#{$image_path}main_banner.png'; | |||
$image-arrow_down: '#{$image_path}arrow-down.png'; |
@ -1,20 +1,14 @@ | |||
.esh-app-footer { | |||
background-color: #000000; | |||
border-top: 1px solid #EEEEEE; | |||
margin-top: 2.5rem; | |||
padding-bottom: 2.5rem; | |||
padding-top: 2.5rem; | |||
width: 100%; | |||
.esh-app-footer { | |||
background-color: #000000; | |||
border-top: 1px solid #EEEEEE; | |||
margin-top: 2.5rem; | |||
padding-bottom: 2.5rem; | |||
padding-top: 2.5rem; | |||
width: 100%; | |||
} | |||
.esh-app-footer-brand { | |||
height: 50px; | |||
width: 230px; | |||
height: 50px; | |||
width: 230px; | |||
} | |||
.esh-app-footer-text { | |||
color: #83D01B; | |||
line-height: 50px; | |||
text-align: right; | |||
width: 100%; | |||
} |
@ -0,0 +1,23 @@ | |||
@import './variables'; | |||
.esh-app { | |||
&-footer { | |||
$margin: 2.5rem; | |||
$padding: 2.5rem; | |||
background-color: $color-background-darker; | |||
border-top: $border-light solid $color-foreground-bright; | |||
margin-top: $margin; | |||
padding-bottom: $padding; | |||
padding-top: $padding; | |||
width: 100%; | |||
$height: 50px; | |||
&-brand { | |||
height: $height; | |||
width: 230px; | |||
} | |||
} | |||
} |
@ -1,38 +1,39 @@ | |||
.esh-basketstatus { | |||
cursor: pointer; | |||
display: inline-block; | |||
float: right; | |||
position: relative; | |||
transition: all 0.35s; | |||
.esh-basketstatus { | |||
cursor: pointer; | |||
display: inline-block; | |||
float: right; | |||
position: relative; | |||
transition: all 0.35s; | |||
} | |||
.esh-basketstatus.is-disabled { | |||
opacity: .5; | |||
pointer-events: none; | |||
} | |||
.esh-basketstatus.is-disabled { | |||
opacity: .5; | |||
pointer-events: none; | |||
} | |||
.esh-basketstatus-image { | |||
height: 36px; | |||
margin-top: .5rem; | |||
height: 36px; | |||
margin-top: .5rem; | |||
} | |||
.esh-basketstatus-badge { | |||
background-color: #83D01B; | |||
border-radius: 50%; | |||
color: #FFFFFF; | |||
display: block; | |||
height: 1.5rem; | |||
left: 50%; | |||
position: absolute; | |||
text-align: center; | |||
top: 0; | |||
transform: translateX(-38%); | |||
transition: all 0.35s; | |||
width: 1.5rem; | |||
background-color: #83D01B; | |||
border-radius: 50%; | |||
color: #FFFFFF; | |||
display: block; | |||
height: 1.5rem; | |||
left: 50%; | |||
position: absolute; | |||
text-align: center; | |||
top: 0; | |||
transform: translateX(-38%); | |||
transition: all 0.35s; | |||
width: 1.5rem; | |||
} | |||
.esh-basketstatus:hover .esh-basketstatus-badge { | |||
background-color: transparent; | |||
color: #75b918; | |||
transition: all 0.35s; | |||
background-color: transparent; | |||
color: #75b918; | |||
transition: all 0.35s; | |||
} | |||
@ -0,0 +1,41 @@ | |||
@import '../../variables'; | |||
.esh-basketstatus { | |||
cursor: pointer; | |||
display: inline-block; | |||
float: right; | |||
position: relative; | |||
transition: all $animation-speed-default; | |||
&.is-disabled { | |||
opacity: .5; | |||
pointer-events: none; | |||
} | |||
&-image { | |||
height: 36px; | |||
margin-top: .5rem; | |||
} | |||
&-badge { | |||
$size: 1.5rem; | |||
background-color: $color-secondary; | |||
border-radius: 50%; | |||
color: $color-foreground-brighter; | |||
display: block; | |||
height: $size; | |||
left: 50%; | |||
position: absolute; | |||
text-align: center; | |||
top: 0; | |||
transform: translateX(-38%); | |||
transition: all $animation-speed-default; | |||
width: $size; | |||
} | |||
&:hover &-badge { | |||
background-color: transparent; | |||
color: $color-secondary-dark; | |||
transition: all $animation-speed-default; | |||
} | |||
} |
@ -1,78 +1,79 @@ | |||
.esh-basket { | |||
min-height: 80vh; | |||
.esh-basket { | |||
min-height: 80vh; | |||
} | |||
.esh-basket-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
} | |||
.esh-basket-titles--clean { | |||
padding-bottom: 0; | |||
padding-top: 0; | |||
padding-bottom: 0; | |||
padding-top: 0; | |||
} | |||
.esh-basket-title { | |||
text-transform: uppercase; | |||
text-transform: uppercase; | |||
} | |||
.esh-basket-items--border { | |||
border-bottom: 1px solid #EEEEEE; | |||
padding: .5rem 0; | |||
border-bottom: 1px solid #EEEEEE; | |||
padding: .5rem 0; | |||
} | |||
.esh-basket-items--border:last-of-type { | |||
border-color: transparent; | |||
} | |||
.esh-basket-items--border:last-of-type { | |||
border-color: transparent; | |||
} | |||
.esh-basket-items-margin-left1 { | |||
margin-left: 1px; | |||
} | |||
.esh-basket-item { | |||
font-size: 1rem; | |||
font-weight: 300; | |||
font-size: 1rem; | |||
font-weight: 300; | |||
} | |||
.esh-basket-item--middle { | |||
line-height: 8rem; | |||
line-height: 8rem; | |||
} | |||
@media screen and (max-width: 1024px) { | |||
.esh-basket-item--middle { | |||
line-height: 1rem; | |||
} | |||
.esh-basket-item--middle { | |||
line-height: 1rem; | |||
} | |||
} | |||
.esh-basket-item--mark { | |||
color: #00A69C; | |||
color: #00A69C; | |||
} | |||
.esh-basket-image { | |||
height: 8rem; | |||
height: 8rem; | |||
} | |||
.esh-basket-input { | |||
line-height: 1rem; | |||
width: 100%; | |||
line-height: 1rem; | |||
width: 100%; | |||
} | |||
.esh-basket-checkout { | |||
border: none; | |||
border-radius: 0; | |||
background-color: #83D01B; | |||
color: #FFFFFF; | |||
display: inline-block; | |||
font-size: 1rem; | |||
font-weight: 400; | |||
margin-top: 1rem; | |||
padding: 1rem 1.5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
transition: all 0.35s; | |||
background-color: #83D01B; | |||
border: 0; | |||
border-radius: 0; | |||
color: #FFFFFF; | |||
display: inline-block; | |||
font-size: 1rem; | |||
font-weight: 400; | |||
margin-top: 1rem; | |||
padding: 1rem 1.5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
transition: all 0.35s; | |||
} | |||
.esh-basket-checkout:hover { | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
} | |||
.esh-basket-margin12{ | |||
margin-left: 12px; | |||
} |
@ -0,0 +1,89 @@ | |||
@import '../variables'; | |||
@mixin margin-left($distance) { | |||
margin-left: $distance; | |||
} | |||
.esh-basket { | |||
min-height: 80vh; | |||
&-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
&--clean { | |||
padding-bottom: 0; | |||
padding-top: 0; | |||
} | |||
} | |||
&-title { | |||
text-transform: uppercase; | |||
} | |||
&-items { | |||
&--border { | |||
border-bottom: $border-light solid $color-foreground-bright; | |||
padding: .5rem 0; | |||
&:last-of-type { | |||
border-color: transparent; | |||
} | |||
} | |||
&-margin-left1 { | |||
@include margin-left(1px); | |||
} | |||
} | |||
$item-height: 8rem; | |||
&-item { | |||
font-size: $font-size-m; | |||
font-weight: $font-weight-semilight; | |||
&--middle { | |||
line-height: $item-height; | |||
@media screen and (max-width: $media-screen-m) { | |||
line-height: $font-size-m; | |||
} | |||
} | |||
&--mark { | |||
color: $color-brand; | |||
} | |||
} | |||
&-image { | |||
height: $item-height; | |||
} | |||
&-input { | |||
line-height: 1rem; | |||
width: 100%; | |||
} | |||
&-checkout { | |||
background-color: $color-secondary; | |||
border: 0; | |||
border-radius: 0; | |||
color: $color-foreground-brighter; | |||
display: inline-block; | |||
font-size: 1rem; | |||
font-weight: $font-weight-normal; | |||
margin-top: 1rem; | |||
padding: 1rem 1.5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
transition: all $animation-speed-default; | |||
&:hover { | |||
background-color: $color-secondary-darker; | |||
transition: all $animation-speed-default; | |||
} | |||
} | |||
} | |||
@ -1,147 +1,149 @@ | |||
.esh-catalog-hero { | |||
background-image: url("../../images/main_banner.png"); | |||
background-size: cover; | |||
height: 260px; | |||
width: 100%; | |||
.esh-catalog-hero { | |||
background-image: url("../../images/main_banner.png"); | |||
background-size: cover; | |||
height: 260px; | |||
width: 100%; | |||
} | |||
.esh-catalog-title { | |||
position: relative; | |||
top: 74.28571px; | |||
position: relative; | |||
top: 74.28571px; | |||
} | |||
.esh-catalog-filters { | |||
background-color: #00A69C; | |||
height: 65px; | |||
background-color: #00A69C; | |||
height: 65px; | |||
} | |||
.esh-catalog-filter { | |||
background-color: transparent; | |||
border-color: #00d9cc; | |||
color: #FFFFFF; | |||
cursor: pointer; | |||
margin-right: 1rem; | |||
margin-top: .5rem; | |||
outline-color: #83D01B; | |||
padding-bottom: 0; | |||
padding-left: 0.5rem; | |||
padding-right: 0.5rem; | |||
padding-top: 1.5rem; | |||
min-width: 140px; | |||
-webkit-appearance: none; | |||
} | |||
.esh-catalog-filter option { | |||
background-color: #00A69C; | |||
} | |||
-webkit-appearance: none; | |||
background-color: transparent; | |||
border-color: #00d9cc; | |||
color: #FFFFFF; | |||
cursor: pointer; | |||
margin-right: 1rem; | |||
margin-top: .5rem; | |||
min-width: 140px; | |||
outline-color: #83D01B; | |||
padding-bottom: 0; | |||
padding-left: 0.5rem; | |||
padding-right: 0.5rem; | |||
padding-top: 1.5rem; | |||
} | |||
.esh-catalog-filter option { | |||
background-color: #00A69C; | |||
} | |||
.esh-catalog-label { | |||
display: inline-block; | |||
position: relative; | |||
z-index: 0; | |||
} | |||
.esh-catalog-label::before { | |||
color: rgba(255, 255, 255, 0.5); | |||
content: attr(data-title); | |||
font-size: 0.65rem; | |||
margin-top: 0.65rem; | |||
margin-left: 0.5rem; | |||
position: absolute; | |||
text-transform: uppercase; | |||
z-index: 1; | |||
} | |||
.esh-catalog-label::after { | |||
background-image: url("../../images/arrow-down.png"); | |||
height: 7px; | |||
content: ''; | |||
position: absolute; | |||
right: 1.5rem; | |||
top: 2.5rem; | |||
width: 10px; | |||
z-index: 1; | |||
} | |||
display: inline-block; | |||
position: relative; | |||
z-index: 0; | |||
} | |||
.esh-catalog-label::before { | |||
color: rgba(255, 255, 255, 0.5); | |||
content: attr(data-title); | |||
font-size: 0.65rem; | |||
margin-left: 0.5rem; | |||
margin-top: 0.65rem; | |||
position: absolute; | |||
text-transform: uppercase; | |||
z-index: 1; | |||
} | |||
.esh-catalog-label::after { | |||
background-image: url("../../images/arrow-down.png"); | |||
content: ''; | |||
height: 7px; | |||
position: absolute; | |||
right: 1.5rem; | |||
top: 2.5rem; | |||
width: 10px; | |||
z-index: 1; | |||
} | |||
.esh-catalog-send { | |||
background-color: #83D01B; | |||
color: #FFFFFF; | |||
cursor: pointer; | |||
font-size: 1rem; | |||
transform: translateY(.5rem); | |||
padding: 0.5rem; | |||
transition: all 0.35s; | |||
background-color: #83D01B; | |||
color: #FFFFFF; | |||
cursor: pointer; | |||
font-size: 1rem; | |||
margin-top: -1.5rem; | |||
padding: 0.5rem; | |||
transition: all 0.35s; | |||
} | |||
.esh-catalog-send:hover { | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
} | |||
.esh-catalog-send:hover { | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
} | |||
.esh-catalog-items { | |||
margin-top: 1rem; | |||
margin-top: 1rem; | |||
} | |||
.esh-catalog-item { | |||
text-align: center; | |||
margin-bottom: 1.5rem; | |||
width: 33%; | |||
display: inline-block; | |||
float: none !important; | |||
margin-bottom: 1.5rem; | |||
text-align: center; | |||
width: 33%; | |||
display: inline-block; | |||
float: none !important; | |||
} | |||
@media screen and (max-width: 1024px) { | |||
.esh-catalog-item { | |||
width: 50%; | |||
} | |||
.esh-catalog-item { | |||
width: 50%; | |||
} | |||
} | |||
@media screen and (max-width: 768px) { | |||
.esh-catalog-item { | |||
width: 100%; | |||
} | |||
.esh-catalog-item { | |||
width: 100%; | |||
} | |||
} | |||
.esh-catalog-thumbnail { | |||
max-width: 370px; | |||
width: 100%; | |||
max-width: 370px; | |||
width: 100%; | |||
} | |||
.esh-catalog-button { | |||
background-color: #83D01B; | |||
border: none; | |||
color: #FFFFFF; | |||
cursor: pointer; | |||
font-size: 1rem; | |||
height: 3rem; | |||
margin-top: 1rem; | |||
transition: all 0.35s; | |||
width: 80%; | |||
} | |||
.esh-catalog-button.is-disabled { | |||
opacity: .5; | |||
pointer-events: none; | |||
} | |||
.esh-catalog-button:hover { | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
} | |||
background-color: #83D01B; | |||
border: 0; | |||
color: #FFFFFF; | |||
cursor: pointer; | |||
font-size: 1rem; | |||
height: 3rem; | |||
margin-top: 1rem; | |||
transition: all 0.35s; | |||
width: 80%; | |||
} | |||
.esh-catalog-button.is-disabled { | |||
opacity: .5; | |||
pointer-events: none; | |||
} | |||
.esh-catalog-button:hover { | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
} | |||
.esh-catalog-name { | |||
font-size: 1rem; | |||
font-weight: 300; | |||
margin-top: .5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
font-size: 1rem; | |||
font-weight: 300; | |||
margin-top: .5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
} | |||
.esh-catalog-price { | |||
text-align: center; | |||
font-weight: 900; | |||
font-size: 28px; | |||
font-size: 28px; | |||
font-weight: 900; | |||
text-align: center; | |||
} | |||
.esh-catalog-price::before { | |||
content: '$'; | |||
} | |||
.esh-catalog-price::before { | |||
content: '$'; | |||
} |
@ -0,0 +1,154 @@ | |||
@import '../variables'; | |||
.esh-catalog { | |||
$banner-height: 260px; | |||
&-hero { | |||
background-image: url($image-main_banner); | |||
background-size: cover; | |||
height: $banner-height; | |||
width: 100%; | |||
} | |||
&-title { | |||
position: relative; | |||
top: $banner-height / 3.5; | |||
} | |||
$filter-height: 65px; | |||
&-filters { | |||
background-color: $color-brand; | |||
height: $filter-height; | |||
} | |||
$filter-padding: .5rem; | |||
&-filter { | |||
-webkit-appearance: none; | |||
background-color: transparent; | |||
border-color: $color-brand-bright; | |||
color: $color-foreground-brighter; | |||
cursor: pointer; | |||
margin-right: 1rem; | |||
margin-top: .5rem; | |||
min-width: 140px; | |||
outline-color: $color-secondary; | |||
padding-bottom: 0; | |||
padding-left: $filter-padding; | |||
padding-right: $filter-padding; | |||
padding-top: $filter-padding * 3; | |||
option { | |||
background-color: $color-brand; | |||
} | |||
} | |||
&-label { | |||
display: inline-block; | |||
position: relative; | |||
z-index: 0; | |||
&::before { | |||
color: rgba($color-foreground-brighter, .5); | |||
content: attr(data-title); | |||
font-size: $font-size-xs; | |||
margin-left: $filter-padding; | |||
margin-top: $font-size-xs; | |||
position: absolute; | |||
text-transform: uppercase; | |||
z-index: 1; | |||
} | |||
&::after { | |||
background-image: url($image-arrow_down); | |||
content: ''; | |||
height: 7px; //png height | |||
position: absolute; | |||
right: $filter-padding * 3; | |||
top: $filter-padding * 5; | |||
width: 10px; //png width | |||
z-index: 1; | |||
} | |||
} | |||
&-send { | |||
background-color: $color-secondary; | |||
color: $color-foreground-brighter; | |||
cursor: pointer; | |||
font-size: $font-size-m; | |||
margin-top: -$filter-padding * 3; | |||
padding: $filter-padding; | |||
transition: all $animation-speed-default; | |||
&:hover { | |||
background-color: $color-secondary-darker; | |||
transition: all $animation-speed-default; | |||
} | |||
} | |||
&-items { | |||
margin-top: 1rem; | |||
} | |||
&-item { | |||
margin-bottom: 1.5rem; | |||
text-align: center; | |||
width: 33%; | |||
display: inline-block; | |||
float: none !important; | |||
@media screen and (max-width: $media-screen-m) { | |||
width: 50%; | |||
} | |||
@media screen and (max-width: $media-screen-s) { | |||
width: 100%; | |||
} | |||
} | |||
&-thumbnail { | |||
max-width: 370px; | |||
width: 100%; | |||
} | |||
&-button { | |||
background-color: $color-secondary; | |||
border: 0; | |||
color: $color-foreground-brighter; | |||
cursor: pointer; | |||
font-size: $font-size-m; | |||
height: 3rem; | |||
margin-top: 1rem; | |||
transition: all $animation-speed-default; | |||
width: 80%; | |||
&.is-disabled { | |||
opacity: .5; | |||
pointer-events: none; | |||
} | |||
&:hover { | |||
background-color: $color-secondary-darker; | |||
transition: all $animation-speed-default; | |||
} | |||
} | |||
&-name { | |||
font-size: $font-size-m; | |||
font-weight: $font-weight-semilight; | |||
margin-top: .5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
} | |||
&-price { | |||
font-size: 28px; | |||
font-weight: 900; | |||
text-align: center; | |||
&::before { | |||
content: '$'; | |||
} | |||
} | |||
} |
@ -1,52 +1,53 @@ | |||
.esh-orders_detail { | |||
min-height: 80vh; | |||
.esh-orders_detail { | |||
min-height: 80vh; | |||
} | |||
.esh-orders_detail-section { | |||
padding: 1rem 0; | |||
padding: 1rem 0; | |||
} | |||
.esh-orders_detail-section--right { | |||
text-align: right; | |||
text-align: right; | |||
} | |||
.esh-orders_detail-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
} | |||
.esh-orders_detail-title { | |||
text-transform: uppercase; | |||
text-transform: uppercase; | |||
} | |||
.esh-orders_detail-items--border { | |||
border-bottom: 1px solid #EEEEEE; | |||
padding: .5rem 0; | |||
border-bottom: 1px solid #EEEEEE; | |||
padding: .5rem 0; | |||
} | |||
.esh-orders_detail-items--border:last-of-type { | |||
border-color: transparent; | |||
} | |||
.esh-orders_detail-items--border:last-of-type { | |||
border-color: transparent; | |||
} | |||
.esh-orders_detail-item { | |||
font-size: 1rem; | |||
font-weight: 300; | |||
font-size: 1rem; | |||
font-weight: 300; | |||
} | |||
.esh-orders_detail-item--middle { | |||
line-height: 8rem; | |||
line-height: 8rem; | |||
} | |||
@media screen and (max-width: 768px) { | |||
.esh-orders_detail-item--middle { | |||
line-height: 1rem; | |||
} | |||
.esh-orders_detail-item--middle { | |||
line-height: 1rem; | |||
} | |||
} | |||
.esh-orders_detail-item--mark { | |||
color: #83D01B; | |||
color: #83D01B; | |||
} | |||
.esh-orders_detail-image { | |||
height: 8rem; | |||
height: 8rem; | |||
} | |||
@ -0,0 +1,56 @@ | |||
@import '../../variables'; | |||
.esh-orders_detail { | |||
min-height: 80vh; | |||
&-section { | |||
padding: 1rem 0; | |||
&--right { | |||
text-align: right; | |||
} | |||
} | |||
&-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
} | |||
&-title { | |||
text-transform: uppercase; | |||
} | |||
&-items { | |||
&--border { | |||
border-bottom: $border-light solid $color-foreground-bright; | |||
padding: .5rem 0; | |||
&:last-of-type { | |||
border-color: transparent; | |||
} | |||
} | |||
} | |||
$item-height: 8rem; | |||
&-item { | |||
font-size: $font-size-m; | |||
font-weight: $font-weight-semilight; | |||
&--middle { | |||
line-height: $item-height; | |||
@media screen and (max-width: $media-screen-s) { | |||
line-height: $font-size-m; | |||
} | |||
} | |||
&--mark { | |||
color: $color-secondary; | |||
} | |||
} | |||
&-image { | |||
height: $item-height; | |||
} | |||
} |
@ -1,91 +1,96 @@ | |||
.esh-orders_new { | |||
min-height: 80vh; | |||
.esh-orders_new { | |||
min-height: 80vh; | |||
} | |||
.esh-orders_new-header { | |||
background-color: #00A69C; | |||
height: 4rem; | |||
background-color: #00A69C; | |||
height: 4rem; | |||
} | |||
.esh-orders_new-back { | |||
color: rgba(255, 255, 255, 0.4); | |||
line-height: 4rem; | |||
text-decoration: none; | |||
text-transform: uppercase; | |||
transition: color 0.35s; | |||
color: rgba(255, 255, 255, 0.4); | |||
line-height: 4rem; | |||
text-decoration: none; | |||
text-transform: uppercase; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders_new-back:hover { | |||
color: #FFFFFF; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders_new-back:hover { | |||
color: #FFFFFF; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders_new-section { | |||
padding: 1rem 0; | |||
padding: 1rem 0; | |||
} | |||
.esh-orders_new-section--right { | |||
text-align: right; | |||
text-align: right; | |||
} | |||
.esh-orders_new-placeOrder { | |||
background-color: #83D01B; | |||
border: 0; | |||
border-radius: 0; | |||
color: #FFFFFF; | |||
display: inline-block; | |||
font-size: 1rem; | |||
font-weight: 400; | |||
margin-top: 1rem; | |||
padding: 1rem 1.5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
transition: all 0.35s; | |||
} | |||
.esh-orders_new-placeOrder:hover { | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
} | |||
background-color: #83D01B; | |||
border: 0; | |||
border-radius: 0; | |||
color: #FFFFFF; | |||
display: inline-block; | |||
font-size: 1rem; | |||
font-weight: 400; | |||
margin-top: 1rem; | |||
padding: 1rem 1.5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
transition: all 0.35s; | |||
} | |||
.esh-orders_new-placeOrder:hover { | |||
background-color: #4a760f; | |||
transition: all 0.35s; | |||
} | |||
.esh-orders_new-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
} | |||
.esh-orders_new-title { | |||
font-size: 1.25rem; | |||
text-transform: uppercase; | |||
font-size: 1.25rem; | |||
text-transform: uppercase; | |||
} | |||
.esh-orders_new-items--border { | |||
border-bottom: 1px solid #EEEEEE; | |||
padding: .5rem 0; | |||
border-bottom: 1px solid #EEEEEE; | |||
padding: .5rem 0; | |||
} | |||
.esh-orders_new-items--border:last-of-type { | |||
border-color: transparent; | |||
} | |||
.esh-orders_new-items--border:last-of-type { | |||
border-color: transparent; | |||
} | |||
.esh-orders_new-item { | |||
font-size: 1rem; | |||
font-weight: 300; | |||
font-size: 1rem; | |||
font-weight: 300; | |||
} | |||
.esh-orders_new-item--middle { | |||
line-height: 8rem; | |||
line-height: 8rem; | |||
} | |||
@media screen and (max-width: 768px) { | |||
.esh-orders_new-item--middle { | |||
line-height: 1rem; | |||
} | |||
.esh-orders_new-item--middle { | |||
line-height: 1rem; | |||
} | |||
} | |||
.esh-orders_new-item--mark { | |||
color: #83D01B; | |||
color: #83D01B; | |||
} | |||
.esh-orders_new-image { | |||
height: 8rem; | |||
height: 8rem; | |||
} | |||
.esh-orders_new-alert { | |||
margin-top: 10px; | |||
} | |||
@ -0,0 +1,101 @@ | |||
@import '../../variables'; | |||
.esh-orders_new { | |||
min-height: 80vh; | |||
$header-height: 4rem; | |||
&-header { | |||
background-color: #00A69C; | |||
height: $header-height; | |||
} | |||
&-back { | |||
color: rgba($color-foreground-brighter, .4); | |||
line-height: $header-height; | |||
text-decoration: none; | |||
text-transform: uppercase; | |||
transition: color $animation-speed-default; | |||
&:hover { | |||
color: $color-foreground-brighter; | |||
transition: color $animation-speed-default; | |||
} | |||
} | |||
&-section { | |||
padding: 1rem 0; | |||
&--right { | |||
text-align: right; | |||
} | |||
} | |||
&-placeOrder { | |||
background-color: $color-secondary; | |||
border: 0; | |||
border-radius: 0; | |||
color: $color-foreground-brighter; | |||
display: inline-block; | |||
font-size: 1rem; | |||
font-weight: $font-weight-normal; | |||
margin-top: 1rem; | |||
padding: 1rem 1.5rem; | |||
text-align: center; | |||
text-transform: uppercase; | |||
transition: all $animation-speed-default; | |||
&:hover { | |||
background-color: $color-secondary-darker; | |||
transition: all $animation-speed-default; | |||
} | |||
} | |||
&-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
} | |||
&-title { | |||
font-size: $font-size-l; | |||
text-transform: uppercase; | |||
} | |||
&-items { | |||
&--border { | |||
border-bottom: $border-light solid $color-foreground-bright; | |||
padding: .5rem 0; | |||
&:last-of-type { | |||
border-color: transparent; | |||
} | |||
} | |||
} | |||
$item-height: 8rem; | |||
&-item { | |||
font-size: $font-size-m; | |||
font-weight: $font-weight-semilight; | |||
&--middle { | |||
line-height: $item-height; | |||
@media screen and (max-width: $media-screen-s) { | |||
line-height: $font-size-m; | |||
} | |||
} | |||
&--mark { | |||
color: $color-secondary; | |||
} | |||
} | |||
&-image { | |||
height: $item-height; | |||
} | |||
&-alert { | |||
margin-top: 10px; | |||
} | |||
} |
@ -1,74 +1,75 @@ | |||
.esh-orders { | |||
min-height: 80vh; | |||
overflow-x: hidden; | |||
.esh-orders { | |||
min-height: 80vh; | |||
overflow-x: hidden; | |||
} | |||
.esh-orders-header { | |||
background-color: #00A69C; | |||
height: 4rem; | |||
background-color: #00A69C; | |||
height: 4rem; | |||
} | |||
.esh-orders-back { | |||
color: rgba(255, 255, 255, 0.4); | |||
line-height: 4rem; | |||
text-transform: uppercase; | |||
text-decoration: none; | |||
transition: color 0.35s; | |||
color: rgba(255, 255, 255, 0.4); | |||
line-height: 4rem; | |||
text-decoration: none; | |||
text-transform: uppercase; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders-back:hover { | |||
color: #FFFFFF; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders-back:hover { | |||
color: #FFFFFF; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
} | |||
.esh-orders-title { | |||
text-transform: uppercase; | |||
text-transform: uppercase; | |||
} | |||
.esh-orders-items { | |||
height: 2rem; | |||
line-height: 2rem; | |||
position: relative; | |||
height: 2rem; | |||
line-height: 2rem; | |||
position: relative; | |||
} | |||
.esh-orders-items:nth-of-type(2n + 1):before { | |||
background-color: #EEEEFF; | |||
content: ''; | |||
height: 100%; | |||
left: 0; | |||
margin-left: -100vw; | |||
position: absolute; | |||
top: 0; | |||
width: 200vw; | |||
z-index: -1; | |||
} | |||
.esh-orders-items:nth-of-type(2n + 1):before { | |||
background-color: #EEEEFF; | |||
content: ''; | |||
height: 100%; | |||
left: 0; | |||
margin-left: -100vw; | |||
position: absolute; | |||
top: 0; | |||
width: 200vw; | |||
z-index: -1; | |||
} | |||
.esh-orders-item { | |||
font-weight: 300; | |||
font-weight: 300; | |||
} | |||
.esh-orders-item--hover { | |||
opacity: 0; | |||
pointer-events: none; | |||
opacity: 0; | |||
pointer-events: none; | |||
} | |||
.esh-orders-items:hover .esh-orders-item--hover { | |||
opacity: 1; | |||
pointer-events: all; | |||
opacity: 1; | |||
pointer-events: all; | |||
} | |||
.esh-orders-link { | |||
color: #83D01B; | |||
text-decoration: none; | |||
transition: color 0.35s; | |||
color: #83D01B; | |||
text-decoration: none; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders-link:hover { | |||
color: #75b918; | |||
transition: color 0.35s; | |||
} | |||
.esh-orders-link:hover { | |||
color: #75b918; | |||
transition: color 0.35s; | |||
} |
@ -0,0 +1,81 @@ | |||
@import '../variables'; | |||
.esh-orders { | |||
min-height: 80vh; | |||
overflow-x: hidden; | |||
$header-height: 4rem; | |||
&-header { | |||
background-color: #00A69C; | |||
height: $header-height; | |||
} | |||
&-back { | |||
color: rgba($color-foreground-brighter, .4); | |||
line-height: $header-height; | |||
text-decoration: none; | |||
text-transform: uppercase; | |||
transition: color $animation-speed-default; | |||
&:hover { | |||
color: $color-foreground-brighter; | |||
transition: color $animation-speed-default; | |||
} | |||
} | |||
&-titles { | |||
padding-bottom: 1rem; | |||
padding-top: 2rem; | |||
} | |||
&-title { | |||
text-transform: uppercase; | |||
} | |||
&-items { | |||
$height: 2rem; | |||
height: $height; | |||
line-height: $height; | |||
position: relative; | |||
&:nth-of-type(2n + 1) { | |||
&:before { | |||
background-color: $color-background-bright; | |||
content: ''; | |||
height: 100%; | |||
left: 0; | |||
margin-left: -100vw; | |||
position: absolute; | |||
top: 0; | |||
width: 200vw; | |||
z-index: -1; | |||
} | |||
} | |||
} | |||
&-item { | |||
font-weight: $font-weight-semilight; | |||
&--hover { | |||
opacity: 0; | |||
pointer-events: none; | |||
} | |||
} | |||
&-items:hover &-item--hover { | |||
opacity: 1; | |||
pointer-events: all; | |||
} | |||
&-link { | |||
color: $color-secondary; | |||
text-decoration: none; | |||
transition: color $animation-speed-default; | |||
&:hover { | |||
color: $color-secondary-dark; | |||
transition: color $animation-speed-default; | |||
} | |||
} | |||
} |
@ -0,0 +1,6 @@ | |||
.esh-catalog-button { | |||
background-color: #FF001b; | |||
border: 2px; | |||
color: #fff; | |||
cursor: pointer; | |||
} |
@ -1,31 +1,18 @@ | |||
.esh-header { | |||
background-color: #00A69C; | |||
height: 4rem; | |||
.esh-header { | |||
background-color: #00A69C; | |||
height: 4rem; | |||
} | |||
.esh-header-title { | |||
color: rgba(255, 255, 255, 0.5) !important; | |||
line-height: 4rem; | |||
text-transform: uppercase; | |||
text-decoration: none; | |||
transition: color 0.35s; | |||
margin-right: 15px; | |||
.esh-header-back { | |||
color: rgba(255, 255, 255, 0.5); | |||
line-height: 4rem; | |||
text-decoration: none; | |||
text-transform: uppercase; | |||
transition: color 0.35s; | |||
} | |||
.esh-header-title:hover { | |||
color: #FFFFFF !important; | |||
transition: color 0.35s; | |||
} | |||
.esh-header-back { | |||
color: rgba(255, 255, 255, 0.5) !important; | |||
line-height: 4rem; | |||
text-transform: uppercase; | |||
text-decoration: none; | |||
transition: color 0.35s; | |||
.esh-header-back:hover { | |||
color: #FFFFFF; | |||
transition: color 0.35s; | |||
} | |||
.esh-header-back:hover { | |||
color: #FFFFFF !important; | |||
transition: color 0.35s; | |||
} |
@ -0,0 +1,21 @@ | |||
@import '../../../variables'; | |||
.esh-header { | |||
$header-height: 4rem; | |||
background-color: $color-brand; | |||
height: $header-height; | |||
&-back { | |||
color: rgba($color-foreground-brighter, .5); | |||
line-height: $header-height; | |||
text-decoration: none; | |||
text-transform: uppercase; | |||
transition: color $animation-speed-default; | |||
&:hover { | |||
color: $color-foreground-brighter; | |||
transition: color $animation-speed-default; | |||
} | |||
} | |||
} |
@ -1,57 +1,57 @@ | |||
.esh-identity { | |||
line-height: 3rem; | |||
position: relative; | |||
text-align: right; | |||
.esh-identity { | |||
line-height: 3rem; | |||
position: relative; | |||
text-align: right; | |||
} | |||
.esh-identity-section { | |||
display: inline-block; | |||
width: 100%; | |||
display: inline-block; | |||
width: 100%; | |||
} | |||
.esh-identity-name { | |||
display: inline-block; | |||
display: inline-block; | |||
} | |||
.esh-identity-name--upper { | |||
text-transform: uppercase; | |||
text-transform: uppercase; | |||
} | |||
@media screen and (max-width: 768px) { | |||
.esh-identity-name { | |||
font-size: 0.85rem; | |||
} | |||
.esh-identity-name { | |||
font-size: 0.85rem; | |||
} | |||
} | |||
.esh-identity-image { | |||
display: inline-block; | |||
display: inline-block; | |||
} | |||
.esh-identity-drop { | |||
background: #FFFFFF; | |||
height: 0; | |||
min-width: 14rem; | |||
right: 0; | |||
overflow: hidden; | |||
padding: .5rem; | |||
position: absolute; | |||
top: 2.5rem; | |||
transition: height 0.35s; | |||
background: #FFFFFF; | |||
height: 0; | |||
min-width: 14rem; | |||
overflow: hidden; | |||
padding: .5rem; | |||
position: absolute; | |||
right: 0; | |||
top: 2.5rem; | |||
transition: height 0.35s; | |||
} | |||
.esh-identity:hover .esh-identity-drop { | |||
border: 1px solid #EEEEEE; | |||
height: 7rem; | |||
transition: height 0.35s; | |||
border: 1px solid #EEEEEE; | |||
height: 7rem; | |||
transition: height 0.35s; | |||
} | |||
.esh-identity-item { | |||
cursor: pointer; | |||
display: block; | |||
transition: color 0.35s; | |||
cursor: pointer; | |||
transition: color 0.35s; | |||
} | |||
.esh-identity-item:hover { | |||
color: #75b918; | |||
transition: color 0.35s; | |||
} | |||
.esh-identity-item:hover { | |||
color: #75b918; | |||
transition: color 0.35s; | |||
} |
@ -0,0 +1,56 @@ | |||
@import '../../../variables'; | |||
.esh-identity { | |||
line-height: 3rem; | |||
position: relative; | |||
text-align: right; | |||
&-section { | |||
display: inline-block; | |||
width: 100%; | |||
} | |||
&-name { | |||
display: inline-block; | |||
&--upper { | |||
text-transform: uppercase; | |||
} | |||
@media screen and (max-width: $media-screen-s) { | |||
font-size: $font-size-s; | |||
} | |||
} | |||
&-image { | |||
display: inline-block; | |||
} | |||
&-drop { | |||
background: $color-background-brighter; | |||
height: 0; | |||
min-width: 14rem; | |||
overflow: hidden; | |||
padding: .5rem; | |||
position: absolute; | |||
right: 0; | |||
top: 2.5rem; | |||
transition: height $animation-speed-default; | |||
} | |||
&:hover &-drop { | |||
border: $border-light solid $color-foreground-bright; | |||
height: 7rem; | |||
transition: height $animation-speed-default; | |||
} | |||
&-item { | |||
cursor: pointer; | |||
transition: color $animation-speed-default; | |||
&:hover { | |||
color: $color-secondary-dark; | |||
transition: color $animation-speed-default; | |||
} | |||
} | |||
} |
@ -1,34 +1,35 @@ | |||
.esh-pager-wrapper { | |||
padding-top: 1rem; | |||
text-align: center; | |||
.esh-pager-wrapper { | |||
padding-top: 1rem; | |||
text-align: center; | |||
} | |||
.esh-pager-item { | |||
margin: 0 5vw; | |||
margin: 0 5vw; | |||
} | |||
.esh-pager-item--navigable { | |||
display: inline-block; | |||
cursor: pointer; | |||
.esh-pager-item.is-disabled { | |||
opacity: 0; | |||
pointer-events: none; | |||
} | |||
.esh-pager-item--navigable.is-disabled { | |||
opacity: 0; | |||
pointer-events: none; | |||
} | |||
.esh-pager-item--navigable { | |||
cursor: pointer; | |||
display: inline-block; | |||
} | |||
.esh-pager-item--navigable:hover { | |||
color: #83D01B; | |||
} | |||
.esh-pager-item--navigable:hover { | |||
color: #83D01B; | |||
} | |||
@media screen and (max-width: 1280px) { | |||
.esh-pager-item { | |||
font-size: 0.85rem; | |||
} | |||
.esh-pager-item { | |||
font-size: 0.85rem; | |||
} | |||
} | |||
@media screen and (max-width: 1024px) { | |||
.esh-pager-item { | |||
margin: 0 4vw; | |||
} | |||
.esh-pager-item { | |||
margin: 0 2.5vw; | |||
} | |||
} | |||
@ -0,0 +1,36 @@ | |||
@import '../../../variables'; | |||
.esh-pager { | |||
&-wrapper { | |||
padding-top: 1rem; | |||
text-align: center; | |||
} | |||
&-item { | |||
$margin: 5vw; | |||
margin: 0 $margin; | |||
&.is-disabled { | |||
opacity: 0; | |||
pointer-events: none; | |||
} | |||
&--navigable { | |||
cursor: pointer; | |||
display: inline-block; | |||
&:hover { | |||
color: $color-secondary; | |||
} | |||
} | |||
@media screen and (max-width: $media-screen-l) { | |||
font-size: $font-size-s; | |||
} | |||
@media screen and (max-width: $media-screen-m) { | |||
margin: 0 $margin / 2; | |||
} | |||
} | |||
} |
@ -0,0 +1,73 @@ | |||
using eShopOnContainers.WebSPA; | |||
using Microsoft.AspNetCore.Builder; | |||
using Microsoft.AspNetCore.Hosting; | |||
using Microsoft.Extensions.DependencyInjection; | |||
using Microsoft.Extensions.Logging; | |||
using Microsoft.Extensions.Options; | |||
using System; | |||
using System.IO; | |||
using System.IO.Compression; | |||
using System.Linq; | |||
namespace WebSPA.Infrastructure | |||
{ | |||
public class WebContextSeed | |||
{ | |||
public static void Seed(IApplicationBuilder applicationBuilder, IHostingEnvironment env, ILoggerFactory loggerFactory) | |||
{ | |||
var log = loggerFactory.CreateLogger("WebSPA seed"); | |||
var settings = (AppSettings)applicationBuilder | |||
.ApplicationServices.GetRequiredService<IOptions<AppSettings>>().Value; | |||
var useCustomizationData = settings.UseCustomizationData; | |||
var contentRootPath = env.ContentRootPath; | |||
var webroot = env.WebRootPath; | |||
if (useCustomizationData) | |||
{ | |||
GetPreconfiguredImages(contentRootPath, webroot, log); | |||
} | |||
} | |||
static void GetPreconfiguredImages(string contentRootPath, string webroot, ILogger log) | |||
{ | |||
try | |||
{ | |||
string imagesZipFile = Path.Combine(contentRootPath, "Setup", "images.zip"); | |||
if (!File.Exists(imagesZipFile)) | |||
{ | |||
log.LogError($" zip file '{imagesZipFile}' does not exists."); | |||
return; | |||
} | |||
string imagePath = Path.Combine(webroot, "assets", "images"); | |||
string[] imageFiles = Directory.GetFiles(imagePath).Select(file => Path.GetFileName(file)).ToArray(); | |||
using (ZipArchive zip = ZipFile.Open(imagesZipFile, ZipArchiveMode.Read)) | |||
{ | |||
foreach (ZipArchiveEntry entry in zip.Entries) | |||
{ | |||
if (imageFiles.Contains(entry.Name)) | |||
{ | |||
string destinationFilename = Path.Combine(imagePath, entry.Name); | |||
if (File.Exists(destinationFilename)) | |||
{ | |||
File.Delete(destinationFilename); | |||
} | |||
entry.ExtractToFile(destinationFilename); | |||
} | |||
else | |||
{ | |||
log.LogWarning($"Skip file '{entry.Name}' in zipfile '{imagesZipFile}'"); | |||
} | |||
} | |||
} | |||
} | |||
catch (Exception ex) | |||
{ | |||
log.LogError($"Exception in method GetPreconfiguredImages WebSPA. Exception Message={ex.Message}"); | |||
} | |||
} | |||
} | |||
} |