@ -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 { | .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 { | .esh-basketstatus-image { | ||||
height: 36px; | |||||
margin-top: .5rem; | |||||
height: 36px; | |||||
margin-top: .5rem; | |||||
} | } | ||||
.esh-basketstatus-badge { | .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 { | .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 { | .esh-basket-titles { | ||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
} | } | ||||
.esh-basket-titles--clean { | .esh-basket-titles--clean { | ||||
padding-bottom: 0; | |||||
padding-top: 0; | |||||
padding-bottom: 0; | |||||
padding-top: 0; | |||||
} | } | ||||
.esh-basket-title { | .esh-basket-title { | ||||
text-transform: uppercase; | |||||
text-transform: uppercase; | |||||
} | } | ||||
.esh-basket-items--border { | .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 { | .esh-basket-item { | ||||
font-size: 1rem; | |||||
font-weight: 300; | |||||
font-size: 1rem; | |||||
font-weight: 300; | |||||
} | } | ||||
.esh-basket-item--middle { | .esh-basket-item--middle { | ||||
line-height: 8rem; | |||||
line-height: 8rem; | |||||
} | } | ||||
@media screen and (max-width: 1024px) { | @media screen and (max-width: 1024px) { | ||||
.esh-basket-item--middle { | |||||
line-height: 1rem; | |||||
} | |||||
.esh-basket-item--middle { | |||||
line-height: 1rem; | |||||
} | |||||
} | } | ||||
.esh-basket-item--mark { | .esh-basket-item--mark { | ||||
color: #00A69C; | |||||
color: #00A69C; | |||||
} | } | ||||
.esh-basket-image { | .esh-basket-image { | ||||
height: 8rem; | |||||
height: 8rem; | |||||
} | } | ||||
.esh-basket-input { | .esh-basket-input { | ||||
line-height: 1rem; | |||||
width: 100%; | |||||
line-height: 1rem; | |||||
width: 100%; | |||||
} | } | ||||
.esh-basket-checkout { | .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 { | .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 { | .esh-catalog-title { | ||||
position: relative; | |||||
top: 74.28571px; | |||||
position: relative; | |||||
top: 74.28571px; | |||||
} | } | ||||
.esh-catalog-filters { | .esh-catalog-filters { | ||||
background-color: #00A69C; | |||||
height: 65px; | |||||
background-color: #00A69C; | |||||
height: 65px; | |||||
} | } | ||||
.esh-catalog-filter { | .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 { | .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 { | .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 { | .esh-catalog-items { | ||||
margin-top: 1rem; | |||||
margin-top: 1rem; | |||||
} | } | ||||
.esh-catalog-item { | .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) { | @media screen and (max-width: 1024px) { | ||||
.esh-catalog-item { | |||||
width: 50%; | |||||
} | |||||
.esh-catalog-item { | |||||
width: 50%; | |||||
} | |||||
} | } | ||||
@media screen and (max-width: 768px) { | @media screen and (max-width: 768px) { | ||||
.esh-catalog-item { | |||||
width: 100%; | |||||
} | |||||
.esh-catalog-item { | |||||
width: 100%; | |||||
} | |||||
} | } | ||||
.esh-catalog-thumbnail { | .esh-catalog-thumbnail { | ||||
max-width: 370px; | |||||
width: 100%; | |||||
max-width: 370px; | |||||
width: 100%; | |||||
} | } | ||||
.esh-catalog-button { | .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 { | .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 { | .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 { | .esh-orders_detail-section { | ||||
padding: 1rem 0; | |||||
padding: 1rem 0; | |||||
} | } | ||||
.esh-orders_detail-section--right { | .esh-orders_detail-section--right { | ||||
text-align: right; | |||||
text-align: right; | |||||
} | } | ||||
.esh-orders_detail-titles { | .esh-orders_detail-titles { | ||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
} | } | ||||
.esh-orders_detail-title { | .esh-orders_detail-title { | ||||
text-transform: uppercase; | |||||
text-transform: uppercase; | |||||
} | } | ||||
.esh-orders_detail-items--border { | .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 { | .esh-orders_detail-item { | ||||
font-size: 1rem; | |||||
font-weight: 300; | |||||
font-size: 1rem; | |||||
font-weight: 300; | |||||
} | } | ||||
.esh-orders_detail-item--middle { | .esh-orders_detail-item--middle { | ||||
line-height: 8rem; | |||||
line-height: 8rem; | |||||
} | } | ||||
@media screen and (max-width: 768px) { | @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 { | .esh-orders_detail-item--mark { | ||||
color: #83D01B; | |||||
color: #83D01B; | |||||
} | } | ||||
.esh-orders_detail-image { | .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 { | .esh-orders_new-header { | ||||
background-color: #00A69C; | |||||
height: 4rem; | |||||
background-color: #00A69C; | |||||
height: 4rem; | |||||
} | } | ||||
.esh-orders_new-back { | .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 { | .esh-orders_new-section { | ||||
padding: 1rem 0; | |||||
padding: 1rem 0; | |||||
} | } | ||||
.esh-orders_new-section--right { | .esh-orders_new-section--right { | ||||
text-align: right; | |||||
text-align: right; | |||||
} | } | ||||
.esh-orders_new-placeOrder { | .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 { | .esh-orders_new-titles { | ||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
} | } | ||||
.esh-orders_new-title { | .esh-orders_new-title { | ||||
font-size: 1.25rem; | |||||
text-transform: uppercase; | |||||
font-size: 1.25rem; | |||||
text-transform: uppercase; | |||||
} | } | ||||
.esh-orders_new-items--border { | .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 { | .esh-orders_new-item { | ||||
font-size: 1rem; | |||||
font-weight: 300; | |||||
font-size: 1rem; | |||||
font-weight: 300; | |||||
} | } | ||||
.esh-orders_new-item--middle { | .esh-orders_new-item--middle { | ||||
line-height: 8rem; | |||||
line-height: 8rem; | |||||
} | } | ||||
@media screen and (max-width: 768px) { | @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 { | .esh-orders_new-item--mark { | ||||
color: #83D01B; | |||||
color: #83D01B; | |||||
} | } | ||||
.esh-orders_new-image { | .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 { | .esh-orders-header { | ||||
background-color: #00A69C; | |||||
height: 4rem; | |||||
background-color: #00A69C; | |||||
height: 4rem; | |||||
} | } | ||||
.esh-orders-back { | .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 { | .esh-orders-titles { | ||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
padding-bottom: 1rem; | |||||
padding-top: 2rem; | |||||
} | } | ||||
.esh-orders-title { | .esh-orders-title { | ||||
text-transform: uppercase; | |||||
text-transform: uppercase; | |||||
} | } | ||||
.esh-orders-items { | .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 { | .esh-orders-item { | ||||
font-weight: 300; | |||||
font-weight: 300; | |||||
} | } | ||||
.esh-orders-item--hover { | .esh-orders-item--hover { | ||||
opacity: 0; | |||||
pointer-events: none; | |||||
opacity: 0; | |||||
pointer-events: none; | |||||
} | } | ||||
.esh-orders-items:hover .esh-orders-item--hover { | .esh-orders-items:hover .esh-orders-item--hover { | ||||
opacity: 1; | |||||
pointer-events: all; | |||||
opacity: 1; | |||||
pointer-events: all; | |||||
} | } | ||||
.esh-orders-link { | .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 { | .esh-identity-section { | ||||
display: inline-block; | |||||
width: 100%; | |||||
display: inline-block; | |||||
width: 100%; | |||||
} | } | ||||
.esh-identity-name { | .esh-identity-name { | ||||
display: inline-block; | |||||
display: inline-block; | |||||
} | } | ||||
.esh-identity-name--upper { | .esh-identity-name--upper { | ||||
text-transform: uppercase; | |||||
text-transform: uppercase; | |||||
} | } | ||||
@media screen and (max-width: 768px) { | @media screen and (max-width: 768px) { | ||||
.esh-identity-name { | |||||
font-size: 0.85rem; | |||||
} | |||||
.esh-identity-name { | |||||
font-size: 0.85rem; | |||||
} | |||||
} | } | ||||
.esh-identity-image { | .esh-identity-image { | ||||
display: inline-block; | |||||
display: inline-block; | |||||
} | } | ||||
.esh-identity-drop { | .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 { | .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 { | .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 { | .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) { | @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) { | @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}"); | |||||
} | |||||
} | |||||
} | |||||
} |