From 3c8d326780765e1757f70077c619b5899a7bebba Mon Sep 17 00:00:00 2001 From: vaasu Date: Wed, 15 Apr 2020 03:36:48 +0530 Subject: [PATCH] Updates --- asset-manifest.json | 16 ++++++++-------- index.html | 2 +- ...-manifest.be6ae1f265b80ced98316a46828cb65a.js | 14 +++++++------- service-worker.js | 2 +- static/css/4.0ef3a63e.chunk.css | 2 ++ static/css/4.0ef3a63e.chunk.css.map | 1 + static/css/4.17ee27d5.chunk.css | 2 -- static/css/4.17ee27d5.chunk.css.map | 1 - static/js/4.287ebadd.chunk.js | 2 -- static/js/4.287ebadd.chunk.js.map | 1 - static/js/4.68a509ec.chunk.js | 2 ++ static/js/4.68a509ec.chunk.js.map | 1 + ...main.a7a0f556.js => runtime-main.44c4e860.js} | 4 ++-- ...0f556.js.map => runtime-main.44c4e860.js.map} | 2 +- 14 files changed, 26 insertions(+), 26 deletions(-) rename precache-manifest.949de8ed304c060e521ea664848d9130.js => precache-manifest.be6ae1f265b80ced98316a46828cb65a.js (81%) create mode 100644 static/css/4.0ef3a63e.chunk.css create mode 100644 static/css/4.0ef3a63e.chunk.css.map delete mode 100644 static/css/4.17ee27d5.chunk.css delete mode 100644 static/css/4.17ee27d5.chunk.css.map delete mode 100644 static/js/4.287ebadd.chunk.js delete mode 100644 static/js/4.287ebadd.chunk.js.map create mode 100644 static/js/4.68a509ec.chunk.js create mode 100644 static/js/4.68a509ec.chunk.js.map rename static/js/{runtime-main.a7a0f556.js => runtime-main.44c4e860.js} (94%) rename static/js/{runtime-main.a7a0f556.js.map => runtime-main.44c4e860.js.map} (98%) diff --git a/asset-manifest.json b/asset-manifest.json index fcc9907..c62ce7e 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -5,14 +5,14 @@ "main.css": "/adobeassignment/static/css/main.531d6279.chunk.css", "main.js": "/adobeassignment/static/js/main.5d253b8a.chunk.js", "main.js.map": "/adobeassignment/static/js/main.5d253b8a.chunk.js.map", - "runtime-main.js": "/adobeassignment/static/js/runtime-main.a7a0f556.js", - "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.a7a0f556.js.map", + "runtime-main.js": "/adobeassignment/static/js/runtime-main.44c4e860.js", + "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.44c4e860.js.map", "static/css/3.de424728.chunk.css": "/adobeassignment/static/css/3.de424728.chunk.css", "static/js/3.1ef0ea03.chunk.js": "/adobeassignment/static/js/3.1ef0ea03.chunk.js", "static/js/3.1ef0ea03.chunk.js.map": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.map", - "static/css/4.17ee27d5.chunk.css": "/adobeassignment/static/css/4.17ee27d5.chunk.css", - "static/js/4.287ebadd.chunk.js": "/adobeassignment/static/js/4.287ebadd.chunk.js", - "static/js/4.287ebadd.chunk.js.map": "/adobeassignment/static/js/4.287ebadd.chunk.js.map", + "static/css/4.0ef3a63e.chunk.css": "/adobeassignment/static/css/4.0ef3a63e.chunk.css", + "static/js/4.68a509ec.chunk.js": "/adobeassignment/static/js/4.68a509ec.chunk.js", + "static/js/4.68a509ec.chunk.js.map": "/adobeassignment/static/js/4.68a509ec.chunk.js.map", "static/css/5.5e513931.chunk.css": "/adobeassignment/static/css/5.5e513931.chunk.css", "static/js/5.d4001fe4.chunk.js": "/adobeassignment/static/js/5.d4001fe4.chunk.js", "static/js/5.d4001fe4.chunk.js.map": "/adobeassignment/static/js/5.d4001fe4.chunk.js.map", @@ -25,10 +25,10 @@ "static/js/8.97dfc8e0.chunk.js": "/adobeassignment/static/js/8.97dfc8e0.chunk.js", "static/js/8.97dfc8e0.chunk.js.map": "/adobeassignment/static/js/8.97dfc8e0.chunk.js.map", "index.html": "/adobeassignment/index.html", - "precache-manifest.949de8ed304c060e521ea664848d9130.js": "/adobeassignment/precache-manifest.949de8ed304c060e521ea664848d9130.js", + "precache-manifest.be6ae1f265b80ced98316a46828cb65a.js": "/adobeassignment/precache-manifest.be6ae1f265b80ced98316a46828cb65a.js", "service-worker.js": "/adobeassignment/service-worker.js", "static/css/3.de424728.chunk.css.map": "/adobeassignment/static/css/3.de424728.chunk.css.map", - "static/css/4.17ee27d5.chunk.css.map": "/adobeassignment/static/css/4.17ee27d5.chunk.css.map", + "static/css/4.0ef3a63e.chunk.css.map": "/adobeassignment/static/css/4.0ef3a63e.chunk.css.map", "static/css/5.5e513931.chunk.css.map": "/adobeassignment/static/css/5.5e513931.chunk.css.map", "static/css/6.60eec0d8.chunk.css.map": "/adobeassignment/static/css/6.60eec0d8.chunk.css.map", "static/css/8.cf1d0990.chunk.css.map": "/adobeassignment/static/css/8.cf1d0990.chunk.css.map", @@ -36,7 +36,7 @@ "static/js/3.1ef0ea03.chunk.js.LICENSE.txt": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.LICENSE.txt" }, "entrypoints": [ - "static/js/runtime-main.a7a0f556.js", + "static/js/runtime-main.44c4e860.js", "static/css/3.de424728.chunk.css", "static/js/3.1ef0ea03.chunk.js", "static/css/main.531d6279.chunk.css", diff --git a/index.html b/index.html index fbe2a50..f3795b6 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Adobe assignment
\ No newline at end of file +Adobe assignment
\ No newline at end of file diff --git a/precache-manifest.949de8ed304c060e521ea664848d9130.js b/precache-manifest.be6ae1f265b80ced98316a46828cb65a.js similarity index 81% rename from precache-manifest.949de8ed304c060e521ea664848d9130.js rename to precache-manifest.be6ae1f265b80ced98316a46828cb65a.js index e9103c4..749fec4 100644 --- a/precache-manifest.949de8ed304c060e521ea664848d9130.js +++ b/precache-manifest.be6ae1f265b80ced98316a46828cb65a.js @@ -1,6 +1,6 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "7d8cfa589209b60dee8625755e706743", + "revision": "ab1f94e26e39a46af2861d0748a9ec5c", "url": "/adobeassignment/index.html" }, { @@ -8,8 +8,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/adobeassignment/static/css/3.de424728.chunk.css" }, { - "revision": "a5a6313d1fbb0ab242c3", - "url": "/adobeassignment/static/css/4.17ee27d5.chunk.css" + "revision": "d9a274fcda21fe93524e", + "url": "/adobeassignment/static/css/4.0ef3a63e.chunk.css" }, { "revision": "a0f30fa13109da35aef4", @@ -40,8 +40,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.LICENSE.txt" }, { - "revision": "a5a6313d1fbb0ab242c3", - "url": "/adobeassignment/static/js/4.287ebadd.chunk.js" + "revision": "d9a274fcda21fe93524e", + "url": "/adobeassignment/static/js/4.68a509ec.chunk.js" }, { "revision": "a0f30fa13109da35aef4", @@ -64,7 +64,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/adobeassignment/static/js/main.5d253b8a.chunk.js" }, { - "revision": "cbc2724bcea6916a3615", - "url": "/adobeassignment/static/js/runtime-main.a7a0f556.js" + "revision": "ed9937b2aca64ad65177", + "url": "/adobeassignment/static/js/runtime-main.44c4e860.js" } ]); \ No newline at end of file diff --git a/service-worker.js b/service-worker.js index ea7a0e4..203a77e 100644 --- a/service-worker.js +++ b/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/adobeassignment/precache-manifest.949de8ed304c060e521ea664848d9130.js" + "/adobeassignment/precache-manifest.be6ae1f265b80ced98316a46828cb65a.js" ); self.addEventListener('message', (event) => { diff --git a/static/css/4.0ef3a63e.chunk.css b/static/css/4.0ef3a63e.chunk.css new file mode 100644 index 0000000..aeaafe1 --- /dev/null +++ b/static/css/4.0ef3a63e.chunk.css @@ -0,0 +1,2 @@ +.c-Plp__c-Header__c-Search{margin-left:auto;position:relative}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input{background:transparent;border:none;border-bottom:1px solid #fff;color:#fff;float:right;min-height:0;width:0;visibility:hidden;opacity:0;font-size:14px;font-weight:700;padding:7px 10px 8px 0;transition:all .3s ease-in-out;box-shadow:none;outline:none}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input.c-Plp__c-Header__c-Search__input--visible{width:100%;opacity:1;visibility:visible}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-webkit-input-placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{color:#fff;font-size:14px}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{color:#fff}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__searchIcon{position:absolute;top:6px;right:0}.c-Plp__c-Header__c-CartIcon{position:relative}.c-Plp__c-Header__c-CartIcon .c-Plp__c-Header__c-CartIcon__badge{position:absolute;top:-7px;right:-9px;padding:0 5px;border-radius:50%;background-color:#c70936;color:#fff;font-size:12px}.c-Plp__c-Header__c-CartIcon .fa-shopping-cart{float:right}.c-Footer{display:flex;align-items:center;justify-content:center;position:fixed;left:0;bottom:0;width:100%;background-color:#4471ea;color:#f1f3f6;padding:.7em}.c-Footer p{margin-bottom:0;font-weight:700}.c-Plp__c-SortAndFilterPanel{text-align:center}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool{padding:.8rem;font-size:16px;font-weight:700;border:1px solid #e1e1e1}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool .c-Plp__c-SortAndFilterPanel__toolContent{margin-bottom:0}.c-SortModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-SortModal.modal .modal-dialog{pointer-events:auto}.c-SortModal.modal .modal-dialog .modal-body{color:#999}.c-SortModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-SortModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-SortModal.ReactModal__Overlay--after-open{opacity:1}.c-SortModal.ReactModal__Overlay--before-close{opacity:0}.c-FilterModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-FilterModal.modal .modal-dialog{pointer-events:auto}.c-FilterModal.modal .modal-dialog .modal-body{color:#999;padding:1rem}.c-FilterModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range{margin:25px 0;font-weight:700;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label{top:20px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--value{top:-40px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--max{right:2em}.c-FilterModal.modal .modal-dialog .modal-body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center}.c-FilterModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-FilterModal.ReactModal__Overlay--after-open{opacity:1}.c-FilterModal.ReactModal__Overlay--before-close{opacity:0}.c-ItemPrice{line-height:12px;margin-bottom:.9rem;display:flex;align-items:baseline}.c-ItemPrice .c-ItemPrice__price{font-size:14px;font-weight:700;padding-right:.5rem}.c-ItemPrice .c-ItemPrice__price--strikethrough{color:#999;font-weight:700;font-size:12px;text-decoration:line-through}.c-ItemPrice .c-ItemPrice__discount{color:#4aa219;font-weight:700;font-size:12px;margin-left:auto}.c-Plp__c-ProductContainer__c-ProductTile{padding:10px 15px;border:1px solid #e1e1e1;margin-bottom:4rem;cursor:pointer}.c-Plp__c-ProductContainer__c-ProductTile.c-Plp__c-ProductContainer__c-ProductTile--shadow{box-shadow:0 5px 5px rgba(0,0,0,.12),0 4px 11px rgba(0,0,0,.24);transition:all .3s cubic-bezier(.25,.8,.25,1)}.c-Plp__c-ProductContainer__c-ProductTile.c-Plp__c-ProductContainer__c-ProductTile--shadow:hover{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__image{margin-bottom:.7rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__name{font-size:14px}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart{display:block;margin:0 auto;border-radius:20px;padding:7px;background-color:#f7ae3a;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart:hover{opacity:.7}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer__c-ProductTile{border:none}.c-Plp__c-ProductContainer__c-ProductTile:not(:last-child){margin-right:2em}}.c-Plp__c-ProductContainer{margin-bottom:46px}.c-Plp__c-ProductContainer .c-Cart__emptyPlp{background:#fff;margin-top:25%;border:1px solid #000;text-align:center;padding:1em}.c-Plp__c-ProductContainer .c-Cart__emptyPlp .c-Cart__emptyPlp__information{color:#999}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer{background:#fff;color:#037b30;padding:1em;font-weight:700}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer .c-Plp__c-ProductContainer__information{display:inline-block;margin-bottom:8px}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__btnClearSearch{display:block;margin:0 auto;border-radius:20px;padding:7px 20px;background-color:#4471ea;color:#f1f3f6;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer .row{justify-content:space-evenly}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer .c-Cart__emptyPlp{margin-top:0;width:75%;margin-left:auto;margin-right:auto}}.c-ProductContainerWithTools .c-ProductContainerWithTools__asideCol{border-right:2px solid #ddd;padding-right:27px}.c-ProductContainerWithTools .c-SortTool__content{padding:20px}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header{margin-right:3rem}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header .c-SortTool__title{font-weight:700;font-size:20px}.c-ProductContainerWithTools .c-SortTool__content .radio{display:inline;margin-right:2.5rem}.c-ProductContainerWithTools .c-SortTool__content .radio input[type=radio]{display:none}.c-ProductContainerWithTools .c-SortTool__content .radio label{color:#999;padding:5px}.c-ProductContainerWithTools .c-SortTool__content .radio .c-SortTool__body__label{border-bottom:1px solid #4471ea;color:#4471ea}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container.radio,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__title{display:inline-block}.c-ProductContainerWithTools .c-FilterTool__content{padding:1rem}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body{color:#999;margin:3em 0}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range{font-weight:700;font-size:14px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label{top:20px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--value{top:-40px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--max{right:2em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center;margin-top:1em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer{text-align:center}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer button{border-radius:22px;padding:9px 29px} +/*# sourceMappingURL=4.0ef3a63e.chunk.css.map */ \ No newline at end of file diff --git a/static/css/4.0ef3a63e.chunk.css.map b/static/css/4.0ef3a63e.chunk.css.map new file mode 100644 index 0000000..2598228 --- /dev/null +++ b/static/css/4.0ef3a63e.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["Search.component.scss","../../../styles/_variables.scss","CartIcon.component.scss","Footer.component.scss","SortAndFilterPanel.component.scss","SortModal.component.scss","FilterModal.component.scss","ItemPrice.component.scss","ProductTile.component.scss","ProductContainer.component.scss","ProductContainerWithTools.component.scss"],"names":[],"mappings":"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","file":"4.0ef3a63e.chunk.css","sourcesContent":["@import './../../../styles//variables';\n\n.c-Plp__c-Header__c-Search {\n margin-left: auto;\n position: relative;\n\n .c-Plp__c-Header__c-Search__input {\n background: transparent;\n border: none;\n border-bottom: 1px solid $neutral-00;\n color: $neutral-00;\n float: right;\n min-height: 0;\n width: 0;\n visibility: hidden;\n opacity: 0;\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding: 7px 10px 8px 0;\n -webkit-transition: all 0.33s ease-in-out;\n transition: all 0.3s ease-in-out;\n box-shadow: none;\n outline: none;\n\n &.c-Plp__c-Header__c-Search__input--visible {\n width: 100%;\n opacity: 1;\n visibility: visible;\n }\n \n &::placeholder {\n color: $neutral-00;\n opacity: 1;\n }\n \n &:-ms-input-placeholder {\n color: $neutral-00;\n font-size: $small-font-size;\n }\n \n &::-ms-input-placeholder {\n color: $neutral-00;\n }\n }\n\n .c-Plp__c-Header__c-Search__searchIcon {\n position: absolute;\n top: 6px;\n right: 0px;\n }\n}\n","// Project-Wide Variables\n// ===\n//\n// Edit these as needed. Some guidelines:\n//\n// - Names should be lowercase and dash-separated;\n// - Qualifiers should be added to the beginning of related variables: use\n// `$small-font-size`, not `$font-size-small`;\n// - Numeric scales should use increments of 10; these numbers are arbitrary and\n// should not map to actual values. If really necessary, additional values can\n// be added in between, e.g. $neutral-15 between 10 and 20.\n//\n//\n// Table of Contents\n// ---\n//\n// [AAA] Basic Layout\n// [BBB] Responsive Layout\n// [CCC] Typography\n// [DDD] Color Palette\n// [EEE] Appearance\n// [FFF] Z-Index\n// [GGG] Shorthands\n\n\n// [AAA] Basic Layout\n// ---\n\n// Basic unit for spacing and alignment; 6 to 12px recommended. Apply in whole\n// or half multiples.\n$sub-unit: 4px;\n$unit: 8px;\n\n// Standard tap-target size\n$tap-size: 44px;\n\n// Container max-width.\n$max-width: 1280px;\n\n// Content Height Calculations\n$header-height: 64px;\n$footer-height: 173px;\n$content-height: calc(100vh - #{$header-height} - #{$footer-height});\n\n// [BBB] Responsive Layout\n// ---\n//\n// Media query breakpoints and grid setup. Please see Mobify's Responsive Best\n// Practices doc here: https://bit.ly/2tmRnEi, and our Responsive Grid\n// documentation here: http://docs.mobify.com/latest/guides/responsive-grid/\n//\n// Note: $small-breakpoint isn't needed, since it is 0px\n\n$medium-breakpoint: 600px;\n$large-breakpoint: 960px;\n$xlarge-breakpoint: $max-width;\n\n$susy: (\n // Add color to show the columns and gutters\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(4),\n 'gutters': 12px\n);\n\n$medium-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 12px\n);\n\n$large-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 24px\n);\n\n\n// [CCC] Typography\n// ---\n// $font-family: 'San Francisco', 'Roboto', 'Fira Sans', 'Segoe UI', sans-serif;\n$font-family: Verdana, Geneva, sans-serif; \n$header-font-family: 'Avenir Next Condensed', 'Roboto Condensed', 'Helvetica Neue', 'Roboto', sans-serif;\n$loaded-header-font-family: 'Roboto', $header-font-family;\n\n// Line height\n$huge-line-height: 32px;\n$bigger-line-height: 28px;\n$big-line-height: 24px;\n$line-height: 20px;\n$small-line-height: 16px;\n$smaller-line-height: 12px;\n$tiny-line-height: 8px;\n\n// Font sizes\n$huge-font-size: 28px;\n$bigger-font-size: 24px;\n$big-font-size: 20px;\n$font-size: 16px;\n$small-font-size: 14px;\n$smaller-font-size: 12px;\n$tiny-font-size: 10px;\n$smallest-font-size: 8px;\n\n// Font weight\n$thin-font-weight: 100;\n$extra-light-font-weight: 200;\n$light-font-weight: 300;\n$regular-font-weight: 400;\n$medium-font-weight: 500;\n$semi-bold-font-weight: 600;\n$bold-font-weight: 700;\n\n// [DDD] Color Palette\n// ---\n\n// Neutrals\n$neutral-00: #fff;\n$neutral-10: #f7f7f7;\n$neutral-12: #f1f3f6;\n$neutral-15: #eee;\n$neutral-17: #e1e1e1;\n$neutral-20: #d5d5d5;\n$neutral-30: #bfbfbf;\n$neutral-40: #999;\n$neutral-50: #696969;\n$neutral-60: #333;\n$neutral-70: #000;\n\n// Brand colors\n// $brand-color: #017e9b; // blue\n$brand-color: #4471ea; // blue\n// $secondary-brand-color: #005569;\n$secondary-brand-color: #fafafa;\n$tertiary-brand-color: #83bdcb;\n$quaternary-brand-color: #bfdfe6;\n\n// UI Kit colors\n$ui-brand-color: #005c83; // dark blue\n\n// Accent colors\n$accent-color: #ff852c; // orange\n$light-accent-color: lighten($accent-color, 15%);\n$dark-accent-color: darken($accent-color, 15%);\n\n// Primary Action\n$primary-action-color: #dc0a3c;\n$light-primary-action-color: lighten($primary-action-color, 15%);\n$dark-primary-action-color: darken($primary-action-color, 15%);\n\n// Secondary Action\n$secondary-action-color: #ff852c;\n$light-secondary-action-color: lighten($secondary-action-color, 15%);\n$dark-secondary-action-color: darken($secondary-action-color, 15%);\n\n// Success colors\n$success-color: #037b30;\n$light-success-color: lighten($success-color, 15%);\n$dark-success-color: darken($success-color, 15%);\n\n// Error colors\n$error-color: #c70936;\n$light-error-color: lighten($error-color, 15%);\n$feedback-error-color: #f8e7eb;\n$dark-error-color: darken($error-color, 15%);\n\n// Sale color\n$sale-color: $error-color;\n$prominent-color: $error-color;\n\n// Social colors\n$facebook-color: #3a5a93;\n$twitter-color: #55aace;\n$instagram-color: #405de6;\n$pinterest-color: #bd081c;\n$youtube-color: #e52d27;\n$google-plus-color: #dd4b39;\n$yelp-color: #af0606;\n\n\n// [EEE] Appearance\n// ---\n\n$font-color: $neutral-60;\n$font-color-light: $neutral-12;\n\n$link-color: $ui-brand-color;\n$active-link-color: $dark-accent-color;\n\n$focus-color: $brand-color;\n\n$border-color: $neutral-20;\n$border-radius: 4px;\n\n$input-background-color: $neutral-00;\n$input-border-color: $border-color;\n$focused-input-border-color: $secondary-brand-color;\n$disabled-input-color: $neutral-40;\n$disabled-input-background-color: $neutral-15;\n$disabled-button-background-color: $neutral-15;\n$add-to-cart-button-background-color: #f7ae3a;\n$horizontal-input-padding: $unit;\n$vertical-input-padding: $unit;\n\n$background-color: $neutral-12;\n$overlay-color: rgba($neutral-00, 0.85);\n\n\n// [FFF] Z-Index\n// ---\n\n// Organizes z-index usage by name. Values can be incremented/decremented\n// slightly as necessary. eg. $z1-layer + 1;\n\n$z1-depth: 1; // background\n$z2-depth: 10; // icon or other ui element\n$z3-depth: 100; // modal shade or similar\n$z4-depth: 1000; // modal dialog or similar\n\n\n// [GGG] Shorthands\n// ---\n\n$border: 1px solid $border-color;\n$light-border: 1px solid $neutral-15;\n$input-padding: $vertical-input-padding $horizontal-input-padding;\n\n$box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.3);\n$large-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3);\n$inset-box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.3), inset 0 -2px 2px -2px rgba(0, 0, 0, 0.3);\n$input-box-shadow: inset 0 0 5px 0 rgba(0, 0, 0, 0.3);\n$themeColor-Light: #f3e2c7;\n$themeColor-Dark:#252525;\n$theme-font: verdana, sans-serif;\n$theme-supplementer: #f39c12;\n$font-size-desktop-h5: 1.25em;\n$font-size-mobile-h5: 0.8em;\n$font-size-desktop-p: 1.1em;\n$font-size-mobile-p: 0.7em;\n","@import './../../../styles/variables';\n\n.c-Plp__c-Header__c-CartIcon {\n // margin-left: 1rem;\n position: relative;\n\n .c-Plp__c-Header__c-CartIcon__badge {\n position: absolute;\n top: -7px;\n right: -9px;\n padding: 0px 5px;\n border-radius: 50%;\n background-color: $prominent-color;\n color: $neutral-00;\n font-size: $smaller-font-size;\n }\n\n .fa-shopping-cart {\n float: right;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Footer {\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: $brand-color;\n color: $font-color-light;\n padding: 0.7em;\n\n p {\n margin-bottom: 0;\n font-weight: bold;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel {\n text-align: center;\n .c-Plp__c-SortAndFilterPanel__tool {\n padding: 0.8rem;\n font-size: $font-size;\n font-weight: $bold-font-weight;\n border: 1px solid $neutral-17;\n .c-Plp__c-SortAndFilterPanel__toolContent {\n margin-bottom: 0;\n }\n }\n\n // .ripple {\n // background-color: $shocking-pink;\n // width: 1rem;\n // height: 1rem;\n // position: absolute;\n // border-radius: 50%;\n // transform: translateX(-100%) translateY(-100%);\n // mix-blend-mode: screen;\n // animation: ripple 1000ms ease-out forwards;\n // }\n \n // @keyframes ripple {\n // 0% { transform: translate(-100%, -100%); }\n // 80% { transform: translate(-100%, -100%) scale(50); }\n // 100% { transform: translate(-100%, -100%) scale(50); opacity: 0; }\n // }\n}\n","@import './../../../styles/variables';\n\n.c-SortModal {\n // transform: translate(0,0);\n // transition: transform .3s ease-out,-webkit-transform .3s ease-out;\n\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-FilterModal {\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n padding: 1rem;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n .input-range {\n margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n \n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-ItemPrice {\n line-height: $smaller-font-size;\n margin-bottom: 0.9rem;\n display: flex;\n align-items: baseline;\n .c-ItemPrice__price {\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding-right: 0.5rem;\n }\n \n .c-ItemPrice__price--strikethrough {\n color: $neutral-40;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n text-decoration: line-through;\n // margin-left: $unit * 0.8; \n }\n \n .c-ItemPrice__discount {\n color: #4aa219;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n margin-left: auto;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer__c-ProductTile {\n padding: 10px 15px;\n border: 1px solid $neutral-17;\n margin-bottom: 4rem;\n cursor: pointer;\n\n &.c-Plp__c-ProductContainer__c-ProductTile--shadow {\n // box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);\n box-shadow: 0 5px 5px rgba(0, 0, 0, 0.12), 0 4px 11px rgba(0, 0, 0, 0.24);\n transition: all 0.3s cubic-bezier(.25,.8,.25,1);\n &:hover {\n box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);\n }\n }\n\n .c-Plp__c-ProductContainer__c-ProductTile__image {\n margin-bottom: 0.7rem;\n }\n\n .c-Plp__c-ProductContainer__c-ProductTile__name {\n font-size: $small-font-size;\n }\n\n .btn__addToCart {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px;\n background-color: $add-to-cart-button-background-color;\n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n \n .btn__addToCart:hover {\n opacity: 0.7;\n }\n\n @media only screen and (min-width: 768px) {\n border: none;\n &:not(:last-child) {\n margin-right: 2em;\n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer {\n margin-bottom: 46px;\n\n .c-Cart__emptyPlp {\n background: $neutral-00;\n margin-top: 25%;\n border: 1px solid black;\n text-align: center;\n padding: 1em;\n\n .c-Cart__emptyPlp__information {\n color: $neutral-40;\n }\n }\n\n .c-Plp__c-ProductContainer__infoContainer {\n background: $neutral-00;\n color: $success-color;\n padding: 1em;\n font-weight: $bold-font-weight;\n\n .c-Plp__c-ProductContainer__information {\n display: inline-block;\n margin-bottom: 8px;\n }\n }\n\n .c-Plp__c-ProductContainer__btnClearSearch {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px 20px;\n background-color: $brand-color;\n color: $neutral-12; \n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n\n .row {\n justify-content: space-evenly;\n }\n\n @media only screen and (min-width: 768px) {\n .c-Cart__emptyPlp {\n margin-top: 0;\n width: 75%;\n margin-left: auto;\n margin-right: auto;\n \n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-ProductContainerWithTools {\n\n .c-ProductContainerWithTools__asideCol {\n border-right: 2px solid #ddd;\n padding-right: 27px;\n }\n .c-SortTool__content {\n padding: 20px;\n .c-SortTool__header {\n margin-right: 3rem;\n\n .c-SortTool__title {\n font-weight: $bold-font-weight;\n font-size: $big-font-size;\n }\n }\n .radio {\n display: inline;\n margin-right: 2.5rem;\n input[type=radio] {\n display: none;\n }\n\n label {\n color: $neutral-40;\n padding: 5px;\n }\n\n .c-SortTool__body__label {\n border-bottom: 1px solid $brand-color;\n color: $brand-color;\n }\n }\n\n .c-SortTool__header, .c-SortTool__title, .c-SortTool__body, .c-SortTool__body>.container, .c-SortTool__body>.container.radio {\n display: inline-block;\n }\n }\n\n .c-FilterTool__content {\n padding: 1rem;\n .c-FilterTool__body {\n color: $neutral-40;\n margin: 3em 0;\n .input-range {\n // margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n\n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n margin-top: 1em;\n }\n }\n .c-FilterTool__footer {\n text-align: center;\n button {\n border-radius: 22px;\n padding: 9px 29px;\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/static/css/4.17ee27d5.chunk.css b/static/css/4.17ee27d5.chunk.css deleted file mode 100644 index 987af9f..0000000 --- a/static/css/4.17ee27d5.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.c-Plp__c-Header__c-Search{margin-left:auto;position:relative}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input{background:transparent;border:none;border-bottom:1px solid #fff;color:#fff;float:right;min-height:0;width:0;visibility:hidden;opacity:0;font-size:14px;font-weight:700;padding:7px 10px 8px 0;transition:all .3s ease-in-out;box-shadow:none;outline:none}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input.c-Plp__c-Header__c-Search__input--visible{width:100%;opacity:1;visibility:visible}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-webkit-input-placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{color:#fff;font-size:14px}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{color:#fff}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__searchIcon{position:absolute;top:6px;right:0}.c-Plp__c-Header__c-CartIcon{position:relative}.c-Plp__c-Header__c-CartIcon .c-Plp__c-Header__c-CartIcon__badge{position:absolute;top:-7px;right:-9px;padding:0 5px;border-radius:50%;background-color:#c70936;color:#fff;font-size:12px}.c-Plp__c-Header__c-CartIcon .fa-shopping-cart{float:right}.c-Footer{display:flex;align-items:center;justify-content:center;position:fixed;left:0;bottom:0;width:100%;background-color:#4471ea;color:#f1f3f6;padding:.7em}.c-Footer p{margin-bottom:0;font-weight:700}.c-Plp__c-SortAndFilterPanel{text-align:center}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool{padding:.8rem;font-size:16px;font-weight:700;border:1px solid #e1e1e1}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool .c-Plp__c-SortAndFilterPanel__toolContent{margin-bottom:0}.c-SortModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-SortModal.modal .modal-dialog{pointer-events:auto}.c-SortModal.modal .modal-dialog .modal-body{color:#999}.c-SortModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-SortModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-SortModal.ReactModal__Overlay--after-open{opacity:1}.c-SortModal.ReactModal__Overlay--before-close{opacity:0}.c-FilterModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-FilterModal.modal .modal-dialog{pointer-events:auto}.c-FilterModal.modal .modal-dialog .modal-body{color:#999;padding:1rem}.c-FilterModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range{margin:25px 0;font-weight:700;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label{top:20px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--value{top:-40px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--max{right:2em}.c-FilterModal.modal .modal-dialog .modal-body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center}.c-FilterModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-FilterModal.ReactModal__Overlay--after-open{opacity:1}.c-FilterModal.ReactModal__Overlay--before-close{opacity:0}.c-ItemPrice{line-height:12px;margin-bottom:.9rem;display:flex;align-items:baseline}.c-ItemPrice .c-ItemPrice__price{font-size:14px;font-weight:700;padding-right:.5rem}.c-ItemPrice .c-ItemPrice__price--strikethrough{color:#999;font-weight:700;font-size:12px;text-decoration:line-through}.c-ItemPrice .c-ItemPrice__discount{color:#4aa219;font-weight:700;font-size:12px;margin-left:auto}.c-Plp__c-ProductContainer__c-ProductTile{padding:10px 15px;border:1px solid #e1e1e1;margin-bottom:4rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__image{margin-bottom:.7rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__name{font-size:14px}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart{display:block;margin:0 auto;border-radius:20px;padding:7px;background-color:#f7ae3a;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart:hover{opacity:.7}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer__c-ProductTile{border:none}.c-Plp__c-ProductContainer__c-ProductTile:not(:last-child){margin-right:2em}}.c-Plp__c-ProductContainer{margin-bottom:46px}.c-Plp__c-ProductContainer .c-Cart__emptyPlp{background:#fff;margin-top:25%;border:1px solid #000;text-align:center;padding:1em}.c-Plp__c-ProductContainer .c-Cart__emptyPlp .c-Cart__emptyPlp__information{color:#999}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer{background:#fff;color:#037b30;padding:1em;font-weight:700}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer .c-Plp__c-ProductContainer__information{display:inline-block;margin-bottom:8px}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__btnClearSearch{display:block;margin:0 auto;border-radius:20px;padding:7px 20px;background-color:#4471ea;color:#f1f3f6;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer .row{justify-content:space-evenly}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer .c-Cart__emptyPlp{margin-top:0;width:75%;margin-left:auto;margin-right:auto}}.c-ProductContainerWithTools .c-ProductContainerWithTools__asideCol{border-right:2px solid #ddd;padding-right:27px}.c-ProductContainerWithTools .c-SortTool__content{padding:20px}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header{margin-right:3rem}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header .c-SortTool__title{font-weight:700;font-size:20px}.c-ProductContainerWithTools .c-SortTool__content .radio{display:inline;margin-right:2.5rem}.c-ProductContainerWithTools .c-SortTool__content .radio input[type=radio]{display:none}.c-ProductContainerWithTools .c-SortTool__content .radio label{color:#999;padding:5px}.c-ProductContainerWithTools .c-SortTool__content .radio .c-SortTool__body__label{border-bottom:1px solid #4471ea;color:#4471ea}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container.radio,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__title{display:inline-block}.c-ProductContainerWithTools .c-FilterTool__content{padding:1rem}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body{color:#999;margin:3em 0}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range{font-weight:700;font-size:14px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label{top:20px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--value{top:-40px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--max{right:2em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center;margin-top:1em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer{text-align:center}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer button{border-radius:22px;padding:9px 29px} -/*# sourceMappingURL=4.17ee27d5.chunk.css.map */ \ No newline at end of file diff --git a/static/css/4.17ee27d5.chunk.css.map b/static/css/4.17ee27d5.chunk.css.map deleted file mode 100644 index 9df1b0c..0000000 --- a/static/css/4.17ee27d5.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["Search.component.scss","../../../styles/_variables.scss","CartIcon.component.scss","Footer.component.scss","SortAndFilterPanel.component.scss","SortModal.component.scss","FilterModal.component.scss","ItemPrice.component.scss","ProductTile.component.scss","ProductContainer.component.scss","ProductContainerWithTools.component.scss"],"names":[],"mappings":"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","file":"4.17ee27d5.chunk.css","sourcesContent":["@import './../../../styles//variables';\n\n.c-Plp__c-Header__c-Search {\n margin-left: auto;\n position: relative;\n\n .c-Plp__c-Header__c-Search__input {\n background: transparent;\n border: none;\n border-bottom: 1px solid $neutral-00;\n color: $neutral-00;\n float: right;\n min-height: 0;\n width: 0;\n visibility: hidden;\n opacity: 0;\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding: 7px 10px 8px 0;\n -webkit-transition: all 0.33s ease-in-out;\n transition: all 0.3s ease-in-out;\n box-shadow: none;\n outline: none;\n\n &.c-Plp__c-Header__c-Search__input--visible {\n width: 100%;\n opacity: 1;\n visibility: visible;\n }\n \n &::placeholder {\n color: $neutral-00;\n opacity: 1;\n }\n \n &:-ms-input-placeholder {\n color: $neutral-00;\n font-size: $small-font-size;\n }\n \n &::-ms-input-placeholder {\n color: $neutral-00;\n }\n }\n\n .c-Plp__c-Header__c-Search__searchIcon {\n position: absolute;\n top: 6px;\n right: 0px;\n }\n}\n","// Project-Wide Variables\n// ===\n//\n// Edit these as needed. Some guidelines:\n//\n// - Names should be lowercase and dash-separated;\n// - Qualifiers should be added to the beginning of related variables: use\n// `$small-font-size`, not `$font-size-small`;\n// - Numeric scales should use increments of 10; these numbers are arbitrary and\n// should not map to actual values. If really necessary, additional values can\n// be added in between, e.g. $neutral-15 between 10 and 20.\n//\n//\n// Table of Contents\n// ---\n//\n// [AAA] Basic Layout\n// [BBB] Responsive Layout\n// [CCC] Typography\n// [DDD] Color Palette\n// [EEE] Appearance\n// [FFF] Z-Index\n// [GGG] Shorthands\n\n\n// [AAA] Basic Layout\n// ---\n\n// Basic unit for spacing and alignment; 6 to 12px recommended. Apply in whole\n// or half multiples.\n$sub-unit: 4px;\n$unit: 8px;\n\n// Standard tap-target size\n$tap-size: 44px;\n\n// Container max-width.\n$max-width: 1280px;\n\n// Content Height Calculations\n$header-height: 64px;\n$footer-height: 173px;\n$content-height: calc(100vh - #{$header-height} - #{$footer-height});\n\n// [BBB] Responsive Layout\n// ---\n//\n// Media query breakpoints and grid setup. Please see Mobify's Responsive Best\n// Practices doc here: https://bit.ly/2tmRnEi, and our Responsive Grid\n// documentation here: http://docs.mobify.com/latest/guides/responsive-grid/\n//\n// Note: $small-breakpoint isn't needed, since it is 0px\n\n$medium-breakpoint: 600px;\n$large-breakpoint: 960px;\n$xlarge-breakpoint: $max-width;\n\n$susy: (\n // Add color to show the columns and gutters\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(4),\n 'gutters': 12px\n);\n\n$medium-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 12px\n);\n\n$large-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 24px\n);\n\n\n// [CCC] Typography\n// ---\n// $font-family: 'San Francisco', 'Roboto', 'Fira Sans', 'Segoe UI', sans-serif;\n$font-family: Verdana, Geneva, sans-serif; \n$header-font-family: 'Avenir Next Condensed', 'Roboto Condensed', 'Helvetica Neue', 'Roboto', sans-serif;\n$loaded-header-font-family: 'Roboto', $header-font-family;\n\n// Line height\n$huge-line-height: 32px;\n$bigger-line-height: 28px;\n$big-line-height: 24px;\n$line-height: 20px;\n$small-line-height: 16px;\n$smaller-line-height: 12px;\n$tiny-line-height: 8px;\n\n// Font sizes\n$huge-font-size: 28px;\n$bigger-font-size: 24px;\n$big-font-size: 20px;\n$font-size: 16px;\n$small-font-size: 14px;\n$smaller-font-size: 12px;\n$tiny-font-size: 10px;\n$smallest-font-size: 8px;\n\n// Font weight\n$thin-font-weight: 100;\n$extra-light-font-weight: 200;\n$light-font-weight: 300;\n$regular-font-weight: 400;\n$medium-font-weight: 500;\n$semi-bold-font-weight: 600;\n$bold-font-weight: 700;\n\n// [DDD] Color Palette\n// ---\n\n// Neutrals\n$neutral-00: #fff;\n$neutral-10: #f7f7f7;\n$neutral-12: #f1f3f6;\n$neutral-15: #eee;\n$neutral-17: #e1e1e1;\n$neutral-20: #d5d5d5;\n$neutral-30: #bfbfbf;\n$neutral-40: #999;\n$neutral-50: #696969;\n$neutral-60: #333;\n$neutral-70: #000;\n\n// Brand colors\n// $brand-color: #017e9b; // blue\n$brand-color: #4471ea; // blue\n// $secondary-brand-color: #005569;\n$secondary-brand-color: #fafafa;\n$tertiary-brand-color: #83bdcb;\n$quaternary-brand-color: #bfdfe6;\n\n// UI Kit colors\n$ui-brand-color: #005c83; // dark blue\n\n// Accent colors\n$accent-color: #ff852c; // orange\n$light-accent-color: lighten($accent-color, 15%);\n$dark-accent-color: darken($accent-color, 15%);\n\n// Primary Action\n$primary-action-color: #dc0a3c;\n$light-primary-action-color: lighten($primary-action-color, 15%);\n$dark-primary-action-color: darken($primary-action-color, 15%);\n\n// Secondary Action\n$secondary-action-color: #ff852c;\n$light-secondary-action-color: lighten($secondary-action-color, 15%);\n$dark-secondary-action-color: darken($secondary-action-color, 15%);\n\n// Success colors\n$success-color: #037b30;\n$light-success-color: lighten($success-color, 15%);\n$dark-success-color: darken($success-color, 15%);\n\n// Error colors\n$error-color: #c70936;\n$light-error-color: lighten($error-color, 15%);\n$feedback-error-color: #f8e7eb;\n$dark-error-color: darken($error-color, 15%);\n\n// Sale color\n$sale-color: $error-color;\n$prominent-color: $error-color;\n\n// Social colors\n$facebook-color: #3a5a93;\n$twitter-color: #55aace;\n$instagram-color: #405de6;\n$pinterest-color: #bd081c;\n$youtube-color: #e52d27;\n$google-plus-color: #dd4b39;\n$yelp-color: #af0606;\n\n\n// [EEE] Appearance\n// ---\n\n$font-color: $neutral-60;\n$font-color-light: $neutral-12;\n\n$link-color: $ui-brand-color;\n$active-link-color: $dark-accent-color;\n\n$focus-color: $brand-color;\n\n$border-color: $neutral-20;\n$border-radius: 4px;\n\n$input-background-color: $neutral-00;\n$input-border-color: $border-color;\n$focused-input-border-color: $secondary-brand-color;\n$disabled-input-color: $neutral-40;\n$disabled-input-background-color: $neutral-15;\n$disabled-button-background-color: $neutral-15;\n$add-to-cart-button-background-color: #f7ae3a;\n$horizontal-input-padding: $unit;\n$vertical-input-padding: $unit;\n\n$background-color: $neutral-12;\n$overlay-color: rgba($neutral-00, 0.85);\n\n\n// [FFF] Z-Index\n// ---\n\n// Organizes z-index usage by name. Values can be incremented/decremented\n// slightly as necessary. eg. $z1-layer + 1;\n\n$z1-depth: 1; // background\n$z2-depth: 10; // icon or other ui element\n$z3-depth: 100; // modal shade or similar\n$z4-depth: 1000; // modal dialog or similar\n\n\n// [GGG] Shorthands\n// ---\n\n$border: 1px solid $border-color;\n$light-border: 1px solid $neutral-15;\n$input-padding: $vertical-input-padding $horizontal-input-padding;\n\n$box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.3);\n$large-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3);\n$inset-box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.3), inset 0 -2px 2px -2px rgba(0, 0, 0, 0.3);\n$input-box-shadow: inset 0 0 5px 0 rgba(0, 0, 0, 0.3);\n$themeColor-Light: #f3e2c7;\n$themeColor-Dark:#252525;\n$theme-font: verdana, sans-serif;\n$theme-supplementer: #f39c12;\n$font-size-desktop-h5: 1.25em;\n$font-size-mobile-h5: 0.8em;\n$font-size-desktop-p: 1.1em;\n$font-size-mobile-p: 0.7em;\n","@import './../../../styles/variables';\n\n.c-Plp__c-Header__c-CartIcon {\n // margin-left: 1rem;\n position: relative;\n\n .c-Plp__c-Header__c-CartIcon__badge {\n position: absolute;\n top: -7px;\n right: -9px;\n padding: 0px 5px;\n border-radius: 50%;\n background-color: $prominent-color;\n color: $neutral-00;\n font-size: $smaller-font-size;\n }\n\n .fa-shopping-cart {\n float: right;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Footer {\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: $brand-color;\n color: $font-color-light;\n padding: 0.7em;\n\n p {\n margin-bottom: 0;\n font-weight: bold;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel {\n text-align: center;\n .c-Plp__c-SortAndFilterPanel__tool {\n padding: 0.8rem;\n font-size: $font-size;\n font-weight: $bold-font-weight;\n border: 1px solid $neutral-17;\n .c-Plp__c-SortAndFilterPanel__toolContent {\n margin-bottom: 0;\n }\n }\n\n // .ripple {\n // background-color: $shocking-pink;\n // width: 1rem;\n // height: 1rem;\n // position: absolute;\n // border-radius: 50%;\n // transform: translateX(-100%) translateY(-100%);\n // mix-blend-mode: screen;\n // animation: ripple 1000ms ease-out forwards;\n // }\n \n // @keyframes ripple {\n // 0% { transform: translate(-100%, -100%); }\n // 80% { transform: translate(-100%, -100%) scale(50); }\n // 100% { transform: translate(-100%, -100%) scale(50); opacity: 0; }\n // }\n}\n","@import './../../../styles/variables';\n\n.c-SortModal {\n // transform: translate(0,0);\n // transition: transform .3s ease-out,-webkit-transform .3s ease-out;\n\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-FilterModal {\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n padding: 1rem;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n .input-range {\n margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n \n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-ItemPrice {\n line-height: $smaller-font-size;\n margin-bottom: 0.9rem;\n display: flex;\n align-items: baseline;\n .c-ItemPrice__price {\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding-right: 0.5rem;\n }\n \n .c-ItemPrice__price--strikethrough {\n color: $neutral-40;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n text-decoration: line-through;\n // margin-left: $unit * 0.8; \n }\n \n .c-ItemPrice__discount {\n color: #4aa219;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n margin-left: auto;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer__c-ProductTile {\n padding: 10px 15px;\n border: 1px solid $neutral-17;\n margin-bottom: 4rem;\n\n .c-Plp__c-ProductContainer__c-ProductTile__image {\n margin-bottom: 0.7rem;\n }\n\n .c-Plp__c-ProductContainer__c-ProductTile__name {\n font-size: $small-font-size;\n }\n\n .btn__addToCart {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px;\n background-color: $add-to-cart-button-background-color;\n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n \n .btn__addToCart:hover {\n opacity: 0.7;\n }\n\n @media only screen and (min-width: 768px) {\n border: none;\n &:not(:last-child) {\n margin-right: 2em;\n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer {\n margin-bottom: 46px;\n\n .c-Cart__emptyPlp {\n background: $neutral-00;\n margin-top: 25%;\n border: 1px solid black;\n text-align: center;\n padding: 1em;\n\n .c-Cart__emptyPlp__information {\n color: $neutral-40;\n }\n }\n\n .c-Plp__c-ProductContainer__infoContainer {\n background: $neutral-00;\n color: $success-color;\n padding: 1em;\n font-weight: $bold-font-weight;\n\n .c-Plp__c-ProductContainer__information {\n display: inline-block;\n margin-bottom: 8px;\n }\n }\n\n .c-Plp__c-ProductContainer__btnClearSearch {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px 20px;\n background-color: $brand-color;\n color: $neutral-12; \n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n\n .row {\n justify-content: space-evenly;\n }\n\n @media only screen and (min-width: 768px) {\n .c-Cart__emptyPlp {\n margin-top: 0;\n width: 75%;\n margin-left: auto;\n margin-right: auto;\n \n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-ProductContainerWithTools {\n\n .c-ProductContainerWithTools__asideCol {\n border-right: 2px solid #ddd;\n padding-right: 27px;\n }\n .c-SortTool__content {\n padding: 20px;\n .c-SortTool__header {\n margin-right: 3rem;\n\n .c-SortTool__title {\n font-weight: $bold-font-weight;\n font-size: $big-font-size;\n }\n }\n .radio {\n display: inline;\n margin-right: 2.5rem;\n input[type=radio] {\n display: none;\n }\n\n label {\n color: $neutral-40;\n padding: 5px;\n }\n\n .c-SortTool__body__label {\n border-bottom: 1px solid $brand-color;\n color: $brand-color;\n }\n }\n\n .c-SortTool__header, .c-SortTool__title, .c-SortTool__body, .c-SortTool__body>.container, .c-SortTool__body>.container.radio {\n display: inline-block;\n }\n }\n\n .c-FilterTool__content {\n padding: 1rem;\n .c-FilterTool__body {\n color: $neutral-40;\n margin: 3em 0;\n .input-range {\n // margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n\n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n margin-top: 1em;\n }\n }\n .c-FilterTool__footer {\n text-align: center;\n button {\n border-radius: 22px;\n padding: 9px 29px;\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/static/js/4.287ebadd.chunk.js b/static/js/4.287ebadd.chunk.js deleted file mode 100644 index 4fb7af0..0000000 --- a/static/js/4.287ebadd.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[4],{104:function(e,t,a){},105:function(e,t,a){},107:function(e,t,a){},108:function(e,t,a){},109:function(e,t,a){},119:function(e,t,a){"use strict";a.r(t);var r=a(0),n=a.n(r),o=a(5),c=a.n(o),l=a(22),i=a(10),s=a(72),u=a(73),d=(a(85),a(58)),m=a(57),p=a(25),f=a.n(p);a(86);function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return y(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return y(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at.min&&e.discountedPrice0&&0===u.length?!l&&i(!0):l&&i(!1),s=u}var m=s&&s.map((function(e,t){return n.a.createElement(J,{product:e,key:t})}));e.dispatchProducts(s);return n.a.createElement("main",{className:"c-Plp__c-ProductContainer"},l?n.a.createElement("div",{className:"c-Cart__emptyPlp"},n.a.createElement("h3",null,"No Products match the search criteria!"),n.a.createElement("p",{className:"c-Cart__emptyPlp__information"},"Please modify Search or filter criteria, and try again.")):e.products&&0!==e.products.length?n.a.createElement("div",{className:"container"},o&&""!==o&&n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-12 c-Plp__c-ProductContainer__infoContainer"},n.a.createElement("span",{className:"c-Plp__c-ProductContainer__information"},'Showing Results for the search - "',o,'"'),n.a.createElement("p",null,n.a.createElement("button",{type:"button",className:"c-Plp__c-ProductContainer__btnClearSearch",onClick:function(){e.dispatchSearchString("")}},"Clear Search")))),n.a.createElement("div",{className:"row c-Plp__c-ProductContainer__row"},m)):n.a.createElement(W.a,null))};X.defaultProps={products:[]},X.propTypes={products:c.a.array,sortBy:c.a.string};var Z=Object(H.createPropsSelector)({filterRange:R.a,searchString:R.c,sortBy:R.d}),ee={dispatchProducts:i.h,dispatchSearchString:i.i},te=Object(l.b)(Z,ee)(X),ae=(a(109),function(e){var t=e.isMobile,a=e.products;return n.a.createElement("section",{className:"c-ProductContainerWithTools"},t?n.a.createElement(n.a.Fragment,null,n.a.createElement(F,null),n.a.createElement(te,{products:a})):n.a.createElement(n.a.Fragment,null,n.a.createElement("div",{className:"container"},n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-2 c-ProductContainerWithTools__asideCol"},n.a.createElement("aside",{className:"c-ProductContainerWithTools__c-FilterAside"},n.a.createElement(T,{headerClass:"c-FilterTool__header",titleClass:"c-FilterTool__title",bodyClass:"c-FilterTool__body",footerClass:"c-FilterTool__footer",title:"Filters"}))),n.a.createElement("div",{className:"col-10"},n.a.createElement(g,{headerClass:"c-SortTool__header",titleClass:"c-SortTool__title",bodyClass:"c-SortTool__body",labelClass:"c-SortTool__body__label",title:"Sort By"}),n.a.createElement(te,{products:a}))))))});ae.propTypes={products:c.a.array};var re=ae;function ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return oe(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return oe(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):a {\n\n const [sortType, setSortType] = useState('')\n const [selectionError, setSelectionError] = useState('')\n\n const submitSelection = (e) => {\n if (!sortType) {\n setSelectionError(true)\n return\n }\n props.dispatchSortSelection(sortType)\n props.isModal && props.closeModal(e)\n setSelectionError(false)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n {selectionError && Please Select One of the options below.}\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n {props.isModal &&
\n \n \n
}\n
\n );\n};\n\nSortTool.propTypes = {\n dispatchSortSelection: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchSortSelection\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(SortTool);\n","import SortTool from './SortTool.jsx';\n\nexport default SortTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport Modal from 'react-modal';\nimport SortTool from '../SortTool';\nimport './SortModal.component.scss';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst SortModal = ({closeModal, modalIsOpen}) => {\n\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n return (\n \n \n \n );\n};\n\nSortModal.defaultProps = {\n\n};\n\nSortModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchSortSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default SortModal;","import SortModal from './SortModal.jsx';\n\nexport default SortModal;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchFilterRange} from './../../../pages/PLP/actions';\nimport InputRange from 'react-input-range';\nimport './FilterTool.component.scss';\n\nconst FilterTool = props => {\n // var subtitle;\n const [filterRange, setFilterRange] = useState({min: 0, max: 10000})\n\n const submitSelection = (e) => {\n props.dispatchFilterRange(filterRange)\n props.isModal && props.closeModal(e)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n `₹${value}`}\n value={filterRange}\n onChange={value => setFilterRange(value)} />\n {/* onChangeComplete={(e) =>submitSelection(e)} /> */}\n

Price

\n
\n
\n {props.isModal && }\n \n
\n
\n );\n};\n\nFilterTool.propTypes = {\n dispatchFilterRange: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchFilterRange\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(FilterTool);","import FilterTool from './FilterTool.jsx';\n\nexport default FilterTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport FilterTool from './../FilterTool';\nimport './FilterModal.component.scss';\nimport 'react-input-range/lib/css/index.css';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst FilterModal = ({closeModal, modalIsOpen}) => {\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n\n return (\n \n \n \n );\n};\n\nFilterModal.defaultProps = {\n\n};\n\nFilterModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchFilterSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default FilterModal;\n","import FilterModal from './FilterModal.jsx';\n\nexport default FilterModal;","import React, {useState} from 'react';\nimport './SortAndFilterPanel.component.scss'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSort } from '@fortawesome/free-solid-svg-icons'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\nimport SortModal from '../SortModal';\nimport FilterModal from '../FilterModal';\n\nconst SortAndFilterPanel = props => {\n\n const [sortModalIsOpen,setSortIsOpen] = useState(false);\n const [filterModalIsOpen,setFilterIsOpen] = useState(false);\n \n function closeModal(type, e){\n e.stopPropagation();\n type === \"sort\" ? setSortIsOpen(false) : setFilterIsOpen(false);\n }\n\n return (\n
\n
\n
\n
setSortIsOpen(true)}>\n

Sort

\n closeModal(\"sort\", e)} modalIsOpen={sortModalIsOpen} />\n
\n
setFilterIsOpen(true)}>\n

Filter

\n closeModal(\"filter\", e)} modalIsOpen={filterModalIsOpen}/>\n
\n
\n
\n
\n );\n};\n\nSortAndFilterPanel.defaultProps = {\n\n};\n\nSortAndFilterPanel.propTypes = {\n\n};\n\nexport default SortAndFilterPanel;","import SortAndFilterPanel from './SortAndFilterPanel.jsx';\n\nexport default SortAndFilterPanel;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {CSSTransition} from 'react-transition-group';\n\nimport {updateCart} from './../../../pages/Cart/actions'\nimport {getCartTotalCount, getCartItems} from './../../../pages/Cart/selectors'\n\nimport Button from './../../atoms/Button'\nimport ItemPrice from '../ItemPrice/ItemPrice';\n\nimport './ProductTile.component.scss';\n\nconst ProductTile = props => {\n\n const product = props.product\n const addToCartButtonClass = \"btn btn__addToCart\"\n\n const updateCart = (productId) => {\n let cartTotalCount = props.cartTotalCount\n const cartItems = props.cartItems\n let count = cartItems && cartItems[productId] ? cartItems[productId] : 0\n cartItems[productId] = ++count\n props.updateCart(++cartTotalCount, cartItems)\n }\n\n return (\n // \n \n
\n {product.name}\n {product.name &&
{product.name}
}\n
\n {/*
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
*/}\n \n updateCart(product.id)} />\n \n // \n );\n};\n\nProductTile.propTypes = {\n updateCart: PropTypes.func,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount,\n cartItems: getCartItems\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductTile);","import ProductTile from './ProductTile.jsx';\n\nexport default ProductTile;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {dispatchProducts, dispatchSearchString} from './../../../pages/PLP/actions'\nimport {getFilterRange, getSortSelection, getSearchString} from './../../../pages/PLP/selectors'\nimport ProductTile from './../ProductTile'\nimport PageLoader from '../PageLoader/PageLoader';\nimport './ProductContainer.component.scss'\n\nconst ProductContainer = props => {\n\n const fr = props.filterRange\n const sb = props.sortBy\n const ss = props.searchString\n\n const [filterNoMatch, setFilterNoMatch] = useState(false)\n\n const getEmptyPlpBlock = () => {\n return (\n
\n

