merged with master

This commit is contained in:
prashant-webkul 2018-09-20 15:37:44 +05:30
commit 2474f5c787
39 changed files with 3202 additions and 2533 deletions

View File

@ -40,7 +40,8 @@
"webkul/laravel-product": "self.version",
"webkul/laravel-shop": "self.version",
"webkul/laravel-theme": "self.version",
"webkul/laravel-shipping": "self.version"
"webkul/laravel-shipping": "self.version",
"webkul/laravel-payment": "self.version"
},
"autoload": {
"classmap": [
@ -61,7 +62,8 @@
"Webkul\\Inventory\\": "packages/Webkul/Inventory/src",
"Webkul\\Product\\": "packages/Webkul/Product/src",
"Webkul\\Theme\\": "packages/Webkul/Theme/src",
"Webkul\\Shipping\\": "packages/Webkul/Shipping/src"
"Webkul\\Shipping\\": "packages/Webkul/Shipping/src",
"Webkul\\Payment\\": "packages/Webkul/Payment/src"
}
},
"autoload-dev": {

View File

@ -192,6 +192,7 @@ return [
Webkul\Theme\Providers\ThemeServiceProvider::class,
Webkul\Cart\Providers\CartServiceProvider::class,
Webkul\Shipping\Providers\ShippingServiceProvider::class,
Webkul\Payment\Providers\PaymentServiceProvider::class,
],
/*

View File

@ -5,12 +5,9 @@ return [
'code' => 'flatrate',
'title' => 'Flatrate',
'description' => 'This is a flat rate',
'status' => '1',
'active' => true,
'default_rate' => '10',
'type' => [
'per_unit' => 'Per Unit',
'per order' => 'Per Order',
],
'type' => 'per_unit',
'class' => 'Webkul\Shipping\Carriers\FlatRate',
]
];

13
config/paymentmethods.php Normal file
View File

@ -0,0 +1,13 @@
<?php
return [
'cashondelivery' => [
'code' => 'cashondelivery',
'title' => 'Cash On Delivery',
'class' => 'Webkul\Payment\Payment\Payment',
'order_status' => 'Pending',
'active' => true
]
];
?>

View File

@ -0,0 +1,39 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCartProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cart_products', function (Blueprint $table) {
$table->increments('id');
$table->integer('product_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products');
$table->integer('quantity')->unsigned()->default(1);
$table->integer('cart_id')->unsigned();
$table->foreign('cart_id')->references('id')->on('cart');
$table->integer('tax_category_id')->unsigned()->nullable();
$table->foreign('tax_category_id')->references('id')->on('tax_categories');
$table->string('coupon_code')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cart_items');
}
}

View File

@ -0,0 +1,43 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCartAddress extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cart_address', function (Blueprint $table) {
$table->increments('id');
$table->string('address1');
$table->string('address2')->nullable();
$table->string('country');
$table->string('state');
$table->string('city');
$table->integer('postcode');
$table->string('phone');
$table->string('address_type');
$table->integer('cart_id')->nullable()->unsigned();
$table->foreign('cart_id')->references('id')->on('cart');
$table->integer('customer_id')->nullable()->unsigned();
$table->foreign('customer_id')->references('id')->on('customers');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cart_address');
}
}

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCartPayment extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cart_payment', function (Blueprint $table) {
$table->increments('id');
$table->string('method');
$table->integer('cart_id')->nullable()->unsigned();
$table->foreign('cart_id')->references('id')->on('cart');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cart_payment');
}
}

View File

@ -0,0 +1,41 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCartShipping extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cart_shipping', function (Blueprint $table) {
$table->increments('id');
$table->string('carrier');
$table->string('carrier_title');
$table->string('method');
$table->string('method_title');
$table->string('method_description')->nullable();
$table->double('price')->nullable();
$table->integer('cart_id')->nullable()->unsigned();
$table->foreign('cart_id')->references('id')->on('cart');
$table->integer('cart_address_id')->nullable()->unsigned();
$table->foreign('cart_address_id')->references('id')->on('cart_address');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cart_shipping');
}
}

View File

@ -5,6 +5,7 @@ use Illuminate\Routing\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Auth;
use Webkul\Shipping\Facades\Shipping;
/**
* Chekout controller for the customer
@ -15,7 +16,6 @@ use Auth;
*/
class CheckoutController extends Controller
{
/**
* Contains route related configuration
*
@ -43,4 +43,34 @@ class CheckoutController extends Controller
return view($this->_config['view']);
}
/**
* Saves customer address.
*
* @return \Illuminate\Http\Response
*/
public function saveAddress()
{
return response()->json([
'shipping' => Shipping::collectRates()
]);
}
/**
* Saves shipping method.
*
* @return \Illuminate\Http\Response
*/
public function saveShipping()
{
}
/**
* Saves payment method.
*
* @return \Illuminate\Http\Response
*/
public function saveAPayment()
{
}
}

View File

@ -3,8 +3,9 @@
namespace Webkul\Cart\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Product\Models\Product;
use Webkul\Cart\Models\CartAddress;
use Webkul\Cart\Models\CartShipping;
class Cart extends Model
{
@ -22,4 +23,20 @@ class Cart extends Model
public function items() {
return $this->hasMany('Webkul\Cart\Models\CartItem');
}
/**
* Get the addresses for the cart.
*/
public function addresses()
{
return $this->hasMany(CartAddress::class);
}
/**
* Get the shipping for the cart.
*/
public function shipping()
{
return $this->hasMany(CartShipping::class);
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace Webkul\Cart\Models;
use Illuminate\Database\Eloquent\Model;
class CartAddress extends Model
{
}

View File

@ -0,0 +1,10 @@
<?php
namespace Webkul\Cart\Models;
use Illuminate\Database\Eloquent\Model;
class CartShipping extends Model
{
}

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCoreConfigTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('core_config', function (Blueprint $table) {
$table->increments('id');
$table->string('code');
$table->string('value');
$table->integer('channel_id')->unsigned();
$table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('core_config');
}
}

View File

@ -33,6 +33,7 @@ class CoreServiceProvider extends ServiceProvider
Validator::extend('slug', 'Webkul\Core\Contracts\Validations\Slug@passes');
Validator::extend('code', 'Webkul\Core\Contracts\Validations\Code@passes');
}
/**
* Register services.
*

View File

@ -0,0 +1,32 @@
<?php
namespace Webkul\Payment;
use Illuminate\Support\Facades\Config;
class Payment
{
/**
* Returns all supported payment methods
*
* @return array
*/
public function getSupportedPaymentMethods()
{
$paymentMethods = [];
foreach (Config::get('paymentmethods') as $paymentMethod) {
if($paymentMethod['active']) {
$object = new $paymentMethod['class'];
$paymentMethods[] = [
'code' => $object->getCode(),
'title' => $object->getTitle(),
'description' => $object->getDescription(),
];
}
}
return $paymentMethods;
}
}

View File

@ -0,0 +1,27 @@
{
"name": "webkul/laravel-payment",
"license": "MIT",
"authors": [
{
"name": "Jitendra Singh",
"email": "jitendra@webkul.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"Webkul\\Payment\\": "src/"
}
},
"extra": {
"laravel": {
"providers": [
"Webkul\\Payment\\Providers\\PaymentServiceProvider"
],
"aliases": {
"Bouncer": "Webkul\\Payment\\Facades\\Bouncer"
}
}
},
"minimum-stability": "dev"
}

View File

@ -0,0 +1,18 @@
<?php
namespace Webkul\Payment\Facades;
use Illuminate\Support\Facades\Facade;
class Payment extends Facade
{
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor()
{
return 'payment';
}
}

View File

@ -0,0 +1,10 @@
<?php
use Webkul\Payment\Payment;
if (! function_exists('payment')) {
function payment()
{
return new Payment;
}
}
?>

View File

@ -0,0 +1,13 @@
<?php
namespace Webkul\Payment\Payment;
class CashOnDelivery extends Payment
{
/**
* Payment method code
*
* @var string
*/
protected $code = 'cashondelivery';
}

View File

@ -0,0 +1,71 @@
<?php
namespace Webkul\Payment\Payment;
use Illuminate\Support\Facades\Config;
abstract class Payment
{
/**
* Checks if payment method is available
*
* @return array
*/
public function isAvailable()
{
return $this->getConfigData('active');
}
/**
* Returns payment method code
*
* @return array
*/
public function getCode()
{
if (empty($this->code)) {
// throw exception
}
return $this->_code;
}
/**
* Returns payment method title
*
* @return array
*/
public function getTitle()
{
return $this->getConfigData('title');
}
/**
* Returns payment method decription
*
* @return array
*/
public function getDecription()
{
return $this->getConfigData('decription');
}
/**
* Retrieve information from payment configuration
*
* @param string $field
* @param int|string|null $channelId
*
* @return mixed
*/
public function getConfigData($field, $channelId = null)
{
if (null === $channelId) {
$channelId = core()->getCurrentChannel()->getId();
}
$paymentConfig = Config::get('paymentmethods' . $this->getCode());
return $paymentConfig[$field];
}
}

View File

@ -0,0 +1,46 @@
<?php
namespace Webkul\Payment\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\AliasLoader;
use Illuminate\Routing\Router;
use Webkul\Payment\Payment;
use Webkul\Payment\Facades\Payment as PaymentFacade;
class PaymentServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot(Router $router)
{
include __DIR__ . '/../Http/helpers.php';
}
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->registerFacades();
}
/**
* Register Bouncer as a singleton.
*
* @return void
*/
protected function registerFacades()
{
$loader = AliasLoader::getInstance();
$loader->alias('payment', PaymentFacade::class);
$this->app->singleton('payment', function () {
return new Payment();
});
}
}

