This commit is contained in:
Aayush Bhatt 2020-01-10 18:34:36 +05:30
commit acadbbea1f
49 changed files with 1238 additions and 827 deletions

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Webkul\Velocity\Database\Seeders\VelocityMetaDataSeeder;
use Webkul\Admin\Database\Seeders\DatabaseSeeder as BagistoDatabaseSeeder; use Webkul\Admin\Database\Seeders\DatabaseSeeder as BagistoDatabaseSeeder;
use Webkul\Velocity\Database\Seeders\VelocityMetaDataSeeder as VelocityDatabaseSeeder;
class DatabaseSeeder extends Seeder class DatabaseSeeder extends Seeder
{ {
@ -14,6 +14,6 @@ class DatabaseSeeder extends Seeder
public function run() public function run()
{ {
$this->call(BagistoDatabaseSeeder::class); $this->call(BagistoDatabaseSeeder::class);
$this->call(VelocityDatabaseSeeder::class); $this->call(VelocityMetaDataSeeder::class);
} }
} }

View File

@ -7,31 +7,11 @@
background-image: url("../images/Icon-Velocity.svg"); background-image: url("../images/Icon-Velocity.svg");
} }
.router-link-active .velocity-icon, .router-link-active .velocity-icon, .active .velocity-icon {
.active .velocity-icon {
background-image: url("../images/Icon-Velocity-Active.svg"); background-image: url("../images/Icon-Velocity-Active.svg");
} }
.router-link-active.velocity-icon, .router-link-active.velocity-icon, .active.velocity-icon {
.active.velocity-icon {
background-image: url("../images/Icon-Velocity-Active.svg");
}
.velocity-icon {
width: 60px;
height: 55px;
display: inline-block;
background-size: cover;
background-image: url("../images/Icon-Velocity.svg");
}
.router-link-active .velocity-icon,
.active .velocity-icon {
background-image: url("../images/Icon-Velocity-Active.svg");
}
.router-link-active.velocity-icon,
.active.velocity-icon {
background-image: url("../images/Icon-Velocity-Active.svg"); background-image: url("../images/Icon-Velocity-Active.svg");
} }
@ -700,6 +680,22 @@
content: "\E99F"; content: "\E99F";
} }
.velocity-icon {
width: 60px;
height: 55px;
display: inline-block;
background-size: cover;
background-image: url("../images/Icon-Velocity.svg");
}
.router-link-active .velocity-icon, .active .velocity-icon {
background-image: url("../images/Icon-Velocity-Active.svg");
}
.router-link-active.velocity-icon, .active.velocity-icon {
background-image: url("../images/Icon-Velocity-Active.svg");
}
.qty-btn { .qty-btn {
height: 36px; height: 36px;
display: inline-block; display: inline-block;
@ -728,9 +724,9 @@
} }
.btn-add-to-cart { .btn-add-to-cart {
padding: 8px; padding: 8px !important;
color: #fff !important;
border-radius: 0px !important; border-radius: 0px !important;
color: #FFFFFF !important;
border-color: #26A37C !important; border-color: #26A37C !important;
background-color: #26A37C !important; background-color: #26A37C !important;
} }
@ -1195,6 +1191,7 @@
} }
.customer-options { .customer-options {
top: 40px;
float: right; float: right;
padding: 20px; padding: 20px;
height: 150px; height: 150px;
@ -1210,6 +1207,7 @@
.customer-options li { .customer-options li {
padding: 3px 0; padding: 3px 0;
height: unset !important;
} }
.customer-options a { .customer-options a {
@ -1291,7 +1289,7 @@
top: 44px; top: 44px;
z-index: 100; z-index: 100;
width: 350px; width: 350px;
left: -230px; left: -265px;
position: absolute; position: absolute;
} }
@ -1302,6 +1300,14 @@
position: relative; position: relative;
} }
#cart-modal-content .mini-cart-container {
height: 100%;
font-size: 14px;
max-height: 200px;
overflow-y: scroll;
padding: 10px 15px 0 20px;
}
#cart-modal-content .small-card-container { #cart-modal-content .small-card-container {
margin: 0; margin: 0;
width: 100%; width: 100%;
@ -1362,6 +1368,7 @@
.cart-details .cart-details-header .cart-header { .cart-details .cart-details-header .cart-header {
max-height: 45px; max-height: 45px;
margin-bottom: 20px; margin-bottom: 20px;
padding-bottom: 20px !important;
border-bottom: 2px solid #E5E5E5; border-bottom: 2px solid #E5E5E5;
} }
@ -1811,6 +1818,9 @@
.order-summary-container { .order-summary-container {
padding-top: 25px; padding-top: 25px;
height: -webkit-max-content;
height: -moz-max-content;
height: max-content;
max-width: 500px !important; max-width: 500px !important;
} }
@ -1898,6 +1908,7 @@
} }
.product-price .regular-price { .product-price .regular-price {
font-weight: 500;
margin-right: 10px; margin-right: 10px;
text-decoration: line-through; text-decoration: line-through;
} }
@ -1917,6 +1928,8 @@
.method-sticker { .method-sticker {
font-size: 13px; font-size: 13px;
padding: 4px 8px; padding: 4px 8px;
margin-right: 3px;
margin-bottom: 3px;
text-align: center; text-align: center;
border-radius: 1px; border-radius: 1px;
display: inline-block; display: inline-block;
@ -1925,13 +1938,10 @@
} }
.sidebar { .sidebar {
z-index: 1000000;
width: 230px; width: 230px;
} }
.sidebar .category-content {
margin-bottom: 10px;
}
.sidebar .category-content .category-title { .sidebar .category-content .category-title {
top: -1px; top: -1px;
font-weight: 600; font-weight: 600;
@ -1965,8 +1975,53 @@
display: none; display: none;
} }
.category-list-container {
z-index: 10;
padding: 0px !important;
background: #FFFFFF;
position: absolute !important;
-webkit-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
}
.category-list-container .category {
width: 100%;
line-height: 2.5rem;
display: inline-block;
}
.category-list-container .category span {
top: -4px;
position: relative;
}
.category-list-container li {
padding: 7px 0 5px 15px;
}
.category-list-container li:hover {
background: #ECECEC;
}
.category-list-container .sub-categories {
top: 0px;
left: 100%;
z-index: 100;
padding-top: 10px;
position: absolute;
background: #FFFFFF;
border-left: 1px solid #CCCCCC;
-webkit-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
}
.category-list-container .sub-categories li:nth-last-of-type(1) {
margin-bottom: 10px;
}
#sidebar-level-0 { #sidebar-level-0 {
display: none; display: none;
z-index: 100000;
border-top: 1px solid #CCCCCC; border-top: 1px solid #CCCCCC;
} }
@ -2265,6 +2320,10 @@
box-shadow: none; box-shadow: none;
} }
.slides-container .VueCarousel-pagination .VueCarousel-dot {
padding: 5px !important;
}
.slides-container .VueCarousel-dot--active { .slides-container .VueCarousel-dot--active {
background-color: #26A37C !important; background-color: #26A37C !important;
} }
@ -2338,65 +2397,6 @@ body .container-margin {
margin: auto 20px; margin: auto 20px;
} }
.account-modal {
right: 10px;
z-index: 100;
width: 350px !important;
position: absolute !important;
}
.account-modal .theme-btn, .account-modal .cart-details .continue-shopping-btn, .cart-details .account-modal .continue-shopping-btn, .account-modal .account-content .account-layout .bottom-toolbar .pagination .page-item, .account-content .account-layout .bottom-toolbar .pagination .account-modal .page-item {
padding: .5rem .9rem;
}
.account-modal .modal-footer .text-left {
padding-left: 5px;
}
.category-list-container {
z-index: 10;
padding: 0px !important;
background: #FFFFFF;
position: absolute !important;
-webkit-box-shadow: inset -1px 0 0 0 #ECECEC;
box-shadow: inset -1px 0 0 0 #ECECEC;
}
.category-list-container .category {
width: 100%;
line-height: 2.5rem;
display: inline-block;
}
.category-list-container .category span {
top: -4px;
position: relative;
}
.category-list-container li {
padding: 7px 0 5px 15px;
}
.category-list-container li:hover {
background: #ECECEC;
}
.category-list-container .sub-category-container {
position: relative;
}
.category-list-container .sub-categories {
top: -40px;
left: 100%;
z-index: 100;
padding-top: 10px;
position: absolute;
background: #FFFFFF;
border-left: 1px solid #CCCCCC;
-webkit-box-shadow: inset -1px 0 0 0 #ECECEC;
box-shadow: inset -1px 0 0 0 #ECECEC;
}
.root-category-menu { .root-category-menu {
border-bottom: solid 1px #d8e6ed; border-bottom: solid 1px #d8e6ed;
} }
@ -2652,15 +2652,13 @@ header #search-form > *:focus {
/* category with custom option */ /* category with custom option */
/* hot & popular categories */ /* hot & popular categories */
.hot-categories-container .hot-category-wrapper { .hot-categories-container .hot-category-wrapper {
padding: 0 10px 15px 0; padding: 0 10px 0 0;
} }
.hot-categories-container .hot-category-wrapper .card { .hot-categories-container .hot-category-wrapper .card {
height: 100%; height: 100%;
padding: 20px; padding: 20px;
border: none; border: none;
box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14);
-webkit-box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14);
} }
.hot-categories-container .hot-category-wrapper .velocity-divide-page .left { .hot-categories-container .hot-category-wrapper .velocity-divide-page .left {
@ -2679,11 +2677,11 @@ header #search-form > *:focus {
} }
.hot-categories-container .hot-category-wrapper:nth-last-child(2) { .hot-categories-container .hot-category-wrapper:nth-last-child(2) {
padding: 15px 0 15px 0px; padding: 0 0 0 0px;
} }
.hot-categories-container .hot-category-wrapper:last-child { .hot-categories-container .hot-category-wrapper:last-child {
padding: 15px 0 15px 10px; padding: 0 0 0 10px;
} }
.hot-categories-container ul, .hot-categories-container ul,
@ -2721,8 +2719,7 @@ header #search-form > *:focus {
} }
.popular-categories-container .popular-category-wrapper .card-description { .popular-categories-container .popular-category-wrapper .card-description {
padding: 25px; padding: 10px 20px;
margin-top: 15px;
} }
.popular-categories-container .popular-category-wrapper:first-child { .popular-categories-container .popular-category-wrapper:first-child {
@ -2798,6 +2795,7 @@ header #search-form > *:focus {
.categories-sidebar-container .content-list { .categories-sidebar-container .content-list {
margin: 0; margin: 0;
width: 100%; width: 100%;
height: 42px;
text-align: left; text-align: left;
list-style: none; list-style: none;
position: relative; position: relative;
@ -2807,8 +2805,7 @@ header #search-form > *:focus {
.categories-sidebar-container .content-list ul { .categories-sidebar-container .content-list ul {
width: 100%; width: 100%;
height: 104%; height: 100%;
padding-left: 10px;
display: -webkit-inline-box; display: -webkit-inline-box;
display: -ms-inline-flexbox; display: -ms-inline-flexbox;
display: inline-flex; display: inline-flex;
@ -2820,11 +2817,15 @@ header #search-form > *:focus {
cursor: pointer; cursor: pointer;
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
padding: 8px 15px;
letter-spacing: 0; letter-spacing: 0;
position: relative; position: relative;
color: #FFFFFF; color: #FFFFFF;
text-decoration: none; text-decoration: none;
padding: 8px 20px 8px 5px; }
.categories-sidebar-container .content-list ul li:hover {
background-color: #42719a;
} }
.velocity-divide-page { .velocity-divide-page {
@ -2997,22 +2998,25 @@ body::after {
.footer .footer-content .newsletter-subscription .newsletter-wrapper input.subscribe-field { .footer .footer-content .newsletter-subscription .newsletter-wrapper input.subscribe-field {
width: 300px; width: 300px;
height: 38px;
border: none; border: none;
height: 38px;
font-size: 18px; font-size: 18px;
max-width: 250px;
padding: 10px 20px; padding: 10px 20px;
color: rgba(0, 0, 0, 0.83); color: rgba(0, 0, 0, 0.83);
} }
.footer .footer-content .newsletter-subscription .newsletter-wrapper button.subscribe-btn { .footer .footer-content .newsletter-subscription .newsletter-wrapper button.subscribe-btn {
left: -1px; left: -2px;
height: 38px; height: 38px;
font-size: 18px; font-size: 18px;
max-width: 110px;
line-height: 10px; line-height: 10px;
position: relative; position: relative;
} }
.footer .footer-content .newsletter-subscription .newsletter-wrapper .social-icons { .footer .footer-content .newsletter-subscription .newsletter-wrapper .social-icons {
height: 100%;
padding: 20px 0; padding: 20px 0;
color: #FFFFFF; color: #FFFFFF;
} }
@ -3035,7 +3039,7 @@ body::after {
} }
.footer .footer-content .newsletter-subscription .newsletter-wrapper .subscribe-newsletter { .footer .footer-content .newsletter-subscription .newsletter-wrapper .subscribe-newsletter {
padding: 30px 0; padding: 25px 0 30px 0;
} }
.footer .footer-content > .row { .footer .footer-content > .row {
@ -3055,7 +3059,15 @@ body::after {
line-height: 2.5rem; line-height: 2.5rem;
} }
.footer .footer-content > .row .footer-ct-content > div li a { .footer .footer-content > .row .footer-ct-content > div ul {
margin-bottom: 0px;
}
.footer .footer-content > .row .footer-ct-content > div ul li {
margin-bottom: 5px;
}
.footer .footer-content > .row .footer-ct-content > div ul li a {
color: rgba(255, 255, 255, 0.83); color: rgba(255, 255, 255, 0.83);
} }
@ -3396,6 +3408,10 @@ body::after {
cursor: pointer; cursor: pointer;
} }
.cursor-default {
cursor: default;
}
.grey { .grey {
color: #9e9e9e; color: #9e9e9e;
} }
@ -3699,6 +3715,12 @@ body::after {
.small-card-container { .small-card-container {
cursor: pointer; cursor: pointer;
margin-bottom: 10px; margin-bottom: 10px;
margin-left: 0 !important;
margin-right: 0 !important;
}
.small-card-container .material-icons {
font-size: 16px;
} }
.small-card-container .product-image-container { .small-card-container .product-image-container {
@ -3716,6 +3738,11 @@ body::after {
padding: 10px 0 !important; padding: 10px 0 !important;
} }
.small-card-container .sticker,
.small-card-container .regular-price {
display: none;
}
.small-card-container:hover { .small-card-container:hover {
-webkit-box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14); -webkit-box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14);
box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14); box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14);
@ -3845,6 +3872,8 @@ a.default {
.scrollable { .scrollable {
max-height: 100vh; max-height: 100vh;
overflow-y: scroll; overflow-y: scroll;
scrollbar-width: none;
-ms-overflow-style: none;
} }
.scrollable::-webkit-scrollbar { .scrollable::-webkit-scrollbar {
@ -3924,8 +3953,13 @@ button[disabled] {
font-size: 14px; font-size: 14px;
} }
.max-height-350 {
max-height: 350px;
}
.product-detail { .product-detail {
padding-top: 20px; padding-top: 20px;
margin-bottom: 60px;
} }
.product-detail .magnifier > img { .product-detail .magnifier > img {
@ -3946,6 +3980,10 @@ button[disabled] {
padding: 0 15px; padding: 0 15px;
} }
.product-detail .right .reviews {
vertical-align: top;
}
.product-detail .right .reviews > div { .product-detail .right .reviews > div {
display: inline-block; display: inline-block;
} }
@ -4060,6 +4098,32 @@ button[disabled] {
vertical-align: middle; vertical-align: middle;
} }
.store-meta-images {
margin-top: 20px;
}
.store-meta-images img {
width: 100%;
height: 100%;
max-height: 300px;
}
@media only screen and (max-width: 1100px) {
.footer .footer-content .newsletter-subscription .newsletter-wrapper .social-icons {
width: 100%;
padding: 5px 0;
text-align: center !important;
}
.footer .footer-content .newsletter-subscription .newsletter-wrapper .subscribe-newsletter {
width: 100%;
padding: 10px 0;
text-align: center;
}
.footer .footer-content .footer-statics > div:not(:last-child) {
margin-bottom: 30px;
}
}
/*! /*!
* Bootstrap v3.4.1 (https://getbootstrap.com/) * Bootstrap v3.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
@ -11039,7 +11103,7 @@ button.close {
outline: 0; outline: 0;
} }
.modal.fade .modal-dialog, .modal.fade .account-modal { .modal.fade .modal-dialog, .modal.fade #top #account + .account-modal, #top .modal.fade #account + .account-modal {
-webkit-transform: translate(0, -25%); -webkit-transform: translate(0, -25%);
transform: translate(0, -25%); transform: translate(0, -25%);
-webkit-transition: -webkit-transform 0.3s ease-out; -webkit-transition: -webkit-transform 0.3s ease-out;
@ -11048,7 +11112,7 @@ button.close {
transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;
} }
.modal.in .modal-dialog, .modal.in .account-modal { .modal.in .modal-dialog, .modal.in #top #account + .account-modal, #top .modal.in #account + .account-modal {
-webkit-transform: translate(0, 0); -webkit-transform: translate(0, 0);
transform: translate(0, 0); transform: translate(0, 0);
} }
@ -11058,7 +11122,7 @@ button.close {
overflow-y: auto; overflow-y: auto;
} }
.modal-dialog, .account-modal { .modal-dialog, #top #account + .account-modal {
position: relative; position: relative;
width: auto; width: auto;
margin: 10px; margin: 10px;
@ -11170,7 +11234,7 @@ button.close {
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.modal-dialog, .account-modal { .modal-dialog, #top #account + .account-modal {
width: 600px; width: 600px;
margin: 30px auto; margin: 30px auto;
} }
@ -12228,17 +12292,41 @@ body {
#top #account .select-icon { #top #account .select-icon {
top: 0px; top: 0px;
left: -3px; left: 0px;
padding-left: 5px;
} }
#top #account .welcome-content { #top #account .welcome-content {
width: 150px; float: right;
display: table;
min-width: 150px;
cursor: pointer; cursor: pointer;
text-align: right; text-align: right;
} }
#top #account .welcome-content * {
display: table-cell;
vertical-align: middle;
}
#top #account + .account-modal { #top #account + .account-modal {
height: 135px; right: 10px;
z-index: 100;
height: -webkit-max-content;
height: -moz-max-content;
height: max-content;
width: 290px !important;
position: absolute !important;
}
#top #account + .account-modal .theme-btn, #top #account + .account-modal .cart-details .continue-shopping-btn, .cart-details #top #account + .account-modal .continue-shopping-btn, #top #account + .account-modal .account-content .account-layout .bottom-toolbar .pagination .page-item, .account-content .account-layout .bottom-toolbar .pagination #top #account + .account-modal .page-item {
padding: .5rem .9rem;
}
#top #account + .account-modal .modal-footer {
-webkit-box-pack: unset;
-ms-flex-pack: unset;
justify-content: unset;
} }
#top > div:last-child { #top > div:last-child {
@ -12249,16 +12337,6 @@ body {
height: 100%; height: 100%;
} }
#top > div:last-child .welcome-content {
float: right;
display: table;
}
#top > div:last-child .welcome-content * {
display: table-cell;
vertical-align: middle;
}
.dropdown-menu { .dropdown-menu {
border-top: 3px solid #269c77; border-top: 3px solid #269c77;
border-radius: 0px; border-radius: 0px;
@ -12370,9 +12448,14 @@ header .logo {
} }
header #search-form { header #search-form {
height: 35px; height: 40px;
margin: 5px 0px; margin: 5px 0px;
background: #FFFFFF; background: #FFFFFF;
padding: 4px 1px 0px 0px;
}
header #search-form * {
height: 100%;
} }
header #search-form .btn-group, header #search-form .quantity { header #search-form .btn-group, header #search-form .quantity {
@ -12385,7 +12468,7 @@ header #search-form .btn-group .selectdiv, header #search-form .quantity .select
header #search-form .btn-group .selectdiv:before, header #search-form .quantity .selectdiv:before { header #search-form .btn-group .selectdiv:before, header #search-form .quantity .selectdiv:before {
top: 13px; top: 13px;
left: 100px; left: 108px;
z-index: 10; z-index: 10;
font-size: 16px; font-size: 16px;
content: "\E906"; content: "\E906";
@ -12421,11 +12504,6 @@ header #search-form input {
border-left: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC;
} }
header #search-form .btn, header #search-form .quantity button, .quantity header #search-form button,
header #search-form .quantity input, .quantity header #search-form input {
height: 40px;
}
header #search-form .btn:hover, header #search-form .quantity button:hover, .quantity header #search-form button:hover, header #search-form .btn:hover, header #search-form .quantity button:hover, .quantity header #search-form button:hover,
header #search-form .quantity input:hover, .quantity header #search-form input:hover { header #search-form .quantity input:hover, .quantity header #search-form input:hover {
text-decoration: none; text-decoration: none;
@ -12698,15 +12776,15 @@ header .dropdown-menu-large .dropdown-footer .checkout-link {
} }
#nav-menu .secondary-navbar li a { #nav-menu .secondary-navbar li a {
padding: 5px 20px 5px 5px;
font-family: SourceSansPro-Semibold;
font-size: 16px;
color: #FFFFFF;
letter-spacing: 0;
display: block; display: block;
position: relative;
text-decoration: none;
cursor: pointer; cursor: pointer;
font-size: 16px;
font-weight: 600;
letter-spacing: 0;
position: relative;
color: #FFFFFF;
text-decoration: none;
padding: 5px 20px 5px 5px;
} }
.viewed-products .viewed-products-listing { .viewed-products .viewed-products-listing {
@ -12835,10 +12913,6 @@ i.within-circle {
height: 50px; height: 50px;
} }
.mb60 {
margin-bottom: 60px;
}
.center_div { .center_div {
margin: 0 auto; margin: 0 auto;
width: 80%; width: 80%;

View File

@ -35539,9 +35539,11 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
// //
// //
// //
//
//
/* harmony default export */ __webpack_exports__["default"] = ({ /* harmony default export */ __webpack_exports__["default"] = ({
props: ['id', 'url', 'addClass', 'categories', 'mainSidebar', 'categoryCount'], props: ['id', 'url', 'addClass', 'parentSlug', 'categories', 'mainSidebar', 'categoryCount'],
data: function data() { data: function data() {
var slicedCategories = this.categories; var slicedCategories = this.categories;
@ -35551,6 +35553,8 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
slicedCategories = this.categories.slice(0, categoryCount); slicedCategories = this.categories.slice(0, categoryCount);
} }
if (this.parentSlug) slicedCategories['parentSlug'] = this.parentSlug;
return { return {
slicedCategories: slicedCategories, slicedCategories: slicedCategories,
sidebarLevel: Math.floor(Math.random() * 1000) sidebarLevel: Math.floor(Math.random() * 1000)
@ -35621,7 +35625,13 @@ var render = function() {
staticClass: "category unset", staticClass: "category unset",
class: category.children.length > 0 ? "fw6" : "", class: category.children.length > 0 ? "fw6" : "",
attrs: { attrs: {
href: _vm.url + "/" + category["translations"][0].slug href:
_vm.url +
"/" +
(_vm.slicedCategories.parentSlug
? _vm.slicedCategories.parentSlug + "/"
: "") +
category["translations"][0].slug
} }
}, },
[ [
@ -35698,9 +35708,12 @@ var render = function() {
_c("sidebar-component", { _c("sidebar-component", {
attrs: { attrs: {
url: _vm.url, url: _vm.url,
categories: category.children,
id: id:
"sidebar-level-" + (_vm.sidebarLevel + index), "sidebar-level-" + (_vm.sidebarLevel + index),
categories: category.children "parent-slug": category.parentSlug
? category.parentSlug
: category["translations"][0].slug
} }
}) })
], ],
@ -35801,7 +35814,11 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
// //
/* harmony default export */ __webpack_exports__["default"] = ({ /* harmony default export */ __webpack_exports__["default"] = ({
props: ['slidesCount', 'slidesPerPage', 'navigationEnabled', 'paginationEnabled', 'addClass'] props: ['id', 'addClass', 'slidesCount', 'slidesPerPage', 'navigationEnabled', 'paginationEnabled'],
data: function data() {
return {};
}
}); });
/***/ }), /***/ }),

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class UpdateVelocityMetaData extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('velocity_meta_data', function (Blueprint $table) {
$table->json('product_view_images')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('velocity_meta_data', function (Blueprint $table) {
$table->dropColumn('product_view_images');
});
}
}

View File

@ -18,11 +18,11 @@ class VelocityMetaDataSeeder extends Seeder
'footer_left_content' => trans('velocity::app.admin.meta-data.footer-left-raw-content'), 'footer_left_content' => trans('velocity::app.admin.meta-data.footer-left-raw-content'),
'footer_middle_content' => '<div class="col-4 footer-ct-content"><div class="row"><div class="col-6"><ul type="none"><li><a href="">About Us</a></li><li><a href="">Customer Service</a></li><li><a href="">Whats New</a></li><li><a href="">Contact Us </a></li></div><div class="col-6"><ul type="none"><li><a href="">Order and Returns</a></li><li><a href="">Payment Policy</a></li><li><a href="">Shipping Policy</a></li><li><a href="">Privacy and Cookies Policy</a></li></div></div></div>', 'footer_middle_content' => '<div class="col-lg-6 col-md-12 col-sm-12 no-padding"><ul type="none"><li><a href="https://webkul.com/about-us/company-profile/">About Us</a></li><li><a href="https://webkul.com/about-us/company-profile/">Customer Service</a></li><li><a href="https://webkul.com/about-us/company-profile/">What&rsquo;s New</a></li><li><a href="https://webkul.com/about-us/company-profile/">Contact Us </a></li></ul></div><div class="col-lg-6 col-md-12 col-sm-12 no-padding"><ul type="none"><li><a href="https://webkul.com/about-us/company-profile/"> Order and Returns </a></li><li><a href="https://webkul.com/about-us/company-profile/"> Payment Policy </a></li><li><a href="https://webkul.com/about-us/company-profile/"> Shipping Policy</a></li><li><a href="https://webkul.com/about-us/company-profile/"> Privacy and Cookies Policy </a></li></ul></div>',
'slider' => 1, 'slider' => 1,
'subscription_bar_content' => '<div class="social-icons wk-icon"><i class="fs24 within-circle rango-facebook" title="facebook"></i> <i class="fs24 within-circle rango-twitter" title="twitter"></i> <i class="fs24 within-circle rango-linked-in" title="linkedin"></i> <i class="fs24 within-circle rango-pintrest" title="Pinterest"></i> <i class="fs24 within-circle rango-youtube" title="Youtube"></i> <i class="fs24 within-circle rango-instagram" title="instagram"></i></div>' 'subscription_bar_content' => '<div class="social-icons col-lg-6"><i class="fs24 within-circle rango-facebook" title="facebook"></i> <i class="fs24 within-circle rango-twitter" title="twitter"></i> <i class="fs24 within-circle rango-linked-in" title="linkedin"></i> <i class="fs24 within-circle rango-pintrest" title="Pinterest"></i> <i class="fs24 within-circle rango-youtube" title="Youtube"></i> <i class="fs24 within-circle rango-instagram" title="instagram"></i></div>'
]); ]);
} }
} }

View File

@ -64,11 +64,18 @@ class ConfigurationController extends Controller
foreach ($params['images'] as $index => $advertisement) { foreach ($params['images'] as $index => $advertisement) {
if ($advertisement['image_1'] !== "") { if ($advertisement['image_1'] !== "") {
$params['advertisement'][$index] = $this->uploadImages($advertisement, $index); $params['advertisement'][$index] = $this->uploadAdvertisementImages($advertisement, $index);
}
}
foreach ($params['product_view_images'] as $index => $productViewImage) {
if ($productViewImage !== "") {
$params['product_view_images'][$index] = $this->uploadImage($productViewImage, $index);
} }
} }
$params['advertisement'] = json_encode($params['advertisement']); $params['advertisement'] = json_encode($params['advertisement']);
$params['product_view_images'] = json_encode($params['product_view_images']);
$params['home_page_content'] = str_replace('=&gt;', '=>', $params['home_page_content']); $params['home_page_content'] = str_replace('=&gt;', '=>', $params['home_page_content']);
unset($params['images']); unset($params['images']);
@ -82,11 +89,12 @@ class ConfigurationController extends Controller
return redirect()->route($this->_config['redirect']); return redirect()->route($this->_config['redirect']);
} }
public function uploadImages($data, $index) public function uploadAdvertisementImages($data, $index)
{ {
$type = 'images'; $type = 'images';
$request = request(); $request = request();
$advertisement = [];
foreach ($data as $imageId => $image) { foreach ($data as $imageId => $image) {
$file = $type . '.' . $index . '.' . $imageId; $file = $type . '.' . $index . '.' . $imageId;
$dir = "velocity/$type"; $dir = "velocity/$type";
@ -100,4 +108,22 @@ class ConfigurationController extends Controller
return $advertisement; return $advertisement;
} }
public function uploadImage($data, $index)
{
$type = 'product_view_images';
$request = request();
$image = '';
$file = $type . '.' . $index;
$dir = "velocity/$type";
if ($request->hasFile($file)) {
Storage::delete($dir . $file);
$image = $request->file($file)->store($dir);
}
return $image;
}
} }

