checkout process
This commit is contained in:
commit
1be2127591
|
|
@ -2,16 +2,50 @@
|
|||
|
||||
return [
|
||||
|
||||
[
|
||||
'code' => 'flatrate',
|
||||
'title' => 'Flat Rate',
|
||||
'flatrate' => [
|
||||
[
|
||||
'code' => 'flatrate_one',
|
||||
'title' => 'Flatrate One',
|
||||
'name' => 'fixed 20% discount for today',
|
||||
'description' => 'this is a flat rate',
|
||||
'status' => '1',
|
||||
'price' => '10',
|
||||
'type' => [
|
||||
'per_unit' => 'Per Unit',
|
||||
'per order' => 'Per Order',
|
||||
],
|
||||
'class' => 'Webkul\Shipping\Helper\Rate',
|
||||
],
|
||||
|
||||
[
|
||||
'code' => 'flatrate_two',
|
||||
'title' => 'Flatrate Two',
|
||||
'name' => 'fixed 50% discount till 10/10/2018',
|
||||
'description' => 'this is a flat rate',
|
||||
'status' => '1',
|
||||
'price' => '100',
|
||||
'type' => [
|
||||
'per unit' => 'Per Unit',
|
||||
'per order' => 'Per Order',
|
||||
],
|
||||
'class' => 'Webkul\Shipping\Helper\Rate',
|
||||
],
|
||||
|
||||
[
|
||||
'code' => 'flatrate_three',
|
||||
'title' => 'Flatrate Three',
|
||||
'name' => 'fixed 30% discount',
|
||||
'description' => 'this is a flat rate',
|
||||
'status' => '1',
|
||||
'price' => '1000',
|
||||
'type' => [
|
||||
'per unit' => 'Per Unit',
|
||||
'per order' => 'Per Order',
|
||||
],
|
||||
'class' => 'Webkul\Shipping\Helper\Rate',
|
||||
]
|
||||
]
|
||||
|
||||
]
|
||||
|
||||
?>
|
||||
|
|
@ -73,9 +73,9 @@
|
|||
<div class="hide">
|
||||
<accordian :title="'{{ __('admin::app.catalog.attributes.options') }}'" :active="true" :id="'options'">
|
||||
<div slot="body">
|
||||
|
||||
|
||||
<option-wrapper></option-wrapper>
|
||||
|
||||
|
||||
</div>
|
||||
</accordian>
|
||||
</div>
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
<option value="0">{{ __('admin::app.catalog.attributes.no') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="control-group">
|
||||
<label for="value_per_locale">{{ __('admin::app.catalog.attributes.value_per_locale') }}</label>
|
||||
<select class="control" id="value_per_locale" name="value_per_locale">
|
||||
|
|
@ -130,7 +130,7 @@
|
|||
<option value="1">{{ __('admin::app.catalog.attributes.yes') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="control-group">
|
||||
<label for="value_per_channel">{{ __('admin::app.catalog.attributes.value_per_channel') }}</label>
|
||||
<select class="control" id="value_per_channel" name="value_per_channel">
|
||||
|
|
@ -138,7 +138,7 @@
|
|||
<option value="1">{{ __('admin::app.catalog.attributes.yes') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="control-group">
|
||||
<label for="is_filterable">{{ __('admin::app.catalog.attributes.is_filterable') }}</label>
|
||||
<select class="control" id="is_filterable" name="is_filterable">
|
||||
|
|
@ -146,7 +146,7 @@
|
|||
<option value="1">{{ __('admin::app.catalog.attributes.yes') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="control-group">
|
||||
<label for="is_configurable">{{ __('admin::app.catalog.attributes.is_configurable') }}</label>
|
||||
<select class="control" id="is_configurable" name="is_configurable">
|
||||
|
|
@ -154,7 +154,7 @@
|
|||
<option value="1">{{ __('admin::app.catalog.attributes.yes') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="control-group">
|
||||
<label for="is_visible_on_front">{{ __('admin::app.catalog.attributes.is_visible_on_front') }}</label>
|
||||
<select class="control" id="is_visible_on_front" name="is_visible_on_front">
|
||||
|
|
@ -184,7 +184,7 @@
|
|||
@foreach(Webkul\Core\Models\Locale::all() as $locale)
|
||||
|
||||
<th>{{ $locale->name . ' (' . $locale->code . ')' }}</th>
|
||||
|
||||
|
||||
@endforeach
|
||||
|
||||
<th>{{ __('admin::app.catalog.attributes.position') }}</th>
|
||||
|
|
@ -192,7 +192,7 @@
|
|||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
||||
<tbody>
|
||||
<tr v-for="row in optionRows">
|
||||
<td>
|
||||
|
|
@ -244,7 +244,7 @@
|
|||
|
||||
var optionWrapper = Vue.component('option-wrapper', {
|
||||
|
||||
template: '#options-template',
|
||||
template: '#options-template',
|
||||
|
||||
data: () => ({
|
||||
optionRowCount: 0,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Cart\Http\Controllers;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Auth;
|
||||
|
||||
/**
|
||||
* Chekout controller for the customer
|
||||
* and guest for placing order
|
||||
*
|
||||
* @author Rahul Shukla <rahulshukla.symfony517@webkul.com>
|
||||
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
class CheckoutController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
protected $_config;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// $this->middleware(['customer', 'guest']);
|
||||
|
||||
$this->_config = request('_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$customer_id = auth()->guard('customer')->user();
|
||||
|
||||
return view($this->_config['view'],compact('customer_id'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ class CartServiceProvider extends ServiceProvider
|
|||
public function boot(Router $router)
|
||||
{
|
||||
|
||||
$router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
|
||||
// $router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
|
||||
|
||||
$this->loadMigrationsFrom(__DIR__ . '/../Database/migrations');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,6 +132,22 @@ class Product extends Model
|
|||
return $this->attribute_family->custom_attributes->pluck('code')->contains($attribute);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $key
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSaleable()
|
||||
{
|
||||
if($this->status) {
|
||||
if($this->inventories->sum('qty')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an attribute from the model.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -0,0 +1,228 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Product\Product;
|
||||
|
||||
use Webkul\Attribute\Repositories\AttributeOptionRepository as AttributeOption;
|
||||
use Webkul\Product\Product\Gallery;
|
||||
use Webkul\Product\Product\Price;
|
||||
|
||||
class ConfigurableOption extends AbstractProduct
|
||||
{
|
||||
/**
|
||||
* AttributeOptionRepository object
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $attributeOption;
|
||||
|
||||
/**
|
||||
* Gallery object
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $gallery;
|
||||
|
||||
/**
|
||||
* Price object
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $price;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @param Webkul\Attribute\Repositories\AttributeOptionRepository $attributeOption
|
||||
* @param Webkul\Product\Product\Gallery $gallery
|
||||
* @param Webkul\Product\Product\Price $price
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(
|
||||
AttributeOption $attributeOption,
|
||||
Gallery $gallery,
|
||||
Price $price
|
||||
)
|
||||
{
|
||||
$this->attributeOption = $attributeOption;
|
||||
|
||||
$this->gallery = $gallery;
|
||||
|
||||
$this->price = $price;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the allowed variants
|
||||
*
|
||||
* @param Product $product
|
||||
* @return float
|
||||
*/
|
||||
public function getAllowProducts($product)
|
||||
{
|
||||
$variants = [];
|
||||
|
||||
foreach ($product->variants as $variant) {
|
||||
if ($variant->isSaleable()) {
|
||||
$variants[] = $variant;
|
||||
}
|
||||
}
|
||||
|
||||
return $variants;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the allowed variants JSON
|
||||
*
|
||||
* @param Product $product
|
||||
* @return float
|
||||
*/
|
||||
public function getConfigurationConfig($product)
|
||||
{
|
||||
$options = $this->getOptions($product, $this->getAllowProducts($product));
|
||||
|
||||
$config = [
|
||||
'attributes' => $this->getAttributesData($product, $options),
|
||||
'index' => isset($options['index']) ? $options['index'] : [],
|
||||
'variant_prices' => $this->getVariantPrices($product),
|
||||
'variant_images' => $this->getVariantImages($product),
|
||||
'chooseText' => trans('shop::app.products.choose-option')
|
||||
];
|
||||
|
||||
return $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get allowed attributes
|
||||
*
|
||||
* @param Product $product
|
||||
* @return array
|
||||
*/
|
||||
public function getAllowAttributes($product)
|
||||
{
|
||||
return $product->super_attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Configurable Product Options
|
||||
*
|
||||
* @param Product $currentProduct
|
||||
* @param array $allowedProducts
|
||||
* @return array
|
||||
*/
|
||||
public function getOptions($currentProduct, $allowedProducts)
|
||||
{
|
||||
$options = [];
|
||||
|
||||
$allowAttributes = $this->getAllowAttributes($currentProduct);
|
||||
|
||||
foreach ($allowedProducts as $product) {
|
||||
|
||||
$productId = $product->id;
|
||||
|
||||
foreach ($allowAttributes as $productAttribute) {
|
||||
$productAttributeId = $productAttribute->id;
|
||||
|
||||
$attributeValue = $product->{$productAttribute->code};
|
||||
|
||||
$options[$productAttributeId][$attributeValue][] = $productId;
|
||||
|
||||
$options['index'][$productId][$productAttributeId] = $attributeValue;
|
||||
}
|
||||
}
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get product attributes
|
||||
*
|
||||
* @param Product $product
|
||||
* @param array $options
|
||||
* @return array
|
||||
*/
|
||||
public function getAttributesData($product, array $options = [])
|
||||
{
|
||||
$defaultValues = [];
|
||||
|
||||
$attributes = [];
|
||||
|
||||
foreach ($product->super_attributes as $attribute) {
|
||||
|
||||
$attributeOptionsData = $this->getAttributeOptionsData($attribute, $options);
|
||||
|
||||
if ($attributeOptionsData) {
|
||||
$attributeId = $attribute->id;
|
||||
|
||||
$attributes[] = [
|
||||
'id' => $attributeId,
|
||||
'code' => $attribute->code,
|
||||
'label' => $attribute->name,
|
||||
'options' => $attributeOptionsData
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Attribute $attribute
|
||||
* @param array $options
|
||||
* @return array
|
||||
*/
|
||||
protected function getAttributeOptionsData($attribute, $options)
|
||||
{
|
||||
$attributeOptionsData = [];
|
||||
|
||||
foreach ($attribute->options as $attributeOption) {
|
||||
|
||||
$optionId = $attributeOption->id;
|
||||
|
||||
if(isset($options[$attribute->id][$optionId])) {
|
||||
$attributeOptionsData[] = [
|
||||
'id' => $optionId,
|
||||
'label' => $attributeOption->label,
|
||||
'products' => $options[$attribute->id][$optionId]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $attributeOptionsData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get product prices for configurable variations
|
||||
*
|
||||
* @param Product $product
|
||||
* @return array
|
||||
*/
|
||||
protected function getVariantPrices($product)
|
||||
{
|
||||
$prices = [];
|
||||
|
||||
foreach ($this->getAllowProducts($product) as $variant) {
|
||||
$prices[$variant->id] = [
|
||||
'regular_price' => $variant->price,
|
||||
'final_price' => $this->price->getMinimalPrice($variant),
|
||||
];
|
||||
}
|
||||
|
||||
return $prices;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get product images for configurable variations
|
||||
*
|
||||
* @param Product $product
|
||||
* @return array
|
||||
*/
|
||||
protected function getVariantImages($product)
|
||||
{
|
||||
$images = [];
|
||||
|
||||
foreach ($this->getAllowProducts($product) as $variant) {
|
||||
$images[$variant->id] = $this->gallery->getImages($variant);
|
||||
}
|
||||
|
||||
return $images;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Product\Product;
|
||||
|
||||
use Webkul\Attribute\Repositories\AttributeOptionRepository as AttributeOption;
|
||||
|
||||
class Gallery extends AbstractProduct
|
||||
{
|
||||
/**
|
||||
* Retrieve collection of gallery images
|
||||
*
|
||||
* @param Product $product
|
||||
* @return array
|
||||
*/
|
||||
public function getImages($product)
|
||||
{
|
||||
$images[] = [
|
||||
'small_image_url' => '',
|
||||
'medium_image_url' => '',
|
||||
'large_image_url' => '',
|
||||
];
|
||||
|
||||
return $images;
|
||||
}
|
||||
}
|
||||
|
|
@ -78,7 +78,7 @@ class Price extends AbstractProduct
|
|||
public function getSpecialPrice($product)
|
||||
{
|
||||
if($this->haveSpecialPrice($product)) {
|
||||
return $product->special_price;
|
||||
return $product->special_price;
|
||||
} else {
|
||||
return $product->price;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,17 @@ namespace Webkul\Product\Product;
|
|||
|
||||
class Review extends AbstractProduct
|
||||
{
|
||||
/**
|
||||
* Returns the product's avg rating
|
||||
*
|
||||
* @param Product $product
|
||||
* @return float
|
||||
*/
|
||||
public function getReviews($product)
|
||||
{
|
||||
return $product->reviews()->where('status', 'approved');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the product's avg rating
|
||||
*
|
||||
|
|
@ -12,7 +23,7 @@ class Review extends AbstractProduct
|
|||
*/
|
||||
public function getAverageRating($product)
|
||||
{
|
||||
return round($product->reviews->where('status',1)->average('rating'));
|
||||
return number_format(round($product->reviews()->where('status', 'approved')->average('rating'), 2), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -23,7 +34,7 @@ class Review extends AbstractProduct
|
|||
*/
|
||||
public function getTotalReviews($product)
|
||||
{
|
||||
return $product->reviews()->where('status',1)->count();
|
||||
return $product->reviews()->where('status', 'approved')->count();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Shipping\Carrier;
|
||||
|
||||
use Webkul\Shipping\Contracts\AbstractShipping;
|
||||
use Config;
|
||||
|
||||
/**
|
||||
* Class Rate.
|
||||
*
|
||||
*/
|
||||
class FlatRate extends AbstractShipping
|
||||
{
|
||||
|
||||
public function calculate()
|
||||
{
|
||||
$all = Config::get('carrier');
|
||||
return $all;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -3,15 +3,13 @@
|
|||
namespace Webkul\Shipping\Contracts;
|
||||
|
||||
/**
|
||||
* Interface ShippingInterface
|
||||
* Abstract class Shipping
|
||||
* @author Rahul Shukla <rahulshukla.symfony517@webkul.com>
|
||||
*/
|
||||
|
||||
interface ShippingInterface
|
||||
abstract class AbstractShipping
|
||||
{
|
||||
|
||||
public function calculate();
|
||||
|
||||
abstract public function calculate();
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Shipping\Helper;
|
||||
|
||||
use Webkul\Shipping\Carrier\FlatRate;
|
||||
|
||||
/**
|
||||
* Class Rate.
|
||||
*
|
||||
*/
|
||||
class Rate extends FlatRate
|
||||
{
|
||||
public function collectRates()
|
||||
{
|
||||
$data = $this->calculate();
|
||||
$rates =[];
|
||||
|
||||
foreach($data as $rate){
|
||||
foreach($rate as $flat){
|
||||
$rates[$flat['name']] = $flat['price'];
|
||||
}
|
||||
}
|
||||
|
||||
return $rates;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Shipping\Helpers;
|
||||
|
||||
|
||||
use Webkul\Shipping\Contracts\ShippingInterface;
|
||||
|
||||
/**
|
||||
* Class Rate.
|
||||
*
|
||||
* @package namespace App\Criteria;
|
||||
*/
|
||||
class Rate implements ShippingInterface
|
||||
{
|
||||
|
||||
public function calculate()
|
||||
{
|
||||
return 'gg';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -16,9 +16,13 @@ class ShippingServiceProvider extends ServiceProvider
|
|||
public function boot(Router $router)
|
||||
{
|
||||
|
||||
$router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
|
||||
// $router->aliasMiddleware('customer', RedirectIfNotCustomer::class);
|
||||
|
||||
$this->loadMigrationsFrom(__DIR__ . '/../Database/migrations');
|
||||
// $this->loadMigrationsFrom(__DIR__ . '/../Database/migrations');
|
||||
|
||||
// include __DIR__ . '/../Http/routes.php';
|
||||
|
||||
// $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'shipping');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -10,10 +10,15 @@ Route::group(['middleware' => ['web']], function () {
|
|||
'view' => 'shop::products.index'
|
||||
]);
|
||||
|
||||
Route::get('/checkout', 'Webkul\Cart\Http\Controllers\CheckoutController@index')->defaults('_config', [
|
||||
'view' => 'shop::customers.checkout.index'
|
||||
])->name('shop.checkout');
|
||||
|
||||
|
||||
/* dummy routes */
|
||||
Route::view('/customer/order','shop::customers.account.orders.index');
|
||||
|
||||
Route::view('/customer/checkout','shop::customers.checkout.index');
|
||||
// Route::view('/customer/checkout','shop::customers.checkout.index');
|
||||
|
||||
Route::view('/customer/signin','shop::customers.checkout.signin');
|
||||
|
||||
|
|
@ -22,6 +27,10 @@ Route::group(['middleware' => ['web']], function () {
|
|||
Route::view('/customer/payment_method','shop::customers.checkout.payment-method');
|
||||
|
||||
Route::view('/customer/payment_complete','shop::customers.checkout.complete');
|
||||
|
||||
Route::view('/test','shop::index');
|
||||
|
||||
|
||||
/* dummy routes ends here */
|
||||
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -49,6 +49,9 @@ return [
|
|||
'specification' => 'Specification',
|
||||
'total-reviews' => ':total Reviews',
|
||||
'by' => 'By :name',
|
||||
'up-sell-title' => 'We found other products you might like!'
|
||||
'up-sell-title' => 'We found other products you might like!',
|
||||
'reviews-title' => 'Ratings & Reviews',
|
||||
'write-review-btn' => 'Write Review',
|
||||
'choose-option' => 'Choose an option'
|
||||
]
|
||||
];
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
<div class="checkout-process">
|
||||
|
||||
<div class="left-side">
|
||||
<div class="checkout-menu">
|
||||
|
||||
<ul class="checkout-detail">
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator active">
|
||||
<img src="{{asset('themes/default/assets/images/address.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/shipping.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Shipping</span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/payment.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Payment</span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/finish.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Complete</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="right-side">
|
||||
<div class="purchase-detail">
|
||||
<div class="price">
|
||||
<span>Price Detail</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>2 Items Price</label>
|
||||
<label class="right">$ 2,506.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Delivery Charges</label>
|
||||
<label class="right">$ 40.00</label>
|
||||
</span>
|
||||
</div>
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Coupan Discount</label>
|
||||
<label class="right">$ 25.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
<div class="payble-amount">
|
||||
<span>
|
||||
<label>Amount Payble</label>
|
||||
<label class="right">$ 2571.00</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<div class="checkout-process">
|
||||
|
||||
@include('shop::customers.checkout.common.nav-left')
|
||||
|
||||
@include('shop::customers.checkout.common.nav-right')
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
<div class="left-side">
|
||||
<div class="checkout-menu">
|
||||
|
||||
<ul class="checkout-detail">
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator" v-bind:class="{ active: isGuest }">
|
||||
<img src="{{asset('themes/default/assets/images/address.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Information</span>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="wrapper" >
|
||||
<div class="decorator" v-bind:class="{ active: isShip }">
|
||||
<img src="{{asset('themes/default/assets/images/shipping.svg')}}"/>
|
||||
</div>
|
||||
|
||||
<span>Shipping</span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/payment.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Payment</span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/finish.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Complete</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<div class="right-side">
|
||||
<div class="purchase-detail">
|
||||
<div class="price">
|
||||
<span>Price Detail</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>2 Items Price</label>
|
||||
<label class="right">$ 2,506.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Delivery Charges</label>
|
||||
<label class="right">$ 40.00</label>
|
||||
</span>
|
||||
</div>
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Coupan Discount</label>
|
||||
<label class="right">$ 25.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
<div class="payble-amount">
|
||||
<span>
|
||||
<label>Amount Payble</label>
|
||||
<label class="right">$ 2571.00</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
<div class="order-info">
|
||||
<div class="order-guest">
|
||||
<span class="order-text">
|
||||
Order as Guest
|
||||
</span>
|
||||
<button class="btn btn-lg btn-primary sign-in">
|
||||
SIGN IN
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Email address <span>*</span></label>
|
||||
<input type="text" class="control" name="email_address">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">First Name <span>*</span> </label>
|
||||
<input type="text" class="control" name="first_name">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Last Name <span>*</span> </label>
|
||||
<input type="text" class="control" name="last_name">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Company Name <span>*</span> </label>
|
||||
<input type="text" class="control" name="company_name">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Street address <span>*</span> </label>
|
||||
<input type="text" class="control" name="street_address">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">City <span>*</span> </label>
|
||||
<input type="text" class="control" name="city">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Country <span>*</span> </label>
|
||||
<input type="text" class="control" name="country">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Provinces <span>*</span> </label>
|
||||
<input type="text" class="control" name="provinces">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Zip code <span>*</span> </label>
|
||||
<input type="text" class="control" name="zip_code">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Phone number <span>*</span> </label>
|
||||
<input type="text" class="control" name="phone_number">
|
||||
</div>
|
||||
|
||||
<div class="different-billing-addr">
|
||||
<span>qwdevf</span>
|
||||
<span>Usedifferent address for billing?</span>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
<div class="countinue-button">
|
||||
<button class="btn btn-lg btn-primary" @click="count()">CONTINUE</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -2,178 +2,68 @@
|
|||
|
||||
@section('content-wrapper')
|
||||
|
||||
<div class="checkout-process">
|
||||
|
||||
<div class="left-side">
|
||||
<div class="checkout-menu">
|
||||
|
||||
<ul class="checkout-detail">
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator active">
|
||||
<img src="{{asset('themes/default/assets/images/address.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Information</span>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
<div class="line"> </div>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/shipping.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Shipping</span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/payment.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Payment</span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<li>
|
||||
<div class="wrapper">
|
||||
<div class="decorator">
|
||||
<img src="{{asset('themes/default/assets/images/finish.svg')}}" />
|
||||
</div>
|
||||
|
||||
<span>Complete</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="right-side">
|
||||
<div class="purchase-detail">
|
||||
<div class="price">
|
||||
<span>Price Detail</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>2 Items Price</label>
|
||||
<label class="right">$ 2,506.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Delivery Charges</label>
|
||||
<label class="right">$ 40.00</label>
|
||||
</span>
|
||||
</div>
|
||||
<div class="item-detail">
|
||||
<span>
|
||||
<label>Coupan Discount</label>
|
||||
<label class="right">$ 25.00</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
<div class="payble-amount">
|
||||
<span>
|
||||
<label>Amount Payble</label>
|
||||
<label class="right">$ 2571.00</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="order-info">
|
||||
<div class="order-guest">
|
||||
<span class="order-text">
|
||||
Order as Guest
|
||||
</span>
|
||||
<button class="sign-in">
|
||||
SIGN IN
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Email address <span>*</span></label>
|
||||
<input type="text" class="control" name="email_address">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">First Name <span>*</span> </label>
|
||||
<input type="text" class="control" name="first_name">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Last Name <span>*</span> </label>
|
||||
<input type="text" class="control" name="last_name">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Company Name <span>*</span> </label>
|
||||
<input type="text" class="control" name="company_name">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Street address <span>*</span> </label>
|
||||
<input type="text" class="control" name="street_address">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">City <span>*</span> </label>
|
||||
<input type="text" class="control" name="city">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Country <span>*</span> </label>
|
||||
<input type="text" class="control" name="country">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Provinces <span>*</span> </label>
|
||||
<input type="text" class="control" name="provinces">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Zip code <span>*</span> </label>
|
||||
<input type="text" class="control" name="zip_code">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="first_name">Phone number <span>*</span> </label>
|
||||
<input type="text" class="control" name="phone_number">
|
||||
</div>
|
||||
|
||||
<div class="different-billing-addr">
|
||||
<span>qwdevf</span>
|
||||
<span>Use different address for billing?</span>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
<div class="countinue-button">
|
||||
<button>CONTINUE</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<checkout customer="{{$customer_id}}"> </checkout>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="checkout-template">
|
||||
|
||||
<div>
|
||||
@include('shop::customers.checkout.common.common')
|
||||
|
||||
<div v-if="customer">
|
||||
@include('shop::customers.checkout.ship-method')
|
||||
</div>
|
||||
<div v-if="!customer">
|
||||
@include('shop::customers.checkout.guest')
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
||||
Vue.component('checkout', {
|
||||
|
||||
props: ['customer'],
|
||||
|
||||
data: () => ({
|
||||
isGuest:true,
|
||||
isShip:false,
|
||||
disabled: 0,
|
||||
isShipMethod:false
|
||||
}),
|
||||
|
||||
template: '#checkout-template',
|
||||
|
||||
mounted () {
|
||||
|
||||
if(this.customer){
|
||||
this.isShip=true;
|
||||
}else{
|
||||
this.isGuest=true;
|
||||
this.disabled=1;
|
||||
|
||||
console.log(this.disabled);
|
||||
}
|
||||
} ,
|
||||
|
||||
methods: {
|
||||
count () {
|
||||
this.isShipMethod=true;
|
||||
console.log(this.isShipMethod)
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
@endpush
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
@section('content-wrapper')
|
||||
|
||||
@include('shop::customers.checkout.common')
|
||||
@include('shop::customers.checkout.common.common')
|
||||
|
||||
<div class="payment-method">
|
||||
<div class="payment-info">
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,4 @@
|
|||
|
||||
@extends('shop::layouts.master')
|
||||
|
||||
@section('content-wrapper')
|
||||
|
||||
@include('shop::customers.checkout.common')
|
||||
|
||||
<div class="ship-method">
|
||||
<div class="ship-info">
|
||||
|
|
@ -14,7 +9,8 @@
|
|||
|
||||
<div class="ship-price">
|
||||
<div class="price-checkbox">
|
||||
<img src="{{asset('themes/default/assets/images/selected.svg')}}" />
|
||||
{{-- <img src="{{asset('themes/default/assets/images/selected.svg')}}" /> --}}
|
||||
<input type="radio" name="gender" value="male" checked>
|
||||
<span> $ 25.00 </span>
|
||||
</div>
|
||||
<div class="price-checkbox-text">
|
||||
|
|
@ -45,7 +41,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="horizontal-rule">
|
||||
</div>
|
||||
|
||||
|
|
@ -54,4 +50,3 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
@inject('rateHelper' , 'Webkul\Shipping\Helper\Rate')
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
@foreach($rateHelper->collectRates() as $key=>$count)
|
||||
|
||||
<div class="shipping-method">
|
||||
|
||||
<input type="radio" name="price"> ${{ core()->currency($count) }} <span> {{ $key }} </span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@endforeach
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<style>
|
||||
span {
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -22,11 +22,7 @@
|
|||
|
||||
@include ('shop::products.price', ['product' => $product])
|
||||
|
||||
@if ($product->reviews->count())
|
||||
|
||||
@include ('shop::products.review', ['product' => $product])
|
||||
|
||||
@endif
|
||||
@include ('shop::products.review', ['product' => $product])
|
||||
|
||||
@include ('shop::products.add-to', ['product' => $product])
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,19 @@
|
|||
<div class="product-ratings">
|
||||
@inject ('reviewHelper', 'Webkul\Product\Product\Review')
|
||||
|
||||
@inject ('reviewHelper', 'Webkul\Product\Product\Review')
|
||||
@if ($total = $reviewHelper->getTotalReviews($product))
|
||||
<div class="product-ratings">
|
||||
|
||||
@for ($i = 1; $i <= $reviewHelper->getAverageRating($product); $i++)
|
||||
<span class="stars">
|
||||
@for ($i = 1; $i <= round($reviewHelper->getAverageRating($product)); $i++)
|
||||
|
||||
<span class="icon star-icon"></span>
|
||||
|
||||
@endfor
|
||||
|
||||
</div>
|
||||
<span class="icon star-icon"></span>
|
||||
|
||||
@endfor
|
||||
</span>
|
||||
|
||||
<div class="total-reviews">
|
||||
{{ __('shop::app.products.total-reviews', ['total' => $total]) }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
@inject ('reviewHelper', 'Webkul\Product\Product\Review')
|
||||
@inject ('priceHelper', 'Webkul\Product\Product\Price')
|
||||
|
||||
|
||||
@extends('shop::layouts.master')
|
||||
@section('content-wrapper')
|
||||
<section class="product-review">
|
||||
|
|
|
|||
|
|
@ -10,53 +10,56 @@
|
|||
|
||||
<div class="layouter">
|
||||
|
||||
@include ('shop::products.view.gallery')
|
||||
<form action="" style="display: inherit;">
|
||||
|
||||
<div class="details">
|
||||
@csrf()
|
||||
|
||||
<div class="product-heading">
|
||||
<span>{{ $product->name }}</span>
|
||||
</div>
|
||||
<input type="hidden" name="product">
|
||||
|
||||
<input type="hidden" name="selected_configurable_option">
|
||||
|
||||
<div class="rating">
|
||||
<img src="{{ bagisto_asset('images/5star.svg') }}" />
|
||||
75 Ratings & 11 Reviews
|
||||
</div>
|
||||
@include ('shop::products.view.gallery')
|
||||
|
||||
@include ('shop::products.price', ['product' => $product])
|
||||
<div class="details">
|
||||
|
||||
@include ('shop::products.view.stock')
|
||||
<div class="product-heading">
|
||||
<span>{{ $product->name }}</span>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
@include ('shop::products.review', ['product' => $product])
|
||||
|
||||
<div class="description">
|
||||
{{ $product->short_description }}
|
||||
</div>
|
||||
@include ('shop::products.price', ['product' => $product])
|
||||
|
||||
@if ($product->type == 'configurable')
|
||||
@include ('shop::products.view.stock')
|
||||
|
||||
|
||||
<div class="description">
|
||||
{{ $product->short_description }}
|
||||
</div>
|
||||
|
||||
@include ('shop::products.view.configurable-options')
|
||||
|
||||
@endif
|
||||
|
||||
<accordian :title="{{ __('shop::app.products.description') }}" :active="true">
|
||||
<div slot="header">
|
||||
{{ __('shop::app.products.description') }}
|
||||
<i class="icon expand-icon right"></i>
|
||||
</div>
|
||||
|
||||
<div slot="body">
|
||||
<div class="full-description">
|
||||
{{ $product->description }}
|
||||
<accordian :title="'{{ __('shop::app.products.description') }}'" :active="true">
|
||||
<div slot="header">
|
||||
{{ __('shop::app.products.description') }}
|
||||
<i class="icon expand-icon right"></i>
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
@include ('shop::products.view.attributes')
|
||||
<div slot="body">
|
||||
<div class="full-description">
|
||||
{{ $product->description }}
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
@include ('shop::products.view.reviews')
|
||||
@include ('shop::products.view.attributes')
|
||||
|
||||
@include ('shop::products.view.reviews')
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include ('shop::products.view.up-sells')
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
@inject ('productViewHelper', 'Webkul\Product\Product\View')
|
||||
|
||||
<accordian :title="{{ __('shop::app.products.specification') }}" :active="false">
|
||||
<accordian :title="'{{ __('shop::app.products.specification') }}'" :active="false">
|
||||
<div slot="header">
|
||||
{{ __('shop::app.products.specification') }}
|
||||
<i class="icon expand-icon right"></i>
|
||||
|
|
|
|||
|
|
@ -1,33 +1,165 @@
|
|||
<div class="attributes">
|
||||
@if ($product->type == 'configurable')
|
||||
|
||||
<div class="attribute color">
|
||||
<div class="title">Color</div>
|
||||
@inject ('configurableOptionHelper', 'Webkul\Product\Product\ConfigurableOption')
|
||||
|
||||
<div class="values">
|
||||
<div class="colors red"></div>
|
||||
<div class="colors blue"></div>
|
||||
<div class="colors green"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="attribute size">
|
||||
<div class="title">Size</div>
|
||||
<product-options></product-options>
|
||||
|
||||
<div class="values">
|
||||
<div class="size xl">XL</div>
|
||||
<div class="size xxl">XXL</div>
|
||||
<div class="size xxxl">XXXL</div>
|
||||
</div>
|
||||
</div>
|
||||
@push('scripts')
|
||||
|
||||
<div class="attribute quantity">
|
||||
<div class="title">Quantity</div>
|
||||
<script type="text/x-template" id="product-options-template">
|
||||
<div class="attributes">
|
||||
|
||||
<div class="values">
|
||||
<div class="size">1</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-for='(attribute, index) in childAttributes' class="attribute control-group" :class="[errors.has('super_attribute[' + attribute.id + ']') ? 'has-error' : '']">
|
||||
<label class="reqiured">@{{ attribute.label }}</label>
|
||||
|
||||
</div>
|
||||
<select v-validate="'required'" class="control" :name="['super_attribute[' + attribute.id + ']']" :disabled="attribute.disabled" @change="configure(attribute, $event.target.value)">
|
||||
|
||||
<hr/>
|
||||
<option v-for='(option, index) in attribute.options' :value="option.id">@{{ option.label }}</option>
|
||||
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('super_attribute[' + attribute.id + ']')">@{{ errors.first('super_attribute[' + attribute.id + ']') }}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('product-options', {
|
||||
|
||||
template: '#product-options-template',
|
||||
|
||||
data: () => ({
|
||||
config: @json($configurableOptionHelper->getConfigurationConfig($product)),
|
||||
childAttributes: []
|
||||
}),
|
||||
|
||||
created () {
|
||||
var childAttributes = this.childAttributes,
|
||||
attributes = this.config.attributes,
|
||||
index = attributes.length,
|
||||
attribute;
|
||||
|
||||
while (index--) {
|
||||
// attribute = Object.assign({}, attributes[index]);
|
||||
attribute = attributes[index];
|
||||
|
||||
attribute.options = [];
|
||||
|
||||
if (index) {
|
||||
attribute.disabled = true;
|
||||
} else {
|
||||
this.fillSelect(attribute);
|
||||
}
|
||||
|
||||
attribute = Object.assign(attribute, {
|
||||
childAttributes: childAttributes.slice(),
|
||||
prevAttribute: attributes[index - 1],
|
||||
nextAttribute: attributes[index + 1]
|
||||
});
|
||||
|
||||
childAttributes.unshift(attribute);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
configure (attribute, value) {
|
||||
// this.simpleProduct = this._getSimpleProductId(attribute);
|
||||
|
||||
if (value) {
|
||||
if (attribute.nextAttribute) {
|
||||
attribute.nextAttribute.disabled = false;
|
||||
this.fillSelect(attribute.nextAttribute);
|
||||
this.resetChildren(attribute.nextAttribute);
|
||||
} else {
|
||||
//Set product id hidden value
|
||||
}
|
||||
} else {
|
||||
this.resetChildren(attribute);
|
||||
}
|
||||
|
||||
// this.reloadPrice();
|
||||
// this.changeProductImage();
|
||||
},
|
||||
|
||||
fillSelect (attribute) {
|
||||
var options = this.getAttributeOptions(attribute.id),
|
||||
prevOption,
|
||||
index = 1,
|
||||
products,
|
||||
i,
|
||||
j;
|
||||
|
||||
attribute.options = [];
|
||||
attribute.options[0] = {'id': '', 'label': this.config.chooseText, 'products': []};
|
||||
|
||||
if (attribute.prevAttribute) {
|
||||
prevOption = attribute.prevAttribute.options[attribute.prevAttribute.selectedIndex];
|
||||
}
|
||||
|
||||
// console.log(attribute)
|
||||
|
||||
if (options) {
|
||||
for (i = 0; i < options.length; i++) {
|
||||
products = [];
|
||||
|
||||
if (prevOption) {
|
||||
for (j = 0; j < options[i].products.length; j++) {
|
||||
if (prevOption.products &&
|
||||
prevOption.products.indexOf(options[i].products[j]) > -1) {
|
||||
products.push(options[i].products[j]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
products = options[i].products.slice(0);
|
||||
}
|
||||
|
||||
if (products.length > 0) {
|
||||
options[i].products = products;
|
||||
attribute.options[index] = options[i];
|
||||
|
||||
index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
resetChildren (attribute) {
|
||||
if (attribute.childAttributes) {
|
||||
attribute.childAttributes.forEach(function (set) {
|
||||
set.selectedIndex = 0;
|
||||
set.disabled = true;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
getAttributeOptions (attributeId) {
|
||||
var this_this = this,
|
||||
options;
|
||||
|
||||
|
||||
this.config.attributes.forEach(function(attribute, index) {
|
||||
if (attribute.id == attributeId) {
|
||||
options = attribute.options;
|
||||
}
|
||||
})
|
||||
|
||||
return options;
|
||||
},
|
||||
|
||||
reloadPrice () {
|
||||
|
||||
},
|
||||
|
||||
changeProductImage () {
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@endif
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<img src="{{ bagisto_asset('images/jeans.jpg') }}" />
|
||||
</div>
|
||||
|
||||
<div class="product-hero-image">
|
||||
<div class="product-hero-image" id="product-hero-image">
|
||||
<img src="{{ bagisto_asset('images/jeans_big.jpg') }}" />
|
||||
<img class="wishlist" src="{{ bagisto_asset('images/wish.svg') }}" />
|
||||
<img class="share" src="{{ bagisto_asset('images/icon-share.svg') }}" />
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
@if ($total = $reviewHelper->getTotalReviews($product))
|
||||
<div class="rating-reviews">
|
||||
<div class="title">
|
||||
Ratings & Reviews
|
||||
<div class="rating-header">
|
||||
{{ __('shop::app.products.reviews-title') }}
|
||||
</div>
|
||||
|
||||
<div class="overall">
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
</span>
|
||||
|
||||
<span class="stars">
|
||||
@for ($i = 1; $i <= $reviewHelper->getAverageRating($product); $i++)
|
||||
@for ($i = 1; $i <= round($reviewHelper->getAverageRating($product)); $i++)
|
||||
|
||||
<span class="icon star-icon"></span>
|
||||
|
||||
|
|
@ -27,13 +27,15 @@
|
|||
|
||||
</div>
|
||||
|
||||
<a href="{{ route('shop.reviews.create', $product->url_key) }}" class="btn btn-lg btn-primary">Write Review</a>
|
||||
<a href="{{ route('shop.reviews.create', $product->url_key) }}" class="btn btn-lg btn-primary">
|
||||
{{ __('shop::app.products.write-review-btn') }}
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="reviews">
|
||||
|
||||
@foreach ($product->reviews()->paginate(5) as $review)
|
||||
@foreach ($reviewHelper->getReviews($product)->paginate(5) as $review)
|
||||
<div class="review">
|
||||
<div class="title">
|
||||
{{ $review->title }}
|
||||
|
|
@ -65,7 +67,6 @@
|
|||
|
||||
<a href="{{ route('shop.reviews.index', $product->url_key) }}" class="view-all">View All</a>
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -878,6 +878,15 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
|
|||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.main-container-wrapper .product-card .product-ratings .icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.main-container-wrapper .product-card .product-ratings .total-reviews {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.main-container-wrapper .product-card .cart-fav-seg {
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
|
|
@ -1390,16 +1399,16 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
|
|||
min-height: 345px;
|
||||
}
|
||||
|
||||
section.product-detail, section.product-review {
|
||||
section.product-detail {
|
||||
font-size: 16px;
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
section.product-detail div.category-breadcrumbs, section.product-review div.category-breadcrumbs {
|
||||
section.product-detail div.category-breadcrumbs {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter, section.product-review div.layouter {
|
||||
section.product-detail div.layouter {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
|
|
@ -1410,32 +1419,32 @@ section.product-detail div.layouter, section.product-review div.layouter {
|
|||
margin-top: 21px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .mixed-group .single-image, section.product-review div.layouter .mixed-group .single-image {
|
||||
section.product-detail div.layouter .mixed-group .single-image {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .mixed-group .single-image img, section.product-review div.layouter .mixed-group .single-image img {
|
||||
section.product-detail div.layouter .mixed-group .single-image img {
|
||||
height: 280px;
|
||||
width: 280px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .mixed-group .details .product-name, section.product-review div.layouter .mixed-group .details .product-name {
|
||||
section.product-detail div.layouter .mixed-group .details .product-name {
|
||||
margin-top: 20px;
|
||||
font-size: 24px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .mixed-group .details .product-price, section.product-review div.layouter .mixed-group .details .product-price {
|
||||
section.product-detail div.layouter .mixed-group .details .product-price {
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews, section.product-review div.layouter .rating-reviews {
|
||||
section.product-detail div.layouter .rating-reviews {
|
||||
margin-top: 0px;
|
||||
width: 50%;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .title-inline, section.product-review div.layouter .rating-reviews .title-inline {
|
||||
section.product-detail div.layouter .rating-reviews .title-inline {
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
|
|
@ -1449,12 +1458,12 @@ section.product-detail div.layouter .rating-reviews .title-inline, section.produ
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .title-inline button, section.product-review div.layouter .rating-reviews .title-inline button {
|
||||
section.product-detail div.layouter .rating-reviews .title-inline button {
|
||||
float: right;
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall, section.product-review div.layouter .rating-reviews .overall {
|
||||
section.product-detail div.layouter .rating-reviews .overall {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
|
|
@ -1471,19 +1480,19 @@ section.product-detail div.layouter .rating-reviews .overall, section.product-re
|
|||
height: 150px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall .left-side, section.product-review div.layouter .rating-reviews .overall .left-side {
|
||||
section.product-detail div.layouter .rating-reviews .overall .left-side {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall .left-side .number, section.product-review div.layouter .rating-reviews .overall .left-side .number {
|
||||
section.product-detail div.layouter .rating-reviews .overall .left-side .number {
|
||||
font-size: 34px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side, section.product-review div.layouter .rating-reviews .overall .right-side {
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side {
|
||||
display: block;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater, section.product-review div.layouter .rating-reviews .overall .right-side .rater {
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater {
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
|
|
@ -1492,52 +1501,52 @@ section.product-detail div.layouter .rating-reviews .overall .right-side .rater,
|
|||
align-items: center;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .star, section.product-review div.layouter .rating-reviews .overall .right-side .rater .star {
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .star {
|
||||
width: 50px;
|
||||
height: 20px;
|
||||
padding: 1px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .line-bar, section.product-review div.layouter .rating-reviews .overall .right-side .rater .line-bar {
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .line-bar {
|
||||
height: 4px;
|
||||
width: 158px;
|
||||
margin-right: 12px;
|
||||
background: #D8D8D8;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .line-bar .line-value, section.product-review div.layouter .rating-reviews .overall .right-side .rater .line-bar .line-value {
|
||||
section.product-detail div.layouter .rating-reviews .overall .right-side .rater .line-bar .line-value {
|
||||
background-color: #0031F0;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .reviews, section.product-review div.layouter .rating-reviews .reviews {
|
||||
section.product-detail div.layouter .rating-reviews .reviews {
|
||||
margin-top: 34px;
|
||||
margin-bottom: 90px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review, section.product-review div.layouter .rating-reviews .reviews .review {
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review .title, section.product-review div.layouter .rating-reviews .reviews .review .title {
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review .title {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review .stars, section.product-review div.layouter .rating-reviews .reviews .review .stars {
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review .stars {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review .message, section.product-review div.layouter .rating-reviews .reviews .review .message {
|
||||
section.product-detail div.layouter .rating-reviews .reviews .review .message {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .rating-reviews .reviews .view-all, section.product-review div.layouter .rating-reviews .reviews .view-all {
|
||||
section.product-detail div.layouter .rating-reviews .reviews .view-all {
|
||||
margin-top: 15px;
|
||||
color: #0031f0;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter div.product-image-group, section.product-review div.layouter div.product-image-group {
|
||||
section.product-detail div.layouter div.product-image-group {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
|
|
@ -1551,7 +1560,7 @@ section.product-detail div.layouter div.product-image-group, section.product-rev
|
|||
margin-right: 2.5%;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter div.product-image-group .side-group, section.product-review div.layouter div.product-image-group .side-group {
|
||||
section.product-detail div.layouter div.product-image-group .side-group {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
|
|
@ -1562,195 +1571,152 @@ section.product-detail div.layouter div.product-image-group .side-group, section
|
|||
margin-right: 4px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter div.product-image-group .product-hero-image, section.product-review div.layouter div.product-image-group .product-hero-image {
|
||||
section.product-detail div.layouter div.product-image-group .product-hero-image {
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter div.product-image-group .product-hero-image .wishlist, section.product-review div.layouter div.product-image-group .product-hero-image .wishlist {
|
||||
section.product-detail div.layouter div.product-image-group .product-hero-image .wishlist {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 12px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter div.product-image-group .product-hero-image .share, section.product-review div.layouter div.product-image-group .product-hero-image .share {
|
||||
section.product-detail div.layouter div.product-image-group .product-hero-image .share {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 45px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .product-heading, section.product-review div.layouter .details .product-heading {
|
||||
section.product-detail div.layouter .details .product-price {
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .product-ratings {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .product-ratings .icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .product-ratings .total-reviews {
|
||||
display: inline-block;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .product-heading {
|
||||
font-size: 24px;
|
||||
color: #242424;
|
||||
margin-bottom: 14px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating, section.product-review div.layouter .details .rating {
|
||||
color: #242424;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .product-price, section.product-review div.layouter .details .product-price {
|
||||
margin-bottom: 14px;
|
||||
section.product-detail div.layouter .details .product-price {
|
||||
margin-bottom: 15px;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .product-price .special-price, section.product-review div.layouter .details .product-price .special-price {
|
||||
section.product-detail div.layouter .details .product-price .special-price {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .stock-status, section.product-review div.layouter .details .stock-status {
|
||||
margin-bottom: 14px;
|
||||
section.product-detail div.layouter .details .stock-status {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .description, section.product-review div.layouter .details .description {
|
||||
margin-bottom: 14px;
|
||||
section.product-detail div.layouter .details .description {
|
||||
margin-bottom: 15px;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: solid 1px rgba(162, 162, 162, 0.2);
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .full-specifications td, section.product-review div.layouter .details .full-specifications td {
|
||||
section.product-detail div.layouter .details .full-specifications td {
|
||||
padding: 10px 0;
|
||||
color: #5E5E5E;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .full-specifications td:first-child, section.product-review div.layouter .details .full-specifications td:first-child {
|
||||
section.product-detail div.layouter .details .full-specifications td:first-child {
|
||||
padding-right: 40px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .accordian .accordian-header, section.product-review div.layouter .details .accordian .accordian-header {
|
||||
section.product-detail div.layouter .details .accordian .accordian-header {
|
||||
font-size: 16px;
|
||||
padding-left: 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes, section.product-review div.layouter .details .attributes {
|
||||
section.product-detail div.layouter .details .attributes {
|
||||
display: block;
|
||||
width: 100%;
|
||||
border-bottom: solid 1px rgba(162, 162, 162, 0.2);
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute, section.product-review div.layouter .details .attributes .attribute {
|
||||
height: 39px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .title, section.product-review div.layouter .details .attributes .attribute .title {
|
||||
float: left;
|
||||
height: 100%;
|
||||
min-width: 130px;
|
||||
padding-top: 9px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values, section.product-review div.layouter .details .attributes .attribute .values {
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .colors, section.product-review div.layouter .details .attributes .attribute .values .colors {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .colors:last-child, section.product-review div.layouter .details .attributes .attribute .values .colors:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .red, section.product-review div.layouter .details .attributes .attribute .values .red {
|
||||
height: 37px;
|
||||
width: 37px;
|
||||
background: red;
|
||||
border: 1px solid #c7c7c7;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .blue, section.product-review div.layouter .details .attributes .attribute .values .blue {
|
||||
height: 37px;
|
||||
width: 37px;
|
||||
background: blue;
|
||||
border: 1px solid #c7c7c7;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .green, section.product-review div.layouter .details .attributes .attribute .values .green {
|
||||
height: 37px;
|
||||
width: 37px;
|
||||
background: green;
|
||||
border: 1px solid #c7c7c7;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .size, section.product-review div.layouter .details .attributes .attribute .values .size {
|
||||
margin-right: 5px;
|
||||
line-height: 38px;
|
||||
height: 37px;
|
||||
width: 60px;
|
||||
border: 1px solid #c7c7c7;
|
||||
border-radius: 2px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .size:last-child, section.product-review div.layouter .details .attributes .attribute .values .size:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .attributes .attribute .values .quantity .values .control, section.product-review div.layouter .details .attributes .attribute .values .quantity .values .control {
|
||||
height: 37px !important;
|
||||
width: 30px !important;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .full-description, section.product-review div.layouter .details .full-description {
|
||||
section.product-detail div.layouter .details .full-description {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews, section.product-review div.layouter .details .rating-reviews {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .title, section.product-review div.layouter .details .rating-reviews .title {
|
||||
margin-bottom: 15px;
|
||||
.rating-reviews .rating-header {
|
||||
font-weight: 600;
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .overall, section.product-review div.layouter .details .rating-reviews .overall {
|
||||
margin-bottom: 5px;
|
||||
.rating-reviews .stars .icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .overall .review-info .number, section.product-review div.layouter .details .rating-reviews .overall .review-info .number {
|
||||
.rating-reviews .overall {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-webkit-box-pack: justify;
|
||||
-ms-flex-pack: justify;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.rating-reviews .overall .review-info .number {
|
||||
font-size: 34px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .overall button, section.product-review div.layouter .details .rating-reviews .overall button {
|
||||
float: right;
|
||||
border-radius: 0px !important;
|
||||
.rating-reviews .overall .review-info .total-reviews {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .reviews, section.product-review div.layouter .details .rating-reviews .reviews {
|
||||
margin-top: 34px;
|
||||
margin-bottom: 80px;
|
||||
.rating-reviews .reviews {
|
||||
margin-top: 40px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .reviews .review, section.product-review div.layouter .details .rating-reviews .reviews .review {
|
||||
.rating-reviews .reviews .review {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .reviews .review .stars, section.product-review div.layouter .details .rating-reviews .reviews .review .stars {
|
||||
.rating-reviews .reviews .review .title {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.rating-reviews .reviews .review .stars {
|
||||
margin-bottom: 15px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .reviews .review .stars .icon, section.product-review div.layouter .details .rating-reviews .reviews .review .stars .icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .reviews .review .message, section.product-review div.layouter .details .rating-reviews .reviews .review .message {
|
||||
.rating-reviews .reviews .review .message {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .reviews .review .reviewer-details, section.product-review div.layouter .details .rating-reviews .reviews .review .reviewer-details {
|
||||
.rating-reviews .reviews .review .reviewer-details {
|
||||
color: #5E5E5E;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter .details .rating-reviews .reviews .view-all, section.product-review div.layouter .details .rating-reviews .reviews .view-all {
|
||||
.rating-reviews .reviews .view-all {
|
||||
margin-top: 15px;
|
||||
color: #0031f0;
|
||||
margin-bottom: 15px;
|
||||
|
|
@ -2911,14 +2877,6 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
|
|||
|
||||
.order-info .sign-in {
|
||||
float: right;
|
||||
background: #0031F0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: -0.26px;
|
||||
text-align: center;
|
||||
height: 38px;
|
||||
width: 103px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.order-info .control-group {
|
||||
|
|
@ -2959,17 +2917,6 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
|
|||
margin-top: 3%;
|
||||
}
|
||||
|
||||
.order-info .countinue-button button {
|
||||
background: #0031F0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: -0.26px;
|
||||
text-align: center;
|
||||
height: 38px;
|
||||
width: 137px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
@media all and (max-width: 480px) {
|
||||
.checkout-process {
|
||||
width: 100%;
|
||||
|
|
|
|||
|
|
@ -10648,7 +10648,7 @@ return jQuery;
|
|||
|
||||
"use strict";
|
||||
/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*!
|
||||
* Vue.js v2.5.16
|
||||
* Vue.js v2.5.17
|
||||
* (c) 2014-2018 Evan You
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
|
@ -15737,7 +15737,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
|
|||
value: FunctionalRenderContext
|
||||
});
|
||||
|
||||
Vue.version = '2.5.16';
|
||||
Vue.version = '2.5.17';
|
||||
|
||||
/* */
|
||||
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@
|
|||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</table>
|
||||
Loading…
Reference in New Issue