No Products match the search criteria!

\n

Please modify Search or filter criteria, and try again.

\n
\n )\n }\n \n let productsWithDiscountedPrice = props.products \n && props.products.length !== 0\n && props.products.map(product => {\n const price = product.price.display\n const discount = product.discount && price * (product.discount/100)\n product.discountAmount = Math.ceil(discount)\n product.discountedPrice = Math.ceil(price - product.discountAmount)\n return product\n })\n if (productsWithDiscountedPrice) {\n if (sb) {\n switch(sb) {\n case \"priceHtoL\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discountedPrice - prod1.discountedPrice);\n break;\n case \"priceLtoH\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod1.discountedPrice - prod2.discountedPrice);\n break;\n case \"discount\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discount - prod1.discount);\n break;\n default:\n break;\n }\n }\n \n let productsWithDiscountedPriceFiltered = [...productsWithDiscountedPrice]\n const noOfProducts = productsWithDiscountedPrice.length\n if (fr) {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => prod.discountedPrice > fr.min && prod.discountedPrice < fr.max);\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n if (ss && ss !== \"\") {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => {\n return (prod.name.toLowerCase().includes(ss.toLowerCase())\n || prod.category.toLowerCase().includes(ss.toLowerCase())\n || prod.img_url.toLowerCase().includes(ss.toLowerCase()));\n });\n }\n if (noOfProducts > 0 && productsWithDiscountedPriceFiltered.length === 0) {\n !filterNoMatch && setFilterNoMatch(true)\n } else {\n filterNoMatch && setFilterNoMatch(false)\n }\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n const productTiles = productsWithDiscountedPrice && productsWithDiscountedPrice.map((product, key) =>{\n return \n })\n props.dispatchProducts(productsWithDiscountedPrice)\n\n const clearSearch = () => {\n props.dispatchSearchString(\"\")\n }\n\n return
\n {\n filterNoMatch ? getEmptyPlpBlock() : props.products && props.products.length !== 0 ?\n
\n {\n ss && ss !== \"\" &&\n
\n
\n Showing Results for the search - \"{ss}\"\n

\n
\n
\n }\n
\n {productTiles}\n
\n
: \n }\n
\n};\n\nProductContainer.defaultProps = {\n products: []\n};\n\nProductContainer.propTypes = {\n products: PropTypes.array,\n sortBy: PropTypes.string\n};\n\nconst mapStateToProps = createPropsSelector({\n filterRange: getFilterRange,\n searchString: getSearchString,\n sortBy: getSortSelection\n})\n\nconst mapDispatchToProps = ({\n dispatchProducts, dispatchSearchString\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductContainer);","import ProductContainer from './ProductContainer.jsx';\n\nexport default ProductContainer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SortAndFilterPanel from './../SortAndFilterPanel'\nimport ProductContainer from './../ProductContainer'\nimport FilterTool from './../FilterTool'\nimport SortTool from './../SortTool'\nimport './ProductContainerWithTools.component.scss';\n\nconst ProductContainerWithTools = ({isMobile, products}) => {\n return
\n {\n isMobile ?\n \n \n \n :\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n }\n
\n};\n\nProductContainerWithTools.propTypes = {\n products: PropTypes.array\n};\n\nexport default ProductContainerWithTools;","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchProducts} from './actions';\n\nimport Header from './../../components/molecules/Header'\nimport Footer from './../../components/molecules/Footer'\nimport ProductContainerWithTools from '../../components/molecules/ProductContainerWithTools/ProductContainerWithTools';\n\nconst Plp = ({dispatchProducts}) => {\n \n const [products, setProducts] = useState([])\n /* eslint no-useless-escape: 0 */\n const isMobile = (() => {\n var check = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return check;\n })();\n\n useEffect(() => {\n // fetch('https://api.myjson.com/bins/qzuzi')\n // fetch('https://api.jsonbin.io/b/5e8c3aafaf7c476bc47e47a3')\n // fetch('https://api.jsonbin.io/b/5e8c3ad0ff9c906bdf1d5380')\n // fetch('https://api.jsonbin.io/b/5e8c3a45af7c476bc47e477d')\n fetch('http://localhost:3001/getProducts')\n .then(res => res.json())\n .then(products => {\n if (typeof products === 'string') {\n products = JSON.parse(products)\n }\n console.log(products)\n setProducts(products)\n dispatchProducts(products)\n })\n }, [])\n\n return (\n
\n
\n \n
\n
\n )\n};\n\nPlp.propTypes = {\n dispatchProducts: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(Plp);","import Plp from './Plp.jsx';\n\nexport default Plp;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')\nexport const getSearchString = createGetSelector(getPlp, 'searchString')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price.display}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {withRouter} from 'react-router-dom';\nimport {dispatchSearchString} from './../../../pages/PLP/actions'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {faSearch} from '@fortawesome/free-solid-svg-icons'\nimport './Search.component.scss';\n\nconst Search = ({dispatchSearchString, inCart, history}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\n inCart && history.push('/view/plp')\n }\n \n const debouncedStartSearch = (func, delay, searchStringUpdated) => {\n clearTimeout(timerId)\n timerId = setTimeout(() => func(searchStringUpdated), delay)\n }\n\n const onChangeHandler = (e) => {\n debouncedStartSearch(startSearch, 500, e.target.value)\n }\n\n return (\n
\n \n setSearchInitiated(!searchInitiated)} />\n
\n );\n};\n\nSearch.propTypes = {\n dispatchSearchString: PropTypes.func,\n inCart: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withRouter(Search));","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n
\n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n
\n
\n
\n
\n
\n
{!props.inCart && }
\n
\n
\n
\n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n
\n

@Copyright

\n
\n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n {props.buttonIcon && }\n {props.buttonText}\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/4.68a509ec.chunk.js b/static/js/4.68a509ec.chunk.js new file mode 100644 index 0000000..617265f --- /dev/null +++ b/static/js/4.68a509ec.chunk.js @@ -0,0 +1,2 @@ +(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[4],{104:function(e,t,a){},105:function(e,t,a){},107:function(e,t,a){},108:function(e,t,a){},109:function(e,t,a){},119:function(e,t,a){"use strict";a.r(t);var r=a(0),n=a.n(r),o=a(5),c=a.n(o),l=a(22),i=a(10),s=a(72),u=a(73),d=(a(85),a(58)),m=a(57),p=a(25),f=a.n(p);a(86);function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return y(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return y(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at.min&&e.discountedPrice0&&0===u.length?!l&&i(!0):l&&i(!1),s=u}var m=s&&s.map((function(e,t){return n.a.createElement(J,{product:e,key:t})}));e.dispatchProducts(s);return n.a.createElement("main",{className:"c-Plp__c-ProductContainer"},l?n.a.createElement("div",{className:"c-Cart__emptyPlp"},n.a.createElement("h3",null,"No Products match the search criteria!"),n.a.createElement("p",{className:"c-Cart__emptyPlp__information"},"Please modify Search or filter criteria, and try again.")):e.products&&0!==e.products.length?n.a.createElement("div",{className:"container"},o&&""!==o&&n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-12 c-Plp__c-ProductContainer__infoContainer"},n.a.createElement("span",{className:"c-Plp__c-ProductContainer__information"},'Showing Results for the search - "',o,'"'),n.a.createElement("p",null,n.a.createElement("button",{type:"button",className:"c-Plp__c-ProductContainer__btnClearSearch",onClick:function(){e.dispatchSearchString("")}},"Clear Search")))),n.a.createElement("div",{className:"row c-Plp__c-ProductContainer__row"},m)):n.a.createElement(W.a,null))};X.defaultProps={products:[]},X.propTypes={products:c.a.array,sortBy:c.a.string};var Z=Object(H.createPropsSelector)({filterRange:R.a,searchString:R.c,sortBy:R.d}),ee={dispatchProducts:i.h,dispatchSearchString:i.i},te=Object(l.b)(Z,ee)(X),ae=(a(109),function(e){var t=e.isMobile,a=e.products;return n.a.createElement("section",{className:"c-ProductContainerWithTools"},t?n.a.createElement(n.a.Fragment,null,n.a.createElement(F,null),n.a.createElement(te,{products:a})):n.a.createElement(n.a.Fragment,null,n.a.createElement("div",{className:"container"},n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-2 c-ProductContainerWithTools__asideCol"},n.a.createElement("aside",{className:"c-ProductContainerWithTools__c-FilterAside"},n.a.createElement(T,{headerClass:"c-FilterTool__header",titleClass:"c-FilterTool__title",bodyClass:"c-FilterTool__body",footerClass:"c-FilterTool__footer",title:"Filters"}))),n.a.createElement("div",{className:"col-10"},n.a.createElement(_,{headerClass:"c-SortTool__header",titleClass:"c-SortTool__title",bodyClass:"c-SortTool__body",labelClass:"c-SortTool__body__label",title:"Sort By"}),n.a.createElement(te,{products:a}))))))});ae.propTypes={products:c.a.array};var re=ae;function ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return oe(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return oe(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):a {\n\n const [sortType, setSortType] = useState('')\n const [selectionError, setSelectionError] = useState('')\n\n const submitSelection = (e) => {\n if (!sortType) {\n setSelectionError(true)\n return\n }\n props.dispatchSortSelection(sortType)\n props.isModal && props.closeModal(e)\n setSelectionError(false)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n {selectionError && Please Select One of the options below.}\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n {props.isModal &&
\n \n \n
}\n
\n );\n};\n\nSortTool.propTypes = {\n dispatchSortSelection: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchSortSelection\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(SortTool);\n","import SortTool from './SortTool.jsx';\n\nexport default SortTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport Modal from 'react-modal';\nimport SortTool from '../SortTool';\nimport './SortModal.component.scss';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst SortModal = ({closeModal, modalIsOpen}) => {\n\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n return (\n \n \n \n );\n};\n\nSortModal.defaultProps = {\n\n};\n\nSortModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchSortSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default SortModal;","import SortModal from './SortModal.jsx';\n\nexport default SortModal;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchFilterRange} from './../../../pages/PLP/actions';\nimport InputRange from 'react-input-range';\nimport './FilterTool.component.scss';\n\nconst FilterTool = props => {\n // var subtitle;\n const [filterRange, setFilterRange] = useState({min: 0, max: 10000})\n\n const submitSelection = (e) => {\n props.dispatchFilterRange(filterRange)\n props.isModal && props.closeModal(e)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n `₹${value}`}\n value={filterRange}\n onChange={value => setFilterRange(value)} />\n {/* onChangeComplete={(e) =>submitSelection(e)} /> */}\n

Price

\n
\n
\n {props.isModal && }\n \n
\n
\n );\n};\n\nFilterTool.propTypes = {\n dispatchFilterRange: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchFilterRange\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(FilterTool);","import FilterTool from './FilterTool.jsx';\n\nexport default FilterTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport FilterTool from './../FilterTool';\nimport './FilterModal.component.scss';\nimport 'react-input-range/lib/css/index.css';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst FilterModal = ({closeModal, modalIsOpen}) => {\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n\n return (\n \n \n \n );\n};\n\nFilterModal.defaultProps = {\n\n};\n\nFilterModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchFilterSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default FilterModal;\n","import FilterModal from './FilterModal.jsx';\n\nexport default FilterModal;","import React, {useState} from 'react';\nimport './SortAndFilterPanel.component.scss'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSort } from '@fortawesome/free-solid-svg-icons'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\nimport SortModal from '../SortModal';\nimport FilterModal from '../FilterModal';\n\nconst SortAndFilterPanel = props => {\n\n const [sortModalIsOpen,setSortIsOpen] = useState(false);\n const [filterModalIsOpen,setFilterIsOpen] = useState(false);\n \n function closeModal(type, e){\n e.stopPropagation();\n type === \"sort\" ? setSortIsOpen(false) : setFilterIsOpen(false);\n }\n\n return (\n
\n
\n
\n
setSortIsOpen(true)}>\n

Sort

\n closeModal(\"sort\", e)} modalIsOpen={sortModalIsOpen} />\n
\n
setFilterIsOpen(true)}>\n

Filter

\n closeModal(\"filter\", e)} modalIsOpen={filterModalIsOpen}/>\n
\n
\n
\n
\n );\n};\n\nSortAndFilterPanel.defaultProps = {\n\n};\n\nSortAndFilterPanel.propTypes = {\n\n};\n\nexport default SortAndFilterPanel;","import SortAndFilterPanel from './SortAndFilterPanel.jsx';\n\nexport default SortAndFilterPanel;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {CSSTransition} from 'react-transition-group';\n\nimport {updateCart} from './../../../pages/Cart/actions'\nimport {getCartTotalCount, getCartItems} from './../../../pages/Cart/selectors'\n\nimport Button from './../../atoms/Button'\nimport ItemPrice from '../ItemPrice/ItemPrice';\n\nimport './ProductTile.component.scss';\n\nconst ProductTile = props => {\n\n const product = props.product\n const addToCartButtonClass = \"btn btn__addToCart\"\n\n const updateCart = (productId) => {\n let cartTotalCount = props.cartTotalCount\n const cartItems = props.cartItems\n let count = cartItems && cartItems[productId] ? cartItems[productId] : 0\n cartItems[productId] = ++count\n props.updateCart(++cartTotalCount, cartItems)\n }\n\n return (\n // \n \n
\n {product.name}\n {product.name &&
{product.name}
}\n
\n {/*
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
*/}\n \n updateCart(product.id)} />\n \n // \n );\n};\n\nProductTile.propTypes = {\n updateCart: PropTypes.func,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount,\n cartItems: getCartItems\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductTile);","import ProductTile from './ProductTile.jsx';\n\nexport default ProductTile;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {dispatchProducts, dispatchSearchString} from './../../../pages/PLP/actions'\nimport {getFilterRange, getSortSelection, getSearchString} from './../../../pages/PLP/selectors'\nimport ProductTile from './../ProductTile'\nimport PageLoader from '../PageLoader/PageLoader';\nimport './ProductContainer.component.scss'\n\nconst ProductContainer = props => {\n\n const fr = props.filterRange\n const sb = props.sortBy\n const ss = props.searchString\n\n const [filterNoMatch, setFilterNoMatch] = useState(false)\n\n const getEmptyPlpBlock = () => {\n return (\n
\n