View File

@ -1,54 +0,0 @@
<?php
namespace Webkul\Velocity\Http\Controllers\Shop;
use Webkul\Product\Repositories\SearchRepository;
use Webkul\Velocity\Http\Shop\Controllers;
/**
* Search controller
*
* @author Shubham Mehrotra <shubhammehrotra.symfony@webkul.com> @shubhwebkul
* @copyright 2019 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class SearchController extends Controller
{
/**
* Contains route related configuration
*
* @var array
*/
protected $_config;
/**
* SearchRepository object
*
* @var Object
*/
protected $searchRepository;
/**
* Create a new controller instance.
*
* @param \Webkul\Product\Repositories\SearchRepository $searchRepository
* @return void
*/
public function __construct(SearchRepository $searchRepository)
{
$this->_config = request('_config');
$this->searchRepository = $searchRepository;
}
/**
* Index to handle the view loaded with the search results
*
* @return \Illuminate\View\View
*/
public function index()
{
$results = $this->searchRepository->search(request()->all());
return view($this->_config['view'])->with('results', $results ? $results : null);
}
}

View File

@ -0,0 +1,95 @@
<?php
namespace Webkul\Velocity\Http\Controllers\Shop;
use Webkul\Velocity\Helpers\Helper;
use Webkul\Velocity\Http\Shop\Controllers;
use Webkul\Product\Repositories\SearchRepository;
use Webkul\Product\Repositories\ProductRepository;
/**
* Search controller
*
* @author Shubham Mehrotra <shubhammehrotra.symfony@webkul.com> @shubhwebkul
* @copyright 2019 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class ShopController extends Controller
{
/**
* Contains route related configuration
*
* @var array
*/
protected $_config;
/**
* SearchRepository object
*
* @var SearchRepository
*/
protected $searchRepository;
/**
* ProductRepository object
*
* @var ProductRepository
*/
protected $productRepository;
/**
* Create a new controller instance.
*
* @param \Webkul\Product\Repositories\SearchRepository $searchRepository
* @return void
*/
public function __construct(
SearchRepository $searchRepository,
ProductRepository $productRepository
) {
$this->_config = request('_config');
$this->searchRepository = $searchRepository;
$this->productRepository = $productRepository;
}
/**
* Index to handle the view loaded with the search results
*
* @return \Illuminate\View\View
*/
public function search()
{
$results = $this->searchRepository->search(request()->all());
return view($this->_config['view'])->with('results', $results ? $results : null);
}
public function fetchProductDetails($slug)
{
$product = $this->productRepository->findBySlug($slug);
if ($product) {
$productReviewHelper = app('Webkul\Product\Helpers\Review');
$productImageHelper = app('Webkul\Product\Helpers\ProductImage');
$response = [
'status' => true,
'details' => [
'name' => $product->name,
'urlKey' => $product->url_key,
'priceHTML' => $product->getTypeInstance()->getPriceHtml(),
'totalReviews' => $productReviewHelper->getTotalReviews($product),
'rating' => ceil($productReviewHelper->getAverageRating($product)),
'image' => $productImageHelper->getProductBaseImage($product)['small_image_url'],
]
];
} else {
$response = [
'status' => false
];
}
return $response;
}
}

