merge 'bagisto/master' into check-if-item-in-cart-is-deactivated
This commit is contained in:
commit
f64a62dc29
|
|
@ -2,6 +2,319 @@
|
|||
|
||||
#### This changelog consists the bug & security fixes and new features being included in the releases listed below.
|
||||
|
||||
## **v1.1.3 (19th of June 2020)** - *Release*
|
||||
|
||||
* [feature] - Customer group price for products implemented
|
||||
|
||||
* [feature] - Image search feature added with tensorflow.js
|
||||
|
||||
* [feature] - Migrated to Laravel 7
|
||||
|
||||
* [feature] - Search engine optimization with rich snippet
|
||||
|
||||
|
||||
* #343 [fixed] - Translation strings are missing from awful amount of controllers when returning responses with flash. And optimise translation strings for faster static translations.
|
||||
|
||||
* #824 [fixed] - Framework is not supporting I.E 11 browser.
|
||||
|
||||
* #838 [fixed] - Packages as composer dependency
|
||||
|
||||
* #985 [fixed] - Dynamically insert products
|
||||
|
||||
* #1258 [fixed] - If payment is done through paypal then invoice should generate automatically and status of Order should be processing.
|
||||
|
||||
* #1362 [fixed] - Site logo and Category Image are broken
|
||||
|
||||
* #1370 [fixed] - install fails at the last step
|
||||
|
||||
* #1522 [fixed] - Quick Links broken
|
||||
|
||||
* #1656 [fixed] - Validation error in Phone Field while Adding Address
|
||||
|
||||
* #1981 [fixed] - If customer update his address at time of checkout and save this address then address doesn't get save and also on checkout page old address displays.
|
||||
|
||||
* #2009 [fixed] - Using AWS S3 for storage
|
||||
|
||||
* #2060 [fixed] - auto generate coupon accordion not getting hidden while selecting no specific coupons
|
||||
|
||||
* #2159 [fixed] - Taking more time to load product details in shopping cart.
|
||||
|
||||
* #2415 [fixed] - Add TO CART button should replace by “BOOk NOW” button for booking product.
|
||||
|
||||
* #2590 [fixed] - hi everyone i'm wondering if customers after register could give a referral code ??
|
||||
|
||||
* #2702 [fixed] - Getting broken image for products and category.
|
||||
|
||||
* #2720 [fixed] - Error during migration on php artisan migrate
|
||||
|
||||
* #2725 [fixed] - Variants should not be created if cofigurable product created failed
|
||||
|
||||
* #2762 [fixed] - Seeder: SQL Error: Duplicate entry for '1' key 'PRIMARY'
|
||||
|
||||
* #2766 [fixed] - Needs User friendly UI for the event booking in product page
|
||||
|
||||
* #2789 [fixed] - Product channel and locale dropdowns in the admin dashboard not working
|
||||
|
||||
* #2795 [fixed] - Cart error merging if you authenticate having items with low stock
|
||||
|
||||
* #2800 [fixed] - Add the ability to change Attribute Family for Products
|
||||
|
||||
* #2804 [fixed] - There should be order review section instead of complete section on checkout page
|
||||
|
||||
* #2805 [fixed] - the sku should be all in caps
|
||||
|
||||
* #2844 [fixed] - showing product image of each color in configurable product
|
||||
|
||||
* #2863 [fixed] - Search Product Name and Description
|
||||
|
||||
* #2868 [fixed] - Cart (customer) address not persisted during the checkout
|
||||
|
||||
* #2874 [fixed] - Order, payment process and payment metadata
|
||||
|
||||
* #2888 [fixed] - Always Default locale should be selected when add new product for each channels
|
||||
|
||||
* #2889 [fixed] - timezone drop down field is not visible in web installer
|
||||
|
||||
* #2893 [fixed] - When creating a shipment, display items invoiced
|
||||
|
||||
* #2931 [fixed] - Customer pays order in PayPal but there is no record in bagisto
|
||||
|
||||
* #2936 [fixed] - change the admin route for another
|
||||
|
||||
* #2942 [fixed] - Randomize New and Featured Products
|
||||
|
||||
* #2949 [fixed] - failed to migrate with new database using installer
|
||||
|
||||
* #2950 [fixed] - multiple error message on installer
|
||||
|
||||
* #2964 [fixed] - Exception when buying non stockable item via API
|
||||
|
||||
* #2969 [fixed] - Cancel icon is not visible in velocity theme for customer order detail
|
||||
|
||||
* #2972 [fixed] - can add to homescreen on mobile device in velocity theme
|
||||
|
||||
* #2974 [fixed] - Thumbnails are not generating on mobile ifproduct has more than 4 photos
|
||||
|
||||
* #2886 [fixed] - Configuration option for Compare
|
||||
|
||||
* #2985 [fixed] - Product category is not saving
|
||||
|
||||
* #2987 [fixed] - mult address
|
||||
|
||||
* #2990 [fixed] - Facebook Pixel integration for Laravel
|
||||
|
||||
* #2991 [fixed] - Filters not showing in small devices
|
||||
|
||||
* #2994 [fixed] - Shipping method not getting updated after changing the zip code.
|
||||
|
||||
* #2995 [fixed] - filter is not showing when search product from search bar
|
||||
|
||||
* #2996 [fixed] - Incomplete products JSON when type is grouped or bundled
|
||||
|
||||
* #2997 [fixed] - Category show sidebar
|
||||
|
||||
* #3000 [fixed] - arabic product in home page Not lined up in one format
|
||||
|
||||
* #3001 [fixed] - Getting Error Exception when view order details
|
||||
|
||||
* #3004 [fixed] - Category Deactivation not working
|
||||
|
||||
* #3005 [fixed] - One page checkout creating new address in profile every time.
|
||||
|
||||
* #3009 [fixed] - Featured product slider and new product slider is not working
|
||||
|
||||
* #3011 [fixed] - The product is in cart or not
|
||||
|
||||
* #3014 [fixed] - Support for Responsive Admin Panel
|
||||
|
||||
* #3018 [fixed] - Icons are not showing on imac
|
||||
|
||||
* #3020 [fixed] - Images can not add on velocity theme
|
||||
|
||||
* #3021 [fixed] - Deactivating the last category of level1 renders only level2 etc. from deactivated category
|
||||
|
||||
* #3022 [fixed] - storage/ should not be included in .gitignore
|
||||
|
||||
* #3024 [fixed] - Blank order comment shouldn't added
|
||||
|
||||
* #3025 [fixed] - save address return error 500
|
||||
|
||||
* #3026 [fixed] - Date validation error when editing Booking Products
|
||||
|
||||
* #3029 [fixed] - velocity theme not fully responsive
|
||||
|
||||
* #3032 [fixed] - [Critical] Onecheckout preventing to continue to shipping method after selecting address
|
||||
|
||||
* #3035 [fixed] - Please update pwa for bagisto
|
||||
|
||||
* #3036 [fixed] - Shipping address options not shown
|
||||
|
||||
* #3037 [fixed] - error mysql 8.0.20 bagisto v 1.1.2
|
||||
|
||||
* #3038 [fixed] - Trying to get property 'code' of non-object
|
||||
|
||||
* #3040 [fixed] - Api logout not working..
|
||||
|
||||
* #3044 [fixed] - Getting exception when click on view shopping cart if adding group product in cart that contains variants of configurable product.
|
||||
|
||||
* #3047 [fixed] - The qty of configurable product is 0 when merging cart
|
||||
|
||||
* #3048 [fixed] - "nwidart/laravel-modules": "^3.2", is the wrong version for laravel 6.*
|
||||
|
||||
* #3050 [fixed] - Can't override models
|
||||
|
||||
* #3051 [fixed] - error while migrate bagisto manually from console command
|
||||
|
||||
* #3053 [fixed] - [Velocity] Checkout: Shipping/Billing Address Name, email does not get updated
|
||||
|
||||
* #3054 [fixed] - customer is getting exception while cancel order
|
||||
|
||||
* #3061 [fixed] - CORS errors
|
||||
|
||||
* #3067 [fixed] - PHP Notice: date_default_timezone_set(): Timezone ID 'Asia/JakartaAsia/Kolkata' is invalid
|
||||
|
||||
* #3068 [fixed] - Inactive inventory source are get select in channel and products
|
||||
|
||||
* #3070 [fixed] - Edit Attribute -> Add Option or Swatch Item Error 404 for Indonesia(id) country code
|
||||
|
||||
* #3073 [fixed] - HTML entities are not being decoded when editing attribute options
|
||||
|
||||
* #3076 [fixed] - checkout disable when add new shipping address
|
||||
|
||||
* #3077 [fixed] - How to change validation messages to spanish not working
|
||||
|
||||
* #3079 [fixed] - Tracking Number in My Account
|
||||
|
||||
* #3087 [fixed] - after installation, first product registration does not open detailed page, I only opened from the second product
|
||||
|
||||
* #3089 [fixed] - not getting price after changing configurable options
|
||||
|
||||
* #3090 [fixed] - error mysql8
|
||||
|
||||
* #3095 [fixed] - pending orders detail page is blank when viewing in arabic locale
|
||||
|
||||
* #3096 [fixed] - error when add product in compare list from the search product page
|
||||
|
||||
* #3097 [fixed] - getting console error when remove cart item
|
||||
|
||||
* #3113 [fixed] - catalog storefront configuration for per product page is not working
|
||||
|
||||
* #3115 [fixed] - minify the velocity.js for gtmetrix
|
||||
|
||||
* #3118 [fixed] - Home page doesn't display categories and language bar doesn't work.
|
||||
|
||||
* #3120 [fixed] - admin panel multi locale
|
||||
|
||||
* #3135 [fixed] - How can I cad comment box in checkout form.
|
||||
|
||||
* #3136 [fixed] - configurable product variant name gets removed from the catalog list
|
||||
|
||||
* #3140 [fixed] - API for more than one locale !
|
||||
|
||||
* #3144 [fixed] - error if selecting only one currency
|
||||
|
||||
* #3146 [fixed] - how to configure aws smtp server on bagisto
|
||||
|
||||
* #3150 [fixed] - Attribute not showing on the creating new configurable product page
|
||||
|
||||
* #3153 [fixed] - Free Shipping and Flat Rate Shipping not desable
|
||||
|
||||
* #3158 [fixed] - Column not found: 1054 Unknown column 'symbol' in 'field l
|
||||
|
||||
* #3160 [fixed] - Disabled products are not removed from bundles
|
||||
|
||||
* #3161 [fixed] - Trying to access array offset on value of type null
|
||||
|
||||
* #3164 [fixed] - getting exception when add/edit configurable product
|
||||
|
||||
* #3171 [fixed] - fixed amount is applied on product for customer group price instead of apply in %
|
||||
|
||||
* #3172 [fixed] - description or name is missing for comparable items if customer login
|
||||
|
||||
* #3183 [fixed] - ErrorException
|
||||
|
||||
* #3184 [fixed] - Site showing blank page on 404
|
||||
|
||||
* #3186 [fixed] - replace payment method text with an image on the checkout page
|
||||
|
||||
* #3190 [fixed] - Bagisto v1.1.2 velocity responsive theme issue on iPhone and iPads
|
||||
|
||||
* #3191 [fixed] - Bagisto v1.1.2 velocity responsive theme issue on iPhone and iPads
|
||||
|
||||
* #3197 [fixed] - Call to undefined function str_limit() when view product in velocity theme
|
||||
|
||||
* #3199 [fixed] - Getting exception when click on product.
|
||||
|
||||
* #3202 [fixed] - Getting exception in creating grouped product.
|
||||
|
||||
* #3203 [fixed] - Getting translation issue in price field of downloadable product.
|
||||
|
||||
* #3204 [fixed] - Getting exception when changing currency from search page.
|
||||
|
||||
* #3205 [fixed] - Able to create the product without selecting required toggles button.
|
||||
|
||||
* #3208 [fixed] - Customer group price functionality is not working.
|
||||
|
||||
* #3207 [fixed] - Issue in variant product of configurable, only one variant name display at a time and on refreshing it changes.
|
||||
|
||||
* #3214 [fixed] - Getting exception on forgot password link.
|
||||
|
||||
* #3215 [fixed] - when updating an attribute to 'use_in_flat', bagisto should update the product_flat table with the values of those products
|
||||
|
||||
* #3218 [fixed] - virtual product not shipping step..
|
||||
|
||||
* #3219 [fixed] - fix the date/time format in booking products
|
||||
|
||||
* #3222 [fixed] - UI issue in event ticket booking special price date field
|
||||
|
||||
* #3232 [fixed] - homepage is showing 404 error page in both theme
|
||||
|
||||
* #3234 [fixed] - UI Issue for cart, wishlist, compare icon number indicator in RTL
|
||||
|
||||
* #3236 [fixed] - selected category gets removed from the search in RTL
|
||||
|
||||
* #3235 [fixed] - need space b/w sign in & sign up box in mini login window for RTL
|
||||
|
||||
* #3237 [fixed] - Options of attribute not display as per its position
|
||||
|
||||
* #3238 [fixed] - Trait 'Illuminate\Foundation\Auth\SendsPasswordResetEmails' not found
|
||||
|
||||
* #3240 [fixed] - Payment methods in onepage checkout are not visible completely in RTL
|
||||
|
||||
* #3241 [fixed] - login fields(email,passwords) are in the center when in RTL
|
||||
|
||||
* #3246 [fixed] - fix icon layout in edit booking product page for RTL
|
||||
|
||||
* #3248 [fixed] - fix css for cancel icon on success alert RTL
|
||||
|
||||
* #3249 [fixed] - icons are overlapped in comparison page for RTL
|
||||
|
||||
* #3250 [fixed] - find product by image in search attempt to an error if app_url isn't define
|
||||
|
||||
* #3254 [fixed] - exception on changing locale to Italian
|
||||
|
||||
* #3255 [fixed] - Appointment booking slot duration missing in UI for RTL
|
||||
|
||||
* #3265 [fixed] - recently view product heading is overlapped in RTL
|
||||
|
||||
* #3270 [fixed] - fix icon design on catalog rule when select special price as condition
|
||||
|
||||
* #3272 [fixed] - getting exception when booking product type is not same as cart item for same product id
|
||||
|
||||
* #3273 [fixed] - fix calendar icon present at dashboard in RTL
|
||||
|
||||
* #3274 [fixed] - Installer Blank Page After Migration
|
||||
|
||||
* #3286 [fixed] - fix calendar icon css at admin dashboard
|
||||
|
||||
* #3289 [fixed] - Main product is not showing in catalog grid if configurable product hasn't been created completely.
|
||||
|
||||
* #3297 [fixed] - getting exception when save booking product from edit page
|
||||
|
||||
* #3298 [fixed] - Header content category always redirect to 404 error page
|
||||
|
||||
|
||||
|
||||
## **v1.1.2 (24th of March 2020)** - *Release*
|
||||
|
||||
* [feature] - Now customer can cancel order.
|
||||
|
|
@ -46,8 +359,6 @@
|
|||
|
||||
* #2901 [fixed] - Error when creating a category
|
||||
|
||||
* #2902 [fixed] - unify address tables
|
||||
|
||||
* #2908 [fixed] - A class is missing from the Velocity ProductRepositiry file
|
||||
|
||||
* #2914 [fixed] - Filter not showing on mobile, also sorting not working on mobile
|
||||
|
|
@ -205,6 +516,8 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
## **v1.1.0 (24th of March 2020)** - *Release*
|
||||
|
||||
* [feature] Added new booking type product.
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ return [
|
|||
'views' => true, // Views with their data
|
||||
'route' => true, // Current route information
|
||||
'auth' => false, // Display Laravel authentication status
|
||||
'gate' => true, // Display Laravel Gate checks
|
||||
'gate' => true, // Display Laravel Gate checks
|
||||
'session' => true, // Display session data
|
||||
'symfony_request' => true, // Only one can be enabled..
|
||||
'mail' => true, // Catch mail messages
|
||||
|
|
@ -122,7 +122,7 @@ return [
|
|||
'files' => false, // Show the included files
|
||||
'config' => false, // Display config settings
|
||||
'cache' => false, // Display cache events
|
||||
'models' => false, // Display models
|
||||
'models' => true, // Display models
|
||||
],
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -179,7 +179,8 @@ return [
|
|||
| in conjunction with queued imports and exports.
|
||||
|
|
||||
*/
|
||||
'remote_disk' => null,
|
||||
'remote_disk' => null,
|
||||
'remote_prefix' => null,
|
||||
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -17,6 +17,21 @@ return [
|
|||
// App\Console\Commands\ExampleCommand::class,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Alias Whitelist
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Tinker will not automatically alias classes in your vendor namespaces
|
||||
| but you may explicitly allow a subset of classes to get aliased by
|
||||
| adding the names of each of those classes to the following list.
|
||||
|
|
||||
*/
|
||||
|
||||
'alias' => [
|
||||
//
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Alias Blacklist
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use Illuminate\Support\Facades\Password;
|
|||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/admin.js": "/js/admin.js?id=a14c779523092ac32b88",
|
||||
"/css/admin.css": "/css/admin.css?id=5002aa6219af1ce7629b"
|
||||
"/css/admin.css": "/css/admin.css?id=c17742537767f5fbf06d"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -416,6 +416,26 @@ return [
|
|||
'name' => 'admin::app.acl.delete',
|
||||
'route' => 'admin.cart-rules.delete',
|
||||
'sort' => 3,
|
||||
], [
|
||||
'key' => 'promotions.catalog-rules',
|
||||
'name' => 'admin::app.acl.catalog-rules',
|
||||
'route' => 'admin.catalog-rules.index',
|
||||
'sort' => 1,
|
||||
], [
|
||||
'key' => 'promotions.catalog-rules.create',
|
||||
'name' => 'admin::app.acl.create',
|
||||
'route' => 'admin.catalog-rules.index',
|
||||
'sort' => 1,
|
||||
], [
|
||||
'key' => 'promotions.catalog-rules.edit',
|
||||
'name' => 'admin::app.acl.edit',
|
||||
'route' => 'admin.catalog-rules.edit',
|
||||
'sort' => 2,
|
||||
], [
|
||||
'key' => 'promotions.catalog-rules.delete',
|
||||
'name' => 'admin::app.acl.delete',
|
||||
'route' => 'admin.catalog-rules.delete',
|
||||
'sort' => 3,
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -45,8 +45,6 @@ class ProductDataGrid extends DataGrid
|
|||
|
||||
if ($this->locale !== 'all') {
|
||||
$queryBuilder->where('locale', $this->locale);
|
||||
} else {
|
||||
$queryBuilder->whereNotNull('product_flat.name');
|
||||
}
|
||||
|
||||
if ($this->channel !== 'all') {
|
||||
|
|
|
|||
|
|
@ -173,4 +173,17 @@
|
|||
grid-row-gap: 15px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.rtl {
|
||||
.dashboard {
|
||||
.page-header {
|
||||
.control-group {
|
||||
&.date::after {
|
||||
margin-top: -13px !important;
|
||||
right: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -319,4 +319,39 @@ body {
|
|||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.ticket-list {
|
||||
.control-group {
|
||||
&.date {
|
||||
&::after {
|
||||
left: unset;
|
||||
right: 10px;
|
||||
top: 34px;
|
||||
}
|
||||
}
|
||||
|
||||
&.has-error {
|
||||
&.date {
|
||||
&::after {
|
||||
top: 47px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.rtl {
|
||||
.ticket-list {
|
||||
.control-group {
|
||||
&.has-error {
|
||||
&.date {
|
||||
&::after {
|
||||
top: 47px;
|
||||
right: 100% !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -47,24 +47,6 @@
|
|||
.control-group {
|
||||
margin-right: 20px;
|
||||
margin-left: 0px;
|
||||
|
||||
&.has-error.date, &.has-error.date {
|
||||
&::after {
|
||||
margin-top: -12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.control-group.date {
|
||||
&::after {
|
||||
margin-top: 6px;
|
||||
position: absolute;
|
||||
margin-right: -35px;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-left: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -242,13 +224,6 @@
|
|||
float: left;
|
||||
}
|
||||
|
||||
.control-group.date {
|
||||
&::after {
|
||||
margin-right: -34px;
|
||||
right: 70%;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination .page-item .icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -369,11 +369,11 @@
|
|||
<script type="text/x-template" id="date-filter-template">
|
||||
<div>
|
||||
<div class="control-group date">
|
||||
<date @onChange="applyFilter('start', $event)"><input type="text" class="control" id="start_date" value="{{ $startDate->format('Y-m-d') }}" placeholder="{{ __('admin::app.dashboard.from') }}" v-model="start"/></date>
|
||||
<date @onChange="applyFilter('start', $event)" hide-remove-button="1"><input type="text" class="control" id="start_date" value="{{ $startDate->format('Y-m-d') }}" placeholder="{{ __('admin::app.dashboard.from') }}" v-model="start"/></date>
|
||||
</div>
|
||||
|
||||
<div class="control-group date">
|
||||
<date @onChange="applyFilter('end', $event)"><input type="text" class="control" id="end_date" value="{{ $endDate->format('Y-m-d') }}" placeholder="{{ __('admin::app.dashboard.to') }}" v-model="end"/></date>
|
||||
<date @onChange="applyFilter('end', $event)" hide-remove-button="1"><input type="text" class="control" id="end_date" value="{{ $endDate->format('Y-m-d') }}" placeholder="{{ __('admin::app.dashboard.to') }}" v-model="end"/></date>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/css/default-booking.css": "/css/default-booking.css?id=ab5abfabd8e0f6df6466",
|
||||
"/css/velocity-booking.css": "/css/velocity-booking.css?id=fb0d5b9e37ed77d662d1"
|
||||
"/css/default-booking.css": "/css/default-booking.css?id=76de1f2b8e064c1e9043",
|
||||
"/css/velocity-booking.css": "/css/velocity-booking.css?id=847aebb5031ed219528e"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,6 +133,19 @@
|
|||
top: 16px;
|
||||
left: 100%;
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
margin-left: -48px;
|
||||
top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
&.has-error {
|
||||
&.date {
|
||||
&::after {
|
||||
margin-top: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.slots {
|
||||
|
|
|
|||
|
|
@ -132,6 +132,19 @@
|
|||
top: 14px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
margin-left: -48px;
|
||||
top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
&.has-error {
|
||||
&.date {
|
||||
&::after {
|
||||
margin-top: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.slots {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
@section('css')
|
||||
<style>
|
||||
.slot-list .control-group.date::after {
|
||||
margin-top: -13px;
|
||||
left: 100%;
|
||||
}
|
||||
|
||||
.has-control-group .control-group {
|
||||
width: 50%;
|
||||
float: left;
|
||||
|
|
@ -17,11 +12,6 @@
|
|||
.has-control-group .control-group:last-child {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.rtl .control-group.date::after {
|
||||
right: 100%;
|
||||
margin-right: -40px;
|
||||
}
|
||||
</style>
|
||||
@stop
|
||||
|
||||
|
|
@ -48,7 +38,9 @@
|
|||
<div class="control-group" :class="[errors.has('booking[type]') ? 'has-error' : '']">
|
||||
<label class="required">{{ __('bookingproduct::app.admin.catalog.products.booking-type') }}</label>
|
||||
|
||||
<select v-validate="'required'" name="booking[type]" v-model="booking.type" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.booking-type') }}"">
|
||||
<input type="hidden" name="booking[type]" :value="booking.type"/>
|
||||
|
||||
<select v-validate="'required'" name="booking[type]" v-model="booking.type" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.booking-type') }}"" :disabled="! is_new">
|
||||
<option value="default">{{ __('bookingproduct::app.admin.catalog.products.default') }}</option>
|
||||
<option value="appointment">{{ __('bookingproduct::app.admin.catalog.products.appointment-booking') }}</option>
|
||||
<option value="event">{{ __('bookingproduct::app.admin.catalog.products.event-booking') }}</option>
|
||||
|
|
@ -139,6 +131,8 @@
|
|||
|
||||
data: function() {
|
||||
return {
|
||||
is_new: bookingProduct ? false : true,
|
||||
|
||||
booking: bookingProduct ? bookingProduct : {
|
||||
|
||||
type: 'default',
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@
|
|||
<label class="ticket-label">{{ __('bookingproduct::app.admin.catalog.products.special-price-from') }}</label>
|
||||
|
||||
<datetime>
|
||||
<input type="text" v-validate="'date_format:yyyy-MM-dd HH:mm:ss|after:{{\Carbon\Carbon::yesterday()->format('Y-m-d 23:59:59')}}'" :name="controlName + '[special_price_from]'" v-model="ticketItem.special_price_from" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.special-price-from') }}"" ref="special_price_from" style="width:70%"/>
|
||||
<input type="text" v-validate="'date_format:yyyy-MM-dd HH:mm:ss|after:{{\Carbon\Carbon::yesterday()->format('Y-m-d 23:59:59')}}'" :name="controlName + '[special_price_from]'" v-model="ticketItem.special_price_from" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.special-price-from') }}"" ref="special_price_from" style="width:100%"/>
|
||||
</datetime>
|
||||
|
||||
<span class="control-error" v-if="errors.has(controlName + '[special_price_from]')">@{{ errors.first(controlName + '[special_price_from]') }}</span>
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
<label class="ticket-label">{{ __('bookingproduct::app.admin.catalog.products.special-price-to') }}</label>
|
||||
|
||||
<datetime>
|
||||
<input type="text" v-validate="'date_format:yyyy-MM-dd HH:mm:ss|after:special_price_from'" :name="controlName + '[special_price_to]'" v-model="ticketItem.special_price_to" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.special-price-to') }}"" ref="special_price_to" style="width:70%"/>
|
||||
<input type="text" v-validate="'date_format:yyyy-MM-dd HH:mm:ss|after:special_price_from'" :name="controlName + '[special_price_to]'" v-model="ticketItem.special_price_to" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.special-price-to') }}"" ref="special_price_to" style="width:100%"/>
|
||||
</datetime>
|
||||
|
||||
<span class="control-error" v-if="errors.has(controlName + '[special_price_to]')">@{{ errors.first(controlName + '[special_price_to]') }}</span>
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@
|
|||
|
||||
selected_slot: '',
|
||||
|
||||
slot_from: 0,
|
||||
slot_from: '',
|
||||
|
||||
date_from: '',
|
||||
|
||||
|
|
@ -179,7 +179,7 @@
|
|||
.then (function(response) {
|
||||
this_this.selected_slot = '';
|
||||
|
||||
this_this.slot_from = 0;
|
||||
this_this.slot_from = '';
|
||||
|
||||
this_this.slots = response.data.data;
|
||||
})
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@
|
|||
|
||||
selected_slot: '',
|
||||
|
||||
slot_from: 0,
|
||||
slot_from: '',
|
||||
|
||||
date_from: '',
|
||||
|
||||
|
|
@ -179,7 +179,7 @@
|
|||
.then (function(response) {
|
||||
this_this.selected_slot = '';
|
||||
|
||||
this_this.slot_from = 0;
|
||||
this_this.slot_from = '';
|
||||
|
||||
this_this.slots = response.data.data;
|
||||
})
|
||||
|
|
|
|||
|
|
@ -2,10 +2,13 @@
|
|||
|
||||
namespace Webkul\Customer\Http\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
/**
|
||||
* Contains route related configuration
|
||||
*
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class Ipn
|
|||
{
|
||||
if ($this->post['payment_status'] == 'Completed') {
|
||||
if ($this->post['mc_gross'] != $this->order->grand_total) {
|
||||
|
||||
return;
|
||||
} else {
|
||||
$this->orderRepository->update(['status' => 'processing'], $this->order->id);
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ $factory->define(OrderItem::class, function (Faker $faker, array $attributes) {
|
|||
'qty_invoiced' => 0,
|
||||
'qty_canceled' => 0,
|
||||
'qty_refunded' => 0,
|
||||
'additional' => [],
|
||||
'order_id' => function () {
|
||||
return factory(Order::class)->create()->id;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
[
|
||||
'key' => 'general.content.shop',
|
||||
'name' => 'shop::app.products.settings',
|
||||
'sort' => 1,
|
||||
'fields' => [
|
||||
[
|
||||
'name' => 'compare_option',
|
||||
'title' => 'shop::app.products.compare_options',
|
||||
'type' => 'boolean',
|
||||
'locale_based' => true,
|
||||
'channel_based' => true,
|
||||
],
|
||||
],
|
||||
]
|
||||
];
|
||||
|
||||
?>
|
||||
|
|
@ -81,5 +81,9 @@ class ShopServiceProvider extends ServiceProvider
|
|||
$this->mergeConfigFrom(
|
||||
dirname(__DIR__) . '/Config/menu.php', 'menu.customer'
|
||||
);
|
||||
|
||||
$this->mergeConfigFrom(
|
||||
dirname(__DIR__) . '/Config/system.php', 'core'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -418,6 +418,8 @@ return [
|
|||
'total-amount' => 'المبلغ الإجمالي',
|
||||
'none' => 'لا شيء',
|
||||
'available-for-order' => 'متوفر لطلب الشراء',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -414,7 +414,9 @@ return [
|
|||
'your-customization' => 'Ihre Anpassung',
|
||||
'total-amount' => 'Gesamtmenge',
|
||||
'none' => 'Keine',
|
||||
'available' => 'Verfügbar'
|
||||
'available' => 'Verfügbar',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -417,7 +417,9 @@ return [
|
|||
'your-customization' => 'Your Customization',
|
||||
'total-amount' => 'Total Amount',
|
||||
'none' => 'None',
|
||||
'available-for-order' => 'Available for Order'
|
||||
'available-for-order' => 'Available for Order',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -388,6 +388,8 @@ return [
|
|||
'select-above-options' => 'Primero selecciona las opciones de arriba.',
|
||||
'less-quantity' => 'La cantidad no debe ser inferior a uno.',
|
||||
'available-for-order' => 'Disponible para ordenar',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -417,6 +417,8 @@ return [
|
|||
'total-amount' => 'مقدار کل',
|
||||
'none' => 'هیچ یک',
|
||||
'available-for-order' => 'Available for Order',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -416,7 +416,9 @@ return [
|
|||
'your-customization' => 'La tua Personalizzazione',
|
||||
'total-amount' => 'Totale',
|
||||
'none' => 'Nessuno',
|
||||
'available-for-order' => 'Disponibile per lordine'
|
||||
'available-for-order' => 'Disponibile per lordine',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
@ -583,7 +585,7 @@ return [
|
|||
'subject' => 'Nuovo commento aggiunto al tuo ordine',
|
||||
'dear' => ':customer_name',
|
||||
'final-summary' => 'Grazie per aver mostrato interesse per il nostro store',
|
||||
'help' => 'Se hai bisogno di aiuto contattaci all'indirizzo :support_email',
|
||||
'help' => 'Se hai bisogno di aiuto contattaci all\'indirizzo :support_email',
|
||||
'thanks' => 'Graze!',
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -384,6 +384,8 @@ return [
|
|||
'select-above-options' => '最初に上記のオプションを選択してください.',
|
||||
'less-quantity' => '数量1未満は選択できません.',
|
||||
'available-for-order' => '注文可能',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
'buynow' => [
|
||||
|
|
|
|||
|
|
@ -421,7 +421,9 @@ return [
|
|||
'your-customization' => 'Uw maatwerk',
|
||||
'total-amount' => 'Totale hoeveelheid',
|
||||
'none' => 'Geen',
|
||||
'available-for-order' => 'Beschikbaar voor bestelling'
|
||||
'available-for-order' => 'Beschikbaar voor bestelling',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -416,7 +416,9 @@ return [
|
|||
'your-customization' => 'Twoja personalizacja',
|
||||
'total-amount' => 'Całkowita kwota',
|
||||
'none' => 'Żaden',
|
||||
'available-for-order' => 'Dostępne na zamówienie'
|
||||
'available-for-order' => 'Dostępne na zamówienie',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
@ -528,7 +530,7 @@ return [
|
|||
|
||||
'total' => [
|
||||
'order-summary' => 'Podsumowanie zamówienia',
|
||||
'sub-total' => 'Produkty,
|
||||
'sub-total' => 'Produkty',
|
||||
'grand-total' => 'Suma łączna',
|
||||
'delivery-charges' => 'Koszty dostawy',
|
||||
'tax' => 'Podatek',
|
||||
|
|
@ -594,7 +596,7 @@ return [
|
|||
'discount' => 'Rabat',
|
||||
'grand-total' => 'Suma łączna',
|
||||
'final-summary' => 'Dziękujemy za zakupy w naszym sklepie',
|
||||
'help' => ''Jeśli potrzebujesz jakiejkolwiek pomocy, skontaktuj się z nami pod adresem :support_email',
|
||||
'help' => 'Jeśli potrzebujesz jakiejkolwiek pomocy, skontaktuj się z nami pod adresem :support_email',
|
||||
'thanks' => 'Dzięki!',
|
||||
]
|
||||
],
|
||||
|
|
|
|||
|
|
@ -404,7 +404,9 @@ return [
|
|||
'your-customization' => 'Sua personalização',
|
||||
'total-amount' => 'Valor total',
|
||||
'none' => 'Nenhum',
|
||||
'available-for-order' => 'Disponível para encomenda'
|
||||
'available-for-order' => 'Disponível para encomenda',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -414,7 +414,9 @@ return [
|
|||
'your-customization' => 'Özelleştirmeniz',
|
||||
'total-amount' => 'Toplam Miktar',
|
||||
'none' => 'Hiçbiri',
|
||||
'available-for-order' => 'Sipariş İçin Uygun'
|
||||
'available-for-order' => 'Sipariş İçin Uygun',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'Compare Options',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
|
|||
|
|
@ -9,6 +9,16 @@
|
|||
|
||||
<div class="menu-block-content">
|
||||
<ul class="menubar">
|
||||
@php
|
||||
$showCompare = core()->getConfigData('general.content.shop.compare_option') == "1" ? true : false;
|
||||
@endphp
|
||||
|
||||
@if (! $showCompare)
|
||||
@php
|
||||
unset($menuItem['children']['compare']);
|
||||
@endphp
|
||||
@endif
|
||||
|
||||
@foreach ($menuItem['children'] as $subMenuItem)
|
||||
<li class="menu-item {{ $menu->getActive($subMenuItem) }}">
|
||||
<a href="{{ $subMenuItem['url'] }}">
|
||||
|
|
|
|||
|
|
@ -47,21 +47,27 @@
|
|||
|
||||
{!! view_render_event('bagisto.shop.layout.header.comppare-item.before') !!}
|
||||
|
||||
<li class="compare-dropdown-container">
|
||||
<a
|
||||
@auth('customer')
|
||||
href="{{ route('velocity.customer.product.compare') }}"
|
||||
@endauth
|
||||
@php
|
||||
$showCompare = core()->getConfigData('general.content.shop.compare_option') == "1" ? true : false
|
||||
@endphp
|
||||
|
||||
@guest('customer')
|
||||
href="{{ route('velocity.product.compare') }}"
|
||||
@endguest
|
||||
style="color: #242424;"
|
||||
>
|
||||
<span class="name">{{ __('velocity::app.customer.compare.text') }}</span>
|
||||
@if ($showCompare)
|
||||
<li class="compare-dropdown-container">
|
||||
<a
|
||||
@auth('customer')
|
||||
href="{{ route('velocity.customer.product.compare') }}"
|
||||
@endauth
|
||||
|
||||
</a>
|
||||
</li>
|
||||
@guest('customer')
|
||||
href="{{ route('velocity.product.compare') }}"
|
||||
@endguest
|
||||
style="color: #242424;"
|
||||
>
|
||||
<span class="name">{{ __('velocity::app.customer.compare.text') }}</span>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
{!! view_render_event('bagisto.shop.layout.header.compare-item.after') !!}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
@php
|
||||
$showCompare = core()->getConfigData('general.content.shop.compare_option') == "1" ? true : false
|
||||
@endphp
|
||||
|
||||
<div class="cart-wish-wrap">
|
||||
<form action="{{ route('cart.add', $product->product_id) }}" method="POST">
|
||||
@csrf
|
||||
|
|
@ -7,8 +11,10 @@
|
|||
</form>
|
||||
|
||||
@include('shop::products.wishlist')
|
||||
|
||||
@include('shop::products.compare', [
|
||||
'productId' => $product->id
|
||||
])
|
||||
|
||||
@if ($showCompare)
|
||||
@include('shop::products.compare', [
|
||||
'productId' => $product->id
|
||||
])
|
||||
@endif
|
||||
</div>
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
@inject ('productRepository', 'Webkul\Product\Repositories\ProductRepository')
|
||||
|
||||
<?php
|
||||
$filterAttributes = [];
|
||||
$filterAttributes = $attributes = [];
|
||||
$maxPrice = 0;
|
||||
|
||||
if (isset($category)) {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/ui.js": "/js/ui.js?id=b56f2fff2a85ae08608f",
|
||||
"/css/ui.css": "/css/ui.css?id=881ed8b3d2e495260a71"
|
||||
"/js/ui.js": "/js/ui.js?id=e5e928de0a10dc274cd5",
|
||||
"/css/ui.css": "/css/ui.css?id=15b25d80644cec0d2e89"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
<template>
|
||||
<span style="display: flex;align-items: center;">
|
||||
<span>
|
||||
<slot>
|
||||
<input type="text" :name="name" class="control" :value="value" data-input>
|
||||
</slot>
|
||||
<button
|
||||
class="btn"
|
||||
style="height:100%;margin-left: 8px; margin-top: 5px;"
|
||||
@click.prevent="clear"
|
||||
> <span class="icon trash-icon"></span> </button>
|
||||
|
||||
<span
|
||||
class="icon cross-icon"
|
||||
v-if="! hideRemoveButton"
|
||||
@click.prevent="clear">
|
||||
</span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
|
|
@ -17,7 +18,10 @@ import Flatpickr from 'flatpickr';
|
|||
export default {
|
||||
props: {
|
||||
name: String,
|
||||
|
||||
value: String,
|
||||
|
||||
hideRemoveButton: [Number, String]
|
||||
},
|
||||
|
||||
data () {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
<template>
|
||||
<span style="display: flex;align-items: center;">
|
||||
<span>
|
||||
<slot>
|
||||
<input type="text" :name="name" class="control" :value="value" data-input>
|
||||
</slot>
|
||||
<button
|
||||
class="btn"
|
||||
style="height:100%;margin-left: 8px; margin-top: 5px;"
|
||||
@click.prevent="clear"
|
||||
> <span class="icon trash-icon"></span> </button>
|
||||
|
||||
<span
|
||||
class="icon cross-icon"
|
||||
v-if="! hideRemoveButton"
|
||||
@click.prevent="clear">
|
||||
</span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
|
|
@ -17,7 +18,10 @@ import Flatpickr from "flatpickr";
|
|||
export default {
|
||||
props: {
|
||||
name: String,
|
||||
value: String
|
||||
|
||||
value: String,
|
||||
|
||||
hideRemoveButton: [Number, String]
|
||||
},
|
||||
|
||||
data() {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import Flatpickr from "flatpickr";
|
|||
export default {
|
||||
props: {
|
||||
name: String,
|
||||
|
||||
value: String
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -637,6 +637,10 @@ h5 {
|
|||
}
|
||||
|
||||
&.date, &.datetime {
|
||||
.control {
|
||||
padding-right: 40px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
background-image: url("../images/Icon-Calendar.svg");
|
||||
width: 24px;
|
||||
|
|
@ -650,6 +654,13 @@ h5 {
|
|||
left: 70%;
|
||||
top: 50%;
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
margin-left: -54px;
|
||||
top: 38px;
|
||||
}
|
||||
}
|
||||
|
||||
.control-info {
|
||||
|
|
@ -689,6 +700,56 @@ h5 {
|
|||
}
|
||||
}
|
||||
|
||||
.table {
|
||||
.control-group {
|
||||
&.date, &.datetime {
|
||||
&::after {
|
||||
top: 6px;
|
||||
left: unset;
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.rtl {
|
||||
.control-group {
|
||||
&.date, &.datetime {
|
||||
.control {
|
||||
padding-left: 40px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
margin-right: -34px;
|
||||
right: 70%;
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
margin-right: -54px;
|
||||
top: 38px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table {
|
||||
.control-group {
|
||||
&.date, &.datetime {
|
||||
&::after {
|
||||
right: unset !important;
|
||||
}
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.control-group {
|
||||
.switch {
|
||||
position: relative;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use Illuminate\Support\Facades\Password;
|
|||
class ForgetPasswordController extends Controller
|
||||
{
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
|
||||
/**
|
||||
* Contains route related configuration
|
||||
*
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"/js/velocity.js": "/js/velocity.js?id=8800d2830d2fa9f0254d",
|
||||
"/js/velocity.js": "/js/velocity.js?id=ac80a6434bb67471e57f",
|
||||
"/css/velocity-admin.css": "/css/velocity-admin.css?id=612d35e452446366eef7",
|
||||
"/css/velocity.css": "/css/velocity.css?id=aaf9dc15817e6b912dd2"
|
||||
"/css/velocity.css": "/css/velocity.css?id=0b6e54246b36551194f9"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -335,13 +335,18 @@ class Helper extends Review
|
|||
'priceHTML' => view('shop::products.price', ['product' => $product])->render(),
|
||||
'defaultAddToCart' => view('shop::products.add-buttons', ['product' => $product])->render(),
|
||||
'addToCartHtml' => view('shop::products.add-to-cart', [
|
||||
'showCompare' => true,
|
||||
'product' => $product,
|
||||
'addWishlistClass' => ! (isset($list) && $list) ? '' : '',
|
||||
|
||||
'showCompare' => core()->getConfigData('general.content.shop.compare_option') == "1"
|
||||
? true : false,
|
||||
|
||||
'btnText' => (isset($metaInformation['btnText']) && $metaInformation['btnText'])
|
||||
? $metaInformation['btnText'] : null,
|
||||
|
||||
'moveToCart' => (isset($metaInformation['moveToCart']) && $metaInformation['moveToCart'])
|
||||
? $metaInformation['moveToCart'] : null,
|
||||
|
||||
'addToCartBtnClass' => ! (isset($list) && $list) ? 'small-padding' : '',
|
||||
])->render(),
|
||||
];
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
:autoplayTimeout="timeout ? parseInt(timeout) : 2000"
|
||||
:autoplayDirection="sliderDirection ? sliderDirection : 'forward'"
|
||||
:class="[
|
||||
'ltr',
|
||||
(navigationEnabled == 'hide') ? 'navigation-hide' : '',
|
||||
(paginationEnabled == 'hide') ? 'pagination-hide' : '',
|
||||
addClass
|
||||
|
|
|
|||
|
|
@ -221,10 +221,15 @@ $(document).ready(function () {
|
|||
miniCartKey: 0,
|
||||
quickView: false,
|
||||
productDetails: [],
|
||||
showPageLoader: false,
|
||||
}
|
||||
},
|
||||
|
||||
created: function () {
|
||||
setTimeout(() => {
|
||||
document.body.classList.remove("modal-open");
|
||||
}, 0);
|
||||
|
||||
window.addEventListener('click', () => {
|
||||
let modals = document.getElementsByClassName('sensitive-modal');
|
||||
|
||||
|
|
@ -331,6 +336,20 @@ $(document).ready(function () {
|
|||
})
|
||||
});
|
||||
},
|
||||
|
||||
showLoader: function () {
|
||||
$('#loader').show();
|
||||
$('.overlay-loader').show();
|
||||
|
||||
document.body.classList.add("modal-open");
|
||||
},
|
||||
|
||||
hideLoader: function () {
|
||||
$('#loader').hide();
|
||||
$('.overlay-loader').hide();
|
||||
|
||||
document.body.classList.remove("modal-open");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
118
packages/Webkul/Velocity/src/Resources/assets/sass/components/app.scss
vendored
Normal file → Executable file
118
packages/Webkul/Velocity/src/Resources/assets/sass/components/app.scss
vendored
Normal file → Executable file
|
|
@ -2445,3 +2445,121 @@
|
|||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
//CSS for loader
|
||||
.cp-spinner {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
left: calc(50% - 24px);
|
||||
margin-top: calc(40% - 24px);
|
||||
}
|
||||
|
||||
.overlay-loader {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
z-index: 11;
|
||||
position: fixed;
|
||||
margin-top: -24px;
|
||||
margin-left: -24px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 720px) {
|
||||
.cp-spinner {
|
||||
left: 50%;
|
||||
margin-left: -24px;
|
||||
top: 50%;
|
||||
margin-top: -24px;
|
||||
}
|
||||
}
|
||||
|
||||
//Spinner style
|
||||
.cp-round:before {
|
||||
border-radius: 50%;
|
||||
content: " ";
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
border-top: solid 6px grey;
|
||||
border-right: solid 6px grey;
|
||||
border-bottom: solid 6px grey;
|
||||
border-left: solid 6px grey;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.cp-round:after {
|
||||
border-radius: 50%;
|
||||
content: " ";
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
border-top: solid 6px $theme-color;
|
||||
border-right: solid 6px transparent;
|
||||
border-bottom: solid 6px transparent;
|
||||
border-left: solid 6px transparent;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
animation: spin 1s ease-in-out infinite;
|
||||
}
|
||||
|
||||
|
||||
.image-search-container {
|
||||
top: 9px;
|
||||
right: 45px;
|
||||
z-index: 10;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
background: #fff;
|
||||
height: 24px !important;
|
||||
}
|
||||
|
||||
.camera-icon {
|
||||
width: 24px;
|
||||
display: inline-block;
|
||||
background-size: cover;
|
||||
background-image: url(/vendor/webkul/ui/assets/images/Camera.svg);
|
||||
}
|
||||
|
||||
.image-search-result {
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
border-radius: 2px;
|
||||
margin-bottom: 20px;
|
||||
display: inline-block;
|
||||
border: 1px solid #0041ff;
|
||||
background-color: rgba(0,65,255,.1);
|
||||
|
||||
.searched-image {
|
||||
float: left;
|
||||
|
||||
img {
|
||||
width: 150px;
|
||||
height: auto;
|
||||
box-shadow: 1px 1px 3px 0 rgba(0,0,0,.32);
|
||||
}
|
||||
}
|
||||
|
||||
.searched-terms {
|
||||
margin-left: 20px;
|
||||
display: inline-block;
|
||||
|
||||
.term-list a {
|
||||
padding: 5px 8px;
|
||||
margin-top: 10px;
|
||||
background: #fff;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -939,4 +939,17 @@
|
|||
.wishlist-icon {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.image-search-result {
|
||||
.searched-terms {
|
||||
margin-left: 0;
|
||||
margin-top: 20px;
|
||||
|
||||
.term-list {
|
||||
a {
|
||||
line-height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -138,6 +138,13 @@ body {
|
|||
|
||||
#cart-modal-content {
|
||||
left: 0;
|
||||
|
||||
.small-card-container {
|
||||
.rango-close {
|
||||
left: unset;
|
||||
right: -10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.category-list-container{
|
||||
|
|
@ -265,6 +272,73 @@ body {
|
|||
.modal-footer>:not(:last-child) {
|
||||
margin-left: .25rem;
|
||||
}
|
||||
|
||||
.compare-products {
|
||||
.wishlist-icon {
|
||||
left: 60px;
|
||||
right: unset;
|
||||
}
|
||||
|
||||
.material-icons.cross {
|
||||
left: 20px;
|
||||
right: unset;
|
||||
}
|
||||
}
|
||||
|
||||
#alert-container {
|
||||
right: unset;
|
||||
left: 15px;
|
||||
}
|
||||
|
||||
.mini-cart-content {
|
||||
~ .down-arrow-container {
|
||||
.rango-arrow-down {
|
||||
left: -15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.alert-dismissible {
|
||||
.close {
|
||||
left: -8px;
|
||||
}
|
||||
}
|
||||
|
||||
.booking-information {
|
||||
.book-slots {
|
||||
.control-group-container {
|
||||
.form-group:not(.quantity).date:after {
|
||||
left: 40px;
|
||||
right: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.full-content-wrapper {
|
||||
> .container-fluid {
|
||||
> .row {
|
||||
&.pl-26 {
|
||||
padding-right: 26% !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.image-search-container {
|
||||
left: 45px;
|
||||
right: unset;
|
||||
}
|
||||
|
||||
.product-policy-container {
|
||||
.card {
|
||||
.policy {
|
||||
.left {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Shared
|
||||
.text-right {
|
||||
|
|
@ -299,5 +373,59 @@ body {
|
|||
.ml-5 {
|
||||
margin-right: 3rem !important;
|
||||
}
|
||||
.mr15 {
|
||||
margin-left: 15px !important;
|
||||
}
|
||||
.ml5 {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 992px) {
|
||||
body {
|
||||
&.rtl {
|
||||
.nav-container {
|
||||
ul {
|
||||
li {
|
||||
padding: 10px 20px 10px 0px;
|
||||
|
||||
.rango-arrow-right {
|
||||
float: left;
|
||||
padding-left: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
.vc-customer-options {
|
||||
li {
|
||||
i.icon {
|
||||
float: right;
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.full-content-wrapper {
|
||||
> .container-fluid {
|
||||
> .row {
|
||||
&.pl-26 {
|
||||
padding-right: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.account-content {
|
||||
.account-layout {
|
||||
&.right {
|
||||
padding-right: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -302,23 +302,29 @@
|
|||
<logo-component></logo-component>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$showCompare = core()->getConfigData('general.content.shop.compare_option') == "1" ? true : false
|
||||
@endphp
|
||||
|
||||
<div class="right-vc-header col-6">
|
||||
<a
|
||||
class="compare-btn unset"
|
||||
@auth('customer')
|
||||
href="{{ route('velocity.customer.product.compare') }}"
|
||||
@endauth
|
||||
@if ($showCompare)
|
||||
<a
|
||||
class="compare-btn unset"
|
||||
@auth('customer')
|
||||
href="{{ route('velocity.customer.product.compare') }}"
|
||||
@endauth
|
||||
|
||||
@guest('customer')
|
||||
href="{{ route('velocity.product.compare') }}"
|
||||
@endguest
|
||||
>
|
||||
@guest('customer')
|
||||
href="{{ route('velocity.product.compare') }}"
|
||||
@endguest
|
||||
>
|
||||
|
||||
<div class="badge-container" v-if="compareCount > 0">
|
||||
<span class="badge" v-text="compareCount"></span>
|
||||
</div>
|
||||
<i class="material-icons">compare_arrows</i>
|
||||
</a>
|
||||
<div class="badge-container" v-if="compareCount > 0">
|
||||
<span class="badge" v-text="compareCount"></span>
|
||||
</div>
|
||||
<i class="material-icons">compare_arrows</i>
|
||||
</a>
|
||||
@endif
|
||||
|
||||
<a class="wishlist-btn unset" :href="`${isCustomer ? '{{ route('customer.wishlist.index') }}' : '{{ route('velocity.product.guest-wishlist') }}'}`">
|
||||
<div class="badge-container" v-if="wishlistCount > 0">
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
<style>
|
||||
.camera-icon {
|
||||
background-image: url("{{ asset('/vendor/webkul/ui/assets/images/Camera.svg') }}");
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/x-template" id="cart-btn-template">
|
||||
<button
|
||||
type="button"
|
||||
|
|
@ -103,8 +109,10 @@
|
|||
name="term"
|
||||
type="search"
|
||||
class="form-control"
|
||||
:value="searchedQuery.term ? searchedQuery.term.split('+').join(' ') : ''"
|
||||
placeholder="{{ __('velocity::app.header.search-text') }}" />
|
||||
placeholder="{{ __('velocity::app.header.search-text') }}"
|
||||
:value="unescape(searchedQuery.term) ? unescape(searchedQuery.term.split('+').join(' ')) : ''" />
|
||||
|
||||
<image-search-component></image-search-component>
|
||||
|
||||
<button class="btn" type="submit" id="header-search-icon">
|
||||
<i class="fs16 fw6 rango-search"></i>
|
||||
|
|
@ -121,24 +129,30 @@
|
|||
@include('shop::checkout.cart.mini-cart')
|
||||
{!! view_render_event('bagisto.shop.layout.header.cart-item.after') !!}
|
||||
|
||||
@php
|
||||
$showCompare = core()->getConfigData('general.content.shop.compare_option') == "1" ? true : false
|
||||
@endphp
|
||||
|
||||
{!! view_render_event('bagisto.shop.layout.header.compare.before') !!}
|
||||
<a
|
||||
class="compare-btn unset"
|
||||
@auth('customer')
|
||||
href="{{ route('velocity.customer.product.compare') }}"
|
||||
@endauth
|
||||
@if ($showCompare)
|
||||
<a
|
||||
class="compare-btn unset"
|
||||
@auth('customer')
|
||||
href="{{ route('velocity.customer.product.compare') }}"
|
||||
@endauth
|
||||
|
||||
@guest('customer')
|
||||
href="{{ route('velocity.product.compare') }}"
|
||||
@endguest
|
||||
>
|
||||
@guest('customer')
|
||||
href="{{ route('velocity.product.compare') }}"
|
||||
@endguest
|
||||
>
|
||||
|
||||
<i class="material-icons">compare_arrows</i>
|
||||
<div class="badge-container" v-if="compareCount > 0">
|
||||
<span class="badge" v-text="compareCount"></span>
|
||||
</div>
|
||||
<span>{{ __('velocity::app.customer.compare.text') }}</span>
|
||||
</a>
|
||||
<i class="material-icons">compare_arrows</i>
|
||||
<div class="badge-container" v-if="compareCount > 0">
|
||||
<span class="badge" v-text="compareCount"></span>
|
||||
</div>
|
||||
<span>{{ __('velocity::app.customer.compare.text') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
{!! view_render_event('bagisto.shop.layout.header.compare.after') !!}
|
||||
|
||||
{!! view_render_event('bagisto.shop.layout.header.wishlist.before') !!}
|
||||
|
|
@ -154,13 +168,26 @@
|
|||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/x-template" id="sidebar-categories-template">
|
||||
<div class="wrapper" v-if="rootCategories">
|
||||
Hello World
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet"></script>
|
||||
|
||||
<div class="wrapper" v-else-if="subCategory">
|
||||
Hello World 2
|
||||
<script type="text/x-template" id="image-search-component-template">
|
||||
<div class="d-inline-block">
|
||||
<label class="image-search-container" for="image-search-container">
|
||||
<i class="icon camera-icon"></i>
|
||||
|
||||
<input
|
||||
type="file"
|
||||
class="d-none"
|
||||
ref="image_search_input"
|
||||
id="image-search-container"
|
||||
v-on:change="uploadImage()" />
|
||||
|
||||
<img
|
||||
class="d-none"
|
||||
id="uploaded-image-url"
|
||||
:src="uploadedImageUrl" />
|
||||
</label>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
|
@ -284,6 +311,10 @@
|
|||
updatedSearchedCollection[splitedItem[0]] = splitedItem[1];
|
||||
});
|
||||
|
||||
if (updatedSearchedCollection['image-search'] == 1) {
|
||||
updatedSearchedCollection.term = '';
|
||||
}
|
||||
|
||||
this.searchedQuery = updatedSearchedCollection;
|
||||
|
||||
this.updateHeaderItemsCount();
|
||||
|
|
@ -319,5 +350,72 @@
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
Vue.component('image-search-component', {
|
||||
template: '#image-search-component-template',
|
||||
data: function() {
|
||||
return {
|
||||
uploadedImageUrl: ''
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
uploadImage: function() {
|
||||
this.$root.showLoader();
|
||||
var formData = new FormData();
|
||||
|
||||
formData.append('image', this.$refs.image_search_input.files[0]);
|
||||
|
||||
axios.post(
|
||||
"{{ route('shop.image.search.upload') }}",
|
||||
formData,
|
||||
{
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
}
|
||||
).then(response => {
|
||||
var net;
|
||||
var self = this;
|
||||
this.uploadedImageUrl = response.data;
|
||||
|
||||
|
||||
async function app() {
|
||||
var analysedResult = [];
|
||||
|
||||
var queryString = '';
|
||||
|
||||
net = await mobilenet.load();
|
||||
|
||||
const imgElement = document.getElementById('uploaded-image-url');
|
||||
|
||||
const result = await net.classify(imgElement);
|
||||
|
||||
result.forEach(function(value) {
|
||||
queryString = value.className.split(',');
|
||||
|
||||
if (queryString.length > 1) {
|
||||
analysedResult = analysedResult.concat(queryString)
|
||||
} else {
|
||||
analysedResult.push(queryString[0])
|
||||
}
|
||||
})
|
||||
|
||||
localStorage.searchedImageUrl = self.uploadedImageUrl;
|
||||
|
||||
queryString = localStorage.searched_terms = analysedResult.join('_');
|
||||
|
||||
self.$root.hideLoader();
|
||||
|
||||
window.location.href = "{{ route('shop.search.index') }}" + '?term=' + queryString + '&image-search=1';
|
||||
}
|
||||
|
||||
app();
|
||||
}).catch(() => {
|
||||
this.$root.hideLoader();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
})()
|
||||
</script>
|
||||
|
|
@ -209,23 +209,22 @@
|
|||
this.$validator.validateAll(scope)
|
||||
.then(result => {
|
||||
if (result) {
|
||||
document.body.style.cursor = 'wait';
|
||||
this.$root.showLoader();
|
||||
|
||||
switch (scope) {
|
||||
case 'address-form':
|
||||
this.saveAddress();
|
||||
document.body.style.cursor = 'default';
|
||||
break;
|
||||
|
||||
case 'shipping-form':
|
||||
if (this.showShippingSection) {
|
||||
document.body.style.cursor = 'wait';
|
||||
this.$root.showLoader();
|
||||
this.saveShipping();
|
||||
break;
|
||||
}
|
||||
|
||||
case 'payment-form':
|
||||
document.body.style.cursor = 'wait';
|
||||
this.$root.showLoader();
|
||||
this.savePayment();
|
||||
|
||||
this.isPlaceOrderEnabled = ! this.validateAddressForm();
|
||||
|
|
@ -301,7 +300,7 @@
|
|||
console.log(this.is_customer_exist);
|
||||
|
||||
if (response.data)
|
||||
document.body.style.cursor = 'default';
|
||||
this.$root.hideLoader();
|
||||
})
|
||||
.catch(function (error) {})
|
||||
})
|
||||
|
|
@ -396,9 +395,12 @@
|
|||
shippingMethods = response.data.shippingMethods;
|
||||
|
||||
this.getOrderSummary();
|
||||
|
||||
this.$root.hideLoader();
|
||||
})
|
||||
.catch(error => {
|
||||
this.disable_button = false;
|
||||
this.$root.hideLoader();
|
||||
|
||||
this.handleErrorResponse(error.response, 'address-form')
|
||||
})
|
||||
|
|
@ -409,12 +411,10 @@
|
|||
|
||||
this.$http.post("{{ route('shop.checkout.save-shipping') }}", {'shipping_method': this.selected_shipping_method})
|
||||
.then(response => {
|
||||
this.$root.hideLoader();
|
||||
this.disable_button = false;
|
||||
|
||||
this.showPaymentSection = true;
|
||||
|
||||
document.body.style.cursor = 'default';
|
||||
|
||||
paymentHtml = Vue.compile(response.data.html)
|
||||
|
||||
this.completed_step = this.step_numbers[response.data.jump_to_section] + 1;
|
||||
|
|
@ -431,7 +431,7 @@
|
|||
})
|
||||
.catch(error => {
|
||||
this.disable_button = false;
|
||||
|
||||
this.$root.hideLoader();
|
||||
this.handleErrorResponse(error.response, 'shipping-form')
|
||||
})
|
||||
},
|
||||
|
|
@ -448,7 +448,7 @@
|
|||
this.disable_button = false;
|
||||
|
||||
this.showSummarySection = true;
|
||||
document.body.style.cursor = 'default';
|
||||
this.$root.hideLoader();
|
||||
|
||||
reviewHtml = Vue.compile(response.data.html)
|
||||
this.completed_step = this.step_numbers[response.data.jump_to_section] + 1;
|
||||
|
|
@ -460,6 +460,7 @@
|
|||
})
|
||||
.catch(error => {
|
||||
this.disable_button = false;
|
||||
this.$root.hideLoader();
|
||||
this.handleErrorResponse(error.response, 'payment-form')
|
||||
});
|
||||
}
|
||||
|
|
@ -470,18 +471,23 @@
|
|||
this.disable_button = false;
|
||||
this.isPlaceOrderEnabled = false;
|
||||
|
||||
this.$root.showLoader();
|
||||
|
||||
this.$http.post("{{ route('shop.checkout.save-order') }}", {'_token': "{{ csrf_token() }}"})
|
||||
.then(function(response) {
|
||||
.then(response => {
|
||||
if (response.data.success) {
|
||||
if (response.data.redirect_url) {
|
||||
this.$root.hideLoader();
|
||||
window.location.href = response.data.redirect_url;
|
||||
} else {
|
||||
this.$root.hideLoader();
|
||||
window.location.href = "{{ route('shop.checkout.success') }}";
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
this.disable_button = true;
|
||||
this.$root.hideLoader();
|
||||
|
||||
window.showAlert(`alert-danger`, this.__('shop.general.alert.danger'), "{{ __('shop::app.common.error') }}");
|
||||
})
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@
|
|||
sidebarHeight = parseInt(sidebarHeight.substring(0, sidebarHeight.length - 2));
|
||||
contentHeight = parseInt(contentHeight.substring(0, contentHeight.length - 2));
|
||||
|
||||
let height = sidebarHeight > contentHeight ? sidebarHeight + 30 : contentHeight;
|
||||
height = height + "px";
|
||||
let height = sidebarHeight > contentHeight ? sidebarHeight : contentHeight;
|
||||
height = (height + 30)+ "px";
|
||||
|
||||
$('.account-content').css('height', height);
|
||||
}, 0);
|
||||
|
|
|
|||
|
|
@ -13,12 +13,18 @@
|
|||
@php
|
||||
$subMenuCollection = [];
|
||||
|
||||
$showCompare = core()->getConfigData('general.content.shop.compare_option') == "1" ? true : false;
|
||||
|
||||
try {
|
||||
$subMenuCollection['profile'] = $menuItem['children']['profile'];
|
||||
$subMenuCollection['orders'] = $menuItem['children']['orders'];
|
||||
$subMenuCollection['downloadables'] = $menuItem['children']['downloadables'];
|
||||
$subMenuCollection['wishlist'] = $menuItem['children']['wishlist'];
|
||||
$subMenuCollection['compare'] = $menuItem['children']['compare'];
|
||||
|
||||
if ($showCompare) {
|
||||
$subMenuCollection['compare'] = $menuItem['children']['compare'];
|
||||
}
|
||||
|
||||
$subMenuCollection['reviews'] = $menuItem['children']['reviews'];
|
||||
$subMenuCollection['address'] = $menuItem['children']['address'];
|
||||
|
||||
|
|
|
|||
|
|
@ -121,11 +121,7 @@
|
|||
this.$root.headerItemsCount++;
|
||||
this.setStorageValue('wishlist_product', updatedItems);
|
||||
|
||||
window.showAlert(
|
||||
`alert-success`,
|
||||
this.__('shop.general.alert.success'),
|
||||
`${this.__('customer.compare.removed')}`
|
||||
);
|
||||
window.showAlert(`alert-success`, this.__('shop.general.alert.success'), `${this.__('customer.app.wishlist.removed')}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -10,7 +10,10 @@
|
|||
<shimmer-component v-if="isLoading && !isMobileView"></shimmer-component>
|
||||
|
||||
<template v-else-if="newProducts.length > 0">
|
||||
<card-list-header heading="{{ __('shop::app.home.new-products') }}">
|
||||
<card-list-header
|
||||
row-class="pl-26"
|
||||
heading="{{ __('shop::app.home.new-products') }}"
|
||||
>
|
||||
</card-list-header>
|
||||
|
||||
{!! view_render_event('bagisto.shop.new-products.before') !!}
|
||||
|
|
|
|||
4
packages/Webkul/Velocity/src/Resources/views/shop/layouts/master.blade.php
Normal file → Executable file
4
packages/Webkul/Velocity/src/Resources/views/shop/layouts/master.blade.php
Normal file → Executable file
|
|
@ -130,6 +130,10 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-parent" id="loader" style="top: 0" v-show="showPageLoader">
|
||||
<overlay-loader :is-open="true"></overlay-loader>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- below footer -->
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage')
|
||||
@inject ('reviewHelper', 'Webkul\Product\Helpers\Review')
|
||||
@inject ('toolbarHelper', 'Webkul\Product\Helpers\Toolbar')
|
||||
{{-- @include('shop::UI.product-quick-view') --}}
|
||||
@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage')
|
||||
|
||||
@push('css')
|
||||
<style type="text/css">
|
||||
|
|
@ -20,9 +19,7 @@
|
|||
if (isset($checkmode) && $checkmode && $toolbarHelper->getCurrentMode() == "list") {
|
||||
$list = true;
|
||||
}
|
||||
@endphp
|
||||
|
||||
@php
|
||||
$productBaseImage = $productImageHelper->getProductBaseImage($product);
|
||||
$totalReviews = $reviewHelper->getTotalReviews($product);
|
||||
$avgRatings = ceil($reviewHelper->getAverageRating($product));
|
||||
|
|
@ -66,10 +63,11 @@
|
|||
|
||||
<div class="cart-wish-wrap mt5">
|
||||
@include ('shop::products.add-to-cart', [
|
||||
'product' => $product,
|
||||
'showCompare' => true,
|
||||
'addWishlistClass' => 'pl10',
|
||||
'addToCartBtnClass' => 'medium-padding'
|
||||
'addWishlistClass' => 'pl10',
|
||||
'product' => $product,
|
||||
'addToCartBtnClass' => 'medium-padding',
|
||||
'showCompare' => core()->getConfigData('general.content.shop.compare_option') == "1"
|
||||
? true : false,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -122,13 +120,14 @@
|
|||
|
||||
<div class="cart-wish-wrap no-padding ml0">
|
||||
@include ('shop::products.add-to-cart', [
|
||||
'showCompare' => true,
|
||||
'product' => $product,
|
||||
'btnText' => $btnText ?? null,
|
||||
'moveToCart' => $moveToCart ?? null,
|
||||
'reloadPage' => $reloadPage ?? null,
|
||||
'addToCartForm' => $addToCartForm ?? false,
|
||||
'addToCartBtnClass' => $addToCartBtnClass ?? '',
|
||||
'showCompare' => core()->getConfigData('general.content.shop.compare_option') == "1"
|
||||
? true : false,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
@inject ('productFlatRepository', 'Webkul\Product\Repositories\ProductFlatRepository')
|
||||
|
||||
<?php
|
||||
$filterAttributes = [];
|
||||
$filterAttributes = $attributes = [];
|
||||
$maxPrice = 0;
|
||||
|
||||
if (isset($category)) {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,12 @@
|
|||
@inject ('productRatingHelper', 'Webkul\Product\Helpers\Review')
|
||||
@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage')
|
||||
|
||||
@php
|
||||
$direction = core()->getCurrentLocale()->direction;
|
||||
@endphp
|
||||
|
||||
<recently-viewed
|
||||
add-class="{{ isset($addClass) ? $addClass : '' }}"
|
||||
add-class="{{ isset($addClass) ? $addClass . " $direction": '' }}"
|
||||
quantity="{{ isset($quantity) ? $quantity : null }}"
|
||||
add-class-wrapper="{{ isset($addClassWrapper) ? $addClassWrapper : '' }}">
|
||||
</recently-viewed>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,9 @@
|
|||
@include ('shop::products.add-to-cart', [
|
||||
'form' => false,
|
||||
'product' => $product,
|
||||
'showCompare' => true,
|
||||
'showCartIcon' => false,
|
||||
'showCompare' => core()->getConfigData('general.content.shop.compare_option') == "1"
|
||||
? true : false,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,11 +6,29 @@
|
|||
{{ __('shop::app.search.page-title') }}
|
||||
@endsection
|
||||
|
||||
@push('css')
|
||||
<style type="text/css">
|
||||
@media only screen and (max-width: 992px) {
|
||||
.main-content-wrapper .vc-header {
|
||||
box-shadow: unset;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content-wrapper')
|
||||
<div class="container">
|
||||
<section class="search-container row">
|
||||
<div class="container category-page-wrapper">
|
||||
<section class="search-container row category-container">
|
||||
@if (request('image-search'))
|
||||
<image-search-result-component></image-search-result-component>
|
||||
@endif
|
||||
|
||||
@if ($results && $results->count())
|
||||
<div class="filters-container col-12">
|
||||
<div class="filters-container col-12" style="
|
||||
margin-top: 20px;
|
||||
padding-left: 0px !important;
|
||||
padding-bottom: 10px !important;
|
||||
">
|
||||
@include ('shop::products.list.toolbar')
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -48,4 +66,43 @@
|
|||
@endif
|
||||
</section>
|
||||
</div>
|
||||
@endsection
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/x-template" id="image-search-result-component-template">
|
||||
<div class="image-search-result">
|
||||
<div class="searched-image">
|
||||
<img :src="searchedImageUrl"/>
|
||||
</div>
|
||||
|
||||
<div class="searched-terms">
|
||||
<h3 class="fw6 fs20 mb-4">
|
||||
{{ __('shop::app.search.analysed-keywords') }}
|
||||
</h3>
|
||||
|
||||
<div class="term-list">
|
||||
<a v-for="term in searched_terms" :href="'{{ route('shop.search.index') }}?term=' + term">
|
||||
@{{ term }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('image-search-result-component', {
|
||||
template: '#image-search-result-component-template',
|
||||
|
||||
data: function() {
|
||||
return {
|
||||
searched_terms: [],
|
||||
searchedImageUrl: localStorage.searchedImageUrl,
|
||||
}
|
||||
},
|
||||
|
||||
created: function() {
|
||||
this.searched_terms = localStorage.searched_terms.split('_');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
@ -2,4 +2,4 @@
|
|||
|
||||
@section('title', __('Service Unavailable'))
|
||||
@section('code', '503')
|
||||
@section('message', __($exception->getMessage() ?: 'Srvice Unavailable'))
|
||||
@section('message', __($exception->getMessage() ?: 'Service Unavailable'))
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<table border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ $url }}" class="button button-{{ $color ?? 'primary' }}" target="_blank">{{ $slot }}</a>
|
||||
<a href="{{ $url }}" class="button button-{{ $color ?? 'primary' }}" target="_blank" rel="noopener">{{ $slot }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<tr>
|
||||
<td class="header">
|
||||
<a href="{{ $url }}">
|
||||
<a href="{{ $url }}" style="display: inline-block;">
|
||||
@if (trim($slot) === 'Laravel')
|
||||
<img src="https://laravel.com/img/notification-logo.png" class="logo" alt="Laravel Logo">
|
||||
@else
|
||||
{{ $slot }}
|
||||
@endif
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -2,25 +2,21 @@
|
|||
|
||||
body,
|
||||
body *:not(html):not(style):not(br):not(tr):not(code) {
|
||||
box-sizing: border-box;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,
|
||||
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #f8fafc;
|
||||
color: #74787e;
|
||||
-webkit-text-size-adjust: none;
|
||||
background-color: #ffffff;
|
||||
color: #718096;
|
||||
height: 100%;
|
||||
hyphens: auto;
|
||||
line-height: 1.4;
|
||||
margin: 0;
|
||||
-moz-hyphens: auto;
|
||||
-ms-word-break: break-all;
|
||||
padding: 0;
|
||||
width: 100% !important;
|
||||
-webkit-hyphens: auto;
|
||||
-webkit-text-size-adjust: none;
|
||||
word-break: break-all;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
p,
|
||||
|
|
@ -43,14 +39,13 @@ a img {
|
|||
|
||||
h1 {
|
||||
color: #3d4852;
|
||||
font-size: 19px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
margin-top: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #3d4852;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-top: 0;
|
||||
|
|
@ -58,7 +53,6 @@ h2 {
|
|||
}
|
||||
|
||||
h3 {
|
||||
color: #3d4852;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
margin-top: 0;
|
||||
|
|
@ -66,7 +60,6 @@ h3 {
|
|||
}
|
||||
|
||||
p {
|
||||
color: #3d4852;
|
||||
font-size: 16px;
|
||||
line-height: 1.5em;
|
||||
margin-top: 0;
|
||||
|
|
@ -84,22 +77,22 @@ img {
|
|||
/* Layout */
|
||||
|
||||
.wrapper {
|
||||
background-color: #f8fafc;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 100%;
|
||||
background-color: #edf2f7;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
|
|
@ -110,154 +103,176 @@ img {
|
|||
}
|
||||
|
||||
.header a {
|
||||
color: #bbbfc3;
|
||||
color: #3d4852;
|
||||
font-size: 19px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 white;
|
||||
}
|
||||
|
||||
/* Logo */
|
||||
|
||||
.logo {
|
||||
height: 75px;
|
||||
width: 75px;
|
||||
}
|
||||
|
||||
/* Body */
|
||||
|
||||
.body {
|
||||
background-color: #ffffff;
|
||||
border-bottom: 1px solid #edeff2;
|
||||
border-top: 1px solid #edeff2;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 100%;
|
||||
background-color: #edf2f7;
|
||||
border-bottom: 1px solid #edf2f7;
|
||||
border-top: 1px solid #edf2f7;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.inner-body {
|
||||
background-color: #ffffff;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 570px;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 570px;
|
||||
background-color: #ffffff;
|
||||
border-color: #e8e5ef;
|
||||
border-radius: 2px;
|
||||
border-width: 1px;
|
||||
box-shadow: 0 2px 0 rgba(0, 0, 150, 0.025), 2px 4px 0 rgba(0, 0, 150, 0.015);
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 570px;
|
||||
}
|
||||
|
||||
/* Subcopy */
|
||||
|
||||
.subcopy {
|
||||
border-top: 1px solid #edeff2;
|
||||
border-top: 1px solid #e8e5ef;
|
||||
margin-top: 25px;
|
||||
padding-top: 25px;
|
||||
}
|
||||
|
||||
.subcopy p {
|
||||
font-size: 12px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
|
||||
.footer {
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 570px;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
width: 570px;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 570px;
|
||||
}
|
||||
|
||||
.footer p {
|
||||
color: #aeaeae;
|
||||
color: #b0adc5;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: #b0adc5;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
|
||||
.table table {
|
||||
margin: 30px auto;
|
||||
width: 100%;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 100%;
|
||||
margin: 30px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.table th {
|
||||
border-bottom: 1px solid #edeff2;
|
||||
padding-bottom: 8px;
|
||||
margin: 0;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.table td {
|
||||
color: #74787e;
|
||||
font-size: 15px;
|
||||
line-height: 18px;
|
||||
padding: 10px 0;
|
||||
margin: 0;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.content-cell {
|
||||
padding: 35px;
|
||||
max-width: 100vw;
|
||||
padding: 32px;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
|
||||
.action {
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 100%;
|
||||
margin: 30px auto;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 100%;
|
||||
}
|
||||
|
||||
.button {
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16);
|
||||
-webkit-text-size-adjust: none;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-decoration: none;
|
||||
-webkit-text-size-adjust: none;
|
||||
}
|
||||
|
||||
.button-blue,
|
||||
.button-primary {
|
||||
background-color: #3490dc;
|
||||
border-top: 10px solid #3490dc;
|
||||
border-right: 18px solid #3490dc;
|
||||
border-bottom: 10px solid #3490dc;
|
||||
border-left: 18px solid #3490dc;
|
||||
background-color: #2d3748;
|
||||
border-bottom: 8px solid #2d3748;
|
||||
border-left: 18px solid #2d3748;
|
||||
border-right: 18px solid #2d3748;
|
||||
border-top: 8px solid #2d3748;
|
||||
}
|
||||
|
||||
.button-green,
|
||||
.button-success {
|
||||
background-color: #38c172;
|
||||
border-top: 10px solid #38c172;
|
||||
border-right: 18px solid #38c172;
|
||||
border-bottom: 10px solid #38c172;
|
||||
border-left: 18px solid #38c172;
|
||||
background-color: #48bb78;
|
||||
border-bottom: 8px solid #48bb78;
|
||||
border-left: 18px solid #48bb78;
|
||||
border-right: 18px solid #48bb78;
|
||||
border-top: 8px solid #48bb78;
|
||||
}
|
||||
|
||||
.button-red,
|
||||
.button-error {
|
||||
background-color: #e3342f;
|
||||
border-top: 10px solid #e3342f;
|
||||
border-right: 18px solid #e3342f;
|
||||
border-bottom: 10px solid #e3342f;
|
||||
border-left: 18px solid #e3342f;
|
||||
background-color: #e53e3e;
|
||||
border-bottom: 8px solid #e53e3e;
|
||||
border-left: 18px solid #e53e3e;
|
||||
border-right: 18px solid #e53e3e;
|
||||
border-top: 8px solid #e53e3e;
|
||||
}
|
||||
|
||||
/* Panels */
|
||||
|
||||
.panel {
|
||||
margin: 0 0 21px;
|
||||
border-left: #2d3748 solid 4px;
|
||||
margin: 21px 0;
|
||||
}
|
||||
|
||||
.panel-content {
|
||||
background-color: #f1f5f8;
|
||||
background-color: #edf2f7;
|
||||
color: #718096;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.panel-content p {
|
||||
color: #718096;
|
||||
}
|
||||
|
||||
.panel-item {
|
||||
padding: 0;
|
||||
}
|
||||
|
|
@ -267,26 +282,8 @@ img {
|
|||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
/* Promotions */
|
||||
/* Utilities */
|
||||
|
||||
.promotion {
|
||||
background-color: #ffffff;
|
||||
border: 2px dashed #9ba2ab;
|
||||
margin: 0;
|
||||
margin-bottom: 25px;
|
||||
margin-top: 25px;
|
||||
padding: 24px;
|
||||
width: 100%;
|
||||
-premailer-cellpadding: 0;
|
||||
-premailer-cellspacing: 0;
|
||||
-premailer-width: 100%;
|
||||
}
|
||||
|
||||
.promotion h1 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.promotion p {
|
||||
font-size: 15px;
|
||||
text-align: center;
|
||||
.break-all {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,13 +52,11 @@
|
|||
@slot('subcopy')
|
||||
@lang(
|
||||
"If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\n".
|
||||
'into your web browser: [:displayableActionUrl](:actionURL)',
|
||||
'into your web browser:',
|
||||
[
|
||||
'actionText' => $actionText,
|
||||
'actionURL' => $actionUrl,
|
||||
'displayableActionUrl' => $displayableActionUrl,
|
||||
]
|
||||
)
|
||||
) <span class="break-all">[{{ $displayableActionUrl }}]({{ $actionUrl }})</span>
|
||||
@endslot
|
||||
@endisset
|
||||
@endcomponent
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
@if ($paginator->hasPages())
|
||||
<nav role="navigation" aria-label="Pagination Navigation" class="flex justify-between">
|
||||
{{-- Previous Page Link --}}
|
||||
@if ($paginator->onFirstPage())
|
||||
<span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md">
|
||||
{!! __('pagination.previous') !!}
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.previous') !!}
|
||||
</a>
|
||||
@endif
|
||||
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
<a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.next') !!}
|
||||
</a>
|
||||
@else
|
||||
<span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md">
|
||||
{!! __('pagination.next') !!}
|
||||
</span>
|
||||
@endif
|
||||
</nav>
|
||||
@endif
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
@if ($paginator->hasPages())
|
||||
<nav role="navigation" aria-label="Pagination Navigation" class="flex items-center justify-between">
|
||||
<div class="flex justify-between flex-1 sm:hidden">
|
||||
@if ($paginator->onFirstPage())
|
||||
<span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md">
|
||||
{!! __('pagination.previous') !!}
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $paginator->previousPageUrl() }}" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.previous') !!}
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if ($paginator->hasMorePages())
|
||||
<a href="{{ $paginator->nextPageUrl() }}" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.next') !!}
|
||||
</a>
|
||||
@else
|
||||
<span class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md">
|
||||
{!! __('pagination.next') !!}
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
|
||||
<div>
|
||||
<p class="text-sm text-gray-700 leading-5">
|
||||
{!! __('Showing') !!}
|
||||
<span class="font-medium">{{ $paginator->firstItem() }}</span>
|
||||
{!! __('to') !!}
|
||||
<span class="font-medium">{{ $paginator->lastItem() }}</span>
|
||||
{!! __('of') !!}
|
||||
<span class="font-medium">{{ $paginator->total() }}</span>
|
||||
{!! __('results') !!}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<span class="relative z-0 inline-flex shadow-sm">
|
||||
{{-- Previous Page Link --}}
|
||||
@if ($paginator->onFirstPage())
|
||||
<span aria-disabled="true" aria-label="{{ __('pagination.previous') }}">
|
||||
<span class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-l-md leading-5" aria-hidden="true">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.previous') }}">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</a>
|
||||
@endif
|
||||
|
||||
{{-- Pagination Elements --}}
|
||||
@foreach ($elements as $element)
|
||||
{{-- "Three Dots" Separator --}}
|
||||
@if (is_string($element))
|
||||
<span aria-disabled="true">
|
||||
<span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 cursor-default leading-5">{{ $element }}</span>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
{{-- Array Of Links --}}
|
||||
@if (is_array($element))
|
||||
@foreach ($element as $page => $url)
|
||||
@if ($page == $paginator->currentPage())
|
||||
<span aria-current="page">
|
||||
<span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5">{{ $page }}</span>
|
||||
</span>
|
||||
@else
|
||||
<a href="{{ $url }}" class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 hover:text-gray-500 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150" aria-label="{{ __('Go to page :page', ['page' => $page]) }}">
|
||||
{{ $page }}
|
||||
</a>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
<a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.next') }}">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</a>
|
||||
@else
|
||||
<span aria-disabled="true" aria-label="{{ __('pagination.next') }}">
|
||||
<span class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-r-md leading-5" aria-hidden="true">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@endif
|
||||
Loading…
Reference in New Issue