View File

@ -0,0 +1,82 @@
<?php
namespace Webkul\Shipping\Carriers;
use Illuminate\Support\Facades\Config;
/**
* Abstract class Shipping
*
* @author Jitendra Singh <jitendra@webkul.com>
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
abstract class AbstractShipping
{
abstract public function calculate();
/**
* Checks if payment method is available
*
* @return array
*/
public function isAvailable()
{
return $this->getConfigData('active');
}
/**
* Returns payment method code
*
* @return array
*/
public function getCode()
{
if (empty($this->code)) {
// throw exception
}
return $this->code;
}
/**
* Returns payment method title
*
* @return array
*/
public function getTitle()
{
return $this->getConfigData('title');
}
/**
* Returns payment method decription
*
* @return array
*/
public function getDecription()
{
return $this->getConfigData('decription');
}
/**
* Retrieve information from payment configuration
*
* @param string $field
* @param int|string|null $channelId
*
* @return mixed
*/
public function getConfigData($field, $channelId = null)
{
if (null === $channelId) {
$channelId = core()->getCurrentChannel()->id;
}
$shippingConfig = Config::get('carriers' . $this->getCode());
return $shippingConfig[$field];
}
}
?>

View File

@ -2,8 +2,8 @@
namespace Webkul\Shipping\Carriers;
use Webkul\Shipping\Contracts\AbstractShipping;
use Config;
use Webkul\Cart\Models\CartShipping;
/**
* Class Rate.
@ -11,8 +11,40 @@ use Config;
*/
class FlatRate extends AbstractShipping
{
/**
* Payment method code
*
* @var string
*/
protected $code = 'flatrate';
public function calculate()
{
return [];
return [
'carrier_code' => 'flatrate',
'carrier_title' => 'Flat Rate',
'carrier_description' => '',
'rates' => [
[
'method' => 'flatrate_flatrate',
'method_title' => 'Flat Rate',
'price' => 10,
'price_formated' => core()->currency(10),
]
]
];
$object = new CartShipping;
$object->carrier = 'flatrate_flatrate';
$object->carrier_title = $this->getConfigData('description');
$object->method = 'flatrate';
$object->method_title = $this->getConfigData('title');
$object->method_description = $this->getConfigData('description');
$object->price = 10;
return [
'flatrate' => [$object]
];
}
}