View File

@ -43,10 +43,4 @@ Route::group(['middleware' => ['web']], function () {
}); });
}); });
}); });
Route::group(['middleware' => ['theme']], function () {
Route::get('/search', 'Webkul\Velocity\Http\Controllers\Shop\SearchController@index')->defaults('_config', [
'view' => 'velocity::search.search'
])->name('shop.search.index');
});
}); });

View File

@ -0,0 +1,14 @@
<?php
Route::group(['middleware' => ['web']], function () {
Route::group(['middleware' => ['theme']], function () {
Route::namespace('Webkul\Velocity\Http\Controllers\Shop')->group(function () {
// Content Pages Route
Route::get('/product-details/{slug}', 'ShopController@fetchProductDetails')->name('velocity.shop.product');
});
Route::get('/search', 'ShopController@search')->defaults('_config', [
'view' => 'velocity::search.search'
])->name('shop.search.index');
});
});

View File

@ -27,6 +27,7 @@ class VelocityServiceProvider extends ServiceProvider
{ {
include __DIR__ . '/../Http/helpers.php'; include __DIR__ . '/../Http/helpers.php';
include __DIR__ . '/../Http/admin-routes.php'; include __DIR__ . '/../Http/admin-routes.php';
include __DIR__ . '/../Http/front-routes.php';
$this->app->register(EventServiceProvider::class); $this->app->register(EventServiceProvider::class);
@ -46,7 +47,7 @@ class VelocityServiceProvider extends ServiceProvider
$velocityHelper = app('Webkul\Velocity\Helpers\Helper'); $velocityHelper = app('Webkul\Velocity\Helpers\Helper');
$velocityMetaData = $velocityHelper->getVelocityMetaData(); $velocityMetaData = $velocityHelper->getVelocityMetaData();
view()->share('showRecentlyViewed', false); view()->share('showRecentlyViewed', true);
view()->share('velocityMetaData', $velocityMetaData); view()->share('velocityMetaData', $velocityMetaData);
} }

View File

@ -20,11 +20,16 @@
<script type="text/javascript"> <script type="text/javascript">
export default { export default {
props: [ props: [
'id',
'addClass',
'slidesCount', 'slidesCount',
'slidesPerPage', 'slidesPerPage',
'navigationEnabled', 'navigationEnabled',
'paginationEnabled', 'paginationEnabled',
'addClass'
], ],
data: function () {
return {}
}
} }
</script> </script>

View File