No Products match the search criteria!

\n

Please modify Search or filter criteria, and try again.

\n
\n )\n }\n \n let productsWithDiscountedPrice = props.products \n && props.products.length !== 0\n && props.products.map(product => {\n const price = product.price.display\n const discount = product.discount && price * (product.discount/100)\n product.discountAmount = Math.ceil(discount)\n product.discountedPrice = Math.ceil(price - product.discountAmount)\n return product\n })\n if (productsWithDiscountedPrice) {\n if (sb) {\n switch(sb) {\n case \"priceHtoL\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discountedPrice - prod1.discountedPrice);\n break;\n case \"priceLtoH\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod1.discountedPrice - prod2.discountedPrice);\n break;\n case \"discount\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discount - prod1.discount);\n break;\n default:\n break;\n }\n }\n \n let productsWithDiscountedPriceFiltered = [...productsWithDiscountedPrice]\n const noOfProducts = productsWithDiscountedPrice.length\n if (fr) {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => prod.discountedPrice > fr.min && prod.discountedPrice < fr.max);\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n if (ss && ss !== \"\") {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => {\n return (prod.name.toLowerCase().includes(ss.toLowerCase())\n || prod.category.toLowerCase().includes(ss.toLowerCase())\n || prod.img_url.toLowerCase().includes(ss.toLowerCase()));\n });\n }\n if (noOfProducts > 0 && productsWithDiscountedPriceFiltered.length === 0) {\n !filterNoMatch && setFilterNoMatch(true)\n } else {\n filterNoMatch && setFilterNoMatch(false)\n }\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n const productTiles = productsWithDiscountedPrice && productsWithDiscountedPrice.map((product, key) =>{\n return \n })\n props.dispatchProducts(productsWithDiscountedPrice)\n\n const clearSearch = () => {\n props.dispatchSearchString(\"\")\n }\n\n return
\n {\n filterNoMatch ? getEmptyPlpBlock() : props.products && props.products.length !== 0 ?\n
\n {\n ss && ss !== \"\" &&\n
\n
\n Showing Results for the search - \"{ss}\"\n

\n
\n
\n }\n
\n {productTiles}\n
\n
: \n }\n
\n};\n\nProductContainer.defaultProps = {\n products: []\n};\n\nProductContainer.propTypes = {\n products: PropTypes.array,\n sortBy: PropTypes.string\n};\n\nconst mapStateToProps = createPropsSelector({\n filterRange: getFilterRange,\n searchString: getSearchString,\n sortBy: getSortSelection\n})\n\nconst mapDispatchToProps = ({\n dispatchProducts, dispatchSearchString\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductContainer);","import ProductContainer from './ProductContainer.jsx';\n\nexport default ProductContainer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SortAndFilterPanel from './../SortAndFilterPanel'\nimport ProductContainer from './../ProductContainer'\nimport FilterTool from './../FilterTool'\nimport SortTool from './../SortTool'\nimport './ProductContainerWithTools.component.scss';\n\nconst ProductContainerWithTools = ({isMobile, products}) => {\n return
\n {\n isMobile ?\n \n \n \n :\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n }\n
\n};\n\nProductContainerWithTools.propTypes = {\n products: PropTypes.array\n};\n\nexport default ProductContainerWithTools;","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchProducts} from './actions';\n\nimport Header from './../../components/molecules/Header'\nimport Footer from './../../components/molecules/Footer'\nimport ProductContainerWithTools from '../../components/molecules/ProductContainerWithTools/ProductContainerWithTools';\n\nconst Plp = ({dispatchProducts}) => {\n \n const [products, setProducts] = useState([])\n /* eslint no-useless-escape: 0 */\n const isMobile = (() => {\n var check = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return check;\n })();\n\n useEffect(() => {\n // fetch('https://api.myjson.com/bins/qzuzi')\n // fetch('https://api.jsonbin.io/b/5e8c3aafaf7c476bc47e47a3')\n // fetch('https://api.jsonbin.io/b/5e8c3ad0ff9c906bdf1d5380')\n // fetch('https://api.jsonbin.io/b/5e8c3a45af7c476bc47e477d')\n fetch('http://localhost:3001/getProducts')\n .then(res => res.json())\n .then(products => {\n if (typeof products === 'string') {\n products = JSON.parse(products)\n }\n // console.log(products)\n setProducts(products)\n dispatchProducts(products)\n })\n }, [])\n\n return (\n
\n
\n \n
\n
\n )\n};\n\nPlp.propTypes = {\n dispatchProducts: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(Plp);","import Plp from './Plp.jsx';\n\nexport default Plp;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')\nexport const getSearchString = createGetSelector(getPlp, 'searchString')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price.display}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {withRouter} from 'react-router-dom';\nimport {dispatchSearchString} from './../../../pages/PLP/actions'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {faSearch} from '@fortawesome/free-solid-svg-icons'\nimport './Search.component.scss';\n\nconst Search = ({dispatchSearchString, inCart, history}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\n inCart && history.push('/view/plp')\n }\n \n const debouncedStartSearch = (func, delay, searchStringUpdated) => {\n clearTimeout(timerId)\n timerId = setTimeout(() => func(searchStringUpdated), delay)\n }\n\n const onChangeHandler = (e) => {\n debouncedStartSearch(startSearch, 500, e.target.value)\n }\n\n return (\n
\n \n setSearchInitiated(!searchInitiated)} />\n
\n );\n};\n\nSearch.propTypes = {\n dispatchSearchString: PropTypes.func,\n inCart: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withRouter(Search));","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n
\n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n
\n
\n
\n
\n
\n
{!props.inCart && }
\n
\n
\n
\n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n
\n

@Copyright

\n
\n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n {props.buttonIcon && }\n {props.buttonText}\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/runtime-main.a7a0f556.js b/static/js/runtime-main.44c4e860.js similarity index 94% rename from static/js/runtime-main.a7a0f556.js rename to static/js/runtime-main.44c4e860.js index 82dd9a9..5533869 100644 --- a/static/js/runtime-main.a7a0f556.js +++ b/static/js/runtime-main.44c4e860.js @@ -1,2 +1,2 @@ -!function(e){function t(t){for(var n,o,i=t[0],c=t[1],s=t[2],l=0,d=[];l