View File

@ -1,15 +0,0 @@
<?php
namespace Webkul\Shipping\Contracts;
/**
* Abstract class Shipping
* @author Rahul Shukla <rahulshukla.symfony517@webkul.com>
*/
abstract class AbstractShipping
{
abstract public function calculate();
}
?>

View File

@ -0,0 +1,18 @@
<?php
namespace Webkul\Shipping\Facades;
use Illuminate\Support\Facades\Facade;
class Shipping extends Facade
{
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor()
{
return 'shipping';
}
}

View File

@ -1,29 +0,0 @@
<?php
namespace Webkul\Shipping\Helper;
use Illuminate\Support\Facades\Config;
/**
* Class Rate.
*
*/
class Rate
{
public function collectRates()
{
$rates = [];
$shippingMethods = Config::get('carriers');
foreach($shippingMethods as $shippingMethod) {
$object = new $shippingMethod['class'];
if($rate = $object->calculate()) {
$rates[] = $rate;
}
}
return $rates;
}
}

View File

@ -0,0 +1,10 @@
<?php
use Webkul\Shipping\Shipping;
if (! function_exists('shipping')) {
function shipping()
{
return new Shipping;
}
}
?>

View File

@ -3,8 +3,11 @@
namespace Webkul\Shipping\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\AliasLoader;
use Illuminate\Routing\Router;
use Webkul\Customer\Http\Middleware\RedirectIfNotCustomer;
use Webkul\Shipping\Shipping;
use Webkul\Shipping\Facades\Shipping as ShippingFacade;
class ShippingServiceProvider extends ServiceProvider
{
@ -15,6 +18,7 @@ class ShippingServiceProvider extends ServiceProvider
*/
public function boot(Router $router)
{
include __DIR__ . '/../Http/helpers.php';
}
/**
@ -24,6 +28,20 @@ class ShippingServiceProvider extends ServiceProvider
*/
public function register()
{
$this->registerFacades();
}
/**
* Register Bouncer as a singleton.
*
* @return void
*/
protected function registerFacades()
{
$loader = AliasLoader::getInstance();
$loader->alias('shipping', ShippingFacade::class);
$this->app->singleton('shipping', function () {
return new Shipping();
});
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace Webkul\Shipping;
use Illuminate\Support\Facades\Config;
/**
* Class Shipping.
*
*/
class Shipping
{
public function collectRates()
{
$rates = [];
foreach(Config::get('carriers') as $shippingMethod) {
$object = new $shippingMethod['class'];
// if($object->isAvailable()) {
$rates[] = $object->calculate();
// }
}
return $rates;
// return view('shop::checkout.onepage.shipping', compact('rates'));
}
}

View File

@ -16,6 +16,15 @@ Route::group(['middleware' => ['web']], function () {
Route::get('test', 'Webkul\Cart\Http\Controllers\CartController@test');
Route::post('/checkout/save-address', 'Webkul\Cart\Http\Controllers\CheckoutController@saveAddress')->name('shop.checkout.save-address');
Route::post('/checkout/save-shipping', 'Webkul\Cart\Http\Controllers\CheckoutController@saveShipping')->name('shop.checkout.save-shipping');
Route::post('/checkout/save-payment', 'Webkul\Cart\Http\Controllers\CheckoutController@savePayment')->name('shop.checkout.save-payment');
/* dummy routes ends here */
Route::get('/products/{slug}', 'Webkul\Shop\Http\Controllers\ProductController@index')->defaults('_config', [
'view' => 'shop::products.view'
])->name('shop.products.index');

File diff suppressed because it is too large Load Diff

View File

@ -84,7 +84,8 @@ return [
'order-summary' => 'Order Summary',
'shipping-address' => 'Shipping Address',
'use_for_shipping' => 'Ship to this address',
'continue' => 'Continue'
'continue' => 'Continue',
'shipping-method' => 'Shipping Method'
]
]
];

View File

@ -18,40 +18,28 @@
<div class="col-main">
<ul class="checkout-steps">
<li class="active">
<div class="decorator">
<img src="{{ bagisto_asset('images/address.svg') }}" />
</div>
<li class="active" :class="[completedStep >= 0 ? 'active' : '', completedStep > 0 ? 'completed' : '']" @click="navigateToStep(1)">
<div class="decorator address-info"></div>
<span>{{ __('shop::app.checkout.onepage.information') }}</span>
</li>
<li>
<div class="decorator">
<img src="{{ bagisto_asset('images/shipping.svg') }}" />
</div>
<li :class="[currentStep == 2 || completedStep > 1 ? 'active' : '', completedStep > 1 ? 'completed' : '']" @click="navigateToStep(2)">
<div class="decorator shipping"></div>
<span>{{ __('shop::app.checkout.onepage.shipping') }}</span>
</li>
<li>
<div class="decorator">
<img src="{{ bagisto_asset('images/payment.svg') }}" />
</div>
<li :class="[currentStep == 3 || completedStep > 2 ? 'active' : '', completedStep > 2 ? 'completed' : '']" @click="navigateToStep(3)">
<div class="decorator payment"></div>
<span>{{ __('shop::app.checkout.onepage.payment') }}</span>
</li>
<li>
<div class="decorator">
<img src="{{ bagisto_asset('images/finish.svg') }}" />
</div>
<li :class="[currentStep == 4 ? 'active' : '']">
<div class="decorator review"></div>
<span>{{ __('shop::app.checkout.onepage.complete') }}</span>
</li>
</ul>
<div class="step-content information">
<div class="step-content information" v-show="currentStep == 1">
@include('shop::checkout.onepage.customer-info')
@ -65,15 +53,32 @@
</div>
</div>
<div class="step-content shipping" v-show="currentStep == 2">
<div class="step-content shipping">
</div>
@include('shop::checkout.onepage.shipping')
<div class="step-content payment">
</div>
<div class="button-group">
<button type="button" class="btn btn-lg btn-primary" @click="validateForm('shipping-form')">
{{ __('shop::app.checkout.onepage.continue') }}
</button>
</div>
</div>
<div class="step-content payment" v-show="currentStep == 3">
@include('shop::checkout.onepage.payment')
</div>
<div class="step-content review" v-show="currentStep == 4">
@include('shop::checkout.onepage.review')
</div>
<div class="step-content review">
</div>
@include('shop::checkout.onepage.summary')
@ -89,10 +94,27 @@
inject: ['$validator'],
data: () => ({
billing: {
use_for_shipping: true
currentStep: 1,
completedStep: 0,
shipping_methods: [],
payment_methods: [],
address: {
billing: {
use_for_shipping: true
},
shipping: {},
},
shipping: {},
selected_shipping_method: '',
selected_payment: {
method: ''
}
}),
created () {
@ -100,19 +122,52 @@
},
methods: {
navigateToStep (step) {
if(step <= this.completedStep) {
this.currentStep = step
this.completedStep = step - 1;
}
},
validateForm: function (scope) {
this.$validator.validateAll(scope).then((result) => {
if(result) {
this.saveAddress()
if(scope == 'address-form') {
this.saveAddress()
} else if(scope == 'shipping-form') {
this.saveShipping()
}
}
});
},
saveAddress () {
var this_this = this;
this.$http.post("{{ route('shop.checkout.save-address') }}", this.address)
.then(function(response) {
if(response.data.shipping) {
this_this.shipping_methods = response.data.shipping
this_this.completedStep = 1;
this_this.currentStep = 2;
}
})
},
saveShipping () {
// this.$http.get('https://api.coindesk.com/v1/bpi/currentprice.json')
// .then(function(response) {
// console.log(response)
// })
this.completedStep = 2;
this.currentStep = 3;
// })
},
savePayment () {
// this.$http.get('https://api.coindesk.com/v1/bpi/currentprice.json')
// .then(function(response) {
this.completedStep = 1;
this.currentStep = 2;
// })
}
}
})

View File

@ -15,7 +15,7 @@
{{ __('shop::app.checkout.onepage.first-name') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[first_name]" name="billing[first_name]" v-model="billing.first_name"/>
<input type="text" v-validate="'required'" class="control" id="billing[first_name]" name="billing[first_name]" v-model="address.billing.first_name"/>
<span class="control-error" v-if="errors.has('address-form.billing[first_name]')">
@{{ errors.first('address-form.billing[first_name]') }}
@ -27,7 +27,7 @@
{{ __('shop::app.checkout.onepage.last-name') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[last_name]" name="billing[last_name]" v-model="billing.last_name"/>
<input type="text" v-validate="'required'" class="control" id="billing[last_name]" name="billing[last_name]" v-model="address.billing.last_name"/>
<span class="control-error" v-if="errors.has('address-form.billing[last_name]')">
@{{ errors.first('address-form.billing[last_name]') }}
@ -39,7 +39,7 @@
{{ __('shop::app.checkout.onepage.email') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[email]" name="billing[email]" v-model="billing.email"/>
<input type="text" v-validate="'required'" class="control" id="billing[email]" name="billing[email]" v-model="address.billing.email"/>
<span class="control-error" v-if="errors.has('address-form.billing[email]')">
@{{ errors.first('address-form.billing[email]') }}
@ -51,7 +51,7 @@
{{ __('shop::app.checkout.onepage.address1') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[address1]" name="billing[address1]" v-model="billing.address1"/>
<input type="text" v-validate="'required'" class="control" id="billing[address1]" name="billing[address1]" v-model="address.billing.address1"/>
<span class="control-error" v-if="errors.has('address-form.billing[address1]')">
@{{ errors.first('address-form.billing[address1]') }}
@ -63,7 +63,7 @@
{{ __('shop::app.checkout.onepage.address2') }}
</label>
<input type="text" class="control" id="billing[address2]" name="billing[address2]" v-model="billing.address2"/>
<input type="text" class="control" id="billing[address2]" name="billing[address2]" v-model="address.billing.address2"/>
</div>
<div class="control-group" :class="[errors.has('address-form.billing[city]') ? 'has-error' : '']">
@ -71,7 +71,7 @@
{{ __('shop::app.checkout.onepage.city') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[city]" name="billing[city]" v-model="billing.city"/>
<input type="text" v-validate="'required'" class="control" id="billing[city]" name="billing[city]" v-model="address.billing.city"/>
<span class="control-error" v-if="errors.has('address-form.billing[city]')">
@{{ errors.first('address-form.billing[city]') }}
@ -83,7 +83,7 @@
{{ __('shop::app.checkout.onepage.state') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[state]" name="billing[state]" v-model="billing.state"/>
<input type="text" v-validate="'required'" class="control" id="billing[state]" name="billing[state]" v-model="address.billing.state"/>
<span class="control-error" v-if="errors.has('address-form.billing[state]')">
@{{ errors.first('address-form.billing[state]') }}
@ -95,7 +95,7 @@
{{ __('shop::app.checkout.onepage.postcode') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[postcode]" name="billing[postcode]" v-model="billing.postcode"/>
<input type="text" v-validate="'required'" class="control" id="billing[postcode]" name="billing[postcode]" v-model="address.billing.postcode"/>
<span class="control-error" v-if="errors.has('address-form.billing[postcode]')">
@{{ errors.first('address-form.billing[postcode]') }}
@ -107,7 +107,7 @@
{{ __('shop::app.checkout.onepage.phone') }}
</label>
<input type="text" v-validate="'required'" class="control" id="billing[phone]" name="billing[phone]" v-model="billing.phone"/>
<input type="text" v-validate="'required'" class="control" id="billing[phone]" name="billing[phone]" v-model="address.billing.phone"/>
<span class="control-error" v-if="errors.has('address-form.billing[phone]')">
@{{ errors.first('address-form.billing[phone]') }}
@ -119,7 +119,7 @@
{{ __('shop::app.checkout.onepage.country') }}
</label>
<select type="text" v-validate="'required'" class="control" id="billing[country]" name="billing[country]" v-model="billing.country">
<select type="text" v-validate="'required'" class="control" id="billing[country]" name="billing[country]" v-model="address.billing.country">
<option value=""></option>
@foreach (country()->all() as $code => $country)
@ -136,7 +136,7 @@
<div class="control-group">
<span class="checkbox">
<input type="checkbox" id="billing[use_for_shipping]" name="billing[use_for_shipping]" v-model="billing.use_for_shipping"/>
<input type="checkbox" id="billing[use_for_shipping]" name="billing[use_for_shipping]" v-model="address.billing.use_for_shipping"/>
<label class="checkbox-view" for="billing[use_for_shipping]"></label>
{{ __('shop::app.checkout.onepage.use_for_shipping') }}
</span>
@ -144,7 +144,7 @@
</div>
</div>
<div class="form-container" v-if="!billing.use_for_shipping">
<div class="form-container" v-if="!address.billing.use_for_shipping">
<div class="form-header">
<h1>{{ __('shop::app.checkout.onepage.shipping-address') }}</h1>
@ -155,7 +155,7 @@
{{ __('shop::app.checkout.onepage.first-name') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[first_name]" name="shipping[first_name]" v-model="shipping.first_name"/>
<input type="text" v-validate="'required'" class="control" id="shipping[first_name]" name="shipping[first_name]" v-model="address.shipping.first_name"/>
<span class="control-error" v-if="errors.has('address-form.shipping[first_name]')">
@{{ errors.first('address-form.shipping[first_name]') }}
@ -167,7 +167,7 @@
{{ __('shop::app.checkout.onepage.last-name') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[last_name]" name="shipping[last_name]" v-model="shipping.last_name"/>
<input type="text" v-validate="'required'" class="control" id="shipping[last_name]" name="shipping[last_name]" v-model="address.shipping.last_name"/>
<span class="control-error" v-if="errors.has('address-form.shipping[last_name]')">
@{{ errors.first('address-form.shipping[last_name]') }}
@ -179,7 +179,7 @@
{{ __('shop::app.checkout.onepage.email') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[email]" name="shipping[email]" v-model="shipping.email"/>
<input type="text" v-validate="'required'" class="control" id="shipping[email]" name="shipping[email]" v-model="address.shipping.email"/>
<span class="control-error" v-if="errors.has('address-form.shipping[email]')">
@{{ errors.first('address-form.shipping[email]') }}
@ -191,7 +191,7 @@
{{ __('shop::app.checkout.onepage.address1') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[address1]" name="shipping[address1]" v-model="shipping.address1"/>
<input type="text" v-validate="'required'" class="control" id="shipping[address1]" name="shipping[address1]" v-model="address.shipping.address1"/>
<span class="control-error" v-if="errors.has('address-form.shipping[address1]')">
@{{ errors.first('address-form.shipping[address1]') }}
@ -203,7 +203,7 @@
{{ __('shop::app.checkout.onepage.address2') }}
</label>
<input type="text" class="control" id="shipping[address2]" name="shipping[address2]" v-model="shipping.address2"/>
<input type="text" class="control" id="shipping[address2]" name="shipping[address2]" v-model="address.shipping.address2"/>
</div>
<div class="control-group" :class="[errors.has('address-form.shipping[city]') ? 'has-error' : '']">
@ -211,7 +211,7 @@
{{ __('shop::app.checkout.onepage.city') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[city]" name="shipping[city]" v-model="shipping.city"/>
<input type="text" v-validate="'required'" class="control" id="shipping[city]" name="shipping[city]" v-model="address.shipping.city"/>
<span class="control-error" v-if="errors.has('address-form.shipping[city]')">
@{{ errors.first('address-form.shipping[city]') }}
@ -223,7 +223,7 @@
{{ __('shop::app.checkout.onepage.state') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[state]" name="shipping[state]" v-model="shipping.state"/>
<input type="text" v-validate="'required'" class="control" id="shipping[state]" name="shipping[state]" v-model="address.shipping.state"/>
<span class="control-error" v-if="errors.has('address-form.shipping[state]')">
@{{ errors.first('address-form.shipping[state]') }}
@ -235,7 +235,7 @@
{{ __('shop::app.checkout.onepage.postcode') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[postcode]" name="shipping[postcode]" v-model="shipping.postcode"/>
<input type="text" v-validate="'required'" class="control" id="shipping[postcode]" name="shipping[postcode]" v-model="address.shipping.postcode"/>
<span class="control-error" v-if="errors.has('address-form.shipping[postcode]')">
@{{ errors.first('address-form.shipping[postcode]') }}
@ -247,7 +247,7 @@
{{ __('shop::app.checkout.onepage.phone') }}
</label>
<input type="text" v-validate="'required'" class="control" id="shipping[phone]" name="shipping[phone]" v-model="shipping.phone"/>
<input type="text" v-validate="'required'" class="control" id="shipping[phone]" name="shipping[phone]" v-model="address.shipping.phone"/>
<span class="control-error" v-if="errors.has('address-form.shipping[phone]')">
@{{ errors.first('address-form.shipping[phone]') }}
@ -259,7 +259,7 @@
{{ __('shop::app.checkout.onepage.country') }}
</label>
<select type="text" v-validate="'required'" class="control" id="shipping[country]" name="shipping[country]" v-model="shipping.country">
<select type="text" v-validate="'required'" class="control" id="shipping[country]" name="shipping[country]" v-model="address.shipping.country">
<option value=""></option>
@foreach (country()->all() as $code => $country)

View File

@ -0,0 +1,26 @@
<form data-vv-scope="shipping-form">
<div class="form-container">
<div class="form-header">
<h1>{{ __('shop::app.checkout.onepage.shipping-method') }}</h1>
</div>
<div class="shipping-methods">
<div class="control-group" v-for='(shipping_method, index) in shipping_methods' :class="[errors.has('shipping-form.shipping_method') ? 'has-error' : '']">
<h4 for="">@{{ shipping_method.carrier_title }}</h4>
<span class="radio" v-for='(rate, index) in shipping_method.rates'>
<input v-validate="'required'" type="radio" :id="rate.method" name="shipping_method" :value="rate.method">
<label class="radio-view" :for="rate.method"></label>
@{{ rate.method_title }}
<b>@{{ rate.price_formated }}</b>
</span>
<span class="control-error" v-if="errors.has('shipping-form.shipping_method')">
@{{ errors.first('shipping-form.shipping_method') }}
</span>
</div>
</div>
</div>
</form>

View File

@ -816,7 +816,7 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
}
.layered-filter-wrapper .filter-attributes .filter-attributes-item.active .filter-attributes-title .icon {
background-image: url("../images//arrow-up.svg") !important;
background-image: url("../images/arrow-up.svg") !important;
}
.main-container-wrapper {
@ -1605,6 +1605,72 @@ section.product-detail div.layouter form .details .full-description {
font-size: 16px;
}
.rating-reviews .rating-header {
font-weight: 600;
padding: 20px 0;
}
.rating-reviews .stars .icon {
width: 16px;
height: 16px;
}
.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;
}
.rating-reviews .overall .review-info .total-reviews {
margin-top: 10px;
}
.rating-reviews .reviews {
margin-top: 40px;
margin-bottom: 40px;
}
.rating-reviews .reviews .review {
margin-bottom: 25px;
}
.rating-reviews .reviews .review .title {
margin-bottom: 5px;
}
.rating-reviews .reviews .review .stars {
margin-bottom: 15px;
display: inline-block;
}
.rating-reviews .reviews .review .message {
margin-bottom: 10px;
}
.rating-reviews .reviews .review .reviewer-details {
color: #5E5E5E;
}
.rating-reviews .reviews .view-all {
margin-top: 15px;
color: #0031f0;
margin-bottom: 15px;
}
/* cart pages and elements css begins here */
section.cart {
color: #242424;
@ -2145,462 +2211,6 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
color: #3A3A3A;
}
@media all and (max-width: 480px) {
.order {
margin-left: 0%;
}
.order .order-section-head {
display: none;
}
.order .order-section-head-small {
display: block;
margin-top: -15px;
}
.order .order-section-head-small span {
display: inline-block;
width: 33.3%;
}
.order .order-section-head-small .icon {
float: left;
}
.order .order-section-head-small .icon img {
margin-top: 11px;
}
.order .order-section-head-small .order-number {
text-align: center;
font-size: 16px;
color: #242424;
letter-spacing: -0.38px;
text-align: center;
margin-top: 13px;
margin-bottom: 13px;
}
.order .order-section-head-small .cancel {
float: right;
text-align: right;
font-size: 17px;
color: #0031F0;
letter-spacing: -0.11px;
margin-top: 13px;
margin-bottom: 13px;
}
.order .order-section-head-small .horizon-rule {
border: .5px solid #E8E8E8;
width: 150%;
margin-left: -10%;
margin-right: -10%;
}
.order .payment-place {
font-size: 16px;
color: #5e5e5e;
margin-top: 4%;
}
.order .payment-place .placed-on {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.order .payment-place .placed-on .place-text {
width: 100%;
}
.order .payment-place .placed-on .place-text span {
font-size: 14px;
}
.order .payment-place .placed-on .place-text .processing {
display: block;
float: right;
background: #2ED04C;
height: 25px;
border-radius: 100px;
font-size: 14px;
color: #FFFFFF;
letter-spacing: -0.12px;
width: 110px;
text-align: center;
padding-top: 3.5px;
padding-left: 5px;
margin-top: 3px;
}
.order .payment-place .placed-on .place-date {
margin-top: -5px;
}
.order .payment-place .payment-status {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.order .payment-place .payment-status .payment-text span {
font-size: 14px;
}
.order .payment-place .payment-status .status {
margin-top: 2px;
}
.order .payment-place .horizontal-rule {
margin-top: 1.1%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.order .order-details {
display: none;
}
.order .total {
margin-top: 5%;
height: 130px;
}
.order .total .calculate {
width: 100%;
float: left;
}
.order .total .calculate .sub-total .left {
margin-left: 0px;
width: 100px;
}
.order .total .calculate .sub-total .middle {
display: none;
}
.order .total .calculate .sub-total .right {
float: right;
width: 25%;
}
.order .total .calculate .ship-handle .left {
margin-left: 0px;
}
.order .total .calculate .ship-handle .middle {
display: none;
}
.order .total .calculate .ship-handle .right {
float: right;
width: 25%;
}
.order .total .calculate .discount .left {
margin-left: 0px;
}
.order .total .calculate .discount .middle {
display: none;
}
.order .total .calculate .discount .right {
float: right;
width: 25%;
}
.order .total .calculate .grand-total .left {
margin-left: 0px;
}
.order .total .calculate .grand-total .middle {
display: none;
}
.order .total .calculate .grand-total .right {
float: right;
width: 25%;
}
.order .total .calculate .due .left {
margin-left: 0px;
}
.order .total .calculate .due .middle {
display: none;
}
.order .total .calculate .due .right {
float: right;
width: 25%;
}
.order .horizontal-rule {
display: none;
}
.order .table {
display: none;
}
.order .product-config {
border: 1px solid #E8E8E8;
height: 19%;
width: 100%;
margin-top: 10px;
display: block;
}
.order .product-config .product-attribute {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.order .product-config .product-attribute .product-property {
width: 30%;
margin-top: 10px;
margin-left: 5px;
}
.order .product-config .product-attribute .product-property span {
font-size: 14px;
color: #5E5E5E;
letter-spacing: -0.11px;
}
.order .product-config .product-attribute .property-name {
margin-top: 10px;
width: 50%;
}
.order .product-config .product-attribute .property-name span {
font-size: 16px;
color: #5E5E5E;
letter-spacing: -0.11px;
}
.order .order-information {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.order .order-information .order-address-method {
width: 250px;
}
.order .order-information .order-address-method:nth-child(3) {
margin-top: 10px;
}
.order .order-information .order-address-method:nth-child(2) {
margin-top: 10px;
}
.order .order-information .order-address-method:nth-child(4) {
margin-top: 10px;
}
}
@media all and (min-width: 481px) and (max-width: 920px) {
.order {
margin-left: 0%;
}
.order .order-section-head {
display: none;
}
.order .order-section-head-small {
display: block;
margin-top: -15px;
}
.order .order-section-head-small span {
display: inline-block;
width: 33.3%;
}
.order .order-section-head-small .icon {
float: left;
}
.order .order-section-head-small .icon img {
margin-top: 11px;
}
.order .order-section-head-small .order-number {
text-align: center;
font-size: 16px;
color: #242424;
letter-spacing: -0.38px;
text-align: center;
margin-top: 13px;
margin-bottom: 13px;
}
.order .order-section-head-small .cancel {
float: right;
text-align: right;
font-size: 17px;
color: #0031F0;
letter-spacing: -0.11px;
margin-top: 13px;
margin-bottom: 13px;
}
.order .order-section-head-small .horizon-rule {
border: .5px solid #E8E8E8;
width: 150%;
margin-left: -10%;
margin-right: -10%;
}
.order .payment-place {
font-size: 16px;
color: #5e5e5e;
margin-top: 4%;
}
.order .payment-place .placed-on {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.order .payment-place .placed-on .place-text {
width: 100%;
}
.order .payment-place .placed-on .place-text span {
font-size: 14px;
}
.order .payment-place .placed-on .place-text .processing {
display: block;
float: right;
background: #2ED04C;
height: 25px;
border-radius: 100px;
font-size: 14px;
color: #FFFFFF;
letter-spacing: -0.12px;
width: 110px;
text-align: center;
padding-top: 3.5px;
padding-left: 5px;
margin-top: 3px;
}
.order .payment-place .placed-on .place-date {
margin-top: -5px;
}
.order .payment-place .payment-status {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.order .payment-place .payment-status .payment-text span {
font-size: 14px;
}
.order .payment-place .payment-status .status {
margin-top: 2px;
}
.order .payment-place .horizontal-rule {
margin-top: 1.1%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.order .order-details {
display: none;
}
.order .total {
margin-top: 5%;
height: 130px;
}
.order .total .calculate {
width: 100%;
float: left;
}
.order .total .calculate .sub-total .left {
margin-left: 0px;
width: 100px;
}
.order .total .calculate .sub-total .middle {
display: none;
}
.order .total .calculate .sub-total .right {
float: right;
width: 25%;
}
.order .total .calculate .ship-handle .left {
margin-left: 0px;
}
.order .total .calculate .ship-handle .middle {
display: none;
}
.order .total .calculate .ship-handle .right {
float: right;
width: 25%;
}
.order .total .calculate .discount .left {
margin-left: 0px;
}
.order .total .calculate .discount .middle {
display: none;
}
.order .total .calculate .discount .right {
float: right;
width: 25%;
}
.order .total .calculate .grand-total .left {
margin-left: 0px;
}
.order .total .calculate .grand-total .middle {
display: none;
}
.order .total .calculate .grand-total .right {
float: right;
width: 25%;
}
.order .total .calculate .due .left {
margin-left: 0px;
}
.order .total .calculate .due .middle {
display: none;
}
.order .total .calculate .due .right {
float: right;
width: 25%;
}
.order .horizontal-rule {
display: none;
}
.order .table {
display: none;
}
.order .product-config {
border: 1px solid #E8E8E8;
height: 19%;
width: 100%;
margin-top: 10px;
display: block;
}
.order .product-config .product-attribute {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.order .product-config .product-attribute .product-property {
width: 30%;
margin-top: 10px;
margin-left: 5px;
}
.order .product-config .product-attribute .product-property span {
font-size: 14px;
color: #5E5E5E;
letter-spacing: -0.11px;
}
.order .product-config .product-attribute .property-name {
margin-top: 10px;
width: 50%;
}
.order .product-config .product-attribute .property-name span {
font-size: 16px;
color: #5E5E5E;
letter-spacing: -0.11px;
}
.order .order-information {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.order .order-information .order-address-method {
width: 250px;
}
.order .order-information .order-address-method:nth-child(3) {
margin-top: 10px;
}
.order .order-information .order-address-method:nth-child(2) {
margin-top: 10px;
}
.order .order-information .order-address-method:nth-child(4) {
margin-top: 10px;
}
}
.checkout-process {
display: -webkit-box;
display: -ms-flexbox;
@ -2648,10 +2258,32 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
display: -ms-inline-flexbox;
display: inline-flex;
border: 1px solid #E8E8E8;
background-repeat: no-repeat;
background-position: center;
}
.checkout-process .col-main ul.checkout-steps li .decorator img {
margin: auto;
.checkout-process .col-main ul.checkout-steps li .decorator.address-info {
background-image: url("../images/address.svg");
}
.checkout-process .col-main ul.checkout-steps li .decorator.shipping {
background-image: url("../images/shipping.svg");
}
.checkout-process .col-main ul.checkout-steps li .decorator.payment {
background-image: url("../images/payment.svg");
}
.checkout-process .col-main ul.checkout-steps li .decorator.review {
background-image: url("../images/finish.svg");
}
.checkout-process .col-main ul.checkout-steps li.completed {
cursor: pointer;
}
.checkout-process .col-main ul.checkout-steps li.completed .decorator {
background-image: url("../images/complete.svg");
}
.checkout-process .col-main ul.checkout-steps li span {
@ -2692,6 +2324,10 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
padding-bottom: 20px;
}
.checkout-process .col-main .step-content .shipping-methods h4 {
margin: 0;
}
.checkout-process .col-right {
width: 35%;
padding-left: 40px;
@ -2723,14 +2359,6 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
color: #242424;
}
.checkout-process .col-right .order-summary .horizontal-rule {
margin-top: 6%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.checkout-process .col-right .order-summary .payble-amount {
margin-top: 12px;
}
@ -2752,292 +2380,6 @@ section.cart .cart-content .right-side .coupon-section .after-coupon-amount .amo
color: #242424;
}
@media all and (max-width: 480px) {
.checkout-process {
width: 100%;
margin-top: 3%;
}
.checkout-process .left-side {
width: 100%;
margin-right: 0%;
height: 60px;
}
.checkout-process .left-side .checkout-menu {
width: 100%;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail {
height: 60px;
width: 100%;
padding: 5px;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail li {
height: 48px;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper span {
display: none;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail .line {
margin-top: 23px;
width: 100%;
margin-left: 5px;
margin-right: 5px;
border: 1px solid #E7E7E7;
height: 1px;
}
.checkout-process .left-side .checkout-menu .horizontal-rule {
display: none;
}
.checkout-process .right-side {
display: none;
}
.order-info {
width: 100%;
margin-right: 0%;
margin-top: 10px;
height: 50px;
}
.order-info .control-group .control {
width: 100%;
}
.order-info .different-billing-addr {
margin-top: 5%;
}
.order-info .horizontal-rule {
margin-top: 10%;
}
.order-info .countinue-button {
margin-top: 8%;
}
}
@media all and (min-width: 481px) and (max-width: 920px) {
.checkout-process {
width: 100%;
margin-top: 3%;
}
.checkout-process .left-side {
width: 100%;
margin-right: 0%;
height: 60px;
}
.checkout-process .left-side .checkout-menu {
width: 100%;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail {
height: 60px;
width: 100%;
padding: 5px;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail li {
height: 48px;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail li .wrapper span {
display: none;
}
.checkout-process .left-side .checkout-menu ul.checkout-detail .line {
margin-top: 23px;
width: 100%;
margin-left: 10px;
margin-right: 10px;
border: 1px solid #E7E7E7;
height: 1px;
}
.checkout-process .left-side .checkout-menu .horizontal-rule {
display: none;
}
.checkout-process .right-side {
display: none;
}
.order-info {
width: 100%;
margin-right: 0%;
margin-top: 10px;
height: 50px;
}
.order-info .control-group .control {
width: 100%;
}
.order-info .different-billing-addr {
margin-top: 3%;
}
.order-info .horizontal-rule {
margin-top: 10%;
}
.order-info .countinue-button {
margin-top: 5%;
}
}
.ship-method {
width: 67%;
margin-right: 6%;
height: 600px;
margin-top: -190px;
}
.ship-method .ship-info .ship-text {
font-size: 24px;
color: #242424;
letter-spacing: -0.58px;
font-weight: bold;
}
.ship-method .ship-price {
margin-top: 31px;
}
.ship-method .ship-price .price-checkbox {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.ship-method .ship-price .price-checkbox span {
margin-left: 8px;
font-size: 16px;
color: #242424;
line-height: 22px;
font-weight: bold;
}
.ship-method .ship-price .price-checkbox-text {
margin-left: 25px;
width: 580px;
height: 44px;
margin-top: 4px;
}
.ship-method .ship-price .price-checkbox-text b {
font-size: 16px;
}
.ship-method .ship-price .price-checkbox-text span {
font-size: 16px;
color: #242424;
line-height: 22px;
}
.ship-method .horizontal-rule {
margin-top: 7%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.ship-method .countinue-button {
margin-top: 3%;
}
.ship-method .countinue-button button {
background: #0031F0;
font-size: 14px;
color: #FFFFFF;
letter-spacing: -0.26px;
text-align: center;
height: 38px;
width: 137px;
border: none;
}
.payment-method {
width: 67%;
margin-right: 6%;
height: 600px;
margin-top: -190px;
}
.payment-method .payment-info .payment-text {
font-size: 24px;
color: #242424;
letter-spacing: -0.58px;
font-weight: bold;
}
.payment-method .payment-price {
margin-top: 31px;
}
.payment-method .payment-price .payment-checkbox {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.payment-method .payment-price .payment-checkbox span {
margin-left: 8px;
font-size: 16px;
color: #242424;
line-height: 22px;
font-weight: bold;
}
.payment-method .payment-price .payment-checkbox-text {
margin-left: 25px;
width: 580px;
height: 44px;
margin-top: 4px;
}
.payment-method .payment-price .payment-checkbox-text b {
font-size: 16px;
}
.payment-method .payment-price .payment-checkbox-text span {
font-size: 16px;
color: #242424;
line-height: 22px;
}
.payment-method .horizontal-rule {
margin-top: 7%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.payment-method .countinue-button {
margin-top: 3%;
}
.payment-method .countinue-button button {
background: #0031F0;
font-size: 14px;
color: #FFFFFF;
letter-spacing: -0.26px;
text-align: center;
height: 38px;
width: 137px;
border: none;
}
.payment-method .countinue-button button .horizontal-rule {
margin-top: 7%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.payment-method .countinue-button button .horizontal-rule {
margin-top: 7%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.complete-page {
width: 880px;
height: 1050px;

File diff suppressed because one or more lines are too long