@ -15,10 +15,11 @@
@mouseout="toggleSidebar(id, $event, 'mouseout')" @mouseout="toggleSidebar(id, $event, 'mouseout')"
@mouseover="toggleSidebar(id, $event, 'mouseover')"> @mouseover="toggleSidebar(id, $event, 'mouseover')">
<a <a
class="category unset" class="category unset"
:class="(category.children.length > 0) ? 'fw6' : ''" :class="(category.children.length > 0) ? 'fw6' : ''"
:href="`${url}/${category['translations'][0].slug}`"> :href="`${url}/${slicedCategories.parentSlug ? slicedCategories.parentSlug + '/' : ''}${category['translations'][0].slug}`">
<div <div
class="category-icon" class="category-icon"
@ -45,8 +46,9 @@
<div :class="`sub-categories sub-category-${sidebarLevel+index}`"> <div :class="`sub-categories sub-category-${sidebarLevel+index}`">
<sidebar-component <sidebar-component
:url="url" :url="url"
:categories="category.children"
:id="`sidebar-level-${sidebarLevel+index}`" :id="`sidebar-level-${sidebarLevel+index}`"
:categories="category.children"> :parent-slug="category.parentSlug ? category.parentSlug : category['translations'][0].slug">
</sidebar-component> </sidebar-component>
</div> </div>
</div> </div>
@ -61,6 +63,7 @@
'id', 'id',
'url', 'url',
'addClass', 'addClass',
'parentSlug',
'categories', 'categories',
'mainSidebar', 'mainSidebar',
'categoryCount' 'categoryCount'
@ -76,6 +79,9 @@
slicedCategories = this.categories.slice(0, categoryCount); slicedCategories = this.categories.slice(0, categoryCount);
} }
if (this.parentSlug)
slicedCategories['parentSlug'] = this.parentSlug;
return { return {
slicedCategories, slicedCategories,
sidebarLevel: Math.floor(Math.random() * 1000), sidebarLevel: Math.floor(Math.random() * 1000),

View File

@ -23,6 +23,7 @@ $grey-clr: rgba(0,0,0,0.53);
$light-grey-clr: rgb(158, 158, 158); $light-grey-clr: rgb(158, 158, 158);
$light-background: #F7F7F9; $light-background: #F7F7F9;
$sidebar-width: 230px; $sidebar-width: 230px;
$box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
$font-family-pro: 'Source Sans Pro', sans-serif; $font-family-pro: 'Source Sans Pro', sans-serif;
$font-family-regular: 'SourceSansPro-Regular'; $font-family-regular: 'SourceSansPro-Regular';

View File

@ -11,12 +11,6 @@
font-style: normal; font-style: normal;
} }
.wk-icon {
font-size: 20px;
font-weight: 400;
text-align: center;
color: #0041ff;
}
[class^="rango-"], [class*=" rango-"] { [class^="rango-"], [class*=" rango-"] {
/* use !important to prevent issues with browser extensions that change fonts */ /* use !important to prevent issues with browser extensions that change fonts */

View File

@ -1,13 +1,14 @@
@import "icons";
@import "variables";
@import "mixins";
@import "rango"; @import "rango";
@import "icons";
@import "mixins";
@import "variables";
@import "components/UI"; @import "components/UI";
@import "components/app"; @import "components/app";
@import "components/home"; @import "components/home";
@import "components/footer"; @import "components/footer";
@import "components/shared"; @import "components/shared";
@import "components/product-view"; @import "components/product-view";
@import "components/media";
@import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap"; @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
@ -179,19 +180,42 @@ body {
.select-icon { .select-icon {
top: 0px; top: 0px;
left: -3px; left: 0px;
padding-left: 5px;
} }
.welcome-content { .welcome-content {
@extend .unselectable; @extend .unselectable;
width: 150px;
float: right;
display: table;
min-width: 150px;
cursor: pointer; cursor: pointer;
text-align: right; text-align: right;
* {
display: table-cell;
vertical-align: middle;
}
} }
+ .account-modal { + .account-modal {
height: 135px; @extend .modal-dialog;
right: 10px;
z-index: 100;
height: max-content;
width: 290px !important;
position: absolute !important;
.theme-btn {
padding: .5rem .9rem;
}
.modal-footer {
justify-content: unset;
}
} }
} }
@ -201,16 +225,6 @@ body {
* { * {
height: 100%; height: 100%;
} }
.welcome-content {
float: right;
display: table;
* {
display: table-cell;
vertical-align: middle;
}
}
} }
} }
@ -330,9 +344,14 @@ header {
} }
#search-form { #search-form {
height: 35px; height: 40px;
margin: 5px 0px; margin: 5px 0px;
background: $white-color; background: $white-color;
padding: 4px 1px 0px 0px;
* {
height: 100%;
}
.btn-group { .btn-group {
max-width: 550px; max-width: 550px;
@ -345,7 +364,7 @@ header {
.selectdiv:before { .selectdiv:before {
top: 13px; top: 13px;
left: 100px; left: 108px;
z-index: 10; z-index: 10;
font-size: 16px; font-size: 16px;
content: "\E906"; content: "\E906";
@ -385,8 +404,6 @@ header {
} }
.btn { .btn {
height: 40px;
&:hover { &:hover {
text-decoration: none; text-decoration: none;
} }
@ -631,10 +648,6 @@ header {
left: 283px; left: 283px;
width: 250px; width: 250px;
height: 350px; height: 350px;
.child-category {
}
} }
} }
} }
@ -656,15 +669,15 @@ header {
float: left; float: left;
a { a {
padding: 5px 20px 5px 5px;
font-family: SourceSansPro-Semibold;
font-size: 16px;
color: #FFFFFF;
letter-spacing: 0;
display: block; display: block;
position: relative;
text-decoration: none;
cursor: pointer; cursor: pointer;
font-size: 16px;
font-weight: 600;
letter-spacing: 0;
position: relative;
color: $white-color;
text-decoration: none;
padding: 5px 20px 5px 5px;
} }
} }
} }
@ -795,10 +808,6 @@ i.within-circle {
height: 50px; height: 50px;
} }
.mb60 {
margin-bottom: 60px;
}
.center_div { .center_div {
margin: 0 auto; margin: 0 auto;
width: 80%/* value of your choice which suits your alignment */ width: 80%/* value of your choice which suits your alignment */

View File

@ -30,11 +30,11 @@
} }
.btn-add-to-cart { .btn-add-to-cart {
padding: 8px; padding: 8px !important;
color: #fff !important;
border-radius: 0px !important; border-radius: 0px !important;
border-color: #26A37C !important; color: $white-color !important;
background-color: #26A37C !important; border-color: $theme-color !important;
background-color: $theme-color !important;
&.large { &.large {
padding: 12px 18px; padding: 12px 18px;

View File

@ -405,6 +405,7 @@
} }
.customer-options{ .customer-options{
top: 40px;
float: right; float: right;
padding: 20px; padding: 20px;
height: 150px; height: 150px;
@ -422,6 +423,7 @@
li { li {
padding: 3px 0; padding: 3px 0;
height: unset !important;
} }
a { a {
@ -509,7 +511,7 @@
top: 44px; top: 44px;
z-index: 100; z-index: 100;
width: 350px; width: 350px;
left: -230px; left: -265px;
position: absolute; position: absolute;
.close { .close {
@ -519,6 +521,14 @@
position: relative; position: relative;
} }
.mini-cart-container {
height: 100%;
font-size: 14px;
max-height: 200px;
overflow-y: scroll;
padding: 10px 15px 0 20px;
}
.small-card-container { .small-card-container {
margin: 0; margin: 0;
width: 100%; width: 100%;
@ -579,6 +589,7 @@
.cart-header { .cart-header {
max-height: 45px; max-height: 45px;
margin-bottom: 20px; margin-bottom: 20px;
padding-bottom: 20px !important;
border-bottom: 2px solid $border-general; border-bottom: 2px solid $border-general;
> h3 { > h3 {
@ -1083,6 +1094,7 @@
.order-summary-container { .order-summary-container {
padding-top: 25px; padding-top: 25px;
height: max-content;
max-width: 500px !important; max-width: 500px !important;
> div { > div {
@ -1170,6 +1182,7 @@
} }
.regular-price { .regular-price {
font-weight: 500;
margin-right: 10px; margin-right: 10px;
text-decoration: line-through; text-decoration: line-through;
} }
@ -1192,6 +1205,8 @@
.method-sticker { .method-sticker {
font-size: 13px; font-size: 13px;
padding: 4px 8px; padding: 4px 8px;
margin-right: 3px;
margin-bottom: 3px;
text-align: center; text-align: center;
border-radius: 1px; border-radius: 1px;
display: inline-block; display: inline-block;
@ -1200,10 +1215,11 @@
} }
.sidebar { .sidebar {
z-index: 1000000;
width: $sidebar-width; width: $sidebar-width;
.category-content { .category-content {
margin-bottom: 10px; // margin-bottom: 10px;
.category-title { .category-title {
top: -1px; top: -1px;
@ -1244,8 +1260,57 @@
} }
} }
.category-list-container {
z-index: 10;
padding: 0px !important;
background: $white-color;
position: absolute !important;
box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
.category {
@extend .cursor-pointer;
width: 100%;
line-height: 2.5rem;
display: inline-block;
span {
top: -4px;
position: relative;
}
}
li {
padding: 7px 0 5px 15px;
}
li:hover {
background: $border-light;
}
.sub-category-container {
// position: relative;
}
.sub-categories {
top: 0px;
left: 100%;
z-index: 100;
padding-top: 10px;
position: absolute;
background: $light-color;
border-left: 1px solid $border-common;
box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
li:nth-last-of-type(1) {
margin-bottom: 10px;
}
}
}
#sidebar-level-0 { #sidebar-level-0 {
display: none; display: none;
z-index: 100000;
border-top: 1px solid $border-common; border-top: 1px solid $border-common;
} }
@ -1568,6 +1633,10 @@
outline: none; outline: none;
box-shadow: none; box-shadow: none;
} }
.VueCarousel-dot {
padding: 5px !important;
}
} }
.VueCarousel-dot--active { .VueCarousel-dot--active {

View File

@ -19,22 +19,25 @@
input.subscribe-field { input.subscribe-field {
width: 300px; width: 300px;
height: 38px;
border: none; border: none;
height: 38px;
font-size: 18px; font-size: 18px;
max-width: 250px;
padding: 10px 20px; padding: 10px 20px;
color: rgba(0,0,0,0.83); color: rgba(0,0,0,0.83);
} }
button.subscribe-btn { button.subscribe-btn {
left: -1px; left: -2px;
height: 38px; height: 38px;
font-size: 18px; font-size: 18px;
max-width: 110px;
line-height: 10px; line-height: 10px;
position: relative; position: relative;
} }
.social-icons { .social-icons {
height: 100%;
padding: 20px 0; padding: 20px 0;
color: $light-color; color: $light-color;
@ -57,7 +60,7 @@
} }
.subscribe-newsletter { .subscribe-newsletter {
padding: 30px 0; padding: 25px 0 30px 0;
} }
} }
} }
@ -78,8 +81,16 @@
font-size: 14px; font-size: 14px;
line-height: 2.5rem; line-height: 2.5rem;
li a { ul {
color: rgba(255,255,255,0.83); margin-bottom: 0px;
li {
margin-bottom: 5px;
a {
color: rgba(255,255,255,0.83);
}
}
} }
} }
} }

View File

@ -9,71 +9,6 @@ body {
} }
} }
.account-modal {
@extend .modal-dialog;
right: 10px;
z-index: 100;
width: 350px !important;
position: absolute !important;
.theme-btn {
padding: .5rem .9rem;
}
.modal-footer {
.text-left {
padding-left: 5px;
}
}
}
.category-list-container {
z-index: 10;
padding: 0px !important;
background: $white-color;
position: absolute !important;
box-shadow: inset -1px 0 0 0 $border-light;
.category {
@extend .cursor-pointer;
width: 100%;
line-height: 2.5rem;
display: inline-block;
span {
top: -4px;
position: relative;
}
}
}
.category-list-container li {
padding: 7px 0 5px 15px;
}
.category-list-container li:hover {
background: $border-light;
}
.category-list-container {
.sub-category-container {
position: relative;
}
.sub-categories {
top: -40px;
left: 100%;
z-index: 100;
padding-top: 10px;
position: absolute;
background: $light-color;
border-left: 1px solid $border-common;
box-shadow: inset -1px 0 0 0 $border-light;
}
}
.root-category-menu { .root-category-menu {
border-bottom: solid 1px #d8e6ed; border-bottom: solid 1px #d8e6ed;
} }
@ -352,14 +287,14 @@ header #search-form > *:focus {
.hot-categories-container { .hot-categories-container {
.hot-category-wrapper { .hot-category-wrapper {
padding: 0 10px 15px 0; padding: 0 10px 0 0;
.card { .card {
height: 100%; height: 100%;
padding: 20px; padding: 20px;
border: none; border: none;
box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14); // box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14);
-webkit-box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14); // -webkit-box-shadow: 0 6px 14px 0 rgba(0, 0, 0, 0.14);
} }
.velocity-divide-page { .velocity-divide-page {
@ -381,11 +316,11 @@ header #search-form > *:focus {
} }
.hot-category-wrapper:nth-last-child(2) { .hot-category-wrapper:nth-last-child(2) {
padding: 15px 0 15px 0px; padding: 0 0 0 0px;
} }
.hot-category-wrapper:last-child { .hot-category-wrapper:last-child {
padding: 15px 0 15px 10px; padding: 0 0 0 10px;
} }
} }
@ -427,8 +362,7 @@ header #search-form > *:focus {
} }
.card-description { .card-description {
padding: 25px; padding: 10px 20px;
margin-top: 15px;
} }
} }
@ -513,6 +447,7 @@ header #search-form > *:focus {
.content-list { .content-list {
margin: 0; margin: 0;
width: 100%; width: 100%;
height: 42px;
text-align: left; text-align: left;
list-style: none; list-style: none;
position: relative; position: relative;
@ -521,8 +456,7 @@ header #search-form > *:focus {
ul { ul {
width: 100%; width: 100%;
height: 104%; height: 100%;
padding-left: 10px;
display: inline-flex; display: inline-flex;
background-color: $link-color; background-color: $link-color;
@ -532,13 +466,17 @@ header #search-form > *:focus {
cursor: pointer; cursor: pointer;
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
padding: 8px 15px;
letter-spacing: 0; letter-spacing: 0;
position: relative; position: relative;
color: $white-color; color: $white-color;
text-decoration: none; text-decoration: none;
padding: 8px 20px 8px 5px;
} }
} }
li:hover {
background-color: #42719a;
}
} }
} }
} }

View File

