diff --git a/.env.example b/.env.example index 76b6ac73c..bb471ec98 100644 --- a/.env.example +++ b/.env.example @@ -13,6 +13,7 @@ DB_PORT=3306 DB_DATABASE= DB_USERNAME= DB_PASSWORD= +DB_PREFIX= BROADCAST_DRIVER=log CACHE_DRIVER=file diff --git a/.env.testing b/.env.testing new file mode 100644 index 000000000..6b1104008 --- /dev/null +++ b/.env.testing @@ -0,0 +1,45 @@ +APP_NAME=Bagisto +APP_ENV=local +APP_VERSION=0.1.8 +APP_KEY=base64:NFtGjjFAqET6RlX3PVC/gFpzHb4jK1OxDc3cuU5Asz4= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=mysql +DB_PORT=3306 +DB_DATABASE=bagisto_test +DB_USERNAME=root +DB_PASSWORD=root + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +SESSION_DRIVER=file +SESSION_LIFETIME=20 +QUEUE_DRIVER=sync + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_DRIVER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME= +MAIL_PASSWORD= +MAIL_ENCRYPTION=tls + +SHOP_MAIL_FROM= +ADMIN_MAIL_TO= + +fixer_api_key= + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/.github/ISSUE_TEMPLATE/3_Support_question.md b/.github/ISSUE_TEMPLATE/3_Support_question.md index a53ef6fa7..d6c5e5020 100644 --- a/.github/ISSUE_TEMPLATE/3_Support_question.md +++ b/.github/ISSUE_TEMPLATE/3_Support_question.md @@ -1,5 +1,5 @@ --- -name: "🧐 Support Question" +name: "❔ Support Question" about: 'This repository is only for reporting bugs or problems. If you need help, see: https://github.com/bagisto/bagisto#documentation' --- @@ -8,4 +8,4 @@ This repository is only for reporting bugs or issues. If you need support, pleas 1. Create support ticket on https://bagisto.uvdesk.com -Thanks! \ No newline at end of file +Thanks! diff --git a/.gitignore b/.gitignore index 1eea901cd..fa1eccb1e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ /public/js /public/vendor /public/themes -/storage/*.key /vendor /.idea /.vscode @@ -20,3 +19,6 @@ composer.lock yarn.lock package-lock.json yarn.lock +.php_cs.cache +storage/ +storage/*.key diff --git a/codeception.yml b/codeception.yml new file mode 100644 index 000000000..18bdc7c08 --- /dev/null +++ b/codeception.yml @@ -0,0 +1,11 @@ +paths: + tests: tests + output: tests/_output + data: tests/_data + support: tests/_support + envs: tests/_envs +actor_suffix: Tester +extensions: + enabled: + - Codeception\Extension\RunFailed + diff --git a/composer.json b/composer.json index 03d5e3e62..04f267c58 100755 --- a/composer.json +++ b/composer.json @@ -2,9 +2,10 @@ "name": "bagisto/bagisto", "description": "Bagisto Laravel ECommerce", "keywords": [ - "framework", - "laravel" + "framework", + "laravel" ], + "license": "MIT", "type": "project", "require": { @@ -17,7 +18,6 @@ "ext-pdo_mysql": "*", "ext-tokenizer": "*", "astrotomic/laravel-translatable": "^11.0.0", - "alkhachatryan/laravel-web-console": "1.5.1", "barryvdh/laravel-dompdf": "0.8.3", "doctrine/dbal": "2.9.2", "fideloper/proxy": "^4.0", @@ -34,94 +34,111 @@ "prettus/l5-repository": "2.6.32", "tymon/jwt-auth": "1.0.0-rc.4" }, + "require-dev": { - "barryvdh/laravel-debugbar": "^3.1", - "filp/whoops": "^2.0", - "fzaninotto/faker": "^1.4", - "laravel/dusk": "^4.0", - "mockery/mockery": "^1.0", - "nunomaduro/collision": "^2.0", - "phpunit/phpunit": "^7.0" + "codeception/codeception": "3.1.*", + "barryvdh/laravel-debugbar": "^3.1", + "filp/whoops": "^2.0", + "fzaninotto/faker": "^1.4", + "laravel/dusk": "^4.0", + "mockery/mockery": "^1.0", + "nunomaduro/collision": "^2.0", + "phpunit/phpunit": "^7.0" }, + "replace": { - "bagisto/laravel-user": "v0.1.0", - "bagisto/laravel-admin": "v0.1.0", - "bagisto/laravel-ui": "v0.1.0", - "bagisto/laravel-core": "v0.1.0", - "bagisto/laravel-attribute": "v0.1.0", - "bagisto/laravel-checkout": "v0.1.0", - "bagisto/laravel-customer": "v0.1.0", - "bagisto/laravel-inventory": "v0.1.0", - "bagisto/laravel-category": "v0.1.0", - "bagisto/laravel-product": "v0.1.0", - "bagisto/laravel-shop": "v0.1.0", - "bagisto/laravel-theme": "v0.1.0", - "bagisto/laravel-shipping": "v0.1.0", - "bagisto/laravel-payment": "v0.1.0", - "bagisto/laravel-sales": "v0.1.0", - "bagisto/laravel-tax": "v0.1.0", - "bagisto/laravel-api": "v0.1.0", - "bagisto/laravel-paypal": "v0.1.0", - "bagisto/laravel-discount": "v0.1.0" + "bagisto/laravel-user": "v0.1.0", + "bagisto/laravel-admin": "v0.1.0", + "bagisto/laravel-ui": "v0.1.0", + "bagisto/laravel-core": "v0.1.0", + "bagisto/laravel-attribute": "v0.1.0", + "bagisto/laravel-checkout": "v0.1.0", + "bagisto/laravel-customer": "v0.1.0", + "bagisto/laravel-inventory": "v0.1.0", + "bagisto/laravel-category": "v0.1.0", + "bagisto/laravel-product": "v0.1.0", + "bagisto/laravel-shop": "v0.1.0", + "bagisto/laravel-theme": "v0.1.0", + "bagisto/laravel-shipping": "v0.1.0", + "bagisto/laravel-payment": "v0.1.0", + "bagisto/laravel-sales": "v0.1.0", + "bagisto/laravel-tax": "v0.1.0", + "bagisto/laravel-api": "v0.1.0", + "bagisto/laravel-paypal": "v0.1.0", + "bagisto/laravel-discount": "v0.1.0" }, + "autoload": { - "classmap": [ - "database/seeds", - "database/factories" - ], - "psr-4": { - "App\\": "app/", - "Webkul\\User\\": "packages/Webkul/User/src", - "Webkul\\Admin\\": "packages/Webkul/Admin/src", - "Webkul\\Ui\\": "packages/Webkul/Ui/src", - "Webkul\\Category\\": "packages/Webkul/Category/src", - "Webkul\\Checkout\\": "packages/Webkul/Checkout/src", - "Webkul\\Attribute\\": "packages/Webkul/Attribute/src", - "Webkul\\Shop\\": "packages/Webkul/Shop/src", - "Webkul\\Core\\": "packages/Webkul/Core/src", - "Webkul\\Customer\\": "packages/Webkul/Customer/src", - "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\\Payment\\": "packages/Webkul/Payment/src", - "Webkul\\Paypal\\": "packages/Webkul/Paypal/src", - "Webkul\\Sales\\": "packages/Webkul/Sales/src", - "Webkul\\Tax\\": "packages/Webkul/Tax/src", - "Webkul\\API\\": "packages/Webkul/API", - "Webkul\\Discount\\": "packages/Webkul/Discount/src", - "Webkul\\CMS\\": "packages/Webkul/CMS/src" - } + "classmap": [ + "database/seeds", + "database/factories" + ], + "psr-4": { + "App\\": "app/", + "Webkul\\User\\": "packages/Webkul/User/src", + "Webkul\\Admin\\": "packages/Webkul/Admin/src", + "Webkul\\Ui\\": "packages/Webkul/Ui/src", + "Webkul\\Category\\": "packages/Webkul/Category/src", + "Webkul\\Checkout\\": "packages/Webkul/Checkout/src", + "Webkul\\Attribute\\": "packages/Webkul/Attribute/src", + "Webkul\\Shop\\": "packages/Webkul/Shop/src", + "Webkul\\Core\\": "packages/Webkul/Core/src", + "Webkul\\Customer\\": "packages/Webkul/Customer/src", + "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\\Payment\\": "packages/Webkul/Payment/src", + "Webkul\\Paypal\\": "packages/Webkul/Paypal/src", + "Webkul\\Sales\\": "packages/Webkul/Sales/src", + "Webkul\\Tax\\": "packages/Webkul/Tax/src", + "Webkul\\API\\": "packages/Webkul/API", + "Webkul\\Discount\\": "packages/Webkul/Discount/src", + "Webkul\\CMS\\": "packages/Webkul/CMS/src" + } }, + "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } + "psr-4": { + "Tests\\": "tests/" + } }, + "extra": { - "laravel": { - "dont-discover": [ - "barryvdh/laravel-debugbar", - "laravel/dusk" - ] - } + "laravel": { + "dont-discover": [ + "barryvdh/laravel-debugbar", + "laravel/dusk" + ] + } }, + "scripts": { - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate" - ], - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover" - ] + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + + "post-create-project-cmd": [ + "@php artisan key:generate", + "Webkul\\Core\\Events\\ComposerEvents::postCreateProject" + ], + + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover" + ], + "test": [ + "set -e", + "@php artisan migrate:fresh --env=testing", + "vendor/bin/codecept run unit", + "vendor/bin/codecept run functional" + ] }, "config": { - "preferred-install": "stable", - "sort-packages": true, - "optimize-autoloader": true + "preferred-install": "stable", + "sort-packages": true, + "optimize-autoloader": true }, - "minimum-stability": "dev" + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/config/database.php b/config/database.php index 71280b1b1..e84936069 100755 --- a/config/database.php +++ b/config/database.php @@ -36,7 +36,7 @@ return [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', + 'prefix' => env('DB_PREFIX'), ], 'mysql' => [ @@ -49,7 +49,7 @@ return [ 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', + 'prefix' => env('DB_PREFIX'), 'strict' => false, 'engine' => 'InnoDB ROW_FORMAT=DYNAMIC', ], @@ -62,7 +62,7 @@ return [ 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', - 'prefix' => '', + 'prefix' => env('DB_PREFIX'), 'schema' => 'public', 'sslmode' => 'prefer', ], diff --git a/config/laravelwebconsole.php b/config/laravelwebconsole.php deleted file mode 100644 index 1e3be3bce..000000000 --- a/config/laravelwebconsole.php +++ /dev/null @@ -1,51 +0,0 @@ - false, - - // Single-user credentials (REQUIRED) - 'user' => [ - 'name' => env('CONSOLE_USER_NAME', 'root'), - 'password' => env('CONSOLE_USER_PASSWORD', 'root'), - ], - - // Multi-user credentials (OPTIONAL) - // Example: 'user' => 'password', 'user1' => 'password1' - 'accounts' => [ - // 'user' => 'password', - ], - - // Hash incoming password - // By default it's sha256 - 'password_hash_algorithm' => '', - - // Home directory (multi-user mode supported) - // Example: 'home_dir' => '/tmp'; - // 'home_dir' => array('user1' => '/home/user1', 'user2' => '/home/user2'); - 'home_dir' => '', -]; diff --git a/packages/Webkul/API/Http/Resources/Catalog/Product.php b/packages/Webkul/API/Http/Resources/Catalog/Product.php index 711ed1c42..c4a1ec895 100644 --- a/packages/Webkul/API/Http/Resources/Catalog/Product.php +++ b/packages/Webkul/API/Http/Resources/Catalog/Product.php @@ -3,6 +3,7 @@ namespace Webkul\API\Http\Resources\Catalog; use Illuminate\Http\Resources\Json\JsonResource; +use Webkul\Product\Helpers\ProductType; class Product extends JsonResource { @@ -44,7 +45,7 @@ class Product extends JsonResource 'base_image' => $this->productImageHelper->getProductBaseImage($product), 'variants' => Self::collection($this->variants), 'in_stock' => $product->haveSufficientQuantity(1), - $this->mergeWhen($product->type == 'configurable', [ + $this->mergeWhen($product->getTypeInstance()->isComposite(), [ 'super_attributes' => Attribute::collection($product->super_attributes), ]), 'special_price' => $this->when( diff --git a/packages/Webkul/Admin/src/DataGrids/AddressDataGrid.php b/packages/Webkul/Admin/src/DataGrids/AddressDataGrid.php index 4c2de244c..ac7bbc749 100644 --- a/packages/Webkul/Admin/src/DataGrids/AddressDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/AddressDataGrid.php @@ -28,19 +28,19 @@ class AddressDataGrid extends DataGrid * @var object */ protected $customer; - + /** * Create a new controller instance. * * @param Webkul\Customer\Repositories\CustomerRepository $customer * @return void */ - public function __construct( + public function __construct( Customer $customer ) { parent::__construct(); - + $this->customer = $customer; } @@ -52,7 +52,7 @@ class AddressDataGrid extends DataGrid $queryBuilder = DB::table('customer_addresses as ca') ->leftJoin('countries', 'ca.country', '=', 'countries.code') ->leftJoin('customers as c', 'ca.customer_id', '=', 'c.id') - ->addSelect('ca.id as address_id', 'ca.address1', 'ca.country', DB::raw('countries.name as country_name'), 'ca.state', 'ca.city', 'ca.postcode', 'ca.phone', 'ca.default_address') + ->addSelect('ca.id as address_id', 'ca.address1', 'ca.country', DB::raw(''.DB::getTablePrefix().'countries.name as country_name'), 'ca.state', 'ca.city', 'ca.postcode', 'ca.phone', 'ca.default_address') ->where('c.id', $customer->id); $queryBuilder = $queryBuilder->leftJoin('country_states', function($qb) { @@ -62,13 +62,13 @@ class AddressDataGrid extends DataGrid $queryBuilder ->groupBy('ca.id') - ->addSelect(DB::raw('country_states.default_name as state_name')); + ->addSelect(DB::raw(''.DB::getTablePrefix().'country_states.default_name as state_name')); $this->addFilter('address_id', 'ca.id'); $this->addFilter('address1', 'ca.address1'); $this->addFilter('city', 'ca.city'); - $this->addFilter('state_name', DB::raw('country_states.default_name')); - $this->addFilter('country_name', DB::raw('countries.name')); + $this->addFilter('state_name', DB::raw(''.DB::getTablePrefix().'country_states.default_name')); + $this->addFilter('country_name', DB::raw(''.DB::getTablePrefix().'countries.name')); $this->addFilter('postcode', 'ca.postcode'); $this->addFilter('default_address', 'ca.default_address'); diff --git a/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php index 7073e047c..98f7152a7 100755 --- a/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php @@ -21,7 +21,7 @@ class CategoryDataGrid extends DataGrid { $queryBuilder = DB::table('categories as cat') ->select('cat.id as category_id', 'ct.name', 'cat.position', 'cat.status', 'ct.locale', - DB::raw('COUNT(DISTINCT pc.product_id) as count')) + DB::raw('COUNT(DISTINCT '.DB::getTablePrefix().'pc.product_id) as count')) ->leftJoin('category_translations as ct', function($leftJoin) { $leftJoin->on('cat.id', '=', 'ct.category_id') ->where('ct.locale', app()->getLocale()); diff --git a/packages/Webkul/Admin/src/DataGrids/CustomerDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CustomerDataGrid.php index 6952abca6..beba7a4b9 100755 --- a/packages/Webkul/Admin/src/DataGrids/CustomerDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/CustomerDataGrid.php @@ -25,10 +25,10 @@ class CustomerDataGrid extends DataGrid $queryBuilder = DB::table('customers') ->leftJoin('customer_groups', 'customers.customer_group_id', '=', 'customer_groups.id') ->addSelect('customers.id as customer_id', 'customers.email', 'customer_groups.name', 'customers.phone', 'customers.gender', 'status') - ->addSelect(DB::raw('CONCAT(customers.first_name, " ", customers.last_name) as full_name')); + ->addSelect(DB::raw('CONCAT('.DB::getTablePrefix().'customers.first_name, " ", '.DB::getTablePrefix().'customers.last_name) as full_name')); $this->addFilter('customer_id', 'customers.id'); - $this->addFilter('full_name', DB::raw('CONCAT(customers.first_name, " ", customers.last_name)')); + $this->addFilter('full_name', DB::raw('CONCAT('.DB::getTablePrefix().'customers.first_name, " ", '.DB::getTablePrefix().'customers.last_name)')); $this->addFilter('phone', 'customers.phone'); $this->addFilter('gender', 'customers.gender'); diff --git a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php index aa2d91b68..7b8049f84 100755 --- a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php @@ -29,11 +29,11 @@ class OrderDataGrid extends DataGrid ->where('order_address_billing.address_type', 'billing'); }) ->addSelect('orders.id','orders.increment_id', 'orders.base_sub_total', 'orders.base_grand_total', 'orders.created_at', 'channel_name', 'status') - ->addSelect(DB::raw('CONCAT(order_address_billing.first_name, " ", order_address_billing.last_name) as billed_to')) - ->addSelect(DB::raw('CONCAT(order_address_shipping.first_name, " ", order_address_shipping.last_name) as shipped_to')); + ->addSelect(DB::raw('CONCAT('.DB::getTablePrefix().'order_address_billing.first_name, " ", '.DB::getTablePrefix().'order_address_billing.last_name) as billed_to')) + ->addSelect(DB::raw('CONCAT('.DB::getTablePrefix().'order_address_shipping.first_name, " ", '.DB::getTablePrefix().'order_address_shipping.last_name) as shipped_to')); - $this->addFilter('billed_to', DB::raw('CONCAT(order_address_billing.first_name, " ", order_address_billing.last_name)')); - $this->addFilter('shipped_to', DB::raw('CONCAT(order_address_shipping.first_name, " ", order_address_shipping.last_name)')); + $this->addFilter('billed_to', DB::raw('CONCAT('.DB::getTablePrefix().'order_address_billing.first_name, " ", '.DB::getTablePrefix().'order_address_billing.last_name)')); + $this->addFilter('shipped_to', DB::raw('CONCAT('.DB::getTablePrefix().'order_address_shipping.first_name, " ", '.DB::getTablePrefix().'order_address_shipping.last_name)')); $this->addFilter('increment_id', 'orders.increment_id'); $this->addFilter('created_at', 'orders.created_at'); diff --git a/packages/Webkul/Admin/src/DataGrids/OrderRefundDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderRefundDataGrid.php index 2e4b09a37..2c425cb70 100755 --- a/packages/Webkul/Admin/src/DataGrids/OrderRefundDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderRefundDataGrid.php @@ -26,9 +26,9 @@ class OrderRefundDataGrid extends DataGrid $leftJoin->on('order_address_billing.order_id', '=', 'orders.id') ->where('order_address_billing.address_type', 'billing'); }) - ->addSelect(DB::raw('CONCAT(order_address_billing.first_name, " ", order_address_billing.last_name) as billed_to')); + ->addSelect(DB::raw('CONCAT('.DB::getTablePrefix().'order_address_billing.first_name, " ", '.DB::getTablePrefix().'order_address_billing.last_name) as billed_to')); - $this->addFilter('billed_to', DB::raw('CONCAT(order_address_billing.first_name, " ", order_address_billing.last_name)')); + $this->addFilter('billed_to', DB::raw('CONCAT('.DB::getTablePrefix().'order_address_billing.first_name, " ", '.DB::getTablePrefix().'order_address_billing.last_name)')); $this->addFilter('id', 'refunds.id'); $this->addFilter('increment_id', 'orders.increment_id'); $this->addFilter('state', 'refunds.state'); diff --git a/packages/Webkul/Admin/src/DataGrids/OrderShipmentsDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderShipmentsDataGrid.php index 9c94dbf69..c6a30567f 100755 --- a/packages/Webkul/Admin/src/DataGrids/OrderShipmentsDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderShipmentsDataGrid.php @@ -27,7 +27,7 @@ class OrderShipmentsDataGrid extends DataGrid ->leftJoin('orders as ors', 'shipments.order_id', '=', 'ors.id') ->leftJoin('inventory_sources as is', 'shipments.inventory_source_id', '=', 'is.id') ->select('shipments.id as shipment_id', 'ors.increment_id as shipment_order_id', 'shipments.total_qty as shipment_total_qty', 'is.name as inventory_source_name', 'ors.created_at as order_date', 'shipments.created_at as shipment_created_at') - ->addSelect(DB::raw('CONCAT(order_address_shipping.first_name, " ", order_address_shipping.last_name) as shipped_to')); + ->addSelect(DB::raw('CONCAT('.DB::getTablePrefix().'order_address_shipping.first_name, " ", '.DB::getTablePrefix().'order_address_shipping.last_name) as shipped_to')); $this->addFilter('shipment_id', 'shipments.id'); $this->addFilter('shipment_order_id', 'ors.increment_id'); @@ -35,7 +35,7 @@ class OrderShipmentsDataGrid extends DataGrid $this->addFilter('inventory_source_name', 'is.name'); $this->addFilter('order_date', 'ors.created_at'); $this->addFilter('shipment_created_at', 'shipments.created_at'); - $this->addFilter('shipped_to', DB::raw('CONCAT(order_address_shipping.first_name, " ", order_address_shipping.last_name)')); + $this->addFilter('shipped_to', DB::raw(''.DB::getTablePrefix().'CONCAT(order_address_shipping.first_name, " ", '.DB::getTablePrefix().'order_address_shipping.last_name)')); $this->setQueryBuilder($queryBuilder); } diff --git a/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php index bac760717..52f7318d4 100644 --- a/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php @@ -25,7 +25,7 @@ class ProductDataGrid extends DataGrid ->leftJoin('products', 'product_flat.product_id', '=', 'products.id') ->leftJoin('attribute_families', 'products.attribute_family_id', '=', 'attribute_families.id') ->leftJoin('product_inventories', 'product_flat.product_id', '=', 'product_inventories.product_id') - ->select('product_flat.product_id as product_id', 'product_flat.sku as product_sku', 'product_flat.name as product_name', 'products.type as product_type', 'product_flat.status', 'product_flat.price', 'attribute_families.name as attribute_family', DB::raw('SUM(product_inventories.qty) as quantity')) + ->select('product_flat.product_id as product_id', 'product_flat.sku as product_sku', 'product_flat.name as product_name', 'products.type as product_type', 'product_flat.status', 'product_flat.price', 'attribute_families.name as attribute_family', DB::raw('SUM('.DB::getTablePrefix().'product_inventories.qty) as quantity')) ->where('channel', core()->getCurrentChannelCode()) ->where('locale', app()->getLocale()) ->groupBy('product_flat.product_id'); @@ -152,7 +152,7 @@ class ProductDataGrid extends DataGrid public function prepareMassActions() { $this->addMassAction([ 'type' => 'delete', - 'label' => 'Delete', + 'label' => 'Delete', 'action' => route('admin.catalog.products.massdelete'), 'method' => 'DELETE' ]); diff --git a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php index aaaec0503..9ad9021f8 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php @@ -120,6 +120,10 @@ class ConfigurationController extends Controller { Event::fire('core.configuration.save.before'); + $this->validate(request(), [ + 'general.design.admin_logo.logo_image' => 'required|mimes:jpeg,bmp,png,jpg' + ]); + $this->coreConfigRepository->create(request()->all()); Event::fire('core.configuration.save.after'); diff --git a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php index b9d3d47ba..c77a66a73 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php @@ -186,7 +186,7 @@ class DashboardController extends Controller ->where('order_items.created_at', '>=', $this->startDate) ->where('order_items.created_at', '<=', $this->endDate) ->addSelect(DB::raw('SUM(qty_invoiced - qty_refunded) as total_qty_invoiced')) - ->addSelect(DB::raw('COUNT(products.id) as total_products')) + ->addSelect(DB::raw('COUNT('.DB::getTablePrefix().'products.id) as total_products')) ->addSelect('order_items.id', 'categories.id as category_id', 'category_translations.name') ->groupBy('categories.id') ->havingRaw('SUM(qty_invoiced - qty_refunded) > 0') diff --git a/packages/Webkul/Admin/src/Http/Controllers/Development/WebConsoleController.php b/packages/Webkul/Admin/src/Http/Controllers/Development/WebConsoleController.php deleted file mode 100755 index 649f3c730..000000000 --- a/packages/Webkul/Admin/src/Http/Controllers/Development/WebConsoleController.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) - */ -class WebConsoleController extends Controller -{ - /** - * Show the Web Console. - * - * @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory - */ - public function index(){ - return LaravelWebConsole::show(); - } -} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 22bd07448..50c6557bd 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -765,10 +765,7 @@ Route::group(['middleware' => ['web']], function () { Route::prefix('development')->group(function () { Route::get('/', 'Webkul\Admin\Http\Controllers\Development\DashboardController@index') ->name('admin.development.index'); - - Route::get('webconsole', 'Webkul\Admin\Http\Controllers\Development\WebConsoleController@index') - ->name('admin.development.webconsole'); }); }); }); -}); \ No newline at end of file +}); diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index 50f5f977d..b2ac14466 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -729,7 +729,6 @@ return [ ], 'development' => [ 'title' => 'تطوير', - 'webconsole' => 'وحدة تحكم الويب', ] ], diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 12994e9e1..855aa6ffe 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -838,7 +838,6 @@ return [ ], 'development' => [ 'title' => 'Development', - 'webconsole' => 'Web Console', ] ], diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index d2e1db49e..8c12fc9d8 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -764,7 +764,6 @@ return [ ], 'development' => [ 'title' => 'توسعه', - 'webconsole' => 'کنسول وب', ] ], diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index 3bf3b157a..3d543a1f7 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -755,7 +755,6 @@ return [ ], 'development' => [ 'title' => 'Desenvolvimento', - 'webconsole' => 'Console da Web', ] ], 'customers' => [ diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php index c3ff363e0..7308fd5c1 100755 --- a/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php @@ -64,7 +64,7 @@ @if ($familyId) - + @endif @{{ errors.first('type') }} diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php index 534bc1bef..c635af49e 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php @@ -48,6 +48,8 @@
+ {!! view_render_event('sales.order.tabs.before', ['order' => $order]) !!} +
@@ -506,8 +508,10 @@
+ + {!! view_render_event('sales.order.tabs.after', ['order' => $order]) !!}
-@stop \ No newline at end of file +@stop diff --git a/packages/Webkul/Admin/src/Resources/views/sales/refunds/create.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/refunds/create.blade.php index 8a273df8b..e0e0ac3d1 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/refunds/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/refunds/create.blade.php @@ -241,14 +241,14 @@ @foreach ($order->items as $item) - {{ $item->type == 'configurable' ? $item->child->sku : $item->sku }} + {{ Webkul\Product\Helpers\ProductType::hasVariants($item->type) ? $item->child->sku : $item->sku }} {{ $item->name }} @if (isset($item->additional['attributes']))
- + @foreach ($item->additional['attributes'] as $attribute) {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
@endforeach @@ -417,7 +417,7 @@ if (! response.data) { window.flashMessages = [{ 'type': 'alert-error', - 'message': "{{ __('admin::app.sales.refunds.invalid-qty') }}" + 'message': "{{ __('admin::app.sales.refunds.invalid-qty') }}" }]; this_this.$root.addFlashMessages() diff --git a/packages/Webkul/Admin/src/Resources/views/settings/development/dashboard.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/development/dashboard.blade.php index 1b4bcc7ae..1eaf61ad0 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/development/dashboard.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/development/dashboard.blade.php @@ -13,16 +13,7 @@
- -
-

- {{ __('admin::app.settings.development.webconsole') }} -

-

- -

-
-
+
@stop \ No newline at end of file diff --git a/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php b/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php index 8af28df46..814f7ae00 100644 --- a/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php +++ b/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php @@ -40,7 +40,9 @@ use Webkul\Core\Repositories\LocaleRepository as Locale; /** * Pass the class instance through admin middleware */ - $this->middleware('auth:admin'); + // $this->middleware('auth:admin'); + + $this->middleware('admin'); /** * Channel repository instance diff --git a/packages/Webkul/Category/src/Database/Factories/CategoryFactory.php b/packages/Webkul/Category/src/Database/Factories/CategoryFactory.php new file mode 100644 index 000000000..941601997 --- /dev/null +++ b/packages/Webkul/Category/src/Database/Factories/CategoryFactory.php @@ -0,0 +1,19 @@ +define(Category::class, function (Faker $faker, array $attributes) { + + return [ + 'status' => 1, + 'position' => $faker->randomDigit, + 'parent_id' => 1, + ]; +}); + +$factory->state(Category::class, 'inactive', [ + 'status' => 0, +]); diff --git a/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php b/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php index a395001b1..0345ddf5c 100755 --- a/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php +++ b/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php @@ -2,6 +2,7 @@ namespace Webkul\Category\Providers; +use Illuminate\Database\Eloquent\Factory as EloquentFactory; use Illuminate\Support\ServiceProvider; use Webkul\Category\Models\CategoryProxy; use Webkul\Category\Observers\CategoryObserver; @@ -18,6 +19,8 @@ class CategoryServiceProvider extends ServiceProvider $this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); CategoryProxy::observe(CategoryObserver::class); + + $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories'); } /** @@ -29,4 +32,15 @@ class CategoryServiceProvider extends ServiceProvider { } + + /** + * Register factories. + * + * @param string $path + * @return void + */ + protected function registerEloquentFactoriesFrom($path): void + { + $this->app->make(EloquentFactory::class)->load($path); + } } \ No newline at end of file diff --git a/packages/Webkul/Core/src/Core.php b/packages/Webkul/Core/src/Core.php index 9bfc791a3..963af1b00 100755 --- a/packages/Webkul/Core/src/Core.php +++ b/packages/Webkul/Core/src/Core.php @@ -211,7 +211,13 @@ class Core if ($locale) return $locale; - return $locale = $this->localeRepository->findOneByField('code', app()->getLocale()); + $locale = $this->localeRepository->findOneByField('code', app()->getLocale()); + + if(!$locale) { + $locale = $this->localeRepository->findOneByField('code', config('app.fallback_locale')); + } + + return $locale; } /** diff --git a/packages/Webkul/Core/src/Database/Factories/LocaleFactory.php b/packages/Webkul/Core/src/Database/Factories/LocaleFactory.php new file mode 100644 index 000000000..0ab390c2f --- /dev/null +++ b/packages/Webkul/Core/src/Database/Factories/LocaleFactory.php @@ -0,0 +1,19 @@ +define(Locale::class, function (Faker $faker, array $attributes) { + + return [ + 'code' => $faker->languageCode, + 'name' => $faker->country, + 'direction' => 'ltr', + ]; +}); + +$factory->state(Category::class, 'rtl', [ + 'direction' => 'rtl', +]); diff --git a/packages/Webkul/Core/src/Events/ComposerEvents.php b/packages/Webkul/Core/src/Events/ComposerEvents.php new file mode 100644 index 000000000..0ee700715 --- /dev/null +++ b/packages/Webkul/Core/src/Events/ComposerEvents.php @@ -0,0 +1,15 @@ +writeln(file_get_contents(__DIR__ . '/../Templates/on-boarding.php')); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Providers/CoreServiceProvider.php b/packages/Webkul/Core/src/Providers/CoreServiceProvider.php index da5a3859a..949e565b4 100755 --- a/packages/Webkul/Core/src/Providers/CoreServiceProvider.php +++ b/packages/Webkul/Core/src/Providers/CoreServiceProvider.php @@ -2,6 +2,7 @@ namespace Webkul\Core\Providers; +use Illuminate\Database\Eloquent\Factory as EloquentFactory; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Validator; use Illuminate\Foundation\AliasLoader; @@ -36,6 +37,8 @@ class CoreServiceProvider extends ServiceProvider ]); SliderProxy::observe(SliderObserver::class); + + $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories'); } /** @@ -61,4 +64,15 @@ class CoreServiceProvider extends ServiceProvider return app()->make(Core::class); }); } + + /** + * Register factories. + * + * @param string $path + * @return void + */ + protected function registerEloquentFactoriesFrom($path): void + { + $this->app->make(EloquentFactory::class)->load($path); + } } \ No newline at end of file diff --git a/packages/Webkul/Core/src/Templates/on-boarding.php b/packages/Webkul/Core/src/Templates/on-boarding.php new file mode 100644 index 000000000..21ff4eaea --- /dev/null +++ b/packages/Webkul/Core/src/Templates/on-boarding.php @@ -0,0 +1,14 @@ + + ____ _ _ +| __ ) __ _ __ _(_)___| |_ ___ +| _ \ / _` |/ _` | / __| __/ _ \ +| |_) | (_| | (_| | \__ \ || (_) | +|____/ \__,_|\__, |_|___/\__\___/ + |___/ + + + +Welcome to the Bagisto project! Bagisto Community is an open-source e-commerce ecosystem +which is built on top of Laravel and Vue.js. + +Made with 💖 by the Bagisto Team. Happy helping :) diff --git a/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php b/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php index 590bbebb6..5fc59c6d9 100755 --- a/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php @@ -59,15 +59,12 @@ class WishlistController extends Controller /** * Displays the listing resources if the customer having items in wishlist. - * + * * @return \Illuminate\View\View */ public function index() { - $wishlistItems = $this->wishlistRepository->findWhere([ - 'channel_id' => core()->getCurrentChannel()->id, - 'customer_id' => auth()->guard('customer')->user()->id] - ); + $wishlistItems = $this->wishlistRepository->getCustomerWhishlist(); return view($this->_config['view'])->with('items', $wishlistItems); } diff --git a/packages/Webkul/Customer/src/Repositories/WishlistRepository.php b/packages/Webkul/Customer/src/Repositories/WishlistRepository.php index cd25ef3ed..a491d3828 100755 --- a/packages/Webkul/Customer/src/Repositories/WishlistRepository.php +++ b/packages/Webkul/Customer/src/Repositories/WishlistRepository.php @@ -62,8 +62,7 @@ class WishlistRepository extends Repository return $this->model->find($id)->item_wishlist; } - - /** + /** * get customer wishlist Items. * * @return mixed diff --git a/packages/Webkul/Discount/src/Helpers/Catalog/Apply.php b/packages/Webkul/Discount/src/Helpers/Catalog/Apply.php index 962d65389..95c8f22e0 100644 --- a/packages/Webkul/Discount/src/Helpers/Catalog/Apply.php +++ b/packages/Webkul/Discount/src/Helpers/Catalog/Apply.php @@ -6,6 +6,7 @@ use Webkul\Discount\Repositories\CatalogRuleRepository as CatalogRule; use Webkul\Discount\Repositories\CatalogRuleProductsRepository as CatalogRuleProducts; use Webkul\Discount\Repositories\CatalogRuleProductsPriceRepository as CatalogRuleProductsPrice; use Webkul\Discount\Helpers\Catalog\ConvertXToProductId as ConvertX; +use Webkul\Product\Helpers\ProductType; use Webkul\Product\Repositories\ProductRepository as Product; use Webkul\Discount\Helpers\Catalog\Sale; @@ -451,7 +452,7 @@ class Apply extends Sale foreach ($productIDs as $productID) { $product = $products->find($productID); - if ($product->type == 'configurable') { + if (ProductType::hasVariants($product->type)) { $variants = $product->variants; foreach($variants as $variant) { diff --git a/packages/Webkul/Discount/src/Helpers/Catalog/ConvertXToProductId.php b/packages/Webkul/Discount/src/Helpers/Catalog/ConvertXToProductId.php index c71d6c4e4..b44eaea8b 100644 --- a/packages/Webkul/Discount/src/Helpers/Catalog/ConvertXToProductId.php +++ b/packages/Webkul/Discount/src/Helpers/Catalog/ConvertXToProductId.php @@ -6,6 +6,7 @@ use Webkul\Discount\Repositories\CatalogRuleRepository as CatalogRule; use Webkul\Attribute\Repositories\AttributeRepository as Attribute; use Webkul\Attribute\Repositories\AttributeOptionRepository as AttributeOption; use Webkul\Category\Repositories\CategoryRepository as Category; +use Webkul\Product\Helpers\ProductType; use Webkul\Product\Repositories\ProductRepository as Product; use Webkul\Product\Models\ProductAttributeValue as ProductAttributeValue; @@ -110,7 +111,7 @@ class ConvertXToProductId $products = collect(); foreach ($attributeOptions as $attributeOption) { - if (isset($attributeOption->type) && $attributeOption->name != null && $attributeOption->condition != null && $attributeOption->value != [] && $attributeOption->type != null) { + if (isset($attributeOption->type) && $attributeOption->attribute != null && $attributeOption->condition != null && $attributeOption->value != [] && $attributeOption->type != null) { $selectedOptions = $attributeOption->value; if ($attributeOption->type == 'select' || $attributeOption->type == 'multiselect') { @@ -154,17 +155,17 @@ class ConvertXToProductId if ($testCondition == '{}') { $foundProducts = $this->product->findWhere([ ['sku', 'like', '%' . $testValue . '%'], - ['type', '!=', 'configurable'] - ])->flatten()->all(); + ['type', 'NOT IN', ProductType::getAllTypesHavingVariants()] + ])->flatten()->all(); } else if ($testCondition == '!{}') { $foundProducts = $this->product->findWhere([ ['sku', 'not like', '%' . $testValue . '%'], - ['type', '!=', 'configurable'] + ['type', 'NOT IN', ProductType::getAllTypesHavingVariants()] ])->flatten()->all(); } else if ($testCondition == '=') { $foundProducts = $this->product->findWhere([ ['sku', '=', $testValue], - ['type', '!=', 'configurable'] + ['type', 'NOT IN', ProductType::getAllTypesHavingVariants()] ])->flatten()->all(); } } diff --git a/packages/Webkul/Product/src/Helpers/ProductType.php b/packages/Webkul/Product/src/Helpers/ProductType.php new file mode 100644 index 000000000..103b1ed58 --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/ProductType.php @@ -0,0 +1,39 @@ +hasVariants(); + } + + /** + * Get all ProductTypes that are allowed to have variants + * + * @return array of product_types->keys + */ + public static function getAllTypesHavingVariants(): array + { + foreach (config('product_types') as $type) { + if (self::hasVariants($type['key'])) { + array_push($havingVariants, $type['key']); + } + } + + return $havingVariants; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Http/Controllers/ProductController.php b/packages/Webkul/Product/src/Http/Controllers/ProductController.php index 0a4d0da0c..9134991d4 100755 --- a/packages/Webkul/Product/src/Http/Controllers/ProductController.php +++ b/packages/Webkul/Product/src/Http/Controllers/ProductController.php @@ -4,6 +4,7 @@ namespace Webkul\Product\Http\Controllers; use Illuminate\Support\Facades\Event; use Webkul\Product\Http\Requests\ProductForm; +use Webkul\Product\Helpers\ProductType; use Webkul\Category\Repositories\CategoryRepository; use Webkul\Product\Repositories\ProductRepository; use Webkul\Product\Repositories\ProductDownloadableLinkRepository; @@ -140,13 +141,13 @@ class ProductController extends Controller public function store() { if (! request()->get('family') - && request()->input('type') == 'configurable' + && ProductType::hasVariants(request()->input('type')) && request()->input('sku') != '') { return redirect(url()->current() . '?type=' . request()->input('type') . '&family=' . request()->input('attribute_family_id') . '&sku=' . request()->input('sku')); } - if (request()->input('type') == 'configurable' + if (ProductType::hasVariants(request()->input('type')) && (! request()->has('super_attributes') || ! count(request()->get('super_attributes')))) { diff --git a/packages/Webkul/Product/src/Listeners/ProductFlat.php b/packages/Webkul/Product/src/Listeners/ProductFlat.php index a993a58ae..ecb8ffe9a 100644 --- a/packages/Webkul/Product/src/Listeners/ProductFlat.php +++ b/packages/Webkul/Product/src/Listeners/ProductFlat.php @@ -6,6 +6,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Webkul\Attribute\Repositories\AttributeRepository; use Webkul\Attribute\Repositories\AttributeOptionRepository; +use Webkul\Product\Helpers\ProductType; use Webkul\Product\Repositories\ProductFlatRepository; use Webkul\Product\Repositories\ProductAttributeValueRepository; use Webkul\Product\Models\ProductAttributeValue; @@ -148,7 +149,7 @@ class ProductFlat { $this->createFlat($product); - if ($product->type == 'configurable') { + if (ProductType::hasVariants($product->type)) { foreach ($product->variants()->get() as $variant) { $this->createFlat($variant, $product); } diff --git a/packages/Webkul/Product/src/Type/AbstractType.php b/packages/Webkul/Product/src/Type/AbstractType.php index 75abbba1e..39568653d 100644 --- a/packages/Webkul/Product/src/Type/AbstractType.php +++ b/packages/Webkul/Product/src/Type/AbstractType.php @@ -3,6 +3,7 @@ namespace Webkul\Product\Type; use Illuminate\Support\Facades\Storage; +use phpDocumentor\Reflection\Types\Boolean; use Webkul\Attribute\Repositories\AttributeRepository; use Webkul\Product\Repositories\ProductRepository; use Webkul\Product\Repositories\ProductAttributeValueRepository; @@ -57,7 +58,7 @@ abstract class AbstractType /** * Product Image helper instance - * + * * @var ProductImage */ protected $productImageHelper; @@ -104,6 +105,13 @@ abstract class AbstractType */ protected $canBeMovedFromWishlistToCart = true; + /** + * Has child products aka variants + * + * @var boolean + */ + protected $hasVariants = false; + /** * Create a new product type instance. * @@ -159,17 +167,21 @@ abstract class AbstractType $product->update($data); foreach ($product->attribute_family->custom_attributes as $attribute) { - if ($attribute->type == 'boolean') + if ($attribute->type == 'boolean') { $data[$attribute->code] = isset($data[$attribute->code]) && $data[$attribute->code] ? 1 : 0; + } - if (! isset($data[$attribute->code])) + if (! isset($data[$attribute->code])) { continue; + } - if ($attribute->type == 'date' && $data[$attribute->code] == '') + if ($attribute->type == 'date' && $data[$attribute->code] == '') { $data[$attribute->code] = null; + } - if ($attribute->type == 'multiselect' || $attribute->type == 'checkbox') + if ($attribute->type == 'multiselect' || $attribute->type == 'checkbox') { $data[$attribute->code] = implode(",", $data[$attribute->code]); + } if ($attribute->type == 'image' || $attribute->type == 'file') { $data[$attribute->code] = gettype($data[$attribute->code]) == 'object' @@ -198,16 +210,18 @@ abstract class AbstractType ], $attributeValue->id ); - if ($attribute->type == 'image' || $attribute->type == 'file') + if ($attribute->type == 'image' || $attribute->type == 'file') { Storage::delete($attributeValue->text_value); + } } } - $route = request()->route() ? request()->route()->getName() : ""; + $route = request()->route() ? request()->route()->getName() : ""; if ($route != 'admin.catalog.products.massupdate') { - if (isset($data['categories'])) + if (isset($data['categories'])) { $product->categories()->sync($data['categories']); + } $product->up_sells()->sync($data['up_sell'] ?? []); @@ -243,9 +257,10 @@ abstract class AbstractType */ public function isSaleable() { - if (! $this->product->status) + if (! $this->product->status) { return false; - + } + return true; } @@ -260,7 +275,7 @@ abstract class AbstractType } /** - * Return true if this product can have inventory + * Return true if this product can be composite * * @return boolean */ @@ -269,6 +284,16 @@ abstract class AbstractType return $this->isComposite; } + /** + * Return true if this product can have variants + * + * @return bool + */ + public function hasVariants(): bool + { + return $this->hasVariants; + } + /** * @param integer $qty * @return bool @@ -277,7 +302,7 @@ abstract class AbstractType { return $this->haveSufficientQuantity; } - + /** * Return true if this product can have inventory * @@ -310,8 +335,9 @@ abstract class AbstractType ->pluck('id'); foreach ($this->product->inventories as $inventory) { - if (is_numeric($index = $channelInventorySourceIds->search($inventory->inventory_source_id))) + if (is_numeric($index = $channelInventorySourceIds->search($inventory->inventory_source_id))) { $total += $inventory->qty; + } } $orderedInventory = $this->product->ordered_inventories() @@ -344,11 +370,13 @@ abstract class AbstractType */ public function getEditableAttributes($group = null, $skipSuperAttribute = true) { - if ($skipSuperAttribute) + if ($skipSuperAttribute) { $this->skipAttributes = array_merge($this->product->super_attributes->pluck('code')->toArray(), $this->skipAttributes); + } - if (! $group) + if (! $group) { return $this->product->attribute_family->custom_attributes()->whereNotIn('attributes.code', $this->skipAttributes)->get(); + } return $group->custom_attributes()->whereNotIn('code', $this->skipAttributes)->get(); } @@ -380,8 +408,9 @@ abstract class AbstractType */ public function getMinimalPrice() { - if ($this->haveSpecialPrice()) + if ($this->haveSpecialPrice()) { return $this->product->special_price; + } return $this->product->price; } @@ -421,11 +450,13 @@ abstract class AbstractType */ public function haveSpecialPrice() { - if (is_null($this->product->special_price) || ! (float) $this->product->special_price) + if (is_null($this->product->special_price) || ! (float) $this->product->special_price) { return false; + } - if (core()->isChannelDateInInterval($this->product->special_price_from, $this->product->special_price_to)) + if (core()->isChannelDateInInterval($this->product->special_price_from, $this->product->special_price_to)) { return true; + } return false; } @@ -479,8 +510,9 @@ abstract class AbstractType $data = $this->getQtyRequest($data); - if (! $this->haveSufficientQuantity($data['quantity'])) + if (! $this->haveSufficientQuantity($data['quantity'])) { return trans('shop::app.checkout.cart.quantity.inventory_warning'); + } $price = $this->getFinalPrice(); @@ -514,12 +546,13 @@ abstract class AbstractType */ public function getQtyRequest($data) { - if ($item = Cart::getItemByProduct(['additional' => $data])) + if ($item = Cart::getItemByProduct(['additional' => $data])) { $data['quantity'] += $item->quantity; + } return $data; } - + /** * * @param array $options1 @@ -546,7 +579,7 @@ abstract class AbstractType return true; } - + /** * Returns additional information for items * @@ -590,8 +623,9 @@ abstract class AbstractType { $price = $item->product->getTypeInstance()->getFinalPrice(); - if ($price == $item->base_price) + if ($price == $item->base_price) { return; + } $item->base_price = $price; $item->price = core()->convertPrice($price); diff --git a/packages/Webkul/Product/src/Type/Configurable.php b/packages/Webkul/Product/src/Type/Configurable.php index 79cb4c081..e0f1c3eea 100644 --- a/packages/Webkul/Product/src/Type/Configurable.php +++ b/packages/Webkul/Product/src/Type/Configurable.php @@ -22,7 +22,7 @@ class Configurable extends AbstractType /** * These blade files will be included in product edit page - * + * * @var array */ protected $additionalViews = [ @@ -47,6 +47,13 @@ class Configurable extends AbstractType */ protected $showQuantityBox = true; + /** + * Has child products aka variants + * + * @var boolean + */ + protected $hasVariants = true; + /** * @param array $data * @return Product @@ -136,9 +143,15 @@ class Configurable extends AbstractType ]; } + $typeOfVariants = 'simple'; + $productInstance = app(config('product_types.' . $product->type . '.class')); + if (isset($productInstance->variantsType) && ! in_array($productInstance->variantsType , ['bundle', 'configurable', 'grouped'])) { + $typeOfVariants = $productInstance->variantsType; + } + $variant = $this->productRepository->getModel()->create([ 'parent_id' => $product->id, - 'type' => 'simple', + 'type' => $typeOfVariants, 'attribute_family_id' => $product->attribute_family_id, 'sku' => $data['sku'], ]); @@ -416,7 +429,7 @@ class Configurable extends AbstractType return $products; } - + /** * * @param array $options1 @@ -451,7 +464,7 @@ class Configurable extends AbstractType ]; } - return $data; + return $data; } /** diff --git a/packages/Webkul/Sales/src/Repositories/OrderItemRepository.php b/packages/Webkul/Sales/src/Repositories/OrderItemRepository.php index 39c8bf890..72da2f48d 100755 --- a/packages/Webkul/Sales/src/Repositories/OrderItemRepository.php +++ b/packages/Webkul/Sales/src/Repositories/OrderItemRepository.php @@ -3,6 +3,7 @@ namespace Webkul\Sales\Repositories; use Illuminate\Container\Container as App; +use Illuminate\Support\Facades\Event; use Webkul\Core\Eloquent\Repository; use Webkul\Sales\Contracts\OrderItem; @@ -51,7 +52,7 @@ class OrderItemRepository extends Repository $totalInvoiced = $baseTotalInvoiced = 0; $taxInvoiced = $baseTaxInvoiced = 0; - + $totalRefunded = $baseTotalRefunded = 0; $taxRefunded = $baseTaxRefunded = 0; diff --git a/packages/Webkul/Sales/src/Repositories/OrderRepository.php b/packages/Webkul/Sales/src/Repositories/OrderRepository.php index 7065ef8bd..c5fca17c1 100755 --- a/packages/Webkul/Sales/src/Repositories/OrderRepository.php +++ b/packages/Webkul/Sales/src/Repositories/OrderRepository.php @@ -3,15 +3,15 @@ namespace Webkul\Sales\Repositories; use Illuminate\Container\Container as App; -use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Event; use Webkul\Core\Eloquent\Repository; -use Webkul\Sales\Contracts\Order; -use Webkul\Sales\Repositories\OrderItemRepository; use Webkul\Core\Models\CoreConfig; +use Webkul\Sales\Contracts\Order; +use Webkul\Sales\Models\Order as OrderModel; /** - * Order Reposotory + * Order Repository * * @author Jitendra Singh * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) @@ -35,16 +35,16 @@ class OrderRepository extends Repository /** * Create a new repository instance. * - * @param Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository - * @param Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository + * @param Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository + * @param Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository + * * @return void */ public function __construct( OrderItemRepository $orderItemRepository, DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository, App $app - ) - { + ) { $this->orderItemRepository = $orderItemRepository; $this->downloadableLinkPurchasedRepository = $downloadableLinkPurchasedRepository; @@ -58,13 +58,14 @@ class OrderRepository extends Repository * @return Mixed */ - function model() + public function model() { return Order::class; } /** * @param array $data + * * @return mixed */ public function create(array $data) @@ -95,12 +96,15 @@ class OrderRepository extends Repository $order->payment()->create($data['payment']); - if (isset($data['shipping_address'])) + if (isset($data['shipping_address'])) { $order->addresses()->create($data['shipping_address']); + } $order->addresses()->create($data['billing_address']); foreach ($data['items'] as $item) { + Event::fire('checkout.order.orderitem.save.before', $data); + $orderItem = $this->orderItemRepository->create(array_merge($item, ['order_id' => $order->id])); if (isset($item['children']) && $item['children']) { @@ -112,6 +116,8 @@ class OrderRepository extends Repository $this->orderItemRepository->manageInventory($orderItem); $this->downloadableLinkPurchasedRepository->saveLinks($orderItem, 'available'); + + Event::fire('checkout.order.orderitem.save.after', $data); } Event::fire('checkout.order.save.after', $order); @@ -128,20 +134,23 @@ class OrderRepository extends Repository /** * @param int $orderId + * * @return mixed */ public function cancel($orderId) { $order = $this->findOrFail($orderId); - if (! $order->canCancel()) + if (! $order->canCancel()) { return false; + } Event::fire('sales.order.cancel.before', $order); foreach ($order->items as $item) { - if (! $item->qty_to_cancel) + if (! $item->qty_to_cancel) { continue; + } $orderItems = []; @@ -152,11 +161,12 @@ class OrderRepository extends Repository } else { $orderItems[] = $item; } - + foreach ($orderItems as $orderItem) { - if ($orderItem->product) + if ($orderItem->product) { $this->orderItemRepository->returnQtyToProductInventory($orderItem); - + } + if ($orderItem->qty_ordered) { $orderItem->qty_canceled += $orderItem->qty_to_cancel; $orderItem->save(); @@ -188,19 +198,21 @@ class OrderRepository extends Repository { $config = new CoreConfig(); - $invoiceNumberPrefix = $config->where('code','=',"sales.orderSettings.order_number.order_number_prefix")->first() - ? $config->where('code','=',"sales.orderSettings.order_number.order_number_prefix")->first()->value : false; - - $invoiceNumberLength = $config->where('code','=',"sales.orderSettings.order_number.order_number_length")->first() - ? $config->where('code','=',"sales.orderSettings.order_number.order_number_length")->first()->value : false; - - $invoiceNumberSuffix = $config->where('code','=',"sales.orderSettings.order_number.order_number_suffix")->first() - ? $config->where('code','=',"sales.orderSettings.order_number.order_number_suffix")->first()->value: false; + foreach ([ + 'Prefix' => 'prefix', + 'Length' => 'length', + 'Suffix' => 'suffix', + ] as $varSuffix => $confKey) { + $var = "invoiceNumber{$varSuffix}"; + $$var = $config + ->where('code', '=', "sales.orderSettings.order_number.order_number_{$confKey}") + ->first() ?: false; + } $lastOrder = $this->model->orderBy('id', 'desc')->limit(1)->first(); $lastId = $lastOrder ? $lastOrder->id : 0; - if ($invoiceNumberLength && ( $invoiceNumberPrefix || $invoiceNumberSuffix) ) { + if ($invoiceNumberLength && ($invoiceNumberPrefix || $invoiceNumberSuffix)) { $invoiceNumber = $invoiceNumberPrefix . sprintf("%0{$invoiceNumberLength}d", 0) . ($lastId + 1) . $invoiceNumberSuffix; } else { $invoiceNumber = $lastId + 1; @@ -211,13 +223,14 @@ class OrderRepository extends Repository /** * @param mixed $order + * * @return void */ public function isInCompletedState($order) { $totalQtyOrdered = $totalQtyInvoiced = $totalQtyShipped = $totalQtyRefunded = $totalQtyCanceled = 0; - foreach ($order->items()->get() as $item) { + foreach ($order->items()->get() as $item) { $totalQtyOrdered += $item->qty_ordered; $totalQtyInvoiced += $item->qty_invoiced; @@ -233,14 +246,16 @@ class OrderRepository extends Repository if ($totalQtyOrdered != ($totalQtyRefunded + $totalQtyCanceled) && $totalQtyOrdered == $totalQtyInvoiced + $totalQtyCanceled - && $totalQtyOrdered == $totalQtyShipped + $totalQtyRefunded + $totalQtyCanceled) + && $totalQtyOrdered == $totalQtyShipped + $totalQtyRefunded + $totalQtyCanceled) { return true; + } return false; } /** * @param mixed $order + * * @return void */ public function isInCanceledState($order) @@ -257,13 +272,14 @@ class OrderRepository extends Repository /** * @param mixed $order + * * @return void */ public function isInClosedState($order) { $totalQtyOrdered = $totalQtyRefunded = $totalQtyCanceled = 0; - foreach ($order->items()->get() as $item) { + foreach ($order->items()->get() as $item) { $totalQtyOrdered += $item->qty_ordered; $totalQtyRefunded += $item->qty_refunded; $totalQtyCanceled += $item->qty_canceled; @@ -274,19 +290,22 @@ class OrderRepository extends Repository /** * @param mixed $order + * * @return void */ public function updateOrderStatus($order) { $status = 'processing'; - if ($this->isInCompletedState($order)) + if ($this->isInCompletedState($order)) { $status = 'completed'; + } - if ($this->isInCanceledState($order)) + if ($this->isInCanceledState($order)) { $status = 'canceled'; - else if ($this->isInClosedState($order)) + } elseif ($this->isInClosedState($order)) { $status = 'closed'; + } $order->status = $status; $order->save(); @@ -294,6 +313,7 @@ class OrderRepository extends Repository /** * @param mixed $order + * * @return mixed */ public function collectTotals($order) @@ -352,4 +372,4 @@ class OrderRepository extends Repository return $order; } -} \ No newline at end of file +} diff --git a/packages/Webkul/Sales/src/tests/sales/order/OrderRepositoryCest.php b/packages/Webkul/Sales/src/tests/sales/order/OrderRepositoryCest.php new file mode 100644 index 000000000..ea2dddbb7 --- /dev/null +++ b/packages/Webkul/Sales/src/tests/sales/order/OrderRepositoryCest.php @@ -0,0 +1,38 @@ +getProperty('model'); + $property->setAccessible(true); + + $this->repository = $reflection->newInstanceWithoutConstructor(); + $property->setValue($this->repository, new Order()); + } + + public function testGenerateIncrementIdOnEmptyDatabase(UnitTester $I) + { + $result = $this->repository->generateIncrementId(); + + $I->assertEquals(1, $result); + } + + public function testGenerateIncrementIdOnFilledDatabase(UnitTester $I) + { + $order = new Order(['id' => rand(666, 1337)]); + $order->save(); + + $result = $this->repository->generateIncrementId(); + + $I->assertEquals($order->id + 1, $result); + } +} diff --git a/packages/Webkul/Shop/src/DataGrids/DownloadableProductDataGrid.php b/packages/Webkul/Shop/src/DataGrids/DownloadableProductDataGrid.php index 74906ae24..ced3940c6 100644 --- a/packages/Webkul/Shop/src/DataGrids/DownloadableProductDataGrid.php +++ b/packages/Webkul/Shop/src/DataGrids/DownloadableProductDataGrid.php @@ -22,7 +22,7 @@ class DownloadableProductDataGrid extends DataGrid $queryBuilder = DB::table('downloadable_link_purchased') ->leftJoin('orders', 'downloadable_link_purchased.order_id', '=', 'orders.id') ->addSelect('downloadable_link_purchased.*', 'orders.increment_id') - ->addSelect(DB::raw('(downloadable_link_purchased.download_bought - downloadable_link_purchased.download_used) as remaining_downloads')) + ->addSelect(DB::raw('('.DB::getTablePrefix().'downloadable_link_purchased.download_bought - '.DB::getTablePrefix().'downloadable_link_purchased.download_used) as remaining_downloads')) ->where('downloadable_link_purchased.customer_id', auth()->guard('customer')->user()->id); $this->addFilter('status', 'downloadable_link_purchased.status'); @@ -97,7 +97,7 @@ class DownloadableProductDataGrid extends DataGrid 'wrapper' => function ($value) { if (! $value->download_bought) return trans('shop::app.customer.account.downloadable_products.unlimited'); - + return $value->remaining_downloads; }, ]); diff --git a/packages/Webkul/Shop/src/Http/Controllers/OrderController.php b/packages/Webkul/Shop/src/Http/Controllers/OrderController.php index a254c056e..806edee66 100644 --- a/packages/Webkul/Shop/src/Http/Controllers/OrderController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/OrderController.php @@ -60,7 +60,7 @@ class OrderController extends Controller /** * Display a listing of the resource. * - * @return \Illuminate\View\View + * @return \Illuminate\View\View */ public function index() { @@ -71,7 +71,7 @@ class OrderController extends Controller * Show the view for the specified resource. * * @param int $id - * @return \Illuminate\View\View + * @return \Illuminate\View\View */ public function view($id) { diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage.blade.php index b7b243670..0433dbf2a 100755 --- a/packages/Webkul/Shop/src/Resources/views/checkout/onepage.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage.blade.php @@ -296,7 +296,7 @@ else paymentHtml = Vue.compile(response.data.html) - this_this.completed_step = this_this.step_numbers[response.data.jump_to_section] + 1; + this_this.completed_step = this_this.step_numbers[response.data.jump_to_section] - 1; this_this.current_step = this_this.step_numbers[response.data.jump_to_section]; shippingMethods = response.data.shippingMethods; @@ -320,7 +320,7 @@ this_this.disable_button = false; paymentHtml = Vue.compile(response.data.html) - this_this.completed_step = this_this.step_numbers[response.data.jump_to_section] + 1; + this_this.completed_step = this_this.step_numbers[response.data.jump_to_section] - 1; this_this.current_step = this_this.step_numbers[response.data.jump_to_section]; paymentMethods = response.data.paymentMethods; @@ -344,7 +344,7 @@ this_this.disable_button = false; reviewHtml = Vue.compile(response.data.html) - this_this.completed_step = this_this.step_numbers[response.data.jump_to_section] + 1; + this_this.completed_step = this_this.step_numbers[response.data.jump_to_section] - 1; this_this.current_step = this_this.step_numbers[response.data.jump_to_section]; this_this.getOrderSummary(); diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/payment.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/payment.blade.php index 20f2c30d9..ac34652ba 100755 --- a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/payment.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/payment.blade.php @@ -19,12 +19,10 @@ - {{-- --}} + + {{ $payment['method_title'] }} + - - - {{ $payment['method_title'] }} -
diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php index 93dbb7c65..0e24927d6 100755 --- a/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php @@ -19,7 +19,7 @@ @if (count($reviews) > 1) @endif diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/wishlist/wishlist.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/wishlist/wishlist.blade.php index fb9e29bc7..a738302f8 100755 --- a/packages/Webkul/Shop/src/Resources/views/customers/account/wishlist/wishlist.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/wishlist/wishlist.blade.php @@ -22,7 +22,7 @@ {{ __('shop::app.customer.account.wishlist.deleteall') }}
@endif - +
@@ -43,10 +43,10 @@
{{ $item->product->name }} - + @if (isset($item->additional['attributes']))
- + @foreach ($item->additional['attributes'] as $attribute) {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
@endforeach @@ -76,6 +76,10 @@
@endforeach + +
+ {{ $items->links() }} +
@else
{{ __('customer::app.wishlist.empty') }} diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php index 329fbdff4..67faccf51 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php @@ -32,7 +32,7 @@ @if ($product->getTypeInstance()->haveSpecialPrice()) {{ core()->currency($product->getTypeInstance()->getSpecialPrice()) }} @else - {{ core()->currency($product->price) }} + {{ core()->currency($product->getTypeInstance()->getMinimalPrice()) }} @endif
diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php index 154bc0815..3e4b74eca 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php @@ -1,4 +1,4 @@ -@if ($product->type == 'configurable') +@if (Webkul\Product\Helpers\ProductType::hasVariants($product->type)) @inject ('configurableOptionHelper', 'Webkul\Product\Helpers\ConfigurableOption') diff --git a/packages/Webkul/Ui/publishable/assets/css/ui.css b/packages/Webkul/Ui/publishable/assets/css/ui.css index e70650670..cdbd4622c 100644 --- a/packages/Webkul/Ui/publishable/assets/css/ui.css +++ b/packages/Webkul/Ui/publishable/assets/css/ui.css @@ -1 +1 @@ -.active .cms-icon,.active.configuration-icon,.catalog-icon,.cms-icon,.configuration-icon,.customer-icon,.dashboard-icon,.promotion-icon,.sales-icon,.settings-icon{width:48px;height:48px;display:inline-block;background-size:cover}.icon{display:inline-block;background-size:cover}.dashboard-icon{background-image:url("../images/Icon-Dashboard.svg")}.sales-icon{background-image:url("../images/Icon-Sales.svg")}.catalog-icon{background-image:url("../images/Icon-Catalog.svg")}.customer-icon{background-image:url("../images/Icon-Customers.svg")}.configuration-icon{background-image:url("../images/Icon-Configure.svg")}.settings-icon{background-image:url("../images/Icon-Settings.svg")}.promotion-icon{background-image:url("../images/icon-promotion.svg")}.cms-icon{background-image:url("../images/Icon-CMS.svg")}.angle-right-icon{background-image:url("../images/Angle-Right.svg");width:17px;height:17px}.angle-left-icon{background-image:url("../images/Angle-Left.svg");width:17px;height:17px}.arrow-down-icon{background-image:url("../images/Arrow-Down-Light.svg");width:14px;height:8px}.arrow-right-icon{background-image:url("../images/Arrow-Right.svg");width:18px;height:18px}.white-cross-sm-icon{background-image:url("../images/Icon-Sm-Cross-White.svg");width:18px;height:18px}.accordian-up-icon{background-image:url("../images/Accordion-Arrow-Up.svg");width:24px;height:24px}.accordian-down-icon{background-image:url("../images/Accordion-Arrow-Down.svg");width:24px;height:24px}.cross-icon{background-image:url("../images/Icon-Crossed.svg");width:18px;height:18px}.trash-icon{background-image:url("../images/Icon-Trash.svg");width:24px;height:24px}.remove-icon{background-image:url("../images/Icon-remove.svg");width:24px;height:24px}.pencil-lg-icon{background-image:url("../images/Icon-Pencil-Large.svg");width:24px;height:24px}.eye-icon{background-image:url("../images/Icon-eye.svg");width:24px;height:24px}.search-icon{background-image:url("../images/icon-search.svg");width:24px;height:24px}.sortable-icon{background-image:url("../images/Icon-Sortable.svg");width:24px;height:24px}.sort-down-icon,.sort-up-icon{background-image:url("../images/Icon-Sort-Down.svg");width:18px;height:18px}.sort-up-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.primary-back-icon{background-image:url("../images/Icon-Back-Primary.svg");width:24px;height:24px}.checkbox-dash-icon{background-image:url("../images/Checkbox-Dash.svg");width:24px;height:24px}.account-icon{background-image:url("../images/icon-account.svg");width:24px;height:24px}.expand-icon{background-image:url("../images/Expand-Light.svg");width:18px;height:18px}.expand-on-icon{background-image:url("../images/Expand-Light-On.svg");width:18px;height:18px}.dark-left-icon{background-image:url("../images/arrow-left-dark.svg");width:18px;height:18px}.light-right-icon{background-image:url("../images/arrow-right-light.svg");width:18px;height:18px}.folder-icon{background-image:url("../images/Folder-Icon.svg");width:24px;height:24px}.star-icon{background-image:url("../images/Star-Icon.svg");width:24px;height:24px}.arrow-down-white-icon{background-image:url("../images/down-arrow-white.svg");width:17px;height:13px}.arrow-up-white-icon{background-image:url("../images/up-arrow-white.svg");width:17px;height:13px}.profile-pic-icon{background-image:url("../images/Profile-Pic.svg");width:60px;height:60px}.graph-up-icon{background-image:url("../images/Icon-Graph-Green.svg");width:24px;height:24px}.graph-down-icon{background-image:url("../images/Icon-Graph-Red.svg");width:24px;height:24px}.no-result-icon{background-image:url("../images/limited-icon.svg");width:52px;height:47px}.note-icon{background-image:url("../images/icon-note.svg")}.list-icon,.note-icon{width:24px;height:24px}.list-icon{background-image:url("../images/Icon-Listing.svg")}.active .dashboard-icon{background-image:url("../images/Icon-Dashboard-Active.svg")}.active .sales-icon{background-image:url("../images/Icon-Sales-Active.svg")}.active .catalog-icon{background-image:url("../images/Icon-Catalog-Active.svg")}.active .customer-icon{background-image:url("../images/Icon-Customers-Active.svg")}.active .settings-icon{background-image:url("../images/Icon-Settings-Active.svg")}.active .configuration-icon{background-image:url("../images/Icon-Configure-Active.svg")}.active .promotion-icon{background-image:url("../images/icon-promotion-active.svg")}.active .cms-icon{background-image:url("../images/Icon-CMS-Active.svg")}.active>.arrow-down-icon{background-image:url("../images/Arrow-Down.svg");width:14px;height:8px}.active>.expand-icon{background-image:url("../images/Expand-Light-On.svg")}.active.dashboard-icon{background-image:url("../images/Icon-Dashboard-Active.svg")}.active.customer-icon{background-image:url("../images/Icon-Customers-Active.svg")}.active.sales-icon{background-image:url("../images/Icon-Sales-Active.svg")}.active.settings-icon{background-image:url("../images/Icon-Settings-Active.svg")}.active.configuration-icon{background-image:url("../images/Icon-Configure-Active.svg")}.active.arrow-down-icon{background-image:url("../images/Arrow-Down.svg");width:14px;height:8px}.active.expand-icon{background-image:url("../images/Expand-Light-On.svg")}.icon-404{background-image:url("../images/404-image.svg");width:255px;height:255px}.export-icon{background-image:url("../images/Icon-Export.svg");width:32px;height:32px}.import-icon{background-image:url("../images/Icon-Import.svg");width:32px;height:32px}.star-blue-icon{width:17px;height:17px;background-image:url("../images/Icon-star.svg")}.grid-container{display:block;width:100%}.filter-row-one{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.filter-row-one .dropdown-filters{position:absolute;right:25px}.filter-row-two{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:10px}.filter-row-two,.search-filter{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.search-filter .control{font-size:15px;border:2px solid #c7c7c7;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-radius:3px;height:36px;width:280px;padding-left:10px}.search-filter .contorl:focus{border-color:#0041ff}.search-filter .icon-wrapper{border:2px solid #c7c7c7;border-radius:3px;border-top-left-radius:0;border-bottom-left-radius:0;height:36px;width:36px;margin-left:-1px}.search-filter .icon-wrapper .search-icon{margin-top:3px;margin-left:3px}.grid-dropdown-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:36px;width:200px;border:2px solid #c7c7c7;border-radius:3px;color:#8e8e8e;padding:0 5px}.grid-dropdown-header .arrow-icon-down{float:right}.dropdown-list.dropdown-container{padding:15px;width:100%;top:43px}.dropdown-list.dropdown-container ul li .control-group{margin-bottom:15px}.dropdown-list.dropdown-container .apply-filter{padding:10px;width:100%}.filter-tag{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-right:20px}.filter-tag,.filter-tag .wrapper{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;font-size:14px;height:28px;border-radius:2px}.filter-tag .wrapper{margin-left:10px;padding:5px 10px;background:#e7e7e7;color:#000311;letter-spacing:-.22px}.filter-tag .wrapper .icon.cross-icon{margin-left:10px;cursor:pointer}@-webkit-keyframes jelly{0%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}70%{-webkit-transform:translateY(5px) scale(1.05);transform:translateY(5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}}@keyframes jelly{0%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}70%{-webkit-transform:translateY(5px) scale(1.05);transform:translateY(5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}}@-webkit-keyframes jelly-out{0%{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}30%{-webkit-transform:translateY(-5px) scale(1.05);transform:translateY(-5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}}@keyframes jelly-out{0%{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}30%{-webkit-transform:translateY(-5px) scale(1.05);transform:translateY(-5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}}*{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus{outline:none}.mb-10{margin-bottom:10px}.mb-15{margin-bottom:15px}.mb-20{margin-bottom:20px}.mb-25{margin-bottom:25px}.mb-30{margin-bottom:30px}.mb-35{margin-bottom:35px}.mb-40{margin-bottom:40px}.mb-45{margin-bottom:45px}.mb-50{margin-bottom:50px}.mb-60{margin-bottom:60px}.mb-70{margin-bottom:70px}.mb-80{margin-bottom:80px}.mb-90{margin-bottom:90px}.mt-5{margin-top:5px}.mt-10{margin-top:10px}.mt-15{margin-top:15px}.mt-20{margin-top:20px}.mt-25{margin-top:25px}.mt-30{margin-top:30px}.mt-35{margin-top:35px}.mt-40{margin-top:40px}.mt-45{margin-top:45px}.mt-50{margin-top:50px}.mt-60{margin-top:60px}.mt-70{margin-top:70px}.mt-80{margin-top:80px}.mt-90{margin-top:90px}body{letter-spacing:-.26px;line-height:19px}a:active,a:focus,a:hover,a:link,a:visited{text-decoration:none;color:#0041ff}::-moz-selection{background-color:rgba(0,64,255,.6);color:#fff}::selection{background-color:rgba(0,64,255,.6);color:#fff}textarea{resize:none}ul{margin:0;padding:0;list-style:none}h1{font-size:28px;margin-top:0}h1,h2{color:#3a3a3a}h2{font-size:24px}h3{font-size:20px}h3,h4{color:#3a3a3a}h4{font-size:16px}h5{font-size:12px;color:#3a3a3a}.hide{display:none!important}.row{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-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btn{-webkit-box-shadow:0 1px 4px 0 rgba(0,0,0,.2),0 0 8px 0 rgba(0,0,0,.1);box-shadow:0 1px 4px 0 rgba(0,0,0,.2),0 0 8px 0 rgba(0,0,0,.1);border-radius:3px;border:none;color:#fff;cursor:pointer;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);font:inherit;display:inline-block}.btn:active,.btn:focus,.btn:hover{opacity:.75;border:none}.btn.btn-sm{padding:6px 12px}.btn.btn-md{padding:8px 16px}.btn.btn-lg{padding:10px 20px}.btn.btn-xl{padding:12px 24px;font-size:16px}.btn.btn-primary{background:#0041ff;color:#fff}.btn.btn-black{background:#000;color:#fff}.btn.btn-white{background:#fff;color:#000}.btn:disabled,.btn[disabled=disabled],.btn[disabled=disabled]:active,.btn[disabled=disabled]:hover{cursor:not-allowed;background:#b1b1ae;-webkit-box-shadow:none;box-shadow:none;opacity:1}.dropdown-btn{min-width:150px;text-align:left;background:#fff;border:2px solid #c7c7c7;border-radius:3px;font-size:14px;padding:8px 35px 8px 10px;cursor:pointer;position:relative}.dropdown-btn:active,.dropdown-btn:focus,.dropdown-btn:hover{opacity:.75;border:2px solid #c7c7c7}.dropdown-btn .icon{position:absolute;right:10px;top:50%;margin-top:-4px}.dropdown-toggle{cursor:pointer}.dropdown-open{position:relative}.dropdown-list{width:200px;margin-bottom:20px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 0 9px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 0 9px 0 rgba(0,0,0,.16);border-radius:3px;background-color:#fff;position:absolute;display:none;z-index:10;text-align:left}.dropdown-list.bottom-left{top:42px;left:0}.dropdown-list.bottom-right{top:42px;right:0}.dropdown-list.top-left{bottom:0;left:42px}.dropdown-list.top-right{bottom:0;right:42px}.dropdown-list .search-box{padding:20px;border-bottom:1px solid #e8e8e8}.dropdown-list .search-box .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:100%;height:36px;display:inline-block;vertical-align:middle;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px}.dropdown-list .search-box .control:focus{border-color:#0041ff}.dropdown-list .dropdown-container{padding:20px;overflow-y:auto}.dropdown-list .dropdown-container label{font-size:15px;display:inline-block;text-transform:uppercase;color:#9e9e9e;font-weight:700;padding-bottom:5px}.dropdown-list .dropdown-container ul{margin:0;list-style-type:none;padding:0}.dropdown-list .dropdown-container ul li{padding:5px 0}.dropdown-list .dropdown-container ul li a:active,.dropdown-list .dropdown-container ul li a:focus,.dropdown-list .dropdown-container ul li a:link,.dropdown-list .dropdown-container ul li a:visited{color:#333;display:block}.dropdown-list .dropdown-container ul li a:hover{color:#0041ff}.dropdown-list .dropdown-container ul li .checkbox{margin:0}.dropdown-list .dropdown-container ul li .control-group label{color:#3a3a3a;font-size:15px;font-weight:500;text-transform:capitalize;width:100%}.dropdown-list .dropdown-container .btn{width:100%;margin-top:10px}.section .secton-title{font-size:18px;color:#8e8e8e;padding:15px 0;border-bottom:1px solid #e8e8e8}.section .section-content{display:block;padding:20px 0}.section .section-content .row{display:block;padding:7px 0}.section .section-content .row .title{width:200px}.section .section-content .row .title,.section .section-content .row .value{color:#3a3a3a;letter-spacing:-.26px;display:inline-block}.table{width:100%}.table table{border-collapse:collapse;text-align:left;width:100%}.table table thead th{font-weight:700;padding:12px 10px;background:#f8f9fa;color:#3a3a3a}.table table tbody td{padding:10px;border-bottom:1px solid #d3d3d3;color:#3a3a3a;vertical-align:top}.table table tbody td.actions .action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table table tbody td.actions .icon{cursor:pointer;vertical-align:middle}.table table tbody td.empty{text-align:center}.table table tbody tr:last-child td{border-bottom:none}.table .control-group{width:100%;margin-bottom:0;min-width:140px}.table .control-group .control{width:100%;margin:0}.pagination .page-item{background:#fff;border:2px solid #c7c7c7;border-radius:3px;padding:7px 14px;margin-right:5px;font-size:16px;display:inline-block;color:#8e8e8e;vertical-align:middle;text-decoration:none}.pagination .page-item.next,.pagination .page-item.previous{padding:6px 9px}.pagination .page-item.active{background:#0041ff;color:#fff;border-color:#0041ff}.pagination .page-item .icon{vertical-align:middle;margin-bottom:3px}.checkbox{position:relative;display:block}.checkbox input{left:0;opacity:0;position:absolute;top:0;height:24px;width:24px;z-index:100}.checkbox .checkbox-view{background-image:url("../images/Checkbox.svg");height:24px;width:24px;margin:0;display:inline-block!important;vertical-align:middle;margin-right:5px}.checkbox input:checked+.checkbox-view{background-image:url("../images/Checkbox-Checked.svg")}.checkbox input:disabled+.checkbox-view{opacity:.5;cursor:not-allowed}.radio{position:relative;display:block;margin:10px 5px 5px 0}.radio input{left:0;opacity:0;position:absolute;top:0;z-index:100}.radio .radio-view{background-image:url("../images/controls.svg");background-position:-21px 0;height:20px;width:20px;margin:0;display:inline-block!important;vertical-align:middle;margin-right:5px}.radio input:checked+.radio-view{background-position:-21px -21px}.radio input:disabled+.radio-view{opacity:.5;cursor:not-allowed}.control-group{display:block;margin-bottom:25px;font-size:15px;color:#333;width:750px;max-width:100%;position:relative}.control-group label{display:block;color:#3a3a3a}.control-group label.required:after{content:"*";color:#fc6868;font-weight:700;display:inline-block}.control-group textarea.control{height:100px;padding:10px}.control-group .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:70%;height:36px;display:inline-block;vertical-align:middle;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px;margin-top:10px;margin-bottom:5px}.control-group .control:focus{border-color:#0041ff}.control-group .control[disabled=disabled]{border-color:#d3d3d3;background-color:#d3d3d3;cursor:not-allowed}.control-group .control[multiple]{height:100px}.control-group.date:after,.control-group.datetime:after{background-image:url("../images/Icon-Calendar.svg");width:24px;height:24px;content:"";display:inline-block;vertical-align:middle;margin-left:-34px;margin-top:2px;pointer-events:none}.control-group .control-info{display:block;font-size:14px;color:#6f6f6f;font-style:italic}.control-group .control-error{display:none;color:#ff5656;margin-top:5px}.control-group.has-error .control{border-color:#fc6868}.control-group.has-error .control-error{display:block}.control-group.price .currency-code{vertical-align:middle;display:inline-block}.control-group .switch{position:relative;display:inline-block;width:60px;height:34px;margin-top:10px;margin-bottom:5px}.control-group .switch input{opacity:0;width:0;height:0}.control-group .slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#8e8e8e}.control-group .slider,.control-group .slider:before{position:absolute;-webkit-transition:.2s;transition:.2s}.control-group .slider:before{content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff}.control-group input:checked+.slider{background-color:#0041ff}.control-group input:focus+.slider{-webkit-box-shadow:0 0 1px #0041ff;box-shadow:0 0 1px #0041ff}.control-group input:checked+.slider:before{-webkit-transform:translateX(26px);transform:translateX(26px)}.control-group .slider.round{border-radius:34px}.control-group .slider.round:before{border-radius:50%}.button-group{margin-top:20px;margin-bottom:20px}.alert-wrapper{width:300px;top:10px;right:10px;position:fixed;z-index:100;text-align:left}.alert-wrapper .alert{width:300px;padding:15px;border-radius:3px;display:inline-block;-webkit-box-shadow:0 4px 15.36px .64px rgba(0,0,0,.1),0 2px 6px 0 rgba(0,0,0,.12);box-shadow:0 4px 15.36px .64px rgba(0,0,0,.1),0 2px 6px 0 rgba(0,0,0,.12);position:relative;-webkit-animation:jelly .5s ease-in-out;animation:jelly .5s ease-in-out;-webkit-transform-origin:center top;transform-origin:center top;z-index:500;margin-bottom:10px}.alert-wrapper .alert.alert-error{background:#fc6868}.alert-wrapper .alert.alert-info{background:#204d74}.alert-wrapper .alert.alert-success{background:#4caf50}.alert-wrapper .alert.alert-warning{background:#ffc107}.alert-wrapper .alert .icon{position:absolute;right:10px;top:10px;cursor:pointer}.alert-wrapper .alert p{color:#fff;margin:0;padding:0;font-size:15px}.tabs ul{border-bottom:1px solid #e8e8e8}.tabs ul li{display:inline-block}.tabs ul li a{padding:15px 20px;cursor:pointer;margin:0 2px;text-align:center;color:#000311;display:block}.tabs ul li.active a{border-bottom:3px solid #0041ff}.accordian,accordian{display:inline-block;width:100%}.accordian .accordian-header,.accordian div[slot*=header],accordian .accordian-header,accordian div[slot*=header]{width:100%;display:inline-block;font-size:18px;color:#3a3a3a;border-top:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8;padding:20px 15px;cursor:pointer;margin-top:-1px}.accordian .accordian-header .expand-icon,.accordian div[slot*=header] .expand-icon,accordian .accordian-header .expand-icon,accordian div[slot*=header] .expand-icon{background-image:url("../images/Expand-Light.svg");margin-right:10px;margin-top:3px}.accordian .accordian-header h1,.accordian div[slot*=header] h1,accordian .accordian-header h1,accordian div[slot*=header] h1{margin:0;font-size:20px;font-weight:500;display:inline-block}.accordian .accordian-header .icon,.accordian div[slot*=header] .icon,accordian .accordian-header .icon,accordian div[slot*=header] .icon{float:right}.accordian .accordian-header .icon.left,.accordian div[slot*=header] .icon.left,accordian .accordian-header .icon.left,accordian div[slot*=header] .icon.left{float:left}.accordian.error .accordian-header,accordian.error .accordian-header{color:#ff5656}.accordian .accordian-content,.accordian div[slot*=body],accordian .accordian-content,accordian div[slot*=body]{width:100%;padding:20px 15px;display:none;-webkit-transition:all .3s ease;transition:all .3s ease}.accordian.active>.accordian-content,accordian.active>.accordian-content{display:inline-block}.accordian.active>.accordian-header .expand-icon,accordian.active>.accordian-header .expand-icon{background-image:url("../images/Expand-Light-On.svg")}.tree-container .tree-item{padding-left:30px;display:inline-block;margin-top:10px;width:100%}.tree-container .tree-item>.tree-item{display:none}.tree-container .tree-item.active>.tree-item{display:inline-block}.tree-container .tree-item .checkbox,.tree-container .tree-item .radio{margin:0;display:inline-block}.tree-container .tree-item .expand-icon{display:inline-block;margin-right:10px;cursor:pointer;background-image:url("../images/Expand-Light.svg");width:18px;height:18px;vertical-align:middle}.tree-container .tree-item .folder-icon{vertical-align:middle;margin-right:10px}.tree-container .tree-item.active>.expand-icon{background-image:url("../images/Expand-Light-On.svg")}.tree-container>.tree-item{padding-left:0}.panel{-webkit-box-shadow:0 2px 25px 0 rgba(0,0,0,.15);box-shadow:0 2px 25px 0 rgba(0,0,0,.15);border-radius:5px;background:#fff}.panel .panel-content{padding:20px}modal{display:none}.modal-open{overflow:hidden}.modal-overlay{display:none;overflow-y:auto;z-index:10;top:0;right:0;bottom:0;left:0;position:fixed;background:#000;opacity:.7}.modal-open .modal-overlay{display:block}.modal-container{background:#fff;top:100px;width:600px;max-width:80%;left:50%;margin-left:-300px;position:fixed;z-index:11;-webkit-box-shadow:0 15px 25px 0 rgba(0,0,0,.03),0 20px 45px 5px rgba(0,0,0,.2);box-shadow:0 15px 25px 0 rgba(0,0,0,.03),0 20px 45px 5px rgba(0,0,0,.2);-webkit-animation:fade-in-white .3s ease-in-out;animation:fade-in-white .3s ease-in-out;-webkit-animation:jelly .5s ease-in-out;animation:jelly .5s ease-in-out;border-radius:5px;overflow-y:auto;max-height:80%}.modal-container .modal-header{padding:20px}.modal-container .modal-header h3{display:inline-block;font-size:20px;color:#3a3a3a;margin:0}.modal-container .modal-header .icon{float:right;cursor:pointer}.modal-container .modal-body{padding:20px}.modal-container .modal-body .control-group .control{width:100%}@media only screen and (max-width:770px){.modal-container{max-width:80%;left:10%;margin-left:0}}.label{background:#e7e7e7;border-radius:2px;padding:8px;color:#000311;display:inline-block}.label.label-sm{padding:5px}.label.label-md{padding:8px}.label.label-lg{padding:11px}.label.label-xl{padding:14px}.badge{border-radius:50px;color:#fff;padding:8px;white-space:nowrap}.badge.badge-sm{padding:5px}.badge.badge-md{padding:3px 10px}.badge.badge-lg{padding:11px}.badge.badge-xl{padding:14px}.badge.badge-success{background-color:#4caf50}.badge.badge-info{background-color:#0041ff}.badge.badge-danger{background-color:#fc6868}.badge.badge-warning{background-color:#ffc107}.image-wrapper{margin-bottom:20px;margin-top:10px;display:inline-block;width:100%}.image-wrapper .image-item{width:200px;height:200px;margin-right:20px;background:#f8f9fa;border-radius:3px;display:inline-block;position:relative;background-image:url("../images/placeholder-icon.svg");background-repeat:no-repeat;background-position:50%;margin-bottom:20px;float:left}.image-wrapper .image-item img.preview{width:100%;height:100%}.image-wrapper .image-item input{display:none}.image-wrapper .image-item .remove-image{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.08)),to(rgba(0,0,0,.24)));background-image:linear-gradient(-180deg,rgba(0,0,0,.08),rgba(0,0,0,.24));border-radius:0 0 4px 4px;position:absolute;bottom:0;width:100%;padding:10px;text-align:center;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.24);margin-right:20px;cursor:pointer}.image-wrapper .image-item:hover .remove-image{display:block}.image-wrapper .image-item.has-image{background-image:none}.vue-swatches__trigger{border:1px solid #d3d3d3}.helper-container{display:block}.helper-container .group code{font-weight:700}div.rad-info-box{width:fit-content;text-align:center;box-shadow:1px 1px 2px 0 #ccc;padding:20px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);font-weight:700;background:#fff!important} \ No newline at end of file +.active .cms-icon,.active.configuration-icon,.catalog-icon,.cms-icon,.configuration-icon,.customer-icon,.dashboard-icon,.promotion-icon,.sales-icon,.settings-icon{width:48px;height:48px;display:inline-block;background-size:cover}.icon{display:inline-block;background-size:cover}.dashboard-icon{background-image:url("../images/Icon-Dashboard.svg")}.sales-icon{background-image:url("../images/Icon-Sales.svg")}.catalog-icon{background-image:url("../images/Icon-Catalog.svg")}.customer-icon{background-image:url("../images/Icon-Customers.svg")}.configuration-icon{background-image:url("../images/Icon-Configure.svg")}.settings-icon{background-image:url("../images/Icon-Settings.svg")}.promotion-icon{background-image:url("../images/icon-promotion.svg")}.cms-icon{background-image:url("../images/Icon-CMS.svg")}.angle-right-icon{background-image:url("../images/Angle-Right.svg");width:17px;height:17px}.angle-left-icon{background-image:url("../images/Angle-Left.svg");width:17px;height:17px}.arrow-down-icon{background-image:url("../images/Arrow-Down-Light.svg");width:14px;height:8px}.arrow-right-icon{background-image:url("../images/Arrow-Right.svg");width:18px;height:18px}.white-cross-sm-icon{background-image:url("../images/Icon-Sm-Cross-White.svg");width:18px;height:18px}.accordian-up-icon{background-image:url("../images/Accordion-Arrow-Up.svg");width:24px;height:24px}.accordian-down-icon{background-image:url("../images/Accordion-Arrow-Down.svg");width:24px;height:24px}.cross-icon{background-image:url("../images/Icon-Crossed.svg");width:18px;height:18px}.trash-icon{background-image:url("../images/Icon-Trash.svg");width:24px;height:24px}.remove-icon{background-image:url("../images/Icon-remove.svg");width:24px;height:24px}.pencil-lg-icon{background-image:url("../images/Icon-Pencil-Large.svg");width:24px;height:24px}.eye-icon{background-image:url("../images/Icon-eye.svg");width:24px;height:24px}.search-icon{background-image:url("../images/icon-search.svg");width:24px;height:24px}.sortable-icon{background-image:url("../images/Icon-Sortable.svg");width:24px;height:24px}.sort-down-icon,.sort-up-icon{background-image:url("../images/Icon-Sort-Down.svg");width:18px;height:18px}.sort-up-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.primary-back-icon{background-image:url("../images/Icon-Back-Primary.svg");width:24px;height:24px}.checkbox-dash-icon{background-image:url("../images/Checkbox-Dash.svg");width:24px;height:24px}.account-icon{background-image:url("../images/icon-account.svg");width:24px;height:24px}.expand-icon{background-image:url("../images/Expand-Light.svg");width:18px;height:18px}.expand-on-icon{background-image:url("../images/Expand-Light-On.svg");width:18px;height:18px}.dark-left-icon{background-image:url("../images/arrow-left-dark.svg");width:18px;height:18px}.light-right-icon{background-image:url("../images/arrow-right-light.svg");width:18px;height:18px}.folder-icon{background-image:url("../images/Folder-Icon.svg");width:24px;height:24px}.star-icon{background-image:url("../images/Star-Icon.svg");width:24px;height:24px}.arrow-down-white-icon{background-image:url("../images/down-arrow-white.svg");width:17px;height:13px}.arrow-up-white-icon{background-image:url("../images/up-arrow-white.svg");width:17px;height:13px}.profile-pic-icon{background-image:url("../images/Profile-Pic.svg");width:60px;height:60px}.graph-up-icon{background-image:url("../images/Icon-Graph-Green.svg");width:24px;height:24px}.graph-down-icon{background-image:url("../images/Icon-Graph-Red.svg");width:24px;height:24px}.no-result-icon{background-image:url("../images/limited-icon.svg");width:52px;height:47px}.note-icon{background-image:url("../images/icon-note.svg")}.list-icon,.note-icon{width:24px;height:24px}.list-icon{background-image:url("../images/Icon-Listing.svg")}.active .dashboard-icon{background-image:url("../images/Icon-Dashboard-Active.svg")}.active .sales-icon{background-image:url("../images/Icon-Sales-Active.svg")}.active .catalog-icon{background-image:url("../images/Icon-Catalog-Active.svg")}.active .customer-icon{background-image:url("../images/Icon-Customers-Active.svg")}.active .settings-icon{background-image:url("../images/Icon-Settings-Active.svg")}.active .configuration-icon{background-image:url("../images/Icon-Configure-Active.svg")}.active .promotion-icon{background-image:url("../images/icon-promotion-active.svg")}.active .cms-icon{background-image:url("../images/Icon-CMS-Active.svg")}.active>.arrow-down-icon{background-image:url("../images/Arrow-Down.svg");width:14px;height:8px}.active>.expand-icon{background-image:url("../images/Expand-Light-On.svg")}.active.dashboard-icon{background-image:url("../images/Icon-Dashboard-Active.svg")}.active.customer-icon{background-image:url("../images/Icon-Customers-Active.svg")}.active.sales-icon{background-image:url("../images/Icon-Sales-Active.svg")}.active.settings-icon{background-image:url("../images/Icon-Settings-Active.svg")}.active.configuration-icon{background-image:url("../images/Icon-Configure-Active.svg")}.active.arrow-down-icon{background-image:url("../images/Arrow-Down.svg");width:14px;height:8px}.active.expand-icon{background-image:url("../images/Expand-Light-On.svg")}.icon-404{background-image:url("../images/404-image.svg");width:255px;height:255px}.export-icon{background-image:url("../images/Icon-Export.svg");width:32px;height:32px}.import-icon{background-image:url("../images/Icon-Import.svg");width:32px;height:32px}.star-blue-icon{width:17px;height:17px;background-image:url("../images/Icon-star.svg")}.grid-container{display:block;width:100%}.filter-row-one{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.filter-row-one .dropdown-filters{position:absolute;right:25px}.filter-row-one .per-page{right:250px}.filter-row-one .per-page .per-page-label{position:absolute;right:120px;width:100%;top:8px}.filter-row-two{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:10px}.filter-row-two,.search-filter{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.search-filter .control{font-size:15px;border:2px solid #c7c7c7;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-radius:3px;height:36px;width:280px;padding-left:10px}.search-filter .contorl:focus{border-color:#0041ff}.search-filter .icon-wrapper{border:2px solid #c7c7c7;border-radius:3px;border-top-left-radius:0;border-bottom-left-radius:0;height:36px;width:36px;margin-left:-1px}.search-filter .icon-wrapper .search-icon{margin-top:3px;margin-left:3px}.grid-dropdown-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:36px;width:200px;border:2px solid #c7c7c7;border-radius:3px;color:#8e8e8e;padding:0 5px}.grid-dropdown-header .arrow-icon-down{float:right}.dropdown-list.dropdown-container{padding:15px;width:100%;top:43px}.dropdown-list.dropdown-container ul li .control-group{margin-bottom:15px}.dropdown-list.dropdown-container .apply-filter{padding:10px;width:100%}.filter-tag{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-right:20px}.filter-tag,.filter-tag .wrapper{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;font-size:14px;height:28px;border-radius:2px}.filter-tag .wrapper{margin-left:10px;padding:5px 10px;background:#e7e7e7;color:#000311;letter-spacing:-.22px}.filter-tag .wrapper .icon.cross-icon{margin-left:10px;cursor:pointer}@-webkit-keyframes jelly{0%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}70%{-webkit-transform:translateY(5px) scale(1.05);transform:translateY(5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}}@keyframes jelly{0%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}70%{-webkit-transform:translateY(5px) scale(1.05);transform:translateY(5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}}@-webkit-keyframes jelly-out{0%{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}30%{-webkit-transform:translateY(-5px) scale(1.05);transform:translateY(-5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}}@keyframes jelly-out{0%{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}30%{-webkit-transform:translateY(-5px) scale(1.05);transform:translateY(-5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}}*{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus{outline:none}.mb-10{margin-bottom:10px}.mb-15{margin-bottom:15px}.mb-20{margin-bottom:20px}.mb-25{margin-bottom:25px}.mb-30{margin-bottom:30px}.mb-35{margin-bottom:35px}.mb-40{margin-bottom:40px}.mb-45{margin-bottom:45px}.mb-50{margin-bottom:50px}.mb-60{margin-bottom:60px}.mb-70{margin-bottom:70px}.mb-80{margin-bottom:80px}.mb-90{margin-bottom:90px}.mt-5{margin-top:5px}.mt-10{margin-top:10px}.mt-15{margin-top:15px}.mt-20{margin-top:20px}.mt-25{margin-top:25px}.mt-30{margin-top:30px}.mt-35{margin-top:35px}.mt-40{margin-top:40px}.mt-45{margin-top:45px}.mt-50{margin-top:50px}.mt-60{margin-top:60px}.mt-70{margin-top:70px}.mt-80{margin-top:80px}.mt-90{margin-top:90px}body{letter-spacing:-.26px;line-height:19px}a:active,a:focus,a:hover,a:link,a:visited{text-decoration:none;color:#0041ff}::-moz-selection{background-color:rgba(0,64,255,.6);color:#fff}::selection{background-color:rgba(0,64,255,.6);color:#fff}textarea{resize:none}ul{margin:0;padding:0;list-style:none}h1{font-size:28px;margin-top:0}h1,h2{color:#3a3a3a}h2{font-size:24px}h3{font-size:20px}h3,h4{color:#3a3a3a}h4{font-size:16px}h5{font-size:12px;color:#3a3a3a}.hide{display:none!important}.row{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-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btn{-webkit-box-shadow:0 1px 4px 0 rgba(0,0,0,.2),0 0 8px 0 rgba(0,0,0,.1);box-shadow:0 1px 4px 0 rgba(0,0,0,.2),0 0 8px 0 rgba(0,0,0,.1);border-radius:3px;border:none;color:#fff;cursor:pointer;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);font:inherit;display:inline-block}.btn:active,.btn:focus,.btn:hover{opacity:.75;border:none}.btn.btn-sm{padding:6px 12px}.btn.btn-md{padding:8px 16px}.btn.btn-lg{padding:10px 20px}.btn.btn-xl{padding:12px 24px;font-size:16px}.btn.btn-primary{background:#0041ff;color:#fff}.btn.btn-black{background:#000;color:#fff}.btn.btn-white{background:#fff;color:#000}.btn:disabled,.btn[disabled=disabled],.btn[disabled=disabled]:active,.btn[disabled=disabled]:hover{cursor:not-allowed;background:#b1b1ae;-webkit-box-shadow:none;box-shadow:none;opacity:1}.dropdown-btn{min-width:150px;text-align:left;background:#fff;border:2px solid #c7c7c7;border-radius:3px;font-size:14px;padding:8px 35px 8px 10px;cursor:pointer;position:relative}.dropdown-btn:active,.dropdown-btn:focus,.dropdown-btn:hover{opacity:.75;border:2px solid #c7c7c7}.dropdown-btn .icon{position:absolute;right:10px;top:50%;margin-top:-4px}.dropdown-toggle{cursor:pointer}.dropdown-open{position:relative}.dropdown-list{width:200px;margin-bottom:20px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 0 9px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 0 9px 0 rgba(0,0,0,.16);border-radius:3px;background-color:#fff;position:absolute;display:none;z-index:10;text-align:left}.dropdown-list.bottom-left{top:42px;left:0}.dropdown-list.bottom-right{top:42px;right:0}.dropdown-list.top-left{bottom:0;left:42px}.dropdown-list.top-right{bottom:0;right:42px}.dropdown-list .search-box{padding:20px;border-bottom:1px solid #e8e8e8}.dropdown-list .search-box .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:100%;height:36px;display:inline-block;vertical-align:middle;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px}.dropdown-list .search-box .control:focus{border-color:#0041ff}.dropdown-list .dropdown-container{padding:20px;overflow-y:auto}.dropdown-list .dropdown-container label{font-size:15px;display:inline-block;text-transform:uppercase;color:#9e9e9e;font-weight:700;padding-bottom:5px}.dropdown-list .dropdown-container ul{margin:0;list-style-type:none;padding:0}.dropdown-list .dropdown-container ul li{padding:5px 0}.dropdown-list .dropdown-container ul li a:active,.dropdown-list .dropdown-container ul li a:focus,.dropdown-list .dropdown-container ul li a:link,.dropdown-list .dropdown-container ul li a:visited{color:#333;display:block}.dropdown-list .dropdown-container ul li a:hover{color:#0041ff}.dropdown-list .dropdown-container ul li .checkbox{margin:0}.dropdown-list .dropdown-container ul li .control-group label{color:#3a3a3a;font-size:15px;font-weight:500;text-transform:capitalize;width:100%}.dropdown-list .dropdown-container .btn{width:100%;margin-top:10px}.section .secton-title{font-size:18px;color:#8e8e8e;padding:15px 0;border-bottom:1px solid #e8e8e8}.section .section-content{display:block;padding:20px 0}.section .section-content .row{display:block;padding:7px 0}.section .section-content .row .title{width:200px}.section .section-content .row .title,.section .section-content .row .value{color:#3a3a3a;letter-spacing:-.26px;display:inline-block}.table{width:100%}.table table{border-collapse:collapse;text-align:left;width:100%}.table table thead th{font-weight:700;padding:12px 10px;background:#f8f9fa;color:#3a3a3a}.table table tbody td{padding:10px;border-bottom:1px solid #d3d3d3;color:#3a3a3a;vertical-align:top}.table table tbody td.actions .action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table table tbody td.actions .icon{cursor:pointer;vertical-align:middle}.table table tbody td.empty{text-align:center}.table table tbody tr:last-child td{border-bottom:none}.table .control-group{width:100%;margin-bottom:0;min-width:140px}.table .control-group .control{width:100%;margin:0}.pagination .page-item{background:#fff;border:2px solid #c7c7c7;border-radius:3px;padding:7px 14px;margin-right:5px;font-size:16px;display:inline-block;color:#8e8e8e;vertical-align:middle;text-decoration:none}.pagination .page-item.next,.pagination .page-item.previous{padding:6px 9px}.pagination .page-item.active{background:#0041ff;color:#fff;border-color:#0041ff}.pagination .page-item .icon{vertical-align:middle;margin-bottom:3px}.checkbox{position:relative;display:block}.checkbox input{left:0;opacity:0;position:absolute;top:0;height:24px;width:24px;z-index:100}.checkbox .checkbox-view{background-image:url("../images/Checkbox.svg");height:24px;width:24px;margin:0;display:inline-block!important;vertical-align:middle;margin-right:5px}.checkbox input:checked+.checkbox-view{background-image:url("../images/Checkbox-Checked.svg")}.checkbox input:disabled+.checkbox-view{opacity:.5;cursor:not-allowed}.radio{position:relative;display:block;margin:10px 5px 5px 0}.radio input{left:0;opacity:0;position:absolute;top:0;z-index:100}.radio .radio-view{background-image:url("../images/controls.svg");background-position:-21px 0;height:20px;width:20px;margin:0;display:inline-block!important;vertical-align:middle;margin-right:5px}.radio input:checked+.radio-view{background-position:-21px -21px}.radio input:disabled+.radio-view{opacity:.5;cursor:not-allowed}.control-group{display:block;margin-bottom:25px;font-size:15px;color:#333;width:750px;max-width:100%;position:relative}.control-group label{display:block;color:#3a3a3a}.control-group label.required:after{content:"*";color:#fc6868;font-weight:700;display:inline-block}.control-group textarea.control{height:100px;padding:10px}.control-group .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:70%;height:36px;display:inline-block;vertical-align:middle;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px;margin-top:10px;margin-bottom:5px}.control-group .control:focus{border-color:#0041ff}.control-group .control[disabled=disabled]{border-color:#d3d3d3;background-color:#d3d3d3;cursor:not-allowed}.control-group .control[multiple]{height:100px}.control-group.date:after,.control-group.datetime:after{background-image:url("../images/Icon-Calendar.svg");width:24px;height:24px;content:"";display:inline-block;vertical-align:middle;margin-left:-34px;margin-top:2px;pointer-events:none}.control-group .control-info{display:block;font-size:14px;color:#6f6f6f;font-style:italic}.control-group .control-error{display:none;color:#ff5656;margin-top:5px}.control-group.has-error .control{border-color:#fc6868}.control-group.has-error .control-error{display:block}.control-group.price .currency-code{vertical-align:middle;display:inline-block}.control-group .switch{position:relative;display:inline-block;width:60px;height:34px;margin-top:10px;margin-bottom:5px}.control-group .switch input{opacity:0;width:0;height:0}.control-group .slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#8e8e8e}.control-group .slider,.control-group .slider:before{position:absolute;-webkit-transition:.2s;transition:.2s}.control-group .slider:before{content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff}.control-group input:checked+.slider{background-color:#0041ff}.control-group input:focus+.slider{-webkit-box-shadow:0 0 1px #0041ff;box-shadow:0 0 1px #0041ff}.control-group input:checked+.slider:before{-webkit-transform:translateX(26px);transform:translateX(26px)}.control-group .slider.round{border-radius:34px}.control-group .slider.round:before{border-radius:50%}.button-group{margin-top:20px;margin-bottom:20px}.alert-wrapper{width:300px;top:10px;right:10px;position:fixed;z-index:100;text-align:left}.alert-wrapper .alert{width:300px;padding:15px;border-radius:3px;display:inline-block;-webkit-box-shadow:0 4px 15.36px .64px rgba(0,0,0,.1),0 2px 6px 0 rgba(0,0,0,.12);box-shadow:0 4px 15.36px .64px rgba(0,0,0,.1),0 2px 6px 0 rgba(0,0,0,.12);position:relative;-webkit-animation:jelly .5s ease-in-out;animation:jelly .5s ease-in-out;-webkit-transform-origin:center top;transform-origin:center top;z-index:500;margin-bottom:10px}.alert-wrapper .alert.alert-error{background:#fc6868}.alert-wrapper .alert.alert-info{background:#204d74}.alert-wrapper .alert.alert-success{background:#4caf50}.alert-wrapper .alert.alert-warning{background:#ffc107}.alert-wrapper .alert .icon{position:absolute;right:10px;top:10px;cursor:pointer}.alert-wrapper .alert p{color:#fff;margin:0;padding:0;font-size:15px}.tabs ul{border-bottom:1px solid #e8e8e8}.tabs ul li{display:inline-block}.tabs ul li a{padding:15px 20px;cursor:pointer;margin:0 2px;text-align:center;color:#000311;display:block}.tabs ul li.active a{border-bottom:3px solid #0041ff}.accordian,accordian{display:inline-block;width:100%}.accordian .accordian-header,.accordian div[slot*=header],accordian .accordian-header,accordian div[slot*=header]{width:100%;display:inline-block;font-size:18px;color:#3a3a3a;border-top:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8;padding:20px 15px;cursor:pointer;margin-top:-1px}.accordian .accordian-header .expand-icon,.accordian div[slot*=header] .expand-icon,accordian .accordian-header .expand-icon,accordian div[slot*=header] .expand-icon{background-image:url("../images/Expand-Light.svg");margin-right:10px;margin-top:3px}.accordian .accordian-header h1,.accordian div[slot*=header] h1,accordian .accordian-header h1,accordian div[slot*=header] h1{margin:0;font-size:20px;font-weight:500;display:inline-block}.accordian .accordian-header .icon,.accordian div[slot*=header] .icon,accordian .accordian-header .icon,accordian div[slot*=header] .icon{float:right}.accordian .accordian-header .icon.left,.accordian div[slot*=header] .icon.left,accordian .accordian-header .icon.left,accordian div[slot*=header] .icon.left{float:left}.accordian.error .accordian-header,accordian.error .accordian-header{color:#ff5656}.accordian .accordian-content,.accordian div[slot*=body],accordian .accordian-content,accordian div[slot*=body]{width:100%;padding:20px 15px;display:none;-webkit-transition:all .3s ease;transition:all .3s ease}.accordian.active>.accordian-content,accordian.active>.accordian-content{display:inline-block}.accordian.active>.accordian-header .expand-icon,accordian.active>.accordian-header .expand-icon{background-image:url("../images/Expand-Light-On.svg")}.tree-container .tree-item{padding-left:30px;display:inline-block;margin-top:10px;width:100%}.tree-container .tree-item>.tree-item{display:none}.tree-container .tree-item.active>.tree-item{display:inline-block}.tree-container .tree-item .checkbox,.tree-container .tree-item .radio{margin:0;display:inline-block}.tree-container .tree-item .expand-icon{display:inline-block;margin-right:10px;cursor:pointer;background-image:url("../images/Expand-Light.svg");width:18px;height:18px;vertical-align:middle}.tree-container .tree-item .folder-icon{vertical-align:middle;margin-right:10px}.tree-container .tree-item.active>.expand-icon{background-image:url("../images/Expand-Light-On.svg")}.tree-container>.tree-item{padding-left:0}.panel{-webkit-box-shadow:0 2px 25px 0 rgba(0,0,0,.15);box-shadow:0 2px 25px 0 rgba(0,0,0,.15);border-radius:5px;background:#fff}.panel .panel-content{padding:20px}modal{display:none}.modal-open{overflow:hidden}.modal-overlay{display:none;overflow-y:auto;z-index:10;top:0;right:0;bottom:0;left:0;position:fixed;background:#000;opacity:.7}.modal-open .modal-overlay{display:block}.modal-container{background:#fff;top:100px;width:600px;max-width:80%;left:50%;margin-left:-300px;position:fixed;z-index:11;-webkit-box-shadow:0 15px 25px 0 rgba(0,0,0,.03),0 20px 45px 5px rgba(0,0,0,.2);box-shadow:0 15px 25px 0 rgba(0,0,0,.03),0 20px 45px 5px rgba(0,0,0,.2);-webkit-animation:fade-in-white .3s ease-in-out;animation:fade-in-white .3s ease-in-out;-webkit-animation:jelly .5s ease-in-out;animation:jelly .5s ease-in-out;border-radius:5px;overflow-y:auto;max-height:80%}.modal-container .modal-header{padding:20px}.modal-container .modal-header h3{display:inline-block;font-size:20px;color:#3a3a3a;margin:0}.modal-container .modal-header .icon{float:right;cursor:pointer}.modal-container .modal-body{padding:20px}.modal-container .modal-body .control-group .control{width:100%}@media only screen and (max-width:770px){.modal-container{max-width:80%;left:10%;margin-left:0}}.label{background:#e7e7e7;border-radius:2px;padding:8px;color:#000311;display:inline-block}.label.label-sm{padding:5px}.label.label-md{padding:8px}.label.label-lg{padding:11px}.label.label-xl{padding:14px}.badge{border-radius:50px;color:#fff;padding:8px;white-space:nowrap}.badge.badge-sm{padding:5px}.badge.badge-md{padding:3px 10px}.badge.badge-lg{padding:11px}.badge.badge-xl{padding:14px}.badge.badge-success{background-color:#4caf50}.badge.badge-info{background-color:#0041ff}.badge.badge-danger{background-color:#fc6868}.badge.badge-warning{background-color:#ffc107}.image-wrapper{margin-bottom:20px;margin-top:10px;display:inline-block;width:100%}.image-wrapper .image-item{width:200px;height:200px;margin-right:20px;background:#f8f9fa;border-radius:3px;display:inline-block;position:relative;background-image:url("../images/placeholder-icon.svg");background-repeat:no-repeat;background-position:50%;margin-bottom:20px;float:left}.image-wrapper .image-item img.preview{width:100%;height:100%}.image-wrapper .image-item input{display:none}.image-wrapper .image-item .remove-image{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.08)),to(rgba(0,0,0,.24)));background-image:linear-gradient(-180deg,rgba(0,0,0,.08),rgba(0,0,0,.24));border-radius:0 0 4px 4px;position:absolute;bottom:0;width:100%;padding:10px;text-align:center;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.24);margin-right:20px;cursor:pointer}.image-wrapper .image-item:hover .remove-image{display:block}.image-wrapper .image-item.has-image{background-image:none}.vue-swatches__trigger{border:1px solid #d3d3d3}.helper-container{display:block}.helper-container .group code{font-weight:700} \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/js/ui.js b/packages/Webkul/Ui/publishable/assets/js/ui.js index 651cff564..0c1379086 100644 --- a/packages/Webkul/Ui/publishable/assets/js/ui.js +++ b/packages/Webkul/Ui/publishable/assets/js/ui.js @@ -1 +1 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=0)}({"+CM9":function(t,e,n){"use strict";var r=n("Ds5P"),i=n("ot5s")(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n("NNrz")(o)),"Array",{indexOf:function(t){return a?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},"+E39":function(t,e,n){t.exports=!n("S82l")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"+Mt+":function(t,e,n){"use strict";var r=n("Ds5P"),i=n("7gX0"),o=n("OzIq"),a=n("7O1s"),s=n("nphH");r(r.P+r.R,"Promise",{finally:function(t){var e=a(this,i.Promise||o.Promise),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then(function(){return n})}:t,n?function(n){return s(e,t()).then(function(){throw n})}:t)}})},"+ZMJ":function(t,e,n){var r=n("lOnJ");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},"+vXH":function(t,e,n){n("77Ug")("Float64",8,function(t){return function(e,n,r){return t(this,e,n,r)}})},"+wdr":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={data:function(){return{sample:"",image_file:"",file:null,newImage:""}},mounted:function(){this.sample="";var t=this.$el.getElementsByTagName("input")[0],e=this;t.onchange=function(){var n=new FileReader;n.readAsDataURL(t.files[0]),n.onload=function(t){this.img=document.getElementsByTagName("input")[0],this.img.src=t.target.result,e.newImage=this.img.src,e.changePreview()}}},methods:{removePreviewImage:function(){this.sample=""},changePreview:function(){this.sample=this.newImage}},computed:{getInputImage:function(){console.log(this.imageData)}}}},"+yjc":function(t,e,n){var r=n("UKM+");n("3i66")("isSealed",function(t){return function(e){return!r(e)||!!t&&t(e)}})},"/whu":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},0:function(t,e,n){n("J66Q"),n("Oy72"),t.exports=n("MT9B")},"07k+":function(t,e,n){for(var r,i=n("OzIq"),o=n("2p1q"),a=n("ulTY"),s=a("typed_array"),c=a("view"),u=!(!i.ArrayBuffer||!i.DataView),l=u,f=0,p="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");f<9;)(r=i[p[f++]])?(o(r.prototype,s,!0),o(r.prototype,c,!0)):l=!1;t.exports={ABV:u,CONSTR:l,TYPED:s,VIEW:c}},"0Rih":function(t,e,n){"use strict";var r=n("OzIq"),i=n("Ds5P"),o=n("R3AP"),a=n("A16L"),s=n("1aA0"),c=n("vmSO"),u=n("9GpA"),l=n("UKM+"),f=n("zgIt"),p=n("qkyc"),d=n("yYvK"),h=n("kic5");t.exports=function(t,e,n,v,g,m){var y=r[t],b=y,w=g?"set":"add",x=b&&b.prototype,_={},k=function(t){var e=x[t];o(x,t,"delete"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!l(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof b&&(m||x.forEach&&!f(function(){(new b).entries().next()}))){var S=new b,D=S[w](m?{}:-0,1)!=S,C=f(function(){S.has(1)}),O=p(function(t){new b(t)}),E=!m&&f(function(){for(var t=new b,e=5;e--;)t[w](e,e);return!t.has(-0)});O||((b=e(function(e,n){u(e,b,t);var r=h(new y,e,b);return void 0!=n&&c(n,g,r[w],r),r})).prototype=x,x.constructor=b),(C||E)&&(k("delete"),k("has"),g&&k("get")),(E||D)&&k(w),m&&x.clear&&delete x.clear}else b=v.getConstructor(e,t,g,w),a(b.prototype,n),s.NEED=!0;return d(b,t),_[t]=b,i(i.G+i.W+i.F*(b!=y),_),m||v.setStrong(b,t,g),b}},"0pGU":function(t,e,n){"use strict";var r=n("DIVP");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},"11aO":function(t,e,n){var r=n("VU/8")(n("LxYr"),null,!1,null,null,null);t.exports=r.exports},"13ON":function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"tabs"},[n("ul",t._l(t.tabs,function(e){return n("li",{class:{active:e.isActive},on:{click:function(n){return t.selectTab(e)}}},[n("a",[t._v(t._s(e.name))])])}),0)]),t._v(" "),n("div",{staticClass:"tabs-content"},[t._t("default")],2)])},staticRenderFns:[]}},"1A13":function(t,e,n){"use strict";var r=n("49qz")(!0);n("uc2A")(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},"1ETD":function(t,e,n){var r=n("kkCw")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(t){}}return!0}},"1aA0":function(t,e,n){var r=n("ulTY")("meta"),i=n("UKM+"),o=n("WBcL"),a=n("lDLk").f,s=0,c=Object.isExtensible||function(){return!0},u=!n("zgIt")(function(){return c(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,r)){if(!c(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!o(t,r)){if(!c(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return u&&f.NEED&&c(t)&&!o(t,r)&&l(t),t}}},"1ip3":function(t,e,n){var r=n("Ds5P");r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},"1uLP":function(t,e,n){var r=n("Ds5P");r(r.G+r.W+r.F*!n("07k+").ABV,{DataView:n("LrcN").DataView})},"2JMG":function(t,e,n){var r=n("VU/8")(n("G3lE"),null,!1,null,null,null);t.exports=r.exports},"2VSL":function(t,e,n){var r=n("BbyF"),i=n("xAdt"),o=n("/whu");t.exports=function(t,e,n,a){var s=String(o(t)),c=s.length,u=void 0===n?" ":String(n),l=r(e);if(l<=c||""==u)return s;var f=l-c,p=i.call(u,Math.ceil(f/u.length));return p.length>f&&(p=p.slice(0,f)),a?p+s:s+p}},"2p1q":function(t,e,n){var r=n("lDLk"),i=n("fU25");t.exports=n("bUqO")?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},"31/P":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.default={name:"tree-view",inheritAttrs:!1,props:{inputType:String,nameField:String,idField:String,captionField:String,childrenField:String,valueField:String,items:{type:[Array,String,Object],required:!1,default:null},value:{type:Array,required:!1,default:null},behavior:{type:String,required:!1,default:"reactive"},savedValues:{type:Array,required:!1,default:null}},created:function(){-1!==this.savedValues.indexOf(this.items[this.valueField])&&this.value.push(this.items)},computed:{caption:function(){return this.items[this.captionField]},allChildren:function(){var t=this,e=[];return function n(i){if(i[t.childrenField]&&t.getLength(i[t.childrenField])>0)if("object"==r(i[t.childrenField]))for(var o in i[t.childrenField])n(i[t.childrenField][o]);else i[t.childrenField].forEach(function(t){return n(t)});else e.push(i)}(this.items),e},hasChildren:function(){return!!this.items[this.childrenField]&&this.getLength(this.items[this.childrenField])>0},hasSelection:function(){return!!this.value&&this.value.length>0},isAllChildrenSelected:function(){var t=this;return this.hasChildren&&this.hasSelection&&this.allChildren.every(function(e){return t.value.some(function(n){return n[t.idField]===e[t.idField]})})},isSomeChildrenSelected:function(){var t=this;return this.hasChildren&&this.hasSelection&&this.allChildren.some(function(e){return t.value.some(function(n){return n[t.idField]===e[t.idField]})})}},methods:{getLength:function(t){if("object"==(void 0===t?"undefined":r(t))){var e=0;for(var n in t)e++;return e}return t.length},generateRoot:function(){var t=this;return"checkbox"==this.inputType?"reactive"==this.behavior?this.$createElement("tree-checkbox",{props:{id:this.items[this.idField],label:this.caption,nameField:this.nameField,modelValue:this.items[this.valueField],inputValue:this.hasChildren?this.isSomeChildrenSelected:this.value,value:this.hasChildren?this.isAllChildrenSelected:this.items},on:{change:function(e){t.hasChildren?(t.isAllChildrenSelected?t.allChildren.forEach(function(e){var n=t.value.indexOf(e);t.value.splice(n,1)}):t.allChildren.forEach(function(e){var n=!1;t.value.forEach(function(t){t.key==e.key&&(n=!0)}),n||t.value.push(e)}),t.$emit("input",t.value)):t.$emit("input",e)}}}):this.$createElement("tree-checkbox",{props:{id:this.items[this.idField],label:this.caption,nameField:this.nameField,modelValue:this.items[this.valueField],inputValue:this.value,value:this.items}}):"radio"==this.inputType?this.$createElement("tree-radio",{props:{id:this.items[this.idField],label:this.caption,nameField:this.nameField,modelValue:this.items[this.valueField],value:this.savedValues}}):void 0},generateChild:function(t){var e=this;return this.$createElement("tree-item",{on:{input:function(t){e.$emit("input",t)}},props:{items:t,value:this.value,savedValues:this.savedValues,nameField:this.nameField,inputType:this.inputType,captionField:this.captionField,childrenField:this.childrenField,valueField:this.valueField,idField:this.idField,behavior:this.behavior}})},generateChildren:function(){var t=this,e=[];if(this.items[this.childrenField])if("object"==r(this.items[this.childrenField]))for(var n in this.items[this.childrenField])e.push(this.generateChild(this.items[this.childrenField][n]));else this.items[this.childrenField].forEach(function(n){e.push(t.generateChild(n))});return e},generateIcon:function(){var t=this;return this.$createElement("i",{class:["expand-icon"],on:{click:function(e){t.$el.classList.toggle("active")}}})},generateFolderIcon:function(){return this.$createElement("i",{class:["icon","folder-icon"]})}},render:function(t){return t("div",{class:["tree-item","active",this.hasChildren?"has-children":""]},[this.generateIcon(),this.generateFolderIcon(),this.generateRoot()].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1&&s.call(r[0],n,function(){for(i=1;i=u?t?"":void 0:(o=s.charCodeAt(c))<55296||o>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):o:t?s.slice(c,c+2):a-56320+(o-55296<<10)+65536}}},"4IZP":function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},"4Q0w":function(t,e,n){var r=n("kkCw")("toPrimitive"),i=Date.prototype;r in i||n("2p1q")(i,r,n("jB26"))},"4RlI":function(t,e,n){"use strict";n("y325")("blink",function(t){return function(){return t(this,"blink","","")}})},"4ZU1":function(t,e,n){var r=n("lDLk"),i=n("Ds5P"),o=n("DIVP"),a=n("s4j0");i(i.S+i.F*n("zgIt")(function(){Reflect.defineProperty(r.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){o(t),e=a(e,!0),o(n);try{return r.f(t,e,n),!0}catch(t){return!1}}})},"52Wt":function(t,e,n){n("77Ug")("Int8",1,function(t){return function(e,n,r){return t(this,e,n,r)}})},"5iw+":function(t,e,n){"use strict";n("y325")("strike",function(t){return function(){return t(this,"strike","","")}})},"6wXy":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{title:String,id:String,className:String,active:Boolean},inject:["$validator"],data:function(){return{isActive:!1,imageData:"",hasError:!1}},mounted:function(){var t=this;eventBus.$on("onFormError",function(){$(t.$el).find(".control-group").each(function(e,n){$(n).hasClass("has-error")&&(t.hasError=!0)})}),this.isActive=this.active},methods:{toggleAccordian:function(){this.isActive=!this.isActive}},computed:{iconClass:function(){return{"accordian-down-icon":!this.isActive,"accordian-up-icon":this.isActive}}}}},"73qY":function(t,e,n){t.exports=n("VWgF")("native-function-to-string",Function.toString)},"77Pl":function(t,e,n){var r=n("EqjI");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},"77Ug":function(t,e,n){"use strict";if(n("bUqO")){var r=n("V3l/"),i=n("OzIq"),o=n("zgIt"),a=n("Ds5P"),s=n("07k+"),c=n("LrcN"),u=n("rFzY"),l=n("9GpA"),f=n("fU25"),p=n("2p1q"),d=n("A16L"),h=n("oeih"),v=n("BbyF"),g=n("8D8H"),m=n("zo/l"),y=n("s4j0"),b=n("WBcL"),w=n("wC1N"),x=n("UKM+"),_=n("FryR"),k=n("9vb1"),S=n("7ylX"),D=n("KOrd"),C=n("WcO1").f,O=n("SHe9"),E=n("ulTY"),M=n("kkCw"),P=n("LhTa"),F=n("ot5s"),I=n("7O1s"),T=n("WgSQ"),A=n("bN1p"),L=n("qkyc"),j=n("CEne"),N=n("zCYm"),R=n("DPsE"),V=n("lDLk"),z=n("x9zv"),U=V.f,B=z.f,q=i.RangeError,Y=i.TypeError,W=i.Uint8Array,H=Array.prototype,$=c.ArrayBuffer,G=c.DataView,K=P(0),X=P(2),J=P(3),Z=P(4),Q=P(5),tt=P(6),et=F(!0),nt=F(!1),rt=T.values,it=T.keys,ot=T.entries,at=H.lastIndexOf,st=H.reduce,ct=H.reduceRight,ut=H.join,lt=H.sort,ft=H.slice,pt=H.toString,dt=H.toLocaleString,ht=M("iterator"),vt=M("toStringTag"),gt=E("typed_constructor"),mt=E("def_constructor"),yt=s.CONSTR,bt=s.TYPED,wt=s.VIEW,xt=P(1,function(t,e){return Ct(I(t,t[mt]),e)}),_t=o(function(){return 1===new W(new Uint16Array([1]).buffer)[0]}),kt=!!W&&!!W.prototype.set&&o(function(){new W(1).set({})}),St=function(t,e){var n=h(t);if(n<0||n%e)throw q("Wrong offset!");return n},Dt=function(t){if(x(t)&&bt in t)return t;throw Y(t+" is not a typed array!")},Ct=function(t,e){if(!(x(t)&> in t))throw Y("It is not a typed array constructor!");return new t(e)},Ot=function(t,e){return Et(I(t,t[mt]),e)},Et=function(t,e){for(var n=0,r=e.length,i=Ct(t,r);r>n;)i[n]=e[n++];return i},Mt=function(t,e,n){U(t,e,{get:function(){return this._d[n]}})},Pt=function(t){var e,n,r,i,o,a,s=_(t),c=arguments.length,l=c>1?arguments[1]:void 0,f=void 0!==l,p=O(s);if(void 0!=p&&!k(p)){for(a=p.call(s),r=[],e=0;!(o=a.next()).done;e++)r.push(o.value);s=r}for(f&&c>2&&(l=u(l,arguments[2],2)),e=0,n=v(s.length),i=Ct(this,n);n>e;e++)i[e]=f?l(s[e],e):s[e];return i},Ft=function(){for(var t=0,e=arguments.length,n=Ct(this,e);e>t;)n[t]=arguments[t++];return n},It=!!W&&o(function(){dt.call(new W(1))}),Tt=function(){return dt.apply(It?ft.call(Dt(this)):Dt(this),arguments)},At={copyWithin:function(t,e){return R.call(Dt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return Z(Dt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return N.apply(Dt(this),arguments)},filter:function(t){return Ot(this,X(Dt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(Dt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Dt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){K(Dt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return nt(Dt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return et(Dt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ut.apply(Dt(this),arguments)},lastIndexOf:function(t){return at.apply(Dt(this),arguments)},map:function(t){return xt(Dt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return st.apply(Dt(this),arguments)},reduceRight:function(t){return ct.apply(Dt(this),arguments)},reverse:function(){for(var t,e=Dt(this).length,n=Math.floor(e/2),r=0;r1?arguments[1]:void 0)},sort:function(t){return lt.call(Dt(this),t)},subarray:function(t,e){var n=Dt(this),r=n.length,i=m(t,r);return new(I(n,n[mt]))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,v((void 0===e?r:m(e,r))-i))}},Lt=function(t,e){return Ot(this,ft.call(Dt(this),t,e))},jt=function(t){Dt(this);var e=St(arguments[1],1),n=this.length,r=_(t),i=v(r.length),o=0;if(i+e>n)throw q("Wrong length!");for(;o255?255:255&r),i.v[d](n*e+i.o,r,_t)}(this,n,t)},enumerable:!0})};b?(h=n(function(t,n,r,i){l(t,h,u,"_d");var o,a,s,c,f=0,d=0;if(x(n)){if(!(n instanceof $||"ArrayBuffer"==(c=w(n))||"SharedArrayBuffer"==c))return bt in n?Et(h,n):Pt.call(h,n);o=n,d=St(r,e);var m=n.byteLength;if(void 0===i){if(m%e)throw q("Wrong length!");if((a=m-d)<0)throw q("Wrong length!")}else if((a=v(i)*e)+d>m)throw q("Wrong length!");s=a/e}else s=g(n),o=new $(a=s*e);for(p(t,"_d",{b:o,o:d,l:a,e:s,v:new G(o)});f0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},"7KvD":function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"7O1s":function(t,e,n){var r=n("DIVP"),i=n("XSOZ"),o=n("kkCw")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||void 0==(n=r(a)[o])?e:i(n)}},"7aQn":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"tree-view",inheritAttrs:!1,props:{inputType:{type:String,required:!1,default:"checkbox"},nameField:{type:String,required:!1,default:"permissions"},idField:{type:String,required:!1,default:"id"},valueField:{type:String,required:!1,default:"value"},captionField:{type:String,required:!1,default:"name"},childrenField:{type:String,required:!1,default:"children"},items:{type:[Array,String,Object],required:!1,default:function(){return[]}},behavior:{type:String,required:!1,default:"reactive"},value:{type:[Array,String,Object],required:!1,default:function(){return[]}}},data:function(){return{finalValues:[]}},computed:{savedValues:function(){return this.value?"radio"==this.inputType?[this.value]:"string"==typeof this.value?JSON.parse(this.value):this.value:[]}},methods:{generateChildren:function(){var t=[],e="string"==typeof this.items?JSON.parse(this.items):this.items;for(var n in e)t.push(this.generateTreeItem(e[n]));return t},generateTreeItem:function(t){var e=this;return this.$createElement("tree-item",{props:{items:t,value:this.finalValues,savedValues:this.savedValues,nameField:this.nameField,inputType:this.inputType,captionField:this.captionField,childrenField:this.childrenField,valueField:this.valueField,idField:this.idField,behavior:this.behavior},on:{input:function(t){e.finalValues=t}}})}},render:function(t){return t("div",{class:["tree-container"]},[this.generateChildren()])}}},"7gX0":function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},"7ylX":function(t,e,n){var r=n("DIVP"),i=n("twxM"),o=n("QKXm"),a=n("mZON")("IE_PROTO"),s=function(){},c=function(){var t,e=n("jhxf")("iframe"),r=o.length;for(e.style.display="none",n("d075").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("