view order page updates

This commit is contained in:
shubhammehrotra.symfony@webkul.com 2020-01-27 19:49:02 +05:30
parent 4eb858aed7
commit fb5ee7c6d7
24 changed files with 1370 additions and 199 deletions

View File

@ -19,6 +19,7 @@
"vue-carousel": "^0.18.0"
},
"dependencies": {
"accounting": "^0.4.1",
"bootstrap-sass": "^3.4.1",
"font-awesome": "^4.7.0",
"material-icons": "^0.3.1",

View File

@ -232,7 +232,7 @@
content: "\E92E";
}
.rango-eye-visible:before, .table .action .eye-icon:before {
.rango-eye-visible:before, .account-content .account-layout .account-table-content #datagrid-filters ~ table.table tbody tr .action .eye-icon:before {
content: "\E92F";
}
@ -886,7 +886,7 @@
background-color: #111111;
}
.customer-rating .theme-btn.light, .customer-rating .cart-details .light.continue-shopping-btn, .cart-details .customer-rating .light.continue-shopping-btn, .customer-rating .account-content .account-layout .bottom-toolbar .pagination .page-item, .account-content .account-layout .bottom-toolbar .pagination .customer-rating .page-item {
.customer-rating .theme-btn.light, .customer-rating .cart-details .light.continue-shopping-btn, .cart-details .customer-rating .light.continue-shopping-btn, .customer-rating .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.light.btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .customer-rating button.light.btn, .customer-rating .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button.light, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity .customer-rating button.light, .customer-rating .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.light, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .customer-rating button.light, .customer-rating .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.page-item, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination .customer-rating button.page-item, .customer-rating .quantity .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item, .quantity .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .customer-rating button.page-item, .customer-rating .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination .quantity button.page-item, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination .quantity .customer-rating button.page-item, .customer-rating .account-content .account-layout .bottom-toolbar .pagination .quantity .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item, .account-content .account-layout .bottom-toolbar .pagination .quantity .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .customer-rating button.page-item, .customer-rating .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.btn.page-item, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination .customer-rating button.btn.page-item, .customer-rating .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn.page-item, .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .customer-rating button.btn.page-item, .customer-rating .account-content .account-layout .bottom-toolbar .pagination .page-item, .account-content .account-layout .bottom-toolbar .pagination .customer-rating .page-item {
margin-top: 10px;
}
@ -1026,12 +1026,12 @@
}
.product-card-new .product-image-container {
height: 225px;
position: relative;
}
.product-card-new .product-image-container img {
width: 100%;
height: 100%;
}
.product-card-new .card-current-price {
@ -1123,7 +1123,7 @@
height: 35px;
border-radius: 0px;
vertical-align: top;
padding: 0 10px !important;
padding: 0 6px !important;
font-size: 24px !important;
font-weight: 600 !important;
color: #000000 !important;
@ -1136,7 +1136,7 @@
}
.quantity input {
max-width: 28px;
max-width: 40px;
cursor: default;
font-size: 16px !important;
border-left: 0px !important;
@ -1488,7 +1488,6 @@
.account-content .sidebar .customer-sidebar .navigation li {
width: 100%;
padding: 10px 15px;
margin-bottom: 10px;
}
.account-content .sidebar .customer-sidebar .navigation li:hover, .account-content .sidebar .customer-sidebar .navigation li.active {
@ -1598,10 +1597,10 @@
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters {
right: 0;
padding: 0;
width: 220px;
border: unset;
position: relative;
padding: 10px 15px;
border: 1px solid #CCCCCC;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .grid-dropdown-header {
@ -1612,13 +1611,73 @@
list-style: none;
}
.account-content .account-layout .account-items-list.wishlist-container .col-3 {
padding-left: 0;
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-toggle {
margin-right: 13px;
vertical-align: top;
display: inline-block;
}
.account-content .account-layout .account-items-list.wishlist-container .col-3 .product-card-new {
margin: 0;
width: 22rem;
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-toggle:after {
border: unset;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container {
display: inline-block !important;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button {
display: block;
font-size: 14px;
margin-top: 10px;
font-weight: 600;
padding: 5px 10px;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container li:not(:last-child) {
margin-bottom: 10px;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .control-group {
margin-bottom: 0;
}
.account-content .account-layout .account-table-content #datagrid-filters ~ table.table tbody tr .badge {
padding: 10px;
font-size: 12px;
}
.account-content .account-layout .account-table-content #datagrid-filters ~ table.table tbody tr .action .eye-icon {
font-size: 24px;
padding-left: 10px;
}
.account-content .account-layout .account-table-content #datagrid-filters ~ table.table tbody tr .action .eye-icon:hover {
color: #4D7EA8;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters:nth-child(2) {
top: 25px;
width: 100%;
display: block;
padding-left: 30px;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters:nth-child(2) .dropdown-container {
width: 100%;
}
.account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters:nth-child(2) .dropdown-container li {
width: 150px;
display: inline-block;
}
.account-content .account-layout .account-items-list.wishlist-container {
width: 100%;
margin: 0 auto;
}
.account-content .account-layout .account-items-list.wishlist-container .product-card-new {
width: 19rem;
}
.account-content .account-layout .max-sm-img-dimention {
@ -1672,6 +1731,69 @@
content: "\E907";
}
.account-content .account-layout .sale-container {
font-size: 16px;
}
.account-content .account-layout .sale-container .tabs ul {
font-weight: 600;
font-size: 20px;
list-style-type: none;
}
.account-content .account-layout .sale-container .tabs ul li {
padding: 10px 15px;
display: inline-block;
border-bottom: 2px solid transparent;
}
.account-content .account-layout .sale-container .tabs ul li.active {
border-bottom: 2px solid #26A37C;
}
.account-content .account-layout .sale-container .tabs-content .sale-section {
padding: 20px 0 10px 0;
border-bottom: 1px solid #CCCCCC;
}
.account-content .account-layout .sale-container .tabs-content .sale-section .section-title {
font-size: 18px;
font-weight: 600;
padding-bottom: 10px;
color: #9e9e9e;
}
.account-content .account-layout .sale-container .tabs-content .sale-section .section-content label + span {
font-weight: 600;
color: #9e9e9e;
}
.account-content .account-layout .sale-container .tabs-content .sale-section .section-content .totals {
width: 100%;
display: inline-block;
}
.account-content .account-layout .sale-container .tabs-content .sale-section .section-content .totals .sale-summary {
float: right;
}
.account-content .account-layout .sale-container .order-box-container {
padding: 10px 0;
}
.account-content .account-layout .sale-container .order-box-container .box {
width: 24%;
vertical-align: top;
display: inline-block;
}
.account-content .account-layout .sale-container .order-box-container .box .box-title {
font-size: 18px;
padding: 10px 0;
font-weight: 600;
color: #9e9e9e;
}
.account-content .select-icon {
left: 95%;
top: -28px;
@ -1720,7 +1842,7 @@
padding-top: 25px;
}
.checkout-process .order-summary-container .theme-btn, .checkout-process .order-summary-container .cart-details .continue-shopping-btn, .cart-details .checkout-process .order-summary-container .continue-shopping-btn, .checkout-process .order-summary-container .account-content .account-layout .bottom-toolbar .pagination .page-item, .account-content .account-layout .bottom-toolbar .pagination .checkout-process .order-summary-container .page-item {
.checkout-process .order-summary-container .theme-btn, .checkout-process .order-summary-container .cart-details .continue-shopping-btn, .cart-details .checkout-process .order-summary-container .continue-shopping-btn, .checkout-process .order-summary-container .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .checkout-process .order-summary-container button.btn, .checkout-process .order-summary-container .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity .checkout-process .order-summary-container button, .checkout-process .order-summary-container .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .checkout-process .order-summary-container button, .checkout-process .order-summary-container .account-content .account-layout .bottom-toolbar .pagination .page-item, .account-content .account-layout .bottom-toolbar .pagination .checkout-process .order-summary-container .page-item {
display: none;
}
@ -1908,15 +2030,6 @@
font-size: 16px;
}
.table .badge {
padding: 10px;
}
.table .action .eye-icon {
font-size: 24px;
padding-left: 10px;
}
.search-result-status {
width: 100%;
display: -webkit-box;
@ -3664,7 +3777,7 @@ body::after {
background-position: right;
}
.theme-btn, .cart-details .continue-shopping-btn, .account-content .account-layout .bottom-toolbar .pagination .page-item {
.theme-btn, .cart-details .continue-shopping-btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button, .account-content .account-layout .bottom-toolbar .pagination .page-item {
border: none;
cursor: pointer;
font-weight: 600;
@ -3674,7 +3787,7 @@ body::after {
background-color: #26A37C !important;
}
.theme-btn.light, .cart-details .light.continue-shopping-btn, .account-content .account-layout .bottom-toolbar .pagination .page-item {
.theme-btn.light, .cart-details .light.continue-shopping-btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.light.btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button.light, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.light, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.page-item, .quantity .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination .quantity button.page-item, .account-content .account-layout .bottom-toolbar .pagination .quantity .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.btn.page-item, .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn.page-item, .account-content .account-layout .bottom-toolbar .pagination .page-item {
color: #26A37C !important;
background-color: #FFFFFF !important;
-webkit-box-shadow: 0 1px 0 0 #CFCFCF;
@ -3682,17 +3795,17 @@ body::after {
border: 1px solid rgba(0, 0, 0, 0.12);
}
.theme-btn.light:hover, .cart-details .light.continue-shopping-btn:hover, .account-content .account-layout .bottom-toolbar .pagination .page-item:hover {
.theme-btn.light:hover, .cart-details .light.continue-shopping-btn:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.light.btn:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button.light:hover, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.light:hover, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.page-item:hover, .quantity .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination .quantity button.page-item:hover, .account-content .account-layout .bottom-toolbar .pagination .quantity .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.btn.page-item:hover, .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn.page-item:hover, .account-content .account-layout .bottom-toolbar .pagination .page-item:hover {
background-color: #f5f5f5 !important;
}
.theme-btn:hover, .cart-details .continue-shopping-btn:hover, .account-content .account-layout .bottom-toolbar .pagination .page-item:hover,
.theme-btn:hover, .cart-details .continue-shopping-btn:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button:hover, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button:hover, .account-content .account-layout .bottom-toolbar .pagination .page-item:hover,
.btn-add-to-cart:hover {
border-color: #247959 !important;
background-color: #247959 !important;
}
.theme-btn:hover.light, .cart-details .continue-shopping-btn:hover.light, .account-content .account-layout .bottom-toolbar .pagination .page-item:hover,
.theme-btn:hover.light, .cart-details .continue-shopping-btn:hover.light, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn:hover.light, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button:hover.light, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button:hover.light, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.page-item:hover, .quantity .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination .quantity button.page-item:hover, .account-content .account-layout .bottom-toolbar .pagination .quantity .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.page-item:hover, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .bottom-toolbar .pagination button.btn.page-item:hover, .account-content .account-layout .bottom-toolbar .pagination .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn.page-item:hover, .account-content .account-layout .bottom-toolbar .pagination .page-item:hover,
.btn-add-to-cart:hover.light,
.account-content .account-layout .bottom-toolbar .pagination .btn-add-to-cart.page-item:hover {
border: 1px solid rgba(0, 0, 0, 0.12) !important;
@ -4038,7 +4151,7 @@ ul.circle-list li.circle:not(:last-child) {
color: #4D7EA8;
}
a.unset, .account-content .account-layout .bottom-toolbar .pagination a.page-item, .table .action a {
a.unset, .account-content .account-layout .account-table-content #datagrid-filters ~ table.table tbody tr .action a, .account-content .account-layout .bottom-toolbar .pagination a.page-item {
color: unset !important;
text-decoration: none !important;
}
@ -4167,9 +4280,9 @@ button[disabled] {
vertical-align: middle;
}
.rango-default, .account-content .sidebar .customer-sidebar .navigation li i.icon, .account-content .account-layout .bottom-toolbar .pagination .page-item.next .angle-right-icon,
.rango-default, .account-content .sidebar .customer-sidebar .navigation li i.icon, .account-content .account-layout .account-table-content #datagrid-filters ~ table.table tbody tr .action .eye-icon, .account-content .account-layout .bottom-toolbar .pagination .page-item.next .angle-right-icon,
.account-content .account-layout .bottom-toolbar .pagination .page-item.next .angle-left-icon, .account-content .account-layout .bottom-toolbar .pagination .page-item.previous .angle-right-icon,
.account-content .account-layout .bottom-toolbar .pagination .page-item.previous .angle-left-icon, .table .action .eye-icon, header #search-form .btn-group .selectdiv, header #search-form .quantity .selectdiv {
.account-content .account-layout .bottom-toolbar .pagination .page-item.previous .angle-left-icon, header #search-form .btn-group .selectdiv, header #search-form .quantity .selectdiv {
speak: none;
line-height: 1;
font-style: normal;
@ -13241,7 +13354,7 @@ body {
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 {
#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 .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button.btn, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container #top #account + .account-modal button.btn, #top #account + .account-modal .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity button, .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container .quantity #top #account + .account-modal button, #top #account + .account-modal .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container button, .quantity .account-content .account-layout .account-table-content #datagrid-filters .dropdown-filters .dropdown-container #top #account + .account-modal button, #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;
}

View File

@ -1081,12 +1081,15 @@ module.exports = __webpack_require__(76);
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(4);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_carousel__ = __webpack_require__(16);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_carousel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_carousel__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_toast_notification__ = __webpack_require__(17);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_toast_notification___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_toast_notification__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_toast_notification_dist_index_css__ = __webpack_require__(18);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_toast_notification_dist_index_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_vue_toast_notification_dist_index_css__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_accounting__ = __webpack_require__(79);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_accounting___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_accounting__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_carousel__ = __webpack_require__(16);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_carousel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_carousel__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_toast_notification__ = __webpack_require__(17);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_toast_notification___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_vue_toast_notification__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vue_toast_notification_dist_index_css__ = __webpack_require__(18);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vue_toast_notification_dist_index_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_vue_toast_notification_dist_index_css__);
@ -1097,14 +1100,18 @@ window.VeeValidate = __webpack_require__(41);
window.jQuery = window.$ = __webpack_require__(42);
window.BootstrapSass = __webpack_require__(43);
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_2_vue_toast_notification___default.a);
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_3_vue_toast_notification___default.a);
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(VeeValidate);
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_1_vue_carousel___default.a);
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_2_vue_carousel___default.a);
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(BootstrapSass);
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.prototype.$http = axios;
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.filter('currency', function (value, argument) {
return __WEBPACK_IMPORTED_MODULE_1_accounting___default.a.formatMoney(value, argument);
});
window.Vue = __WEBPACK_IMPORTED_MODULE_0_vue___default.a;
window.Carousel = __WEBPACK_IMPORTED_MODULE_1_vue_carousel___default.a;
window.Carousel = __WEBPACK_IMPORTED_MODULE_2_vue_carousel___default.a;
// UI components
__WEBPACK_IMPORTED_MODULE_0_vue___default.a.component("vue-slider", __webpack_require__(44));
@ -1229,7 +1236,7 @@ $(document).ready(function () {
new __WEBPACK_IMPORTED_MODULE_0_vue___default.a({
el: "#app",
VueToast: __WEBPACK_IMPORTED_MODULE_2_vue_toast_notification___default.a,
VueToast: __WEBPACK_IMPORTED_MODULE_3_vue_toast_notification___default.a,
data: function data() {
return {
@ -1323,11 +1330,13 @@ $(document).ready(function () {
},
addFlashMessages: function addFlashMessages() {
var flashes = this.$refs.flashes;
// const flashes = this.$refs.flashes;
flashMessages.forEach(function (flash) {
flashes.addFlash(flash);
}, this);
// flashMessages.forEach(function (flash) {
// flashes.addFlash(flash);
// }, this);
if (window.flashMessages.alertMessage) window.alert(window.flashMessages.alertMessage);
},
showModal: function showModal(id) {
@ -35833,7 +35842,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: ['active'],
props: ['active', 'addClass'],
data: function data() {
return {
isActive: this.active
@ -35852,7 +35861,7 @@ var render = function() {
return _c(
"i",
{
class: "material-icons",
class: "material-icons " + _vm.addClass,
on: {
mouseover: function($event) {
_vm.isActive ? (_vm.isActive = !_vm.isActive) : ""
@ -37034,5 +37043,426 @@ if (false) {
// removed by extract-text-webpack-plugin
/***/ }),
/* 77 */,
/* 78 */,
/* 79 */
/***/ (function(module, exports, __webpack_require__) {
/*!
* accounting.js v0.4.1
* Copyright 2014 Open Exchange Rates
*
* Freely distributable under the MIT license.
* Portions of accounting.js are inspired or borrowed from underscore.js
*
* Full details and documentation:
* http://openexchangerates.github.io/accounting.js/
*/
(function(root, undefined) {
/* --- Setup --- */
// Create the local library object, to be exported or referenced globally later
var lib = {};
// Current version
lib.version = '0.4.1';
/* --- Exposed settings --- */
// The library's settings configuration object. Contains default parameters for
// currency and number formatting
lib.settings = {
currency: {
symbol : "$", // default currency symbol is '$'
format : "%s%v", // controls output: %s = symbol, %v = value (can be object, see docs)
decimal : ".", // decimal point separator
thousand : ",", // thousands separator
precision : 2, // decimal places
grouping : 3 // digit grouping (not implemented yet)
},
number: {
precision : 0, // default precision on numbers is 0
grouping : 3, // digit grouping (not implemented yet)
thousand : ",",
decimal : "."
}
};
/* --- Internal Helper Methods --- */
// Store reference to possibly-available ECMAScript 5 methods for later
var nativeMap = Array.prototype.map,
nativeIsArray = Array.isArray,
toString = Object.prototype.toString;
/**
* Tests whether supplied parameter is a string
* from underscore.js
*/
function isString(obj) {
return !!(obj === '' || (obj && obj.charCodeAt && obj.substr));
}
/**
* Tests whether supplied parameter is a string
* from underscore.js, delegates to ECMA5's native Array.isArray
*/
function isArray(obj) {
return nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';
}
/**
* Tests whether supplied parameter is a true object
*/
function isObject(obj) {
return obj && toString.call(obj) === '[object Object]';
}
/**
* Extends an object with a defaults object, similar to underscore's _.defaults
*
* Used for abstracting parameter handling from API methods
*/
function defaults(object, defs) {
var key;
object = object || {};
defs = defs || {};
// Iterate over object non-prototype properties:
for (key in defs) {
if (defs.hasOwnProperty(key)) {
// Replace values with defaults only if undefined (allow empty/zero values):
if (object[key] == null) object[key] = defs[key];
}
}
return object;
}
/**
* Implementation of `Array.map()` for iteration loops
*
* Returns a new Array as a result of calling `iterator` on each array value.
* Defers to native Array.map if available
*/
function map(obj, iterator, context) {
var results = [], i, j;
if (!obj) return results;
// Use native .map method if it exists:
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
// Fallback for native .map:
for (i = 0, j = obj.length; i < j; i++ ) {
results[i] = iterator.call(context, obj[i], i, obj);
}
return results;
}
/**
* Check and normalise the value of precision (must be positive integer)
*/
function checkPrecision(val, base) {
val = Math.round(Math.abs(val));
return isNaN(val)? base : val;
}
/**
* Parses a format string or object and returns format obj for use in rendering
*
* `format` is either a string with the default (positive) format, or object
* containing `pos` (required), `neg` and `zero` values (or a function returning
* either a string or object)
*
* Either string or format.pos must contain "%v" (value) to be valid
*/
function checkCurrencyFormat(format) {
var defaults = lib.settings.currency.format;
// Allow function as format parameter (should return string or object):
if ( typeof format === "function" ) format = format();
// Format can be a string, in which case `value` ("%v") must be present:
if ( isString( format ) && format.match("%v") ) {
// Create and return positive, negative and zero formats:
return {
pos : format,
neg : format.replace("-", "").replace("%v", "-%v"),
zero : format
};
// If no format, or object is missing valid positive value, use defaults:
} else if ( !format || !format.pos || !format.pos.match("%v") ) {
// If defaults is a string, casts it to an object for faster checking next time:
return ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {
pos : defaults,
neg : defaults.replace("%v", "-%v"),
zero : defaults
};
}
// Otherwise, assume format was fine:
return format;
}
/* --- API Methods --- */
/**
* Takes a string/array of strings, removes all formatting/cruft and returns the raw float value
* Alias: `accounting.parse(string)`
*
* Decimal must be included in the regular expression to match floats (defaults to
* accounting.settings.number.decimal), so if the number uses a non-standard decimal
* separator, provide it as the second argument.
*
* Also matches bracketed negatives (eg. "$ (1.99)" => -1.99)
*
* Doesn't throw any errors (`NaN`s become 0) but this may change in future
*/
var unformat = lib.unformat = lib.parse = function(value, decimal) {
// Recursively unformat arrays:
if (isArray(value)) {
return map(value, function(val) {
return unformat(val, decimal);
});
}
// Fails silently (need decent errors):
value = value || 0;
// Return the value as-is if it's already a number:
if (typeof value === "number") return value;
// Default decimal point comes from settings, but could be set to eg. "," in opts:
decimal = decimal || lib.settings.number.decimal;
// Build regex to strip out everything except digits, decimal point and minus sign:
var regex = new RegExp("[^0-9-" + decimal + "]", ["g"]),
unformatted = parseFloat(
("" + value)
.replace(/\((.*)\)/, "-$1") // replace bracketed values with negatives
.replace(regex, '') // strip out any cruft
.replace(decimal, '.') // make sure decimal point is standard
);
// This will fail silently which may cause trouble, let's wait and see:
return !isNaN(unformatted) ? unformatted : 0;
};
/**
* Implementation of toFixed() that treats floats more like decimals
*
* Fixes binary rounding issues (eg. (0.615).toFixed(2) === "0.61") that present
* problems for accounting- and finance-related software.
*/
var toFixed = lib.toFixed = function(value, precision) {
precision = checkPrecision(precision, lib.settings.number.precision);
var power = Math.pow(10, precision);
// Multiply up by precision, round accurately, then divide and use native toFixed():
return (Math.round(lib.unformat(value) * power) / power).toFixed(precision);
};
/**
* Format a number, with comma-separated thousands and custom precision/decimal places
* Alias: `accounting.format()`
*
* Localise by overriding the precision and thousand / decimal separators
* 2nd parameter `precision` can be an object matching `settings.number`
*/
var formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {
// Resursively format arrays:
if (isArray(number)) {
return map(number, function(val) {
return formatNumber(val, precision, thousand, decimal);
});
}
// Clean up number:
number = unformat(number);
// Build options object from second param (if object) or all params, extending defaults:
var opts = defaults(
(isObject(precision) ? precision : {
precision : precision,
thousand : thousand,
decimal : decimal
}),
lib.settings.number
),
// Clean up precision
usePrecision = checkPrecision(opts.precision),
// Do some calc:
negative = number < 0 ? "-" : "",
base = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + "",
mod = base.length > 3 ? base.length % 3 : 0;
// Format the number:
return negative + (mod ? base.substr(0, mod) + opts.thousand : "") + base.substr(mod).replace(/(\d{3})(?=\d)/g, "$1" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : "");
};
/**
* Format a number into currency
*
* Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)
* defaults: (0, "$", 2, ",", ".", "%s%v")
*
* Localise by overriding the symbol, precision, thousand / decimal separators and format
* Second param can be an object matching `settings.currency` which is the easiest way.
*
* To do: tidy up the parameters
*/
var formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {
// Resursively format arrays:
if (isArray(number)) {
return map(number, function(val){
return formatMoney(val, symbol, precision, thousand, decimal, format);
});
}
// Clean up number:
number = unformat(number);
// Build options object from second param (if object) or all params, extending defaults:
var opts = defaults(
(isObject(symbol) ? symbol : {
symbol : symbol,
precision : precision,
thousand : thousand,
decimal : decimal,
format : format
}),
lib.settings.currency
),
// Check format (returns object with pos, neg and zero):
formats = checkCurrencyFormat(opts.format),
// Choose which format to use for this value:
useFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;
// Return with currency symbol added:
return useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));
};
/**
* Format a list of numbers into an accounting column, padding with whitespace
* to line up currency symbols, thousand separators and decimals places
*
* List should be an array of numbers
* Second parameter can be an object containing keys that match the params
*
* Returns array of accouting-formatted number strings of same length
*
* NB: `white-space:pre` CSS rule is required on the list container to prevent
* browsers from collapsing the whitespace in the output strings.
*/
lib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {
if (!list) return [];
// Build options object from second param (if object) or all params, extending defaults:
var opts = defaults(
(isObject(symbol) ? symbol : {
symbol : symbol,
precision : precision,
thousand : thousand,
decimal : decimal,
format : format
}),
lib.settings.currency
),
// Check format (returns object with pos, neg and zero), only need pos for now:
formats = checkCurrencyFormat(opts.format),
// Whether to pad at start of string or after currency symbol:
padAfterSymbol = formats.pos.indexOf("%s") < formats.pos.indexOf("%v") ? true : false,
// Store value for the length of the longest string in the column:
maxLength = 0,
// Format the list according to options, store the length of the longest string:
formatted = map(list, function(val, i) {
if (isArray(val)) {
// Recursively format columns if list is a multi-dimensional array:
return lib.formatColumn(val, opts);
} else {
// Clean up the value
val = unformat(val);
// Choose which format to use for this value (pos, neg or zero):
var useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,
// Format this value, push into formatted list and save the length:
fVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));
if (fVal.length > maxLength) maxLength = fVal.length;
return fVal;
}
});
// Pad each number in the list and send back the column of numbers:
return map(formatted, function(val, i) {
// Only if this is a string (not a nested array, which would have already been padded):
if (isString(val) && val.length < maxLength) {
// Depending on symbol position, pad after symbol or at index 0:
return padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(" "))) : (new Array(maxLength - val.length + 1).join(" ")) + val;
}
return val;
});
};
/* --- Module Definition --- */
// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.
// Otherwise, just add `accounting` to the global object
if (true) {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = lib;
}
exports.accounting = lib;
} else if (typeof define === 'function' && define.amd) {
// Return the library as an AMD module:
define([], function() {
return lib;
});
} else {
// Use accounting.noConflict to restore `accounting` back to its original value.
// Returns a reference to the library's `accounting` object;
// e.g. `var numbers = accounting.noConflict();`
lib.noConflict = (function(oldAccounting) {
return function() {
// Reset the value of the root's `accounting` variable:
root.accounting = oldAccounting;
// Delete the noConflict method:
lib.noConflict = undefined;
// Return reference to the library to re-assign it:
return lib;
};
})(root.accounting);
// Declare `fx` on the root (global/window) object:
root['accounting'] = lib;
}
// Root will be `window` in browser or `global` on the server:
}(this));
/***/ })
/******/ ]);

View File

@ -1,6 +1,6 @@
<template>
<i
:class="`material-icons`"
:class="`material-icons ${addClass}`"
@mouseover="isActive ? isActive = !isActive : ''"
@mouseout="active !== '' && !isActive ? isActive = !isActive : ''">
@ -10,7 +10,7 @@
<script type="text/javascript">
export default {
props: ['active'],
props: ['active', 'addClass'],
data: function () {
return {
isActive: this.active

View File

@ -1,4 +1,5 @@
import Vue from 'vue';
import accounting from 'accounting';
import VueCarousel from 'vue-carousel';
import VueToast from 'vue-toast-notification';
import 'vue-toast-notification/dist/index.css';
@ -14,6 +15,10 @@ Vue.use(VueCarousel);
Vue.use(BootstrapSass);
Vue.prototype.$http = axios;
Vue.filter('currency', function (value, argument) {
return accounting.formatMoney(value, argument);
})
window.Vue = Vue;
window.Carousel = VueCarousel;
@ -230,11 +235,14 @@ $(document).ready(function () {
},
addFlashMessages: function () {
const flashes = this.$refs.flashes;
// const flashes = this.$refs.flashes;
flashMessages.forEach(function (flash) {
flashes.addFlash(flash);
}, this);
// flashMessages.forEach(function (flash) {
// flashes.addFlash(flash);
// }, this);
if (window.flashMessages.alertMessage)
window.alert(window.flashMessages.alertMessage);
},
showModal: function (id) {

View File

@ -220,11 +220,11 @@
margin: 0 5px 10px 10px;
.product-image-container {
height: 225px;
position: relative;
img {
width: 100%;
height: 100%;
}
}
@ -337,7 +337,7 @@
height: 35px;
border-radius: 0px;
vertical-align: top;
padding: 0 10px !important;
padding: 0 6px !important;
font-size: 24px !important;
font-weight: 600 !important;
color: $dark-color !important;
@ -350,7 +350,7 @@
}
input {
max-width: 28px;
max-width: 40px;
cursor: default;
font-size: 16px !important;
border-left: 0px !important;
@ -725,7 +725,6 @@
li {
width: 100%;
padding: 10px 15px;
margin-bottom: 10px;
&:hover,
&.active {
@ -846,10 +845,10 @@
#datagrid-filters {
.dropdown-filters {
right: 0;
padding: 0;
width: 220px;
border: unset;
position: relative;
padding: 10px 15px;
border: 1px solid $border-common;
.grid-dropdown-header {
display: inline-block;
@ -860,19 +859,98 @@
list-style: none;
}
}
.dropdown-toggle {
margin-right: 13px;
vertical-align: top;
display: inline-block;
}
.dropdown-toggle:after {
border: unset;
}
.dropdown-container {
display: inline-block !important;
button {
&.btn {
@extend .theme-btn;
display: block;
font-size: 14px;
margin-top: 10px;
font-weight: 600;
padding: 5px 10px;
}
}
li:not(:last-child) {
margin-bottom: 10px;
}
}
.control-group {
margin-bottom: 0;
}
}
~ table {
&.table {
tbody {
tr {
.badge {
padding: 10px;
font-size: 12px;
}
.action {
a {
@extend .unset;
}
.eye-icon {
@extend .rango-default;
@extend .rango-eye-visible;
font-size: 24px;
padding-left: 10px;
&:hover {
color: $link-color;
}
}
}
}
}
}
}
.dropdown-filters:nth-child(2) {
top: 25px;
width: 100%;
display: block;
padding-left: 30px;
.dropdown-container {
width: 100%;
li {
width: 150px;
display: inline-block;
}
}
}
}
}
.account-items-list {
&.wishlist-container {
.col-3 {
padding-left: 0;
width: 100%;
margin: 0 auto;
.product-card-new {
margin: 0;
width: 22rem;
}
.product-card-new {
width: 19rem;
}
}
}
@ -947,6 +1025,75 @@
}
}
}
.sale-container {
font-size: 16px;
.tabs {
ul {
font-weight: 600;
font-size: 20px;
list-style-type: none;
li {
padding: 10px 15px;
display: inline-block;
border-bottom: 2px solid transparent;
&.active {
border-bottom: 2px solid $theme-color;
}
}
}
}
.tabs-content {
.sale-section {
padding: 20px 0 10px 0;
border-bottom: 1px solid $border-common;
.section-title {
font-size: 18px;
font-weight: 600;
padding-bottom: 10px;
color: $light-grey-clr;
}
.section-content {
label + span {
font-weight: 600;
color: $light-grey-clr;
}
.totals {
width: 100%;
display: inline-block;
.sale-summary {
float: right;
}
}
}
}
}
.order-box-container {
padding: 10px 0;
.box {
width: 24%;
vertical-align: top;
display: inline-block;
.box-title {
font-size: 18px;
padding: 10px 0;
font-weight: 600;
color: $light-grey-clr;
}
}
}
}
}
.select-icon {
@ -1194,26 +1341,6 @@
font-size: 16px;
}
.table {
.badge {
padding: 10px;
}
.action {
a {
@extend .unset;
}
.eye-icon {
@extend .rango-default;
@extend .rango-eye-visible;
font-size: 24px;
padding-left: 10px;
}
}
}
.search-result-status {
width: 100%;
display: flex;

View File

@ -253,6 +253,10 @@ return [
'orders' => 'Orders',
'downloadables' => 'Downloadable Products',
],
'wishlist' => [
'add-wishlist-text' => 'Add product to wishlist',
'remove-wishlist-text' => 'Remove product from wishlist'
]
],
'responsive' => [

View File

@ -50,12 +50,17 @@
</script>
<script type="text/x-template" id="quantity-changer-template">
<div class="quantity control-group" :class="[errors.has(controlName) ? 'has-error' : '']">
<div :class="`quantity control-group ${errors.has(controlName) ? 'has-error' : ''}`">
<label class="required">{{ __('shop::app.products.quantity') }}</label>
<button type="button" class="decrease" @click="decreaseQty()">-</button>
<input :name="controlName" class="control" :value="qty" :v-validate="validations" data-vv-as="&quot;{{ __('shop::app.products.quantity') }}&quot;" readonly>
<input
:value="qty"
class="control"
:name="controlName"
:v-validate="validations"
data-vv-as="&quot;{{ __('shop::app.products.quantity') }}&quot;"
readonly />
<button type="button" class="increase" @click="increaseQty()">+</button>
@ -476,7 +481,7 @@
<li v-for="(content, index) in headerContent" :key="index">
<a
v-text="content.title"
:href="content['page_link']"
:href="`${url}/${content['page_link']}`"
v-if="(content['content_type'] == 'link')"
:target="content['link_target'] ? '_blank' : '_self'">
</a>
@ -553,9 +558,7 @@
Vue.component('quantity-changer', {
template: '#quantity-changer-template',
inject: ['$validator'],
props: {
controlName: {
type: String,

View File

@ -62,6 +62,9 @@
this.$emit('onApplyCoupon');
this.applied_coupon = this.coupon_code;
this.coupon_code = '';
window.flashMessages = [{'type': 'alert-success', 'message': response.data.message}];
this.$root.addFlashMessages();
this.redirectIfCartPage();

View File

@ -81,8 +81,46 @@
@include ('shop::products.price', ['product' => $product])
</div>
<div class="row col-12 cursor-pointer">
<a href="{{ route('shop.checkout.cart.remove', ['id' => $item->id]) }}" class="unset">
<div class="no-padding col-12 cursor-pointer fs16">
@auth('customer')
@if ($item->parent_id != 'null' ||$item->parent_id != null)
<a
class="unset"
href="{{ route('shop.movetowishlist', $item->id) }}"
onclick="removeLink('{{ __('shop::app.checkout.cart.cart-remove-action') }}')">
<wishlist-component
active="false"
add-class="align-vertical-top">
</wishlist-component>
<span class="align-vertical-top">
{{ __('shop::app.layouts.wishlist') }}
</span>
</a>
@else
<a
class="unset"
href="{{ route('shop.movetowishlist', $item->child->id) }}"
onclick="removeLink('{{ __('shop::app.checkout.cart.cart-remove-action') }}')">
<wishlist-component
active="false"
add-class="align-vertical-top">
</wishlist-component>
<span class="align-vertical-top">
{{ __('shop::app.layouts.wishlist') }}
</span>
</a>
@endif
@endauth
<a
class="unset ml30"
href="{{ route('shop.checkout.cart.remove', ['id' => $item->id]) }}"
onclick="removeLink('{{ __('shop::app.checkout.cart.cart-remove-action') }}')">
<span class="rango-delete fs24"></span>
<span class="align-vertical-top">{{ __('shop::app.checkout.cart.remove') }}</span>
</a>
@ -179,12 +217,12 @@
<coupon-component></coupon-component>
</div>
@else
<div class="fs16 row col-12">
<div class="fs16 col-12">
{{ __('shop::app.checkout.cart.empty') }}
</div>
<a
class="fs16 mt15 col-12 row remove-decoration"
class="fs16 mt15 col-12 remove-decoration"
href="{{ route('shop.home.index') }}">
<button type="button" class="theme-btn remove-decoration">
@ -209,6 +247,11 @@
}
}
})
function removeLink(message) {
if (!confirm(message))
event.preventDefault();
}
})()
</script>
@endpush

View File

@ -29,7 +29,7 @@
</a>
<a
href="{{ route('shop.productOrCategory.index', $item->url_key) }}"
href="{{ route('shop.productOrCategory.index', $item->product->url_key) }}"
class="unset">
<div class="product-image"

View File

@ -199,6 +199,8 @@
this.$validator.validateAll(scope)
.then(result => {
if (result) {
document.body.style.cursor = 'wait';
if (scope == 'address-form') {
this.saveAddress();
} else if (scope == 'shipping-form') {
@ -330,6 +332,8 @@
this.completed_step = this.step_numbers[response.data.jump_to_section] + 1;
this.current_step = this.step_numbers[response.data.jump_to_section];
document.body.style.cursor = 'auto';
this.getOrderSummary();
})
.catch(error => {

View File

@ -1,7 +1,7 @@
@extends('shop::customers.account.index')
@section('page_title')
{{ __('shop::app.customer.account.review.index.page-title') }}
{{ __('shop::app.customer.account.address.create.page-title') }}
@endsection
@section('page-detail-wrapper')

View File

@ -1,7 +1,7 @@
@extends('shop::customers.account.index')
@section('page_title')
{{ __('shop::app.customer.account.review.index.page-title') }}
{{ __('shop::app.customer.account.address.edit.page-title') }}
@endsection
@section('page-detail-wrapper')

View File

@ -1,7 +1,7 @@
@extends('shop::customers.account.index')
@section('page_title')
{{ __('shop::app.customer.account.review.index.page-title') }}
{{ __('shop::app.customer.account.address.index.page-title') }}
@endsection
@section('page-detail-wrapper')

View File

@ -1,7 +1,7 @@
@extends('shop::customers.account.index')
@section('page_title')
{{ __('shop::app.customer.account.review.index.page-title') }}
{{ __('shop::app.customer.account.downloadable_products.title') }}
@endsection
@section('page-detail-wrapper')

View File

@ -1,7 +1,7 @@
@extends('shop::customers.account.index')
@section('page_title')
{{ __('shop::app.customer.account.review.index.page-title') }}
{{ __('shop::app.customer.account.order.index.page-title') }}
@endsection
@section('page-detail-wrapper')

View File

@ -0,0 +1,518 @@
@extends('shop::customers.account.index')
@section('page_title')
{{ __('shop::app.customer.account.order.view.page-tile', ['order_id' => $order->increment_id]) }}
@endsection
@push('css')
<style type="text/css">
.account-content .account-layout .account-head {
margin-bottom: 0px;
}
</style>
@endpush
@section('page-detail-wrapper')
<div class="account-content">
<div class="account-layout">
<div class="account-head">
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span>
<span class="account-heading">
{{ __('shop::app.customer.account.order.view.page-tile', ['order_id' => $order->increment_id]) }}
</span>
<span></span>
</div>
{!! view_render_event('bagisto.shop.customers.account.orders.view.before', ['order' => $order]) !!}
<div class="sale-container">
<tabs>
<tab name="{{ __('shop::app.customer.account.order.view.info') }}" :selected="true">
<div class="sale-section">
<div class="section-content">
<div class="row col-12">
<label class="mr20">
{{ __('shop::app.customer.account.order.view.placed-on') }}
</label>
<span class="value">
{{ core()->formatDate($order->created_at, 'd M Y') }}
</span>
</div>
</div>
</div>
<div class="sale-section">
<div class="section-title">
<span>{{ __('shop::app.customer.account.order.view.products-ordered') }}</span>
</div>
<div class="section-content">
<div class="table">
<table>
<thead>
<tr>
<th>{{ __('shop::app.customer.account.order.view.SKU') }}</th>
<th>{{ __('shop::app.customer.account.order.view.product-name') }}</th>
<th>{{ __('shop::app.customer.account.order.view.price') }}</th>
<th>{{ __('shop::app.customer.account.order.view.item-status') }}</th>
<th>{{ __('shop::app.customer.account.order.view.subtotal') }}</th>
<th>{{ __('shop::app.customer.account.order.view.tax-percent') }}</th>
<th>{{ __('shop::app.customer.account.order.view.tax-amount') }}</th>
<th>{{ __('shop::app.customer.account.order.view.grand-total') }}</th>
</tr>
</thead>
<tbody>
@foreach ($order->items as $item)
<tr>
<td data-value="{{ __('shop::app.customer.account.order.view.SKU') }}">
{{ $item->getTypeInstance()->getOrderedItem($item)->sku }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.product-name') }}">
{{ $item->name }}
@if (isset($item->additional['attributes']))
<div class="item-options">
@foreach ($item->additional['attributes'] as $attribute)
<b>{{ $attribute['attribute_name'] }} : </b>{{ $attribute['option_label'] }}</br>
@endforeach
</div>
@endif
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.price') }}">
{{ core()->formatPrice($item->price, $order->order_currency_code) }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.item-status') }}">
<span class="qty-row">
{{ __('shop::app.customer.account.order.view.item-ordered', ['qty_ordered' => $item->qty_ordered]) }}
</span>
<span class="qty-row">
{{ $item->qty_invoiced ? __('shop::app.customer.account.order.view.item-invoice', ['qty_invoiced' => $item->qty_invoiced]) : '' }}
</span>
<span class="qty-row">
{{ $item->qty_shipped ? __('shop::app.customer.account.order.view.item-shipped', ['qty_shipped' => $item->qty_shipped]) : '' }}
</span>
<span class="qty-row">
{{ $item->qty_refunded ? __('shop::app.customer.account.order.view.item-refunded', ['qty_refunded' => $item->qty_refunded]) : '' }}
</span>
<span class="qty-row">
{{ $item->qty_canceled ? __('shop::app.customer.account.order.view.item-canceled', ['qty_canceled' => $item->qty_canceled]) : '' }}
</span>
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.subtotal') }}">
{{ core()->formatPrice($item->total, $order->order_currency_code) }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.tax-percent') }}">
{{ number_format($item->tax_percent, 2) }}%
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.tax-amount') }}">
{{ core()->formatPrice($item->tax_amount, $order->order_currency_code) }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.grand-total') }}">
{{ core()->formatPrice($item->total + $item->tax_amount - $item->discount_amount, $order->order_currency_code) }}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="totals">
<table class="sale-summary">
<tbody>
<tr>
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->sub_total, $order->order_currency_code) }}</td>
</tr>
@if ($order->haveStockableItems())
<tr>
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->shipping_amount, $order->order_currency_code) }}</td>
</tr>
@endif
@if ($order->base_discount_amount > 0)
<tr>
<td>{{ __('shop::app.customer.account.order.view.discount') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }}</td>
</tr>
@endif
<tr class="border-bottom">
<td>{{ __('shop::app.customer.account.order.view.tax') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->tax_amount, $order->order_currency_code) }}</td>
</tr>
<tr class="fw6">
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->grand_total, $order->order_currency_code) }}</td>
</tr>
<tr class="fw6">
<td>{{ __('shop::app.customer.account.order.view.total-paid') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->grand_total_invoiced, $order->order_currency_code) }}</td>
</tr>
<tr class="fw6">
<td>{{ __('shop::app.customer.account.order.view.total-refunded') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->grand_total_refunded, $order->order_currency_code) }}</td>
</tr>
<tr class="fw6">
<td>{{ __('shop::app.customer.account.order.view.total-due') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->total_due, $order->order_currency_code) }}</td>
</tr>
<tbody>
</table>
</div>
</div>
</div>
</tab>
@if ($order->invoices->count())
<tab name="{{ __('shop::app.customer.account.order.view.invoices') }}">
@foreach ($order->invoices as $invoice)
<div class="sale-section">
<div class="secton-title">
<span>{{ __('shop::app.customer.account.order.view.individual-invoice', ['invoice_id' => $invoice->id]) }}</span>
<a href="{{ route('customer.orders.print', $invoice->id) }}" class="pull-right">
{{ __('shop::app.customer.account.order.view.print') }}
</a>
</div>
<div class="section-content">
<div class="table">
<table>
<thead>
<tr>
<th>{{ __('shop::app.customer.account.order.view.SKU') }}</th>
<th>{{ __('shop::app.customer.account.order.view.product-name') }}</th>
<th>{{ __('shop::app.customer.account.order.view.price') }}</th>
<th>{{ __('shop::app.customer.account.order.view.qty') }}</th>
<th>{{ __('shop::app.customer.account.order.view.subtotal') }}</th>
<th>{{ __('shop::app.customer.account.order.view.tax-amount') }}</th>
<th>{{ __('shop::app.customer.account.order.view.grand-total') }}</th>
</tr>
</thead>
<tbody>
@foreach ($invoice->items as $item)
<tr>
<td data-value="{{ __('shop::app.customer.account.order.view.SKU') }}">
{{ $item->getTypeInstance()->getOrderedItem($item)->sku }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.product-name') }}">
{{ $item->name }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.price') }}">
{{ core()->formatPrice($item->price, $order->order_currency_code) }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.qty') }}">
{{ $item->qty }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.subtotal') }}">
{{ core()->formatPrice($item->total, $order->order_currency_code) }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.tax-amount') }}">
{{ core()->formatPrice($item->tax_amount, $order->order_currency_code) }}
</td>
<td data-value="{{ __('shop::app.customer.account.order.view.grand-total') }}">
{{ core()->formatPrice($item->total + $item->tax_amount, $order->order_currency_code) }}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="totals">
<table class="sale-summary">
<tr>
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($invoice->sub_total, $order->order_currency_code) }}</td>
</tr>
<tr>
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($invoice->shipping_amount, $order->order_currency_code) }}</td>
</tr>
@if ($order->base_discount_amount > 0)
<tr>
<td>{{ __('shop::app.customer.account.order.view.discount') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }}</td>
</tr>
@endif
<tr>
<td>{{ __('shop::app.customer.account.order.view.tax') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($invoice->tax_amount, $order->order_currency_code) }}</td>
</tr>
<tr class="fw6">
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($invoice->grand_total, $order->order_currency_code) }}</td>
</tr>
</table>
</div>
</div>
</div>
@endforeach
</tab>
@endif
@if ($order->shipments->count())
<tab name="{{ __('shop::app.customer.account.order.view.shipments') }}">
@foreach ($order->shipments as $shipment)
<div class="sale-section">
<div class="secton-title">
<span>{{ __('shop::app.customer.account.order.view.individual-shipment', ['shipment_id' => $shipment->id]) }}</span>
</div>
<div class="section-content">
<div class="table">
<table>
<thead>
<tr>
<th>{{ __('shop::app.customer.account.order.view.SKU') }}</th>
<th>{{ __('shop::app.customer.account.order.view.product-name') }}</th>
<th>{{ __('shop::app.customer.account.order.view.qty') }}</th>
</tr>
</thead>
<tbody>
@foreach ($shipment->items as $item)
<tr>
<td data-value="{{ __('shop::app.customer.account.order.view.SKU') }}">{{ $item->sku }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.product-name') }}">{{ $item->name }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.qty') }}">{{ $item->qty }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endforeach
</tab>
@endif
@if ($order->refunds->count())
<tab name="{{ __('shop::app.customer.account.order.view.refunds') }}">
@foreach ($order->refunds as $refund)
<div class="sale-section">
<div class="secton-title">
<span>{{ __('shop::app.customer.account.order.view.individual-refund', ['refund_id' => $refund->id]) }}</span>
</div>
<div class="section-content">
<div class="table">
<table>
<thead>
<tr>
<th>{{ __('shop::app.customer.account.order.view.SKU') }}</th>
<th>{{ __('shop::app.customer.account.order.view.product-name') }}</th>
<th>{{ __('shop::app.customer.account.order.view.price') }}</th>
<th>{{ __('shop::app.customer.account.order.view.qty') }}</th>
<th>{{ __('shop::app.customer.account.order.view.subtotal') }}</th>
<th>{{ __('shop::app.customer.account.order.view.tax-amount') }}</th>
<th>{{ __('shop::app.customer.account.order.view.grand-total') }}</th>
</tr>
</thead>
<tbody>
@foreach ($refund->items as $item)
<tr>
<td data-value="{{ __('shop::app.customer.account.order.view.SKU') }}">{{ $item->child ? $item->child->sku : $item->sku }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.product-name') }}">{{ $item->name }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.price') }}">{{ core()->formatPrice($item->price, $order->order_currency_code) }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.qty') }}">{{ $item->qty }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.subtotal') }}">{{ core()->formatPrice($item->total, $order->order_currency_code) }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.tax-amount') }}">{{ core()->formatPrice($item->tax_amount, $order->order_currency_code) }}</td>
<td data-value="{{ __('shop::app.customer.account.order.view.grand-total') }}">{{ core()->formatPrice($item->total + $item->tax_amount, $order->order_currency_code) }}</td>
</tr>
@endforeach
@if (! $refund->items->count())
<tr>
<td class="empty" colspan="7">{{ __('admin::app.common.no-result-found') }}</td>
<tr>
@endif
</tbody>
</table>
</div>
<div class="totals">
<table class="sale-summary">
<tr>
<td>{{ __('shop::app.customer.account.order.view.subtotal') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($refund->sub_total, $order->order_currency_code) }}</td>
</tr>
@if ($refund->shipping_amount > 0)
<tr>
<td>{{ __('shop::app.customer.account.order.view.shipping-handling') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($refund->shipping_amount, $order->order_currency_code) }}</td>
</tr>
@endif
@if ($refund->discount_amount > 0)
<tr>
<td>{{ __('shop::app.customer.account.order.view.discount') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }}</td>
</tr>
@endif
@if ($refund->tax_amount > 0)
<tr>
<td>{{ __('shop::app.customer.account.order.view.tax') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($refund->tax_amount, $order->order_currency_code) }}</td>
</tr>
@endif
<tr>
<td>{{ __('shop::app.customer.account.order.view.adjustment-refund') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($refund->adjustment_refund, $order->order_currency_code) }}</td>
</tr>
<tr>
<td>{{ __('shop::app.customer.account.order.view.adjustment-fee') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($refund->adjustment_fee, $order->order_currency_code) }}</td>
</tr>
<tr class="fw6">
<td>{{ __('shop::app.customer.account.order.view.grand-total') }}</td>
<td>-</td>
<td>{{ core()->formatPrice($refund->grand_total, $order->order_currency_code) }}</td>
</tr>
</table>
</div>
</div>
</div>
@endforeach
</tab>
@endif
</tabs>
<div class="sale-section">
<div class="section-content" style="border-bottom: 0">
<div class="order-box-container">
<div class="box">
<div class="box-title">
{{ __('shop::app.customer.account.order.view.billing-address') }}
</div>
<div class="box-content">
@include ('admin::sales.address', ['address' => $order->billing_address])
</div>
</div>
@if ($order->shipping_address)
<div class="box">
<div class="box-title">
{{ __('shop::app.customer.account.order.view.shipping-address') }}
</div>
<div class="box-content">
@include ('admin::sales.address', ['address' => $order->shipping_address])
</div>
</div>
<div class="box">
<div class="box-title">
{{ __('shop::app.customer.account.order.view.shipping-method') }}
</div>
<div class="box-content">
{{ $order->shipping_title }}
</div>
</div>
@endif
<div class="box">
<div class="box-title">
{{ __('shop::app.customer.account.order.view.payment-method') }}
</div>
<div class="box-content">
{{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }}
</div>
</div>
</div>
</div>
</div>
</div>
{!! view_render_event('bagisto.shop.customers.account.orders.view.after', ['order' => $order]) !!}
</div>
</div>
@endsection

View File

@ -1,7 +1,7 @@
@extends('shop::customers.account.index')
@section('page_title')
{{ __('shop::app.customer.account.review.index.page-title') }}
{{ __('shop::app.customer.account.profile.index.title') }}
@endsection
@section('page-detail-wrapper')

View File

@ -31,18 +31,12 @@
$currentMode = $toolbarHelper->getCurrentMode();
@endphp
@if ($currentMode == "grid")
<div class="col-6 no-padding">
@endif
@include ('shop::products.list.card', [
'checkmode' => true,
'itemId' => $item->id,
'removeWishlist' => true,
'product' => $item->product,
])
@if ($currentMode == "grid")
</div>
@endif
@include ('shop::products.list.card', [
'checkmode' => true,
'itemId' => $item->id,
'removeWishlist' => true,
'product' => $item->product,
])
@endforeach
<div class="bottom-toolbar">

View File

@ -44,7 +44,7 @@
<div class="category-container right">
<div class="row remove-padding-margin">
<div class="col-12">
<div class="pl0 col-12">
<h1 class="fw6 mb10">{{ $category->name }}</h1>
@if ($isDisplayMode && $products->count())

View File

@ -156,26 +156,6 @@
</form>
</script>
<script type="text/x-template" id="quantity-changer-template">
<div :class="`quantity control-group ${errors.has(controlName) ? 'has-error' : ''}`">
<label class="required">{{ __('shop::app.products.quantity') }}</label>
<button type="button" class="decrease" @click="decreaseQty()">-</button>
<input
:value="qty"
class="control"
:name="controlName"
:v-validate="validations"
data-vv-as="&quot;{{ __('shop::app.products.quantity') }}&quot;" readonly>
<button type="button" class="increase" @click="increaseQty()">+</button>
<span class="control-error" v-if="errors.has(controlName)">
@{{ errors.first(controlName) }}
</span>
</div>
</script>
<script type="text/javascript">
Vue.component('product-view', {
inject: ['$validator'],
@ -227,62 +207,6 @@
}
});
Vue.component('quantity-changer', {
inject: ['$validator'],
template: '#quantity-changer-template',
props: {
controlName: {
type: String,
default: 'quantity'
},
quantity: {
type: [Number, String],
default: 1
},
minQuantity: {
type: [Number, String],
default: 1
},
validations: {
type: String,
default: 'required|numeric|min_value:1'
}
},
data: function() {
return {
qty: this.quantity
}
},
watch: {
quantity: function (val) {
this.qty = val;
this.$emit('onQtyUpdated', this.qty)
}
},
methods: {
decreaseQty: function() {
if (this.qty > this.minQuantity)
this.qty = parseInt(this.qty) - 1;
this.$emit('onQtyUpdated', this.qty)
},
increaseQty: function() {
this.qty = parseInt(this.qty) + 1;
this.$emit('onQtyUpdated', this.qty)
}
}
});
$(document).ready(function() {
var addTOButton = document.getElementsByClassName('add-to-buttons')[0];
// document.getElementById('loader').style.display="none";

View File

@ -22,15 +22,15 @@
</div>
<div class="bundle-summary">
<h3>{{ __('shop::app.products.your-customization') }}</h3>
<h3 class="mb10">{{ __('shop::app.products.your-customization') }}</h3>
<quantity-changer></quantity-changer>
<div class="control-group">
<label>{{ __('shop::app.products.total-amount') }}</label>
<div class="bundle-price">
@{{ formated_total_price }}
<div class="bundle-price no-margin">
@{{ formated_total_price | currency(currency_options) }}
</div>
</div>
@ -131,9 +131,7 @@
<script type="text/javascript">
Vue.component('bundle-option-list', {
template: '#bundle-option-list-template',
inject: ['$validator'],
data: function() {

View File

@ -10,10 +10,11 @@
class="unset wishlist-icon {{ $addWishlistClass ?? '' }}"
@if (! $isWished)
href="{{ route('customer.wishlist.add', $product->product_id) }}"
title="{{ __('velocity::app.shop.wishlist.add-wishlist-text') }}"
@elseif (isset($itemId) && $itemId)
href="{{ route('customer.wishlist.remove', $itemId) }}"
@endif
>
title="{{ __('velocity::app.shop.wishlist.remove-wishlist-text') }}"
@endif>
<wishlist-component active="{{ !$isWished }}"></wishlist-component>
</a>