merged with master
This commit is contained in:
commit
2474f5c787
|
|
@ -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": {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
],
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'cashondelivery' => [
|
||||
'code' => 'cashondelivery',
|
||||
'title' => 'Cash On Delivery',
|
||||
'class' => 'Webkul\Payment\Payment\Payment',
|
||||
'order_status' => 'Pending',
|
||||
'active' => true
|
||||
]
|
||||
];
|
||||
|
||||
?>
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
@ -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()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Cart\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CartAddress extends Model
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Cart\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CartShipping extends Model
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
@ -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.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
use Webkul\Payment\Payment;
|
||||
|
||||
if (! function_exists('payment')) {
|
||||
function payment()
|
||||
{
|
||||
return new Payment;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Payment\Payment;
|
||||
|
||||
class CashOnDelivery extends Payment
|
||||
{
|
||||
/**
|
||||
* Payment method code
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $code = 'cashondelivery';
|
||||
}
|
||||
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -157,7 +157,7 @@ class Product extends Model
|
|||
* @return mixed
|
||||
*/
|
||||
public function getAttribute($key)
|
||||
{
|
||||
{
|
||||
if (!method_exists(self::class, $key) && !in_array($key, ['parent_id', 'attribute_family_id']) && !isset($this->attributes[$key])) {
|
||||
if (isset($this->id) && $this->isCustomAttribute($key)) {
|
||||
$this->attributes[$key] = '';
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -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]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
use Webkul\Shipping\Shipping;
|
||||
|
||||
if (! function_exists('shipping')) {
|
||||
function shipping()
|
||||
{
|
||||
return new Shipping;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -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,8 +18,9 @@ class ShippingServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function boot(Router $router)
|
||||
{
|
||||
include __DIR__ . '/../Http/helpers.php';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register services.
|
||||
*
|
||||
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'));
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
|
@ -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'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -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">
|
||||
|
||||
@include('shop::checkout.onepage.shipping')
|
||||
|
||||
<div class="step-content shipping">
|
||||
</div>
|
||||
<div class="button-group">
|
||||
|
||||
<div class="step-content payment">
|
||||
</div>
|
||||
<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;
|
||||
// })
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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
Loading…
Reference in New Issue