@ -0,0 +1,43 @@
@media only screen and (max-width: 1100px) {
.footer {
.footer-content {
.newsletter-subscription {
.newsletter-wrapper {
.social-icons {
width: 100%;
padding: 5px 0;
text-align: center !important;
}
.subscribe-newsletter {
width: 100%;
padding: 10px 0;
text-align: center;
}
}
}
.footer-statics {
> div:not(:last-child) {
margin-bottom: 30px;
}
}
}
}
}
@media only screen and (max-width: 992px) {
}
@media only screen and (max-width: 768px) {
// body {
// display: none;
// }
}
@media only screen and (max-width: 576px) {
// body {
// display: block;
// }
}

View File

@ -1,5 +1,6 @@
.product-detail { .product-detail {
padding-top: 20px; padding-top: 20px;
margin-bottom: 60px;
.magnifier { .magnifier {
> img { > img {
@ -31,6 +32,8 @@
} }
.reviews { .reviews {
vertical-align: top;
> div { > div {
display: inline-block; display: inline-block;
} }
@ -206,4 +209,15 @@
vertical-align: middle; vertical-align: middle;
} }
} }
}
.store-meta-images {
margin-top: 20px;
img {
width: 100%;
height: 100%;
max-height: 300px;
}
} }

View File

@ -187,6 +187,9 @@
.cursor-pointer { .cursor-pointer {
cursor: pointer; cursor: pointer;
} }
.cursor-default {
cursor: default;
}
.grey { .grey {
color: rgb(158, 158, 158); color: rgb(158, 158, 158);
@ -500,6 +503,12 @@
.small-card-container { .small-card-container {
cursor: pointer; cursor: pointer;
margin-bottom: 10px; margin-bottom: 10px;
margin-left: 0 !important;
margin-right: 0 !important;
.material-icons {
font-size: 16px;
}
.product-image-container { .product-image-container {
padding: 0; padding: 0;
@ -517,6 +526,11 @@
display: inline-block; display: inline-block;
padding: 10px 0 !important; padding: 10px 0 !important;
} }
.sticker,
.regular-price {
display: none;
}
} }
.small-card-container:hover { .small-card-container:hover {
@ -656,6 +670,8 @@ a {
.scrollable { .scrollable {
max-height: 100vh; max-height: 100vh;
overflow-y: scroll; overflow-y: scroll;
scrollbar-width: none;
-ms-overflow-style: none;
} }
.scrollable::-webkit-scrollbar { .scrollable::-webkit-scrollbar {
@ -730,3 +746,7 @@ button[disabled] {
.description-text { .description-text {
font-size: 14px; font-size: 14px;
} }
.max-height-350 {
max-height: 350px;
}

View File

@ -95,13 +95,14 @@ return [
'subscription-content' => 'Subscription bar Content', 'subscription-content' => 'Subscription bar Content',
'activate-slider' => 'Activate Slider', 'activate-slider' => 'Activate Slider',
'sidebar-categories' => 'Sidebar Categories', 'sidebar-categories' => 'Sidebar Categories',
'footer-left-raw-content' => 'We love to craft softwares and solve the real world problems with the binaries. We are highly committed to our goals. We invest our resources to create world class easy to use softwares and applications for the enterprise business with the top notch, on the edge technology expertise.', 'footer-left-raw-content' => '<p>We love to craft softwares and solve the real world problems with the binaries. We are highly committed to our goals. We invest our resources to create world class easy to use softwares and applications for the enterprise business with the top notch, on the edge technology expertise.</p>',
'footer-middle-content' => 'Footer Middle Content', 'footer-middle-content' => 'Footer Middle Content',
'update-meta-data' => 'Update Meta Data', 'update-meta-data' => 'Update Meta Data',
'advertisement-four' => 'Advertisement Four Images', 'advertisement-four' => 'Advertisement Four Images',
'advertisement-three' => 'Advertisement Three Images', 'advertisement-three' => 'Advertisement Three Images',
'advertisement-two' => 'Advertisement Two Images', 'advertisement-two' => 'Advertisement Two Images',
'advertisement-one' => 'Advertisement One Images', 'advertisement-one' => 'Advertisement One Images',
'product-view-image' => 'Product View Image',
'footer' => 'Footer', 'footer' => 'Footer',
], ],
'category' => [ 'category' => [

View File

@ -1,5 +1,5 @@
<script type="text/x-template" id="star-ratings-template"> <script type="text/x-template" id="star-ratings-template">
<div :class="`stars mr10 fs${size ? size : '16'} ${pushClass ? pushClass : ''}`"> <div :class="`stars mr5 fs${size ? size : '16'} ${pushClass ? pushClass : ''}`">
<input <input
v-if="editable" v-if="editable"
type="number" type="number"
@ -7,30 +7,35 @@
name="rating" name="rating"
class="hidden" /> class="hidden" />
<span <i
:class="`rango-star-fill ${editable ? 'cursor-pointer' : ''}`" :class="`material-icons ${editable ? 'cursor-pointer' : ''}`"
v-for="(rating, index) in parseInt(showFilled ? showFilled : 3)" v-for="(rating, index) in parseInt(showFilled ? showFilled : 3)"
:key="`${index}${Math.random()}`" :key="`${index}${Math.random()}`"
@click="updateRating(index + 1)"> @click="updateRating(index + 1)">
</span> star
</i>
<template v-if="!hideBlank"> <template v-if="!hideBlank">
<span <i
:class="`rango-star ${editable ? 'cursor-pointer' : ''}`" :class="`material-icons ${editable ? 'cursor-pointer' : ''}`"
v-for="(blankStar, index) in (5 - (showFilled ? showFilled : 3))" v-for="(blankStar, index) in (5 - (showFilled ? showFilled : 3))"
:key="`${index}${Math.random()}`" :key="`${index}${Math.random()}`"
@click="updateRating(showFilled + index + 1)"> @click="updateRating(showFilled + index + 1)">
</span> star_border
</i>
</template> </template>
{{-- <i class="material-icons">star_border</i>
<i class="material-icons">star</i> --}}
</div> </div>
</script> </script>
<script type="text/x-template" id="cart-btn-template"> <script type="text/x-template" id="cart-btn-template">
<button <button
:class="`btn btn-link disable-box-shadow ${parseInt(itemCount)}`"
type="button" type="button"
id="mini-cart" id="mini-cart"
@click="toggleMiniCart"> @click="toggleMiniCart"
class="btn btn-link disable-box-shadow">
<div class="mini-cart-content"> <div class="mini-cart-content">
<i class="icon fs16 cell rango-arrow-down down-icon-position down-arrow-margin"></i> <i class="icon fs16 cell rango-arrow-down down-icon-position down-arrow-margin"></i>

View File

@ -121,6 +121,14 @@
input-name="images[1]"> input-name="images[1]">
</image-wrapper> </image-wrapper>
</div> </div>
<div class="control-group product-view-image">
<label>{{ __('velocity::app.admin.meta-data.product-view-image') }}</label>
<image-wrapper
input-name="product_view_images">
</image-wrapper>
</div>
</div> </div>
</accordian> </accordian>

View File

@ -16,7 +16,7 @@
<div class="modal-content sensitive-modal cart-modal-content hide" id="cart-modal-content"> <div class="modal-content sensitive-modal cart-modal-content hide" id="cart-modal-content">
<!--Body--> <!--Body-->
<div class="pl20 pt10 pr15 fs14"> <div class="mini-cart-container">
@foreach ($items as $item) @foreach ($items as $item)
@php @php
$images = $item->product->getTypeInstance()->getBaseImage($item); $images = $item->product->getTypeInstance()->getBaseImage($item);

View File

@ -573,20 +573,6 @@
onSubmit: function() { onSubmit: function() {
var this_this = this; var this_this = this;
const emptyCouponErrorText = "Please enter a coupon code"; const emptyCouponErrorText = "Please enter a coupon code";
axios.post('{{ route('shop.checkout.check.coupons') }}', {code: this_this.coupon_code})
.then(function(response) {
this_this.$emit('onApplyCoupon');
this_this.couponChanged = true;
})
.catch(function(error) {
this_this.couponChanged = true;
this_this.error_message = (error.response.data.message === "The given data was invalid.")?
emptyCouponErrorText :
(error.response.data.message === "Cannot Apply Coupon")?
"Sorry, this Coupon code is invalid":error.response.data.message;
});
}, },
changeCoupon: function() { changeCoupon: function() {
@ -603,16 +589,6 @@
removeCoupon: function () { removeCoupon: function () {
var this_this = this; var this_this = this;
axios.post('{{ route('shop.checkout.remove.coupon') }}')
.then(function(response) {
this_this.$emit('onRemoveCoupon')
})
.catch(function(error) {
window.flashMessages = [{'type' : 'alert-error', 'message' : error.response.data.message}];
this_this.$root.addFlashMessages();
});
} }
} }
}); });

View File

@ -14,6 +14,7 @@
<a class="unset fw6 full-width" href="{{ $subMenuItem['url'] }}"> <a class="unset fw6 full-width" href="{{ $subMenuItem['url'] }}">
<i class="icon {{ $index }} text-down-3"></i> <i class="icon {{ $index }} text-down-3"></i>
<span>{{ trans($subMenuItem['name']) }}<span> <span>{{ trans($subMenuItem['name']) }}<span>
<i class="rango-arrow-right pull-right text-down-3"></i>
</a> </a>
</li> </li>
@endforeach @endforeach

View File

@ -9,94 +9,97 @@
{!! view_render_event('bagisto.shop.customers.login.before') !!} {!! view_render_event('bagisto.shop.customers.login.before') !!}
<div class="container"> <div class="container">
<div class="heading"> <div class="row col-10 offset-1">
<h2 class="fs24 fw6"> <div class="heading">
{{ __('velocity::app.customer.login-form.customer-login')}} <h2 class="fs24 fw6">
</h2> {{ __('velocity::app.customer.login-form.customer-login')}}
</h2>
<a href="{{ route('customer.register.index') }}" class="btn-new-customer"> <a href="{{ route('customer.register.index') }}" class="btn-new-customer">
<button type="button" class="theme-btn light"> <button type="button" class="theme-btn light">
{{ __('velocity::app.customer.login-form.new-customer')}} {{ __('velocity::app.customer.login-form.new-customer')}}
</button> </button>
</a>
</div>
<div class="body">
<div class="form-header">
<h3 class="fw6">
{{ __('velocity::app.customer.login-form.registered-user')}}
</h3>
<p class="fs16">
{{ __('velocity::app.customer.login-form.form-login-text')}}
</p>
</div>
<form
method="POST"
action="{{ route('customer.session.create') }}"
@submit.prevent="onSubmit">
{{ csrf_field() }}
{!! view_render_event('bagisto.shop.customers.login_form_controls.before') !!}
<div class="form-group" :class="[errors.has('email') ? 'has-error' : '']">
<label for="email" class="required label-style">
{{ __('shop::app.customer.login-form.email') }}*
</label>
<input
type="text"
class="form-style"
name="email"
v-validate="'required|email'"
value="{{ old('email') }}"
data-vv-as="&quot;{{ __('shop::app.customer.login-form.email') }}&quot;" />
<span class="control-error" v-if="errors.has('email')">
@{{ errors.first('email') }}
</span>
</div>
<div class="form-group" :class="[errors.has('password') ? 'has-error' : '']">
<label for="password" class="required label-style">
{{ __('shop::app.customer.login-form.password') }}*
</label>
<input
type="password"
class="form-style"
name="password"
v-validate="'required'"
value="{{ old('password') }}"
data-vv-as="&quot;{{ __('shop::app.customer.login-form.password') }}&quot;" />
<span class="control-error" v-if="errors.has('password')">
@{{ errors.first('password') }}
</span>
<a href="{{ route('customer.forgot-password.create') }}" style="float: right;">
{{ __('shop::app.customer.login-form.forgot_pass') }}
</a> </a>
<div class="mt10">
@if (Cookie::has('enable-resend'))
@if (Cookie::get('enable-resend') == true)
<a href="{{ route('customer.resend.verification-email', Cookie::get('email-for-resend')) }}">{{ __('shop::app.customer.login-form.resend-verification') }}</a>
@endif
@endif
</div>
</div> </div>
{!! view_render_event('bagisto.shop.customers.login_form_controls.after') !!} <div class="body col-12">
<div class="form-header">
<h3 class="fw6">
{{ __('velocity::app.customer.login-form.registered-user')}}
</h3>
<input class="theme-btn" type="submit" value="{{ __('shop::app.customer.login-form.button_title') }}"> <p class="fs16">
{{ __('velocity::app.customer.login-form.form-login-text')}}
</p>
</div>
</form> <form
method="POST"
action="{{ route('customer.session.create') }}"
@submit.prevent="onSubmit">
{{ csrf_field() }}
{!! view_render_event('bagisto.shop.customers.login_form_controls.before') !!}
<div class="form-group" :class="[errors.has('email') ? 'has-error' : '']">
<label for="email" class="required label-style">
{{ __('shop::app.customer.login-form.email') }}*
</label>
<input
type="text"
class="form-style"
name="email"
v-validate="'required|email'"
value="{{ old('email') }}"
data-vv-as="&quot;{{ __('shop::app.customer.login-form.email') }}&quot;" />
<span class="control-error" v-if="errors.has('email')">
@{{ errors.first('email') }}
</span>
</div>
<div class="form-group" :class="[errors.has('password') ? 'has-error' : '']">
<label for="password" class="required label-style">
{{ __('shop::app.customer.login-form.password') }}*
</label>
<input
type="password"
class="form-style"
name="password"
v-validate="'required'"
value="{{ old('password') }}"
data-vv-as="&quot;{{ __('shop::app.customer.login-form.password') }}&quot;" />
<span class="control-error" v-if="errors.has('password')">
@{{ errors.first('password') }}
</span>
<a href="{{ route('customer.forgot-password.create') }}" style="float: right;">
{{ __('shop::app.customer.login-form.forgot_pass') }}
</a>
<div class="mt10">
@if (Cookie::has('enable-resend'))
@if (Cookie::get('enable-resend') == true)
<a href="{{ route('customer.resend.verification-email', Cookie::get('email-for-resend')) }}">{{ __('shop::app.customer.login-form.resend-verification') }}</a>
@endif
@endif
</div>
</div>
{!! view_render_event('bagisto.shop.customers.login_form_controls.after') !!}
<input class="theme-btn" type="submit" value="{{ __('shop::app.customer.login-form.button_title') }}">
</form>
</div>
</div>
</div> </div>
</div>
{!! view_render_event('bagisto.shop.customers.login.after') !!} {!! view_render_event('bagisto.shop.customers.login.after') !!}
</div> </div>
@endsection @endsection

View File

@ -1,58 +1,71 @@
@extends('shop::layouts.master') @extends('shop::layouts.master')
@section('page_title') @section('page_title')
{{ __('shop::app.customer.forgot-password.page_title') }} {{ __('shop::app.customer.forgot-password.page_title') }}
@stop @endsection
@section('content-wrapper') @section('content-wrapper')
<div class="auth-content"> <div class="auth-content form-container">
<div class="container"> <div class="container">
<div class="login-text"> <div class="row col-10 offset-1">
<h2 style="font-weight:bold;" class="fs24"> <div class="heading">
{{ __('velocity::app.customer.forget-password.forgot-password')}} <h2 class="fs24 fw6">
<div style="" class="w3-card-login"><a href="{{ route('customer.session.index') }}" class="btn-new-customer-login">{{ __('velocity::app.customer.signup-form.login')}}</a></div> {{ __('velocity::app.customer.forget-password.forgot-password')}}
</h2> </h2>
</div>
<div class="mb60" style="height:260px;width:575px;border:1px solid #E5E5E5;margin: 0 auto;margin-bottom:44px;">
<div style="margin: 45px;">
<p class="fs16" style="font-weight:bold"> <a href="{{ route('customer.session.index') }}" class="btn-new-customer">
{{ __('velocity::app.customer.forget-password.recover-password')}} <button type="button" class="theme-btn light">
</p> {{ __('velocity::app.customer.signup-form.login') }}
<p class="fs16"> </button>
{{ __('velocity::app.customer.forget-password.recover-password-text')}} </a>
</p> </div>
{!! view_render_event('bagisto.shop.customers.forget_password.before') !!} <div class="body col-12">
<h3 class="fw6">
{{ __('velocity::app.customer.forget-password.recover-password')}}
</h3>
<form method="post" action="{{ route('customer.forgot-password.store') }}" @submit.prevent="onSubmit"> <p class="fs16">
{{ __('velocity::app.customer.forget-password.recover-password-text')}}
</p>
{{ csrf_field() }} {!! view_render_event('bagisto.shop.customers.forget_password.before') !!}
<div class="login-form"> <form
method="post"
action="{{ route('customer.register.create') }}"
@submit.prevent="onSubmit">
{{ csrf_field() }}
{!! view_render_event('bagisto.shop.customers.forget_password_form_controls.before') !!} {!! view_render_event('bagisto.shop.customers.forget_password_form_controls.before') !!}
<div class="control-group" :class="[errors.has('email') ? 'has-error' : '']"> <div class="control-group" :class="[errors.has('email') ? 'has-error' : '']">
<label for="email" class="label-style">{{ __('shop::app.customer.forgot-password.email') }}</label> <label for="email" class="required label-style">
<input type="email" class="form-control" name="email" v-validate="'required|email'"> {{ __('shop::app.customer.forgot-password.email') }}
<span class="control-error" v-if="errors.has('email')">@{{ errors.first('email') }}</span> </label>
<input
type="email"
class="form-style"
name="email"
v-validate="'required|email'" />
<span class="control-error" v-if="errors.has('email')">
@{{ errors.first('email') }}
</span>
</div> </div>
<br>
{!! view_render_event('bagisto.shop.customers.forget_password_form_controls.before') !!} {!! view_render_event('bagisto.shop.customers.forget_password_form_controls.after') !!}
<div class="button-group"> <button class="theme-btn" type="submit">
<button type="submit" class="btn btn-dark-green"> {{ __('shop::app.customer.forgot-password.submit') }}
{{ __('shop::app.customer.forgot-password.submit') }} </button>
</button> </form>
</div>
</div>
</form>
{!! view_render_event('bagisto.shop.customers.forget_password.before') !!} {!! view_render_event('bagisto.shop.customers.forget_password.after') !!}
</div>
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection

View File

@ -7,137 +7,138 @@
@section('content-wrapper') @section('content-wrapper')
<div class="auth-content form-container"> <div class="auth-content form-container">
<div class="container"> <div class="container">
<div class="row col-10 offset-1">
<div class="heading">
<h2 class="fs24 fw6">
{{ __('velocity::app.customer.signup-form.user-registration')}}
</h2>
<div class="heading"> <a href="{{ route('customer.session.index') }}" class="btn-new-customer">
<h2 class="fs24 fw6"> <button type="button" class="theme-btn light">
{{ __('velocity::app.customer.signup-form.user-registration')}} {{ __('velocity::app.customer.signup-form.login')}}
</h2> </button>
</a>
</div>
<a href="{{ route('customer.session.index') }}" class="btn-new-customer"> <div class="body col-12">
<button type="button" class="theme-btn light"> <h3 class="fw6">
{{ __('velocity::app.customer.signup-form.login')}} {{ __('velocity::app.customer.signup-form.become-user')}}
</button> </h3>
</a>
</div>
<div class="body"> <p class="fs16">
<h3 class="fw6"> {{ __('velocity::app.customer.signup-form.form-sginup-text')}}
{{ __('velocity::app.customer.signup-form.become-user')}} </p>
</h3>
<p class="fs16"> {!! view_render_event('bagisto.shop.customers.signup.before') !!}
{{ __('velocity::app.customer.signup-form.form-sginup-text')}}
</p>
{!! view_render_event('bagisto.shop.customers.signup.before') !!} <form
method="post"
action="{{ route('customer.register.create') }}"
@submit.prevent="onSubmit">
<form {{ csrf_field() }}
method="post"
action="{{ route('customer.register.create') }}"
@submit.prevent="onSubmit">
{{ csrf_field() }} {!! view_render_event('bagisto.shop.customers.signup_form_controls.before') !!}
{!! view_render_event('bagisto.shop.customers.signup_form_controls.before') !!} <div class="control-group" :class="[errors.has('first_name') ? 'has-error' : '']">
<label for="first_name" class="required label-style">
{{ __('shop::app.customer.signup-form.firstname') }}
</label>
<div class="control-group" :class="[errors.has('first_name') ? 'has-error' : '']"> <input
<label for="first_name" class="required label-style"> type="text"
{{ __('shop::app.customer.signup-form.firstname') }} class="form-style"
</label> name="first_name"
v-validate="'required'"
value="{{ old('first_name') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.firstname') }}&quot;" />
<input <span class="control-error" v-if="errors.has('first_name')">
type="text" @{{ errors.first('first_name') }}
class="form-style" </span>
name="first_name" </div>
v-validate="'required'"
value="{{ old('first_name') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.firstname') }}&quot;" />
<span class="control-error" v-if="errors.has('first_name')"> <div class="control-group" :class="[errors.has('last_name') ? 'has-error' : '']">
@{{ errors.first('first_name') }} <label for="last_name" class="required label-style">
</span> {{ __('shop::app.customer.signup-form.lastname') }}
</div> </label>
<div class="control-group" :class="[errors.has('last_name') ? 'has-error' : '']"> <input
<label for="last_name" class="required label-style"> type="text"
{{ __('shop::app.customer.signup-form.lastname') }} class="form-style"
</label> name="last_name"
v-validate="'required'"
value="{{ old('last_name') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.lastname') }}&quot;" />
<input <span class="control-error" v-if="errors.has('last_name')">
type="text" @{{ errors.first('last_name') }}
class="form-style" </span>
name="last_name" </div>
v-validate="'required'"
value="{{ old('last_name') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.lastname') }}&quot;" />
<span class="control-error" v-if="errors.has('last_name')"> <div class="control-group" :class="[errors.has('email') ? 'has-error' : '']">
@{{ errors.first('last_name') }} <label for="email" class="required label-style">
</span> {{ __('shop::app.customer.signup-form.email') }}
</div> </label>
<div class="control-group" :class="[errors.has('email') ? 'has-error' : '']"> <input
<label for="email" class="required label-style"> type="email"
{{ __('shop::app.customer.signup-form.email') }} class="form-style"
</label> name="email"
v-validate="'required|email'"
value="{{ old('email') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.email') }}&quot;" />
<input <span class="control-error" v-if="errors.has('email')">
type="email" @{{ errors.first('email') }}
class="form-style" </span>
name="email" </div>
v-validate="'required|email'"
value="{{ old('email') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.email') }}&quot;" />
<span class="control-error" v-if="errors.has('email')"> <div class="control-group" :class="[errors.has('password') ? 'has-error' : '']">
@{{ errors.first('email') }} <label for="password" class="required label-style">
</span> {{ __('shop::app.customer.signup-form.password') }}
</div> </label>
<div class="control-group" :class="[errors.has('password') ? 'has-error' : '']"> <input
<label for="password" class="required label-style"> type="password"
{{ __('shop::app.customer.signup-form.password') }} class="form-style"
</label> name="password"
v-validate="'required|min:6'"
ref="password"
value="{{ old('password') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.password') }}&quot;" />
<input <span class="control-error" v-if="errors.has('password')">
type="password" @{{ errors.first('password') }}
class="form-style" </span>
name="password" </div>
v-validate="'required|min:6'"
ref="password"
value="{{ old('password') }}"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.password') }}&quot;" />
<span class="control-error" v-if="errors.has('password')"> <div class="control-group" :class="[errors.has('password_confirmation') ? 'has-error' : '']">
@{{ errors.first('password') }} <label for="password_confirmation" class="required label-style">
</span> {{ __('shop::app.customer.signup-form.confirm_pass') }}
</div> </label>
<div class="control-group" :class="[errors.has('password_confirmation') ? 'has-error' : '']"> <input
<label for="password_confirmation" class="required label-style"> type="password"
{{ __('shop::app.customer.signup-form.confirm_pass') }} class="form-style"
</label> name="password_confirmation"
v-validate="'required|min:6|confirmed:password'"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.confirm_pass') }}&quot;" />
<input <span class="control-error" v-if="errors.has('password_confirmation')">
type="password" @{{ errors.first('password_confirmation') }}
class="form-style" </span>
name="password_confirmation" </div>
v-validate="'required|min:6|confirmed:password'"
data-vv-as="&quot;{{ __('shop::app.customer.signup-form.confirm_pass') }}&quot;" />
<span class="control-error" v-if="errors.has('password_confirmation')"> {!! view_render_event('bagisto.shop.customers.signup_form_controls.after') !!}
@{{ errors.first('password_confirmation') }}
</span>
</div>
{!! view_render_event('bagisto.shop.customers.signup_form_controls.after') !!} <button class="theme-btn" type="submit">
{{ __('shop::app.customer.signup-form.title') }}
</button>
</form>
<button class="theme-btn" type="submit"> {!! view_render_event('bagisto.shop.customers.signup.after') !!}
{{ __('shop::app.customer.signup-form.title') }} </div>
</button>
</form>
{!! view_render_event('bagisto.shop.customers.signup.after') !!}
</div> </div>
</div> </div>
</div> </div>

View File

@ -18,11 +18,11 @@
<div class="container-fluid advertisement-two-container"> <div class="container-fluid advertisement-two-container">
<div class="row"> <div class="row">
<a class="col-8 no-padding"> <a class="col-9 no-padding">
<img src="{{ asset('/storage/' . $advertisementTwo['image_1']) }}" /> <img src="{{ asset('/storage/' . $advertisementTwo['image_1']) }}" />
</a> </a>
<a class="col-4 pr0"> <a class="col-3 pr0">
<img src="{{ asset('/storage/' . $advertisementTwo['image_2']) }}" /> <img src="{{ asset('/storage/' . $advertisementTwo['image_2']) }}" />
</a> </a>
</div> </div>
@ -33,11 +33,11 @@
@if (! $isRendered) @if (! $isRendered)
<div class="container-fluid advertisement-two-container"> <div class="container-fluid advertisement-two-container">
<div class="row"> <div class="row">
<a class="col-8 no-padding"> <a class="col-9 no-padding">
<img src="{{ asset('/themes/velocity/assets/images/toster.png') }}" /> <img src="{{ asset('/themes/velocity/assets/images/toster.png') }}" />
</a> </a>
<a class="col-4 pr0"> <a class="col-3 pr0">
<img src="{{ asset('/themes/velocity/assets/images/trimmer.png') }}" /> <img src="{{ asset('/themes/velocity/assets/images/trimmer.png') }}" />
</a> </a>
</div> </div>

View File

@ -18,8 +18,10 @@
<div class="row flex-nowrap"> <div class="row flex-nowrap">
<carousel-component <carousel-component
:slides-count="{{ sizeof($products) }}"
slides-per-page="6" slides-per-page="6"
navigation-enabled="hide"
pagination-enabled="hide"
:slides-count="{{ sizeof($products) }}"
id="{{ $categoryDetails->name }}-carousel"> id="{{ $categoryDetails->name }}-carousel">
@foreach ($products as $index => $product) @foreach ($products as $index => $product)

View File

@ -16,9 +16,11 @@
<div class="row flex-nowrap"> <div class="row flex-nowrap">
<carousel-component <carousel-component
:slides-count="{{ $featuredProductsCount }}"
slides-per-page="6" slides-per-page="6"
id="fearured-products-carousel"> navigation-enabled="hide"
pagination-enabled="hide"
id="fearured-products-carousel"
:slides-count="{{ $featuredProductsCount }}">
@foreach ($featuredProducts as $index => $product) @foreach ($featuredProducts as $index => $product)

View File

@ -2,8 +2,6 @@
$count = $velocityMetaData->new_products_count; $count = $velocityMetaData->new_products_count;
$newProducts = app('Webkul\Velocity\Repositories\Product\ProductRepository')->getNewProducts($count); $newProducts = app('Webkul\Velocity\Repositories\Product\ProductRepository')->getNewProducts($count);
$showRecentlyViewed = false;
@endphp @endphp
@if (! empty($newProducts)) @if (! empty($newProducts))
@ -26,11 +24,11 @@
<div class="col-9 no-padding"> <div class="col-9 no-padding">
<carousel-component <carousel-component
:slides-count="{{ sizeof($newProducts) }}"
slides-per-page="5" slides-per-page="5"
id="new-products-carousel"
navigation-enabled="hide" navigation-enabled="hide"
pagination-enabled="hide"> pagination-enabled="hide"
id="new-products-carousel"
:slides-count="{{ sizeof($newProducts) }}">
@foreach ($newProducts as $index => $product) @foreach ($newProducts as $index => $product)
@ -43,12 +41,17 @@
</carousel-component> </carousel-component>
</div> </div>
@include ('shop::products.list.recently-viewed') @include ('shop::products.list.recently-viewed', [
'addClass' => 'col-3',
'addClassWrapper' => 'scrollable max-height-350',
])
@else @else
<carousel-component <carousel-component
:slides-count="{{ sizeof($newProducts) }}"
slides-per-page="6" slides-per-page="6"
id="new-products-carousel"> navigation-enabled="hide"
pagination-enabled="hide"
id="new-products-carousel"
:slides-count="{{ sizeof($newProducts) }}">
@foreach ($newProducts as $index => $product) @foreach ($newProducts as $index => $product)

View File

@ -1,4 +1,4 @@
<div class="col-4 software-description"> <div class="col-lg-4 col-md-12 col-sm-12 software-description">
<div class="logo"> <div class="logo">
<a href="{{ route('shop.home.index') }}"> <a href="{{ route('shop.home.index') }}">
@if ($logo = core()->getCurrentChannel()->logo_url) @if ($logo = core()->getCurrentChannel()->logo_url)

View File

@ -1 +1,5 @@
{!! $velocityMetaData->footer_middle_content !!} <div class="col-lg-4 col-md-12 col-sm-12 footer-ct-content">
<div class="row">
{!! $velocityMetaData->footer_middle_content !!}
</div>
</div>

View File

@ -20,14 +20,13 @@
} }
@endphp @endphp
<div class="col-4 footer-rt-content"> <div class="col-lg-4 col-md-12 col-sm-12 footer-rt-content">
<div class="row"> <div class="row">
<div class="mb5"> <div class="mb5 col-12">
<h3>{{ __('velocity::app.home.payment-methods') }}</h3> <h3>{{ __('velocity::app.home.payment-methods') }}</h3>
</div> </div>
<div class="payment-methods"> <div class="payment-methods col-12">
@foreach($activePayments as $paymentMethod) @foreach($activePayments as $paymentMethod)
<div class="method-sticker"> <div class="method-sticker">
{{ $paymentMethod}} {{ $paymentMethod}}
@ -37,11 +36,11 @@
</div> </div>
<div class="row"> <div class="row">
<div class="mb5"> <div class="mb5 col-12">
<h3>{{ __('velocity::app.home.payment-methods') }}</h3> <h3>{{ __('velocity::app.home.shipping-methods') }}</h3>
</div> </div>
<div class="shipping-methods"> <div class="shipping-methods col-12">
@foreach($activeShippings as $shippingMethod) @foreach($activeShippings as $shippingMethod)
<div class="method-sticker"> <div class="method-sticker">
{{ $shippingMethod}} {{ $shippingMethod}}
@ -49,5 +48,4 @@
@endforeach @endforeach
</div> </div>
</div> </div>
</div> </div>

View File

@ -2,15 +2,13 @@
<div class="footer-content"> <div class="footer-content">
@include('shop::layouts.footer.newsletter-subscription') @include('shop::layouts.footer.newsletter-subscription')
@include('shop::layouts.footer.footer-links') @include('shop::layouts.footer.footer-links')
@if ($categories) @if ($categories)
@include('shop::layouts.footer.top-brands') {{-- @include('shop::layouts.footer.top-brands') --}}
@endif @endif
@include('shop::layouts.footer.copy-right') @include('shop::layouts.footer.copy-right')
</div> </div>
</div> </div>

View File

@ -3,38 +3,33 @@
|| core()->getConfigData('customer.settings.newsletter.subscription') || core()->getConfigData('customer.settings.newsletter.subscription')
) )
<div class="newsletter-subscription"> <div class="newsletter-subscription">
<div class="newsletter-wrapper"> <div class="newsletter-wrapper row">
@if ($velocityMetaData->subscription_bar_content) @if ($velocityMetaData->subscription_bar_content)
{!! $velocityMetaData->subscription_bar_content !!} {!! $velocityMetaData->subscription_bar_content !!}
@endif @endif
@if (core()->getConfigData('customer.settings.newsletter.subscription')) @if (core()->getConfigData('customer.settings.newsletter.subscription'))
<div class="subscribe-newsletter"> <div class="subscribe-newsletter col-lg-6 text-right">
<div class="form-container">
<form action="{{ route('shop.subscribe') }}">
<div class="subscriber-form-div">
<div :class="`control-group ${errors.has('subscriber_email') ? 'has-error' : ''}`">
<input
type="email"
name="subscriber_email"
class="control subscribe-field"
placeholder="{{ __('velocity::app.customer.login-form.your-email-address') }}"
required />
<div class="form-container"> <button class="theme-btn subscribe-btn fw6">
{{ __('shop::app.subscription.subscribe') }}
<form action="{{ route('shop.subscribe') }}"> </button>
<div class="subscriber-form-div"> </div>
<div
:class="`control-group ${errors.has('subscriber_email') ? 'has-error' : ''}`">
<input
type="email"
class="control subscribe-field"
name="subscriber_email"
placeholder="{{ __('velocity::app.customer.login-form.your-email-address') }}"
required />
<button class="theme-btn subscribe-btn fw6">
{{ __('shop::app.subscription.subscribe') }}
</button>
</div>
</div>
</form>
</div> </div>
</form>
</div> </div>
@endif </div>
@endif
</div> </div>
</div> </div>
@endif @endif

View File

@ -9,12 +9,11 @@
</a> </a>
<div class="row no-margin right"> <div class="row no-margin right">
<div class="col-8 no-padding"> <div class="col-8 no-padding input-group">
<form <form
method="GET" method="GET"
role="search" role="search"
id="search-form" id="search-form"
class="input-group"
action="{{ route('shop.search.index') }}"> action="{{ route('shop.search.index') }}">
<div <div

View File

@ -41,22 +41,22 @@
<!--Footer--> <!--Footer-->
<div class="modal-footer"> <div class="modal-footer">
<div class="col-6 text-left"> <div>
<a href="{{ route('customer.session.index') }}"> <a href="{{ route('customer.session.index') }}">
<button <button
type="button" type="button"
class="theme-btn fs15"> class="theme-btn fs14 fw6">
{{ __('velocity::app.header.sign-in') }} {{ __('velocity::app.header.sign-in') }}
</button> </button>
</a> </a>
</div> </div>
<div class="col-6 text-right"> <div>
<a href="{{ route('customer.register.index') }}"> <a href="{{ route('customer.register.index') }}">
<button <button
type="button" type="button"
class="theme-btn fs15"> class="theme-btn fs14 fw6">
{{ __('velocity::app.header.sign-up') }} {{ __('velocity::app.header.sign-up') }}
</button> </button>
</a> </a>

View File

@ -46,7 +46,7 @@
</div> </div>
<div class="product-rating"> <div class="product-rating">
<star-ratings ratings="3"></star-ratings> <star-ratings ratings="{{ $avgRatings }}"></star-ratings>
<span>{{ $totalReviews }} Ratings</span> <span>{{ $totalReviews }} Ratings</span>
</div> </div>

View File

@ -1,46 +1,91 @@
@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') @inject ('velocityHelper', 'Webkul\Velocity\Helpers\Helper')
@inject ('productRatingHelper', 'Webkul\Product\Helpers\Review') @inject ('productRatingHelper', 'Webkul\Product\Helpers\Review')
@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage')
@php <recently-viewed
$recentlyViewedProducts = app('Webkul\Product\Repositories\ProductRepository')->getNewProducts(3)->items(); add-class="{{ isset($addClass) ? $addClass : '' }}"
@endphp add-class-wrapper="{{ isset($addClassWrapper) ? $addClassWrapper : '' }}">
</recently-viewed>
<div class="col-3 recently-viewed"> @push('scripts')
<div class="row mb20 pl20"> <script type="text/x-template" id="recently-viewed-template">
<div class="col-12 no-padding"> <div :class="`${addClass} recently-viewed`">
<h2 class="fs20 fw6">{{ __('velocity::app.products.recently-viewed') }}</h2> <div class="row remove-padding-margin">
</div> <div class="col-12 no-padding">
</div> <h2 class="fs20 fw6 mb15">{{ __('velocity::app.products.recently-viewed') }}</h2>
</div>
@foreach ($recentlyViewedProducts as $index => $product)
@php
$productBaseImage = $productImageHelper->getProductBaseImage($product);
$productAverageRating = $productRatingHelper->getAverageRating($product);
@endphp
<div class="row small-card-container">
<div class="col-4 product-image-container mr15">
<a href="{{ route('shop.productOrCategory.index', $product->url_key) }}" class="unset">
<div class="product-image" style="background-image: url({{ $productBaseImage['small_image_url'] }})"></div>
</a>
</div> </div>
<div class="col-8 no-padding card-body align-vertical-top"> <div :class="`recetly-viewed-products-wrapper ${addClassWrapper}`">
<div class="no-padding"> <div
<div class="fs16 text-nowrap">{{ $product->name }}</div> :key="Math.random()"
class="row small-card-container"
v-for="(product, index) in recentlyViewed">
<div class="fs18 card-current-price fw6"> <div class="col-4 product-image-container mr15">
@include ('shop::products.price', [ <a :href="`${baseURL}/${product.urlKey}`" class="unset">
'product' => $product, <div class="product-image" :style="`background-image: url(${product.image})`"></div>
'showDiscount' => false, </a>
])
</div> </div>
<star-ratings ratings="{{ intval($productAverageRating) }}"></star-ratings> <div class="col-8 no-padding card-body align-vertical-top">
</div> <a :href="`${baseURL}/${product.urlKey}`" class="unset no-padding">
<span class="fs16 text-nowrap">@{{ product.name }}</span>
<div
v-html="product.priceHTML"
class="fs18 card-current-price fw6">
</div>
<star-ratings
push-class="display-inbl"
:ratings="product.rating">
</star-ratings>
<span class="fs16 text-nowrap align-text-bottom">@{{ product.totalReviews }} Reviews</span>
</a>
</div>
</div>
</div> </div>
</div> </div>
@endforeach </script>
</div>
<script type="text/javascript">
(() => {
Vue.component('recently-viewed', {
template: '#recently-viewed-template',
props: ['addClass', 'addClassWrapper'],
data: function () {
return {
baseURL: '{{ url()->to('/') }}',
recentlyViewed: (() => {
let slugs = JSON.parse(window.localStorage.recentlyViewed);
let updatedSlugs = {};
slugs.forEach(slug => {
updatedSlugs[slug] = {};
});
return updatedSlugs;
})(),
}
},
created: function () {
for (slug in this.recentlyViewed) {
if (slug) {
this.$http(`${this.baseURL}/product-details/${slug}`)
.then(response => {
if (response.data.status) {
this.$set(this.recentlyViewed, response.data.details.urlKey, response.data.details);
}
})
.catch(error => {})
}
}
},
})
})()
</script>
@endpush

View File

@ -39,7 +39,7 @@
</div> </div>
<div class="comment"> <div class="comment">
<label>Rating*</label> <label>Description*</label>
<textarea rows="4" placeholder="Your Comment" name="comment"></textarea> <textarea rows="4" placeholder="Your Comment" name="comment"></textarea>
</div> </div>

View File

@ -19,116 +19,142 @@
<meta name="keywords" content="{{ $product->meta_keywords }}"/> <meta name="keywords" content="{{ $product->meta_keywords }}"/>
@stop @stop
@section('content-wrapper') @push('css')
<style type="text/css">
.recently-viewed {
margin-top: 20px;
}
.store-meta-images > .recently-viewed:first-child {
margin-top: 0px;
}
.categories-sidebar-container {
margin-bottom: 0px;
}
</style>
@endpush
@section('full-content-wrapper')
{!! view_render_event('bagisto.shop.products.view.before', ['product' => $product]) !!} {!! view_render_event('bagisto.shop.products.view.before', ['product' => $product]) !!}
@if ($showRecentlyViewed) <div class="row no-margin">
<section class="col-7 offset-1 product-detail"> @if ($showRecentlyViewed)
@else <section class="col-9 product-detail">
<section class="col-10 offset-1 product-detail"> @else
@endif <section class="col-12 product-detail">
<div class="layouter"> @endif
<product-view> <div class="layouter">
<div class="form-container"> <product-view>
@csrf() <div class="form-container">
@csrf()
<input type="hidden" name="product_id" value="{{ $product->product_id }}"> <input type="hidden" name="product_id" value="{{ $product->product_id }}">
{{-- product-gallery --}} {{-- product-gallery --}}
<div class="left col-lg-5"> <div class="left col-lg-5">
@include ('shop::products.view.gallery') @include ('shop::products.view.gallery')
</div>
{{-- right-section --}}
<div class="right col-lg-7 scrollable">
{{-- product-info-section --}}
<div class="row info">
<h2 class="col-lg-12">{{ $product->name }}</h2>
@if ($total)
<div class="reviews col-lg-12">
<star-ratings
:ratings="{{ $avgStarRating }}"
push-class="mr5"
></star-ratings>
<div class="reviews">
<span>{{ $avgRatings }} Ratings and {{ $total }} Reviews</span>
</div>
</div>
@endif
@include ('shop::products.view.stock', ['product' => $product])
<div class="col-12 price">
@include ('shop::products.price', ['product' => $product])
</div> </div>
@include ('shop::products.add-to-cart', [ {{-- right-section --}}
'product' => $product, <div class="right col-lg-7 scrollable">
'showCartIcon' => false {{-- product-info-section --}}
]) <div class="row info">
<h2 class="col-lg-12">{{ $product->name }}</h2>
@if ($total)
<div class="reviews col-lg-12">
<star-ratings
:ratings="{{ $avgStarRating }}"
push-class="mr5"
></star-ratings>
<div class="reviews">
<span>{{ $avgRatings }} Ratings and {{ $total }} Reviews</span>
</div>
</div>
@endif
@include ('shop::products.view.stock', ['product' => $product])
<div class="col-12 price">
@include ('shop::products.price', ['product' => $product])
</div>
@include ('shop::products.add-to-cart', [
'product' => $product,
'showCartIcon' => false
])
</div>
{!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!}
<div class="description">
<h3 class="col-lg-12">{{ __('velocity::app.products.short-description') }}</h3>
{!! $product->short_description !!}
</div>
{!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!}
{!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!}
@if ($product->getTypeInstance()->showQuantityBox())
<quantity-changer></quantity-changer>
@else
<input type="hidden" name="quantity" value="1">
@endif
{!! view_render_event('bagisto.shop.products.view.quantity.after', ['product' => $product]) !!}
@include ('shop::products.view.configurable-options')
@include ('shop::products.view.downloadable')
@include ('shop::products.view.grouped-products')
@include ('shop::products.view.bundle-options')
@include ('shop::products.view.attributes', [
'active' => true
])
{{-- product long description --}}
@include ('shop::products.view.description')
{{-- reviews count --}}
@include ('shop::products.view.reviews', ['accordian' => true])
</div>
</div> </div>
</product-view>
{!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!}
<div class="description">
<h3 class="col-lg-12">{{ __('velocity::app.products.short-description') }}</h3>
{!! $product->short_description !!}
</div>
{!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!}
{!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!}
@if ($product->getTypeInstance()->showQuantityBox())
<quantity-changer></quantity-changer>
@else
<input type="hidden" name="quantity" value="1">
@endif
{!! view_render_event('bagisto.shop.products.view.quantity.after', ['product' => $product]) !!}
@include ('shop::products.view.configurable-options')
@include ('shop::products.view.downloadable')
@include ('shop::products.view.grouped-products')
@include ('shop::products.view.bundle-options')
@include ('shop::products.view.attributes', [
'active' => true
])
{{-- product long description --}}
@include ('shop::products.view.description')
{{-- reviews count --}}
@include ('shop::products.view.reviews', ['accordian' => true])
</div>
</div> </div>
</product-view>
@include ('shop::products.view.related-products')
@include ('shop::products.view.up-sells')
</section>
<div class="store-meta-images col-3">
@foreach (json_decode($velocityMetaData['product_view_images'], true) as $image)
@if ($image && $image !== '')
<img src="{{ url()->to('/') }}/storage/{{ $image }}" />
@endif
@endforeach
@if ($showRecentlyViewed)
@include ('shop::products.list.recently-viewed')
@endif
</div> </div>
@include ('shop::products.view.related-products') </div>
@include ('shop::products.view.up-sells')
</section>
@if ($showRecentlyViewed)
@include ('shop::products.list.recently-viewed')
@endif
{!! view_render_event('bagisto.shop.products.view.after', ['product' => $product]) !!} {!! view_render_event('bagisto.shop.products.view.after', ['product' => $product]) !!}
@endsection @endsection
@push('scripts') @push('scripts')
<script type="text/x-template" id="product-view-template"> <script type="text/x-template" id="product-view-template">
<form method="POST" id="product-form" action="{{ route('cart.add', $product->product_id) }}" @click="onSubmit($event)"> <form method="POST" id="product-form" action="{{ route('cart.add', $product->product_id) }}" @click="onSubmit($event)">
@ -155,17 +181,33 @@
<script type="text/javascript"> <script type="text/javascript">
Vue.component('product-view', { Vue.component('product-view', {
template: '#product-view-template',
inject: ['$validator'], inject: ['$validator'],
template: '#product-view-template',
data: function() { data: function() {
return { return {
is_buy_now: 0, is_buy_now: 0,
} }
}, },
mounted: function () {
let currentProductId = '{{ $product->url_key }}';
let existingViewed = window.localStorage.getItem('recentlyViewed');
if (! existingViewed) {
existingViewed = [];
} else {
existingViewed = JSON.parse(existingViewed);
}
if (existingViewed.indexOf(currentProductId) == -1) {
existingViewed.push(currentProductId);
if (existingViewed.length >= 4)
existingViewed = existingViewed.slice(Math.max(existingViewed.length - 4, 1));
window.localStorage.setItem('recentlyViewed', JSON.stringify(existingViewed));
}
},
methods: { methods: {
onSubmit: function(e) { onSubmit: function(e) {
if (e.target.getAttribute('type') != 'submit') if (e.target.getAttribute('type') != 'submit')
@ -189,9 +231,8 @@
}); });
Vue.component('quantity-changer', { Vue.component('quantity-changer', {
template: '#quantity-changer-template',
inject: ['$validator'], inject: ['$validator'],
template: '#quantity-changer-template',
props: { props: {
controlName: { controlName: {
@ -257,8 +298,7 @@
var productHeroImage = document.getElementsByClassName('product-hero-image')[0]; var productHeroImage = document.getElementsByClassName('product-hero-image')[0];
if (thumbList && productHeroImage) { if (thumbList && productHeroImage) {
for (let i=0; i < thumbFrame.length ; i++) {
for(let i=0; i < thumbFrame.length ; i++) {
thumbFrame[i].style.height = (productHeroImage.offsetHeight/4) + "px"; thumbFrame[i].style.height = (productHeroImage.offsetHeight/4) + "px";
thumbFrame[i].style.width = (productHeroImage.offsetHeight/4)+ "px"; thumbFrame[i].style.width = (productHeroImage.offsetHeight/4)+ "px";
} }

View File

@ -182,11 +182,13 @@
</div> </div>
<div class="col-lg-12 review-date-time"> <div class="col-lg-12 review-date-time">
<span>{{ __('velocity::app.products.review-by') }} -</span> @if ("{{ $review->name }}")
<span>{{ __('velocity::app.products.review-by') }} -</span>
<label> <label>
{{ $review->name }}, {{ $review->name }},
</label> </label>
@endif
<span>{{ core()->formatDate($review->created_at, 'F d, Y') }} <span>{{ core()->formatDate($review->created_at, 'F d, Y') }}
</span> </span>

View File

@ -1,23 +1,29 @@
@inject ('wishListHelper', 'Webkul\Customer\Helpers\Wishlist') @inject ('wishListHelper', 'Webkul\Customer\Helpers\Wishlist')
@auth('customer') {!! view_render_event('bagisto.shop.products.wishlist.before') !!}
{!! view_render_event('bagisto.shop.products.wishlist.before') !!} @auth('customer')
@php
$isWished = $wishListHelper->getWishlistProduct($product);
@endphp
@php <a
$isWished = $wishListHelper->getWishlistProduct($product); class="unset wishlist-icon col-4 offset-4 text-right"
@endphp @if (! $isWished)
href="{{ route('customer.wishlist.add', $product->product_id) }}"
@elseif (isset($itemId) && $itemId)
href="{{ route('customer.wishlist.remove', $itemId) }}"
@endif
>
<a <i class="fs24 {{ $isWished ? 'rango-heart-fill' : 'rango-heart'}}"></i>
class="unset wishlist-icon col-4 offset-4 text-right" </a>
@if (! $isWished) @endauth
href="{{ route('customer.wishlist.add', $product->product_id) }}"
@elseif (isset($itemId) && $itemId)
href="{{ route('customer.wishlist.remove', $itemId) }}"
@endif
>
<i class="fs24 {{ $isWished ? 'rango-heart-fill' : 'rango-heart'}}"></i> @guest('customer')
</a> <a
href="{{ route('customer.session.index') }}"
{!! view_render_event('bagisto.shop.products.wishlist.after') !!} class="unset wishlist-icon col-4 offset-4 text-right">
@endauth <i class="fs24 rango-heart"></i>
</a>
@endauth
{!! view_render_event('bagisto.shop.products.wishlist.after') !!}