Compare commits
3 Commits
master
...
master-git
| Author | SHA1 | Date |
|---|---|---|
|
|
fa79136adc | |
|
|
1713d0712c | |
|
|
4f1beb97d9 |
|
|
@ -20,7 +20,7 @@ class DesignController extends Controller
|
|||
$data = [
|
||||
'editors' => [
|
||||
'editor-slide_show', 'editor-image401', 'editor-tab_product', 'editor-product', 'editor-image100',
|
||||
'editor-brand', 'editor-icons', 'editor-rich_text', 'editor-image200', 'editor-image300',
|
||||
'editor-brand', 'editor-icons', 'editor-rich_text', 'editor-image200', 'editor-image300','editor-slide_show_video',
|
||||
],
|
||||
'design_settings' => system_setting('base.design_setting'),
|
||||
];
|
||||
|
|
|
|||
|
|
@ -118,6 +118,22 @@ class ProductController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
public function copy(ProductRequest $request, Product $product)
|
||||
{
|
||||
try {
|
||||
$product = (new ProductService)->copy($product);
|
||||
|
||||
$data = [
|
||||
'product' => $product,
|
||||
];
|
||||
hook_action('admin.product.copy.after', $data);
|
||||
|
||||
return json_success(trans('common.copy_success'), []);
|
||||
} catch (\Exception $e) {
|
||||
return json_encode($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(Request $request, Product $product)
|
||||
{
|
||||
$product->delete();
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ use Beike\Admin\View\Components\Form\InputLocale;
|
|||
use Beike\Admin\View\Components\Form\RichText;
|
||||
use Beike\Admin\View\Components\Form\Select;
|
||||
use Beike\Admin\View\Components\Form\SwitchRadio;
|
||||
use Beike\Admin\View\Components\Form\SwitchRadioStatus;
|
||||
use Beike\Admin\View\Components\Form\Textarea;
|
||||
use Beike\Admin\View\Components\Header;
|
||||
use Beike\Admin\View\Components\NoData;
|
||||
|
|
@ -139,6 +140,7 @@ class AdminServiceProvider extends ServiceProvider
|
|||
'alert' => Alert::class,
|
||||
'form-input-locale' => InputLocale::class,
|
||||
'form-switch' => SwitchRadio::class,
|
||||
'form-switch-status' => SwitchRadioStatus::class,
|
||||
'form-input' => Input::class,
|
||||
'form-select' => Select::class,
|
||||
'form-image' => Image::class,
|
||||
|
|
|
|||
|
|
@ -214,6 +214,7 @@ Route::prefix($adminName)
|
|||
Route::middleware('can:products_index')->get('products', [Controllers\ProductController::class, 'index'])->name('products.index');
|
||||
Route::middleware('can:products_create')->get('products/create', [Controllers\ProductController::class, 'create'])->name('products.create');
|
||||
Route::middleware('can:products_create')->post('products', [Controllers\ProductController::class, 'store'])->name('products.store');
|
||||
Route::middleware('can:products_copy')->post('products/{product}/copy', [Controllers\ProductController::class, 'copy'])->name('products.copy');
|
||||
Route::middleware('can:products_show')->get('products/{product}/edit', [Controllers\ProductController::class, 'edit'])->name('products.edit');
|
||||
Route::middleware('can:products_update')->put('products/{product}', [Controllers\ProductController::class, 'update'])->name('products.update');
|
||||
Route::middleware('can:products_delete')->delete('products/{product}', [Controllers\ProductController::class, 'destroy'])->name('products.destroy');
|
||||
|
|
|
|||
|
|
@ -19,6 +19,28 @@ class ProductService
|
|||
return $this->createOrUpdate($product, $data);
|
||||
}
|
||||
|
||||
public function copy(Product $oldProduct): Product
|
||||
{
|
||||
$product = new Product;
|
||||
$data = $oldProduct->toArray();
|
||||
$data['id'] = 0;
|
||||
$data['created_at'] = now();
|
||||
$data['variables'] = json_encode($data['variables'],JSON_UNESCAPED_UNICODE);
|
||||
$data['descriptions'] = $oldProduct->descriptions()->get()->toArray();
|
||||
foreach ($data['descriptions'] as $locale => $description) {
|
||||
$data['descriptions'][$description['locale']] = $description;
|
||||
unset($data['descriptions'][$locale]);
|
||||
}
|
||||
$data['attributes'] = $oldProduct->attributes()->get()->toArray();
|
||||
$data['skus'] = $oldProduct->skus()->get()->toArray();
|
||||
$data['numPrices'] = $oldProduct->numPrices()->get()->toArray();
|
||||
$data['categories'] = $oldProduct->categories()->get()->toArray();
|
||||
$data['relations'] = $oldProduct->relations()->get()->toArray();
|
||||
$data['categories'] = array_column($data['categories'],'id');
|
||||
$data['relations'] = array_column($data['relations'],'id');
|
||||
return $this->createOrUpdate($product, $data);
|
||||
}
|
||||
|
||||
protected function createOrUpdate(Product $product, array $data): Product
|
||||
{
|
||||
$isUpdating = $product->id > 0;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace Beike\Admin\View\Components\Form;
|
||||
|
||||
use Illuminate\View\Component;
|
||||
|
||||
class SwitchRadioStatus extends Component
|
||||
{
|
||||
public string $name;
|
||||
|
||||
public string $value;
|
||||
|
||||
public string $title;
|
||||
|
||||
public function __construct(string $name, string $value, string $title)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->title = $title;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('admin::components.form.switch-radio-status');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
/**
|
||||
* Render.php
|
||||
*
|
||||
* @copyright 2022 beikeshop.com - All Rights Reserved
|
||||
* @link https://beikeshop.com
|
||||
* @author Edward Yang <yangjin@guangda.work>
|
||||
* @created 2022-07-08 17:09:15
|
||||
* @modified 2022-07-08 17:09:15
|
||||
*/
|
||||
|
||||
namespace Beike\Admin\View\DesignBuilders;
|
||||
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\View\Component;
|
||||
|
||||
class SlideShowVideo extends Component
|
||||
{
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*
|
||||
* @return View
|
||||
*/
|
||||
public function render(): View
|
||||
{
|
||||
$data['register'] = [
|
||||
'code' => 'slideshow_video',
|
||||
'sort' => 0,
|
||||
'name' => trans('admin/design_builder.module_slideshow_video'),
|
||||
'icon' => '',
|
||||
'style' => 'font-size: 40px;',
|
||||
];
|
||||
|
||||
return view('admin::pages.design.module.slideshow_video', $data);
|
||||
}
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ class Product extends Base
|
|||
use HasFactory;
|
||||
use SoftDeletes;
|
||||
|
||||
protected $fillable = ['images', 'video', 'position', 'brand_id', 'tax_class_id', 'weight', 'weight_class', 'active', 'variables', 'price_setting'];
|
||||
protected $fillable = ['images', 'video', 'position', 'brand_id', 'tax_class_id', 'weight', 'weight_class', 'active', 'variables', 'price_setting', 'length', 'width', 'height'];
|
||||
|
||||
protected $casts = [
|
||||
'active' => 'boolean',
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ class DesignService
|
|||
$content['module_code'] = $moduleCode;
|
||||
if ($moduleCode == 'slideshow') {
|
||||
return self::handleSlideShow($content);
|
||||
} elseif ($moduleCode == 'slideshow_video') {
|
||||
return self::handleSlideShow($content);
|
||||
} elseif (in_array($moduleCode, ['image401', 'image100', 'image200', 'image300'])) {
|
||||
return self::handleImage401($content);
|
||||
} elseif ($moduleCode == 'brand') {
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class CartController extends Controller
|
|||
$customer = current_customer();
|
||||
|
||||
$sku = ProductSku::query()
|
||||
->whereRelation('product', 'active', '=', true)
|
||||
// ->whereRelation('product', 'active', '=', true)
|
||||
->findOrFail($skuId);
|
||||
|
||||
$cart = CartService::add($sku, $quantity, $customer);
|
||||
|
|
|
|||
|
|
@ -57,7 +57,14 @@ class CheckoutController extends Controller
|
|||
public function confirm()
|
||||
{
|
||||
try {
|
||||
$data = (new CheckoutService)->confirm();
|
||||
$checkoutService = new CheckoutService;
|
||||
$selectedProducts = $checkoutService->selectedProducts->toArray();
|
||||
foreach($selectedProducts as $product){
|
||||
if($product['product']['active'] == FALSE){
|
||||
return json_fail(trans('common.product_active_false'));
|
||||
}
|
||||
}
|
||||
$data = $checkoutService->confirm();
|
||||
|
||||
return hook_filter('checkout.confirm.data', $data);
|
||||
} catch (\Exception $e) {
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class ProductSimple extends JsonResource
|
|||
}
|
||||
|
||||
$name = $this->description->name ?? '';
|
||||
$images = $this->images;
|
||||
$images = $this->images != NULL ? $this->images : [];
|
||||
|
||||
$data = [
|
||||
'id' => $this->id,
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1402,12 +1402,6 @@
|
|||
"fastq": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"@socket.io/component-emitter": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
|
||||
"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
|
||||
"dev": true
|
||||
},
|
||||
"@trysound/sax": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
|
||||
|
|
@ -1503,21 +1497,6 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/cookie": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
|
||||
"integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/cors": {
|
||||
"version": "2.8.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
|
||||
"integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/eslint": {
|
||||
"version": "8.40.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz",
|
||||
|
|
@ -2082,21 +2061,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"async": {
|
||||
"version": "2.6.4",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
|
||||
"integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.17.14"
|
||||
}
|
||||
},
|
||||
"async-each-series": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz",
|
||||
"integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==",
|
||||
"dev": true
|
||||
},
|
||||
"async-validator": {
|
||||
"version": "1.8.5",
|
||||
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
|
||||
|
|
@ -2211,12 +2175,6 @@
|
|||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"dev": true
|
||||
},
|
||||
"base64id": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
|
||||
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
|
||||
"dev": true
|
||||
},
|
||||
"batch": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
|
||||
|
|
@ -2329,12 +2287,6 @@
|
|||
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
|
||||
"dev": true
|
||||
},
|
||||
"bootstrap-5.1.3": {
|
||||
"version": "npm:bootstrap@5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
|
||||
"integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
|
||||
"dev": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
|
|
@ -2360,78 +2312,6 @@
|
|||
"integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
|
||||
"dev": true
|
||||
},
|
||||
"browser-sync": {
|
||||
"version": "2.29.3",
|
||||
"resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.3.tgz",
|
||||
"integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"browser-sync-client": "^2.29.3",
|
||||
"browser-sync-ui": "^2.29.3",
|
||||
"bs-recipes": "1.3.4",
|
||||
"chalk": "4.1.2",
|
||||
"chokidar": "^3.5.1",
|
||||
"connect": "3.6.6",
|
||||
"connect-history-api-fallback": "^1",
|
||||
"dev-ip": "^1.0.1",
|
||||
"easy-extender": "^2.3.4",
|
||||
"eazy-logger": "^4.0.1",
|
||||
"etag": "^1.8.1",
|
||||
"fresh": "^0.5.2",
|
||||
"fs-extra": "3.0.1",
|
||||
"http-proxy": "^1.18.1",
|
||||
"immutable": "^3",
|
||||
"localtunnel": "^2.0.1",
|
||||
"micromatch": "^4.0.2",
|
||||
"opn": "5.3.0",
|
||||
"portscanner": "2.2.0",
|
||||
"raw-body": "^2.3.2",
|
||||
"resp-modifier": "6.0.2",
|
||||
"rx": "4.1.0",
|
||||
"send": "0.16.2",
|
||||
"serve-index": "1.9.1",
|
||||
"serve-static": "1.13.2",
|
||||
"server-destroy": "1.0.1",
|
||||
"socket.io": "^4.4.1",
|
||||
"ua-parser-js": "^1.0.33",
|
||||
"yargs": "^17.3.1"
|
||||
}
|
||||
},
|
||||
"browser-sync-client": {
|
||||
"version": "2.29.3",
|
||||
"resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.3.tgz",
|
||||
"integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"etag": "1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"mitt": "^1.1.3"
|
||||
}
|
||||
},
|
||||
"browser-sync-ui": {
|
||||
"version": "2.29.3",
|
||||
"resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz",
|
||||
"integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"async-each-series": "0.1.1",
|
||||
"chalk": "4.1.2",
|
||||
"connect-history-api-fallback": "^1",
|
||||
"immutable": "^3",
|
||||
"server-destroy": "1.0.1",
|
||||
"socket.io-client": "^4.4.1",
|
||||
"stream-throttle": "^0.1.3"
|
||||
}
|
||||
},
|
||||
"browser-sync-webpack-plugin": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/browser-sync-webpack-plugin/-/browser-sync-webpack-plugin-2.3.0.tgz",
|
||||
"integrity": "sha512-MDvuRrTCtoL11dTdwMymo9CNJvYxJoW67gOO61cThfzHNX40S5WcBU+0bVQ86ll7r7aNpNgyzxF7RtnXMTDbyA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4"
|
||||
}
|
||||
},
|
||||
"browserify-aes": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
|
||||
|
|
@ -2530,12 +2410,6 @@
|
|||
"update-browserslist-db": "^1.0.10"
|
||||
}
|
||||
},
|
||||
"bs-recipes": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz",
|
||||
"integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==",
|
||||
"dev": true
|
||||
},
|
||||
"buffer": {
|
||||
"version": "4.9.2",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
|
||||
|
|
@ -2682,17 +2556,6 @@
|
|||
"string-width": "^4.2.0"
|
||||
}
|
||||
},
|
||||
"cliui": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
||||
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"string-width": "^4.2.0",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"wrap-ansi": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"clone-deep": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
|
||||
|
|
@ -2817,41 +2680,6 @@
|
|||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"connect": {
|
||||
"version": "3.6.6",
|
||||
"resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
|
||||
"integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"finalhandler": "1.1.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"utils-merge": "1.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"connect-history-api-fallback": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
|
||||
"integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
|
||||
"dev": true
|
||||
},
|
||||
"consola": {
|
||||
"version": "2.15.3",
|
||||
"resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
|
||||
|
|
@ -2891,12 +2719,6 @@
|
|||
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
|
||||
"dev": true
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
|
||||
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
|
||||
"dev": true
|
||||
},
|
||||
"cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
|
|
@ -2923,16 +2745,6 @@
|
|||
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
|
||||
"dev": true
|
||||
},
|
||||
"cors": {
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"object-assign": "^4",
|
||||
"vary": "^1"
|
||||
}
|
||||
},
|
||||
"cosmiconfig": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
|
||||
|
|
@ -3207,24 +3019,12 @@
|
|||
"minimalistic-assert": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"destroy": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
||||
"integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==",
|
||||
"dev": true
|
||||
},
|
||||
"detect-node": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
|
||||
"integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
|
||||
"dev": true
|
||||
},
|
||||
"dev-ip": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz",
|
||||
"integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==",
|
||||
"dev": true
|
||||
},
|
||||
"diffie-hellman": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
||||
|
|
@ -3333,24 +3133,6 @@
|
|||
"integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
|
||||
"dev": true
|
||||
},
|
||||
"easy-extender": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz",
|
||||
"integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.17.10"
|
||||
}
|
||||
},
|
||||
"eazy-logger": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz",
|
||||
"integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "4.1.2"
|
||||
}
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
|
|
@ -3417,43 +3199,6 @@
|
|||
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
|
||||
"dev": true
|
||||
},
|
||||
"engine.io": {
|
||||
"version": "6.4.2",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
|
||||
"integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/cookie": "^0.4.1",
|
||||
"@types/cors": "^2.8.12",
|
||||
"@types/node": ">=10.0.0",
|
||||
"accepts": "~1.3.4",
|
||||
"base64id": "2.0.0",
|
||||
"cookie": "~0.4.1",
|
||||
"cors": "~2.8.5",
|
||||
"debug": "~4.3.1",
|
||||
"engine.io-parser": "~5.0.3",
|
||||
"ws": "~8.11.0"
|
||||
}
|
||||
},
|
||||
"engine.io-client": {
|
||||
"version": "6.4.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz",
|
||||
"integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.1",
|
||||
"engine.io-parser": "~5.0.3",
|
||||
"ws": "~8.11.0",
|
||||
"xmlhttprequest-ssl": "~2.0.0"
|
||||
}
|
||||
},
|
||||
"engine.io-parser": {
|
||||
"version": "5.0.7",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz",
|
||||
"integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==",
|
||||
"dev": true
|
||||
},
|
||||
"enhanced-resolve": {
|
||||
"version": "5.14.1",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz",
|
||||
|
|
@ -3831,38 +3576,6 @@
|
|||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
|
||||
"integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.1",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"statuses": "~1.3.1",
|
||||
"unpipe": "~1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"find-cache-dir": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
|
||||
|
|
@ -3908,17 +3621,6 @@
|
|||
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
|
||||
"dev": true
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
|
||||
"integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^3.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"fs-monkey": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
|
||||
|
|
@ -4386,12 +4088,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"immutable": {
|
||||
"version": "3.8.2",
|
||||
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
|
||||
"integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==",
|
||||
"dev": true
|
||||
},
|
||||
"import-fresh": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||
|
|
@ -4503,15 +4199,6 @@
|
|||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
},
|
||||
"is-number-like": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
|
||||
"integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash.isfinite": "^3.3.2"
|
||||
}
|
||||
},
|
||||
"is-plain-obj": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
|
||||
|
|
@ -4533,12 +4220,6 @@
|
|||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
||||
"dev": true
|
||||
},
|
||||
"is-wsl": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
||||
"integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
|
||||
"dev": true
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
|
|
@ -4609,15 +4290,6 @@
|
|||
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||
"dev": true
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
|
||||
"integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"junk": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
|
||||
|
|
@ -4745,12 +4417,6 @@
|
|||
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
|
||||
"dev": true
|
||||
},
|
||||
"limiter": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
|
||||
"integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==",
|
||||
"dev": true
|
||||
},
|
||||
"lines-and-columns": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
||||
|
|
@ -4774,44 +4440,6 @@
|
|||
"json5": "^2.1.2"
|
||||
}
|
||||
},
|
||||
"localtunnel": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz",
|
||||
"integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"axios": "0.21.4",
|
||||
"debug": "4.3.2",
|
||||
"openurl": "1.1.1",
|
||||
"yargs": "17.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
|
||||
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
},
|
||||
"yargs": {
|
||||
"version": "17.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz",
|
||||
"integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^7.0.2",
|
||||
"escalade": "^3.1.1",
|
||||
"get-caller-file": "^2.0.5",
|
||||
"require-directory": "^2.1.1",
|
||||
"string-width": "^4.2.0",
|
||||
"y18n": "^5.0.5",
|
||||
"yargs-parser": "^20.2.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
|
|
@ -4833,12 +4461,6 @@
|
|||
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.isfinite": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
|
||||
"integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.memoize": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||
|
|
@ -4981,12 +4603,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
|
||||
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
|
||||
"dev": true
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
|
|
@ -5059,12 +4675,6 @@
|
|||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"dev": true
|
||||
},
|
||||
"mitt": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz",
|
||||
"integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
|
|
@ -5244,15 +4854,6 @@
|
|||
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
|
||||
"dev": true
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"on-headers": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
|
||||
|
|
@ -5299,21 +4900,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"openurl": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz",
|
||||
"integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==",
|
||||
"dev": true
|
||||
},
|
||||
"opn": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
|
||||
"integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-wsl": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"os-browserify": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
|
||||
|
|
@ -5502,16 +5088,6 @@
|
|||
"find-up": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"portscanner": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz",
|
||||
"integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"async": "^2.6.0",
|
||||
"is-number-like": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.23",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
|
||||
|
|
@ -5957,18 +5533,6 @@
|
|||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||
"dev": true
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
|
||||
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bytes": "3.1.2",
|
||||
"http-errors": "2.0.0",
|
||||
"iconv-lite": "0.4.24",
|
||||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
|
||||
|
|
@ -6186,33 +5750,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"resp-modifier": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz",
|
||||
"integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^2.2.0",
|
||||
"minimatch": "^3.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"retry": {
|
||||
"version": "0.13.1",
|
||||
"resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
|
||||
|
|
@ -6253,12 +5790,6 @@
|
|||
"queue-microtask": "^1.2.2"
|
||||
}
|
||||
},
|
||||
"rx": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
|
||||
"integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==",
|
||||
"dev": true
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
|
|
@ -6352,80 +5883,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.2",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
|
||||
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"destroy": "~1.0.4",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "~1.6.2",
|
||||
"mime": "1.4.1",
|
||||
"ms": "2.0.0",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.0",
|
||||
"statuses": "~1.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
|
||||
"dev": true
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||
"integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
|
||||
"dev": true
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"serialize-javascript": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
|
||||
|
|
@ -6503,24 +5960,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
|
||||
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.2",
|
||||
"send": "0.16.2"
|
||||
}
|
||||
},
|
||||
"server-destroy": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
|
||||
"integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==",
|
||||
"dev": true
|
||||
},
|
||||
"setimmediate": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
|
||||
|
|
@ -6602,51 +6041,6 @@
|
|||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"socket.io": {
|
||||
"version": "4.6.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz",
|
||||
"integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"accepts": "~1.3.4",
|
||||
"base64id": "~2.0.0",
|
||||
"debug": "~4.3.2",
|
||||
"engine.io": "~6.4.1",
|
||||
"socket.io-adapter": "~2.5.2",
|
||||
"socket.io-parser": "~4.2.1"
|
||||
}
|
||||
},
|
||||
"socket.io-adapter": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
|
||||
"integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ws": "~8.11.0"
|
||||
}
|
||||
},
|
||||
"socket.io-client": {
|
||||
"version": "4.6.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz",
|
||||
"integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.2",
|
||||
"engine.io-client": "~6.4.0",
|
||||
"socket.io-parser": "~4.2.1"
|
||||
}
|
||||
},
|
||||
"socket.io-parser": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz",
|
||||
"integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.1"
|
||||
}
|
||||
},
|
||||
"sockjs": {
|
||||
"version": "0.3.24",
|
||||
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
|
||||
|
|
@ -6732,12 +6126,6 @@
|
|||
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
|
||||
"dev": true
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
|
||||
"integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==",
|
||||
"dev": true
|
||||
},
|
||||
"std-env": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz",
|
||||
|
|
@ -6767,16 +6155,6 @@
|
|||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"stream-throttle": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz",
|
||||
"integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "^2.2.0",
|
||||
"limiter": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
|
|
@ -6996,12 +6374,6 @@
|
|||
"mime-types": "~2.1.24"
|
||||
}
|
||||
},
|
||||
"ua-parser-js": {
|
||||
"version": "1.0.35",
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz",
|
||||
"integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==",
|
||||
"dev": true
|
||||
},
|
||||
"unicode-canonical-property-names-ecmascript": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
|
||||
|
|
@ -7030,12 +6402,6 @@
|
|||
"integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
|
||||
"dev": true
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||
"dev": true
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
|
|
@ -7492,18 +6858,6 @@
|
|||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"dev": true
|
||||
},
|
||||
"ws": {
|
||||
"version": "8.11.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
|
||||
"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
|
||||
"dev": true
|
||||
},
|
||||
"xmlhttprequest-ssl": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
|
||||
"integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
|
||||
"dev": true
|
||||
},
|
||||
"xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
|
|
@ -7561,12 +6915,6 @@
|
|||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "20.2.9",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
|
||||
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class MenusController extends Controller
|
|||
{
|
||||
$products = ProductRepo::getBuilder(
|
||||
[
|
||||
'active' => 1,
|
||||
// 'active' => 1,
|
||||
'sort' => 'created_at',
|
||||
'order' => 'desc',
|
||||
])
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
<x-admin::form.row :title="$title">
|
||||
<div class="mb-1 mt-2">
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" id="{{ $name }}-1" type="radio" name="{{ $name }}" id="{{ $name }}-1" value="1" {{ $value ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="{{ $name }}-1">{{ __('common.enable_status') }}</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" id="{{ $name }}-0" type="radio" name="{{ $name }}" id="{{ $name }}-0" value="0" {{ !$value ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="{{ $name }}-0">{{ __('common.disable_status') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
{{ $slot }}
|
||||
</x-admin::form.row>
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
<template id="module-editor-slideshow-video-template">
|
||||
<div>
|
||||
<div class="module-editor-row">{{ __('admin/builder.text_set_up') }}</div>
|
||||
<div class="module-edit-group">
|
||||
<div class="module-edit-title">{{ __('admin/builder.modules_full_screen') }}</div>
|
||||
<el-switch v-model="form.full"></el-switch>
|
||||
</div>
|
||||
|
||||
<div class="module-editor-row">{{ __('admin/builder.modules_content') }}</div>
|
||||
<div class="module-edit-group">
|
||||
<div class="module-edit-title">{{ __('admin/builder.modules_select_video') }}</div>
|
||||
<draggable
|
||||
ghost-class="dragabble-ghost"
|
||||
:list="form.images"
|
||||
:options="{animation: 330, handle: '.icon-rank'}"
|
||||
>
|
||||
<div class="pb-images-selector" v-for="(item, index) in form.images" :key="index">
|
||||
<div class="selector-head" @click="itemShow(index)">
|
||||
<div class="left">
|
||||
<el-tooltip class="icon-rank" effect="dark" content="{{ __('admin/builder.text_drag_sort') }}" placement="left">
|
||||
<i class="el-icon-rank"></i>
|
||||
</el-tooltip>
|
||||
|
||||
<img :src="thumbnail(item.image['{{ locale() }}'], 40, 40)" class="img-responsive">
|
||||
</div>
|
||||
|
||||
<div class="right">
|
||||
<el-tooltip class="" effect="dark" content="{{ __('admin/builder.text_delete') }}" placement="left">
|
||||
<div class="remove-item" @click.stop="removeImage(index)"><i class="el-icon-delete"></i></div>
|
||||
</el-tooltip>
|
||||
<i :class="'el-icon-arrow-'+(item.show ? 'up' : 'down')"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="'pb-images-list ' + (item.show ? 'active' : '')">
|
||||
<div class="pb-images-top">
|
||||
<pb-image-selector v-model="item.image"></pb-image-selector>
|
||||
<div class="tag">{{ __('admin/builder.text_suggested_size') }} 1920 x 600</div>
|
||||
</div>
|
||||
<link-selector v-model="item.link"></link-selector>
|
||||
</div>
|
||||
</div>
|
||||
</draggable>
|
||||
|
||||
<div class="add-item">
|
||||
<el-button type="primary" size="small" @click="addImage" icon="el-icon-circle-plus-outline">{{ __('admin/builder.text_add_video') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
Vue.component('module-editor-slideshow-video', {
|
||||
template: '#module-editor-slideshow-video-template',
|
||||
|
||||
props: ['module'],
|
||||
|
||||
data: function () {
|
||||
return {
|
||||
form: null
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
form: {
|
||||
handler: function (val) {
|
||||
this.$emit('on-changed', val);
|
||||
},
|
||||
deep: true,
|
||||
}
|
||||
},
|
||||
|
||||
created: function () {
|
||||
this.form = JSON.parse(JSON.stringify(this.module));
|
||||
},
|
||||
|
||||
methods: {
|
||||
removeImage(index) {
|
||||
this.form.images.splice(index, 1);
|
||||
},
|
||||
|
||||
itemShow(index) {
|
||||
this.form.images.find((e, key) => {if (index != key) return e.show = false});
|
||||
this.form.images[index].show = !this.form.images[index].show;
|
||||
},
|
||||
|
||||
addImage() {
|
||||
this.form.images.find(e => e.show = false);
|
||||
this.form.images.push({image: languagesFill('catalog/demo/banner/banner-4-en.jpg'), show: true, link: {type: 'product', value:''}});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
@push('footer-script')
|
||||
<script>
|
||||
register = @json($register);
|
||||
|
||||
// 定义模块的配置项
|
||||
register.make = {
|
||||
style: {
|
||||
background_color: ''
|
||||
},
|
||||
full: true,
|
||||
floor: languagesFill(''),
|
||||
images: [
|
||||
// {
|
||||
// image: languagesFill('catalog/demo/banner/banner-4-en.jpg'),
|
||||
// show: true,
|
||||
// link: {
|
||||
// type: 'product',
|
||||
// value:''
|
||||
// }
|
||||
// },
|
||||
{
|
||||
image: languagesFill('catalog/demo/banner/banner-3-en.jpg'),
|
||||
show: false,
|
||||
link: {
|
||||
type: 'product',
|
||||
value:''
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
app.source.modules.push(register)
|
||||
</script>
|
||||
@endpush
|
||||
|
|
@ -94,6 +94,14 @@
|
|||
|
||||
<x-admin-form-input name="position" :title="__('common.sort_order')" :value="old('position', $product->position ?? '0')" />
|
||||
|
||||
<x-admin::form.row :title="__('admin/product.length_width_height')">
|
||||
<div class="d-flex wp-400">
|
||||
<input type="text" name="length" placeholder="" value="{{ old('weight', $product->length ?? '') }}" class="form-control" style="flex: 0 0 95px" /><div style="width: 40px;line-height: 34px;text-align:center">CM X</div>
|
||||
<input type="text" name="width" placeholder="" value="{{ old('weight', $product->width ?? '') }}" class="form-control" style="flex: 0 0 95px" /><div style="width: 40px;line-height: 34px;text-align:center">CM X</div>
|
||||
<input type="text" name="height" placeholder="" value="{{ old('weight', $product->height ?? '') }}" class="form-control" style="flex: 0 0 95px" /><div style="width: 30px;line-height: 34px;text-align:center">CM</div>
|
||||
</div>
|
||||
</x-admin::form.row>
|
||||
|
||||
<x-admin::form.row :title="__('admin/product.weight_text')">
|
||||
<div class="d-flex wp-400">
|
||||
<input type="text" name="weight" placeholder="{{ __('admin/product.weight_text') }}" value="{{ old('weight', $product->weight ?? '') }}" class="form-control" style="flex: 0 0 260px" />
|
||||
|
|
@ -128,7 +136,7 @@
|
|||
</div>
|
||||
</x-admin::form.row>
|
||||
|
||||
<x-admin-form-switch name="active" :title="__('common.status')" :value="old('active', $product->active ?? 1)" />
|
||||
<x-admin-form-switch-status name="active" :title="__('common.status')" :value="old('active', $product->active ?? 1)" />
|
||||
|
||||
@hook('admin.product.edit.extra')
|
||||
|
||||
|
|
|
|||
|
|
@ -135,15 +135,19 @@
|
|||
<td>{{ $product['position'] }}</td>
|
||||
@if ($type != 'trashed')
|
||||
<td>
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input cursor-pointer" type="checkbox" role="switch" data-active="{{ $product['active'] ? true : false }}" data-id="{{ $product['id'] }}" @change="turnOnOff($event)" {{ $product['active'] ? 'checked' : '' }}>
|
||||
</div>
|
||||
{{-- <div class="form-check form-switch">--}}
|
||||
{{-- <input class="form-check-input cursor-pointer" type="checkbox" role="switch" data-active="{{ $product['active'] ? true : false }}" data-id="{{ $product['id'] }}" @change="turnOnOff($event)" {{ $product['active'] ? 'checked' : '' }}>--}}
|
||||
{{-- </div>--}}
|
||||
<span class="{{ $product['active'] ? 'text-success' : 'text-secondary' }}">
|
||||
{{ $product['active'] ? __('common.enable_status') : __('common.disable_status') }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
@hook('admin.product.list.column_value')
|
||||
<td class="text-end text-nowrap">
|
||||
@if ($product['deleted_at'] == '')
|
||||
<a href="{{ admin_route('products.edit', [$product['id']]) }}" class="btn btn-outline-secondary btn-sm">{{ __('common.edit') }}</a>
|
||||
<a href="javascript:void(0)" class="btn btn-outline-secondary btn-sm" @click.prevent="copyProduct({{ $loop->index }})">{{ __('common.copy') }}</a>
|
||||
<a href="javascript:void(0)" class="btn btn-outline-danger btn-sm" @click.prevent="deleteProduct({{ $loop->index }})">{{ __('common.delete') }}</a>
|
||||
@hook('admin.product.list.action')
|
||||
@else
|
||||
|
|
@ -255,6 +259,18 @@
|
|||
location = bk.objectToUrlParams(this.filter, this.url)
|
||||
},
|
||||
|
||||
copyProduct(index) {
|
||||
const id = this.productIds[index];
|
||||
|
||||
this.$confirm('{{ __('common.confirm_copy') }}', '{{ __('common.text_hint') }}', {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
$http.post('products/' + id + '/copy').then((res) => {
|
||||
this.$message.success(res.message);
|
||||
location.reload();
|
||||
})
|
||||
}).catch(()=>{});
|
||||
},
|
||||
deleteProduct(index) {
|
||||
const id = this.productIds[index];
|
||||
|
||||
|
|
@ -265,7 +281,7 @@
|
|||
this.$message.success(res.message);
|
||||
location.reload();
|
||||
})
|
||||
}).catch(()=>{});;
|
||||
}).catch(()=>{});
|
||||
},
|
||||
|
||||
restoreProduct(index) {
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ return [
|
|||
'text_suggested_size' => 'Suggested size (width x height):',
|
||||
'text_word' => 'Text',
|
||||
'text_add_pictures' => 'Add pictures',
|
||||
'text_add_video' => 'Add video',
|
||||
'text_refresh_cookie' => 'Refresh Cookie',
|
||||
'text_popup_hint' => 'Note: When the user clicks close, it will no longer be displayed until the browser is closed and reopened. For local testing, click "Refresh Cookie", then refresh the browser, and the pop-up window can be launched again. ',
|
||||
'text_cookie_refresh_success' => 'Cookie refresh successfully, refresh the browser to see the content of the pop-up window. ',
|
||||
|
|
@ -197,6 +198,7 @@ return [
|
|||
'modules_content' => 'Content',
|
||||
'modules_edit_content' => 'Edit content',
|
||||
'modules_select_image' => 'Select image',
|
||||
'modules_select_video' => 'Select video',
|
||||
'modules_quantity_line' => 'Display several in one line',
|
||||
'modules_please_choose' => 'Please choose',
|
||||
'modules_choose' => 'Choose',
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ return [
|
|||
'module_banner' => 'Banner',
|
||||
'module_four_image_pro' => 'For Image PRO',
|
||||
'module_slideshow' => 'Slideshow',
|
||||
'module_slideshow_video'=> 'SlideshowVideo',
|
||||
'module_tab_products' => 'Tab Products',
|
||||
'module_product' => 'Products',
|
||||
'module_icons' => 'Icons',
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ return [
|
|||
'default_main_product' => 'Default main product',
|
||||
'modify_order' => 'Double-click to modify, drag to adjust the order',
|
||||
'weight_text' => 'weight',
|
||||
'length_width_height' => 'Length, width and height',
|
||||
'weight_class' => 'weight unit',
|
||||
|
||||
'confirm_batch_product' => 'Are you sure you want to delete the selected products in batches? ',
|
||||
|
|
|
|||
|
|
@ -22,12 +22,15 @@ return [
|
|||
'deleted_success' => 'Deleted Successfully!',
|
||||
'restored_success' => 'Restore Successfully!',
|
||||
'updated_success' => 'Updated Successfully!',
|
||||
'copy_success' => 'Copy Successfully!',
|
||||
'edit_success' => 'Modify Success!',
|
||||
'get_success' => 'Get Successfully!',
|
||||
'all' => 'All',
|
||||
'status' => 'Status',
|
||||
'enable' => 'Enable',
|
||||
'enable_status' => 'Ordering of products',
|
||||
'disable' => 'Disable',
|
||||
'disable_status' => 'Indirect ordering of products',
|
||||
'enabled' => 'Enabled',
|
||||
'disabled' => 'Disabled',
|
||||
'home' => 'Home',
|
||||
|
|
@ -47,12 +50,14 @@ return [
|
|||
'reset' => 'Reset',
|
||||
'export' => 'Export',
|
||||
'edit' => 'Edit',
|
||||
'copy' => 'Copy',
|
||||
'action' => 'Action',
|
||||
'add' => 'Add',
|
||||
'please_choose' => 'Please Choose',
|
||||
'recommend_size' => 'Recommend Size',
|
||||
'pick_datetime' => 'Pick Datetime',
|
||||
'confirm_delete' => 'You sure you want to delete it?',
|
||||
'confirm_copy' => 'You sure you want to copy it?',
|
||||
'text_hint' => 'Hint',
|
||||
'restore' => 'Restore',
|
||||
'name' => 'Name',
|
||||
|
|
@ -90,6 +95,7 @@ return [
|
|||
'error_page' => 'The data you accessed does not exist or has been deleted~',
|
||||
'error_page_btn' => 'Return to previous page',
|
||||
'no_repeat' => 'Do not re-add',
|
||||
'product_active_false' => 'Product active are indirect ordering of products',
|
||||
|
||||
'contacts' => 'Contacts',
|
||||
'content' => 'Content',
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ return [
|
|||
'text_suggested_size' => '建议尺寸(宽x高): ',
|
||||
'text_word' => '文字',
|
||||
'text_add_pictures' => '添加图片',
|
||||
'text_add_video' => '添加视频',
|
||||
'text_refresh_cookie' => '刷新 Cookie',
|
||||
'text_popup_hint' => '注:用户点击关闭将不再显示,直到浏览器关闭重新打开。本地测试可点击 "刷新 Cookie",后刷新浏览器,弹窗可再次启动。 ',
|
||||
'text_cookie_refresh_success' => 'Cookie 刷新成功,刷新浏览器即可看到弹窗内容。',
|
||||
|
|
@ -197,6 +198,7 @@ return [
|
|||
'modules_content' => '内容',
|
||||
'modules_edit_content' => '编辑内容',
|
||||
'modules_select_image' => '选择图片',
|
||||
'modules_select_video' => '选择视频',
|
||||
'modules_quantity_line' => '一行显示几个',
|
||||
'modules_please_choose' => '请选择',
|
||||
'modules_choose' => '选择',
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ return [
|
|||
'module_banner' => '横幅模块',
|
||||
'module_four_image_pro' => '一行四图 PRO',
|
||||
'module_slideshow' => '幻灯片模块',
|
||||
'module_slideshow_video'=> '视频模块',
|
||||
'module_tab_products' => '选项卡商品',
|
||||
'module_product' => '商品模块',
|
||||
'module_icons' => '图标模块',
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ return [
|
|||
'default_main_product' => '默认主商品',
|
||||
'modify_order' => '双击修改、拖动调整顺序',
|
||||
'weight_text' => '重量',
|
||||
'length_width_height' => '长宽高',
|
||||
'weight_class' => '重量单位',
|
||||
|
||||
'confirm_batch_product' => '确认要批量删除选中的商品吗?',
|
||||
|
|
|
|||
|
|
@ -21,12 +21,15 @@ return [
|
|||
'deleted_success' => '删除成功!',
|
||||
'restored_success' => '恢复成功!',
|
||||
'updated_success' => '更新成功!',
|
||||
'copy_success' => '复制成功!',
|
||||
'edit_success' => '修改成功!',
|
||||
'get_success' => '获取成功!',
|
||||
'all' => '全部',
|
||||
'status' => '状态',
|
||||
'enable' => '启用',
|
||||
'enable_status' => '直接下单产品',
|
||||
'disable' => '禁用',
|
||||
'disable_status' => '非直接下单产品',
|
||||
'enabled' => '启用',
|
||||
'disabled' => '禁用',
|
||||
'home' => '首页',
|
||||
|
|
@ -46,12 +49,14 @@ return [
|
|||
'reset' => '重置',
|
||||
'export' => '导出',
|
||||
'edit' => '编辑',
|
||||
'copy' => '复制',
|
||||
'action' => '操作',
|
||||
'add' => '添加',
|
||||
'please_choose' => '请选择',
|
||||
'recommend_size' => '建议尺寸',
|
||||
'pick_datetime' => '选择时间',
|
||||
'confirm_delete' => '确定要删除吗?',
|
||||
'confirm_copy' => '确定要复制吗?',
|
||||
'text_hint' => '提示',
|
||||
'restore' => '恢复',
|
||||
'name' => '名称',
|
||||
|
|
@ -89,6 +94,7 @@ return [
|
|||
'error_page' => '您访问的数据不存在或已被删除~',
|
||||
'error_page_btn' => '返回上一页',
|
||||
'no_repeat' => '请勿重新添加',
|
||||
'product_active_false' => '产品状态为非直接下单产品',
|
||||
|
||||
'contacts' => '联系人',
|
||||
'content' => '内容',
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ return [
|
|||
'default_main_product' => '默認主商品',
|
||||
'modify_order' => '雙擊修改、拖動調整順序',
|
||||
'weight_text' => '重量',
|
||||
'length_width_height' => '长宽高',
|
||||
'weight_class' => '重量單位',
|
||||
|
||||
'confirm_batch_product' => '確認要批量刪除選中的商品嗎? ',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
@push('header')
|
||||
<script src="{{ asset('vendor/swiper/swiper-bundle.min.js') }}"></script>
|
||||
<link rel="stylesheet" href="{{ asset('vendor/swiper/swiper-bundle.min.css') }}">
|
||||
@endpush
|
||||
|
||||
<section class="module-item {{ $design ? 'module-item-design' : ''}}" id="module-{{ $module_id }}">
|
||||
@include('design._partial._module_tool')
|
||||
|
||||
<div class="module-info mb-3 mb-md-5 {{ !$content['full'] ? 'container' : '' }}">
|
||||
<div class="swiper module-swiper-{{ $module_id }} module-slideshow">
|
||||
<div class="swiper-wrapper">
|
||||
@foreach($content['images'] as $image)
|
||||
<div class="swiper-slide">
|
||||
<a href="{{ $image['link']['link'] ?: 'javascript:void(0)' }}" class="d-flex justify-content-center">
|
||||
@if(in_array(pathinfo($image['image'])['extension'],['mp4']))
|
||||
<video src="{{ $image['image'] }}" class="img-fluid" muted autoplay loop>
|
||||
@else
|
||||
<img src="{{ $image['image'] }}" class="img-fluid">
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="swiper-pagination slideshow-pagination-{{ $module_id }}"></div>
|
||||
<div class="swiper-button-prev slideshow-btnprev-{{ $module_id }}"></div>
|
||||
<div class="swiper-button-next slideshow-btnnext-{{ $module_id }}"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function slideshowSwiper() {
|
||||
new Swiper ('.module-swiper-{{ $module_id }}', {
|
||||
loop: '{{ count($content['images']) > 1 ? true : false }}', // 循环模式选项
|
||||
autoplay: true,
|
||||
pauseOnMouseEnter: true,
|
||||
clickable :true,
|
||||
|
||||
// 如果需要分页器
|
||||
pagination: {
|
||||
el: '.slideshow-pagination-{{ $module_id }}',
|
||||
clickable :true
|
||||
},
|
||||
|
||||
// 如果需要前进后退按钮
|
||||
navigation: {
|
||||
nextEl: '.slideshow-btnnext-{{ $module_id }}',
|
||||
prevEl: '.slideshow-btnprev-{{ $module_id }}',
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@if ($design)
|
||||
bk.loadStyle('{{ asset('vendor/swiper/swiper-bundle.min.css') }}');
|
||||
bk.loadScript('{{ asset('vendor/swiper/swiper-bundle.min.js') }}', () => {
|
||||
slideshowSwiper();
|
||||
})
|
||||
@else
|
||||
slideshowSwiper();
|
||||
@endif
|
||||
</script>
|
||||
</section>
|
||||
|
|
@ -10,8 +10,8 @@
|
|||
<script src="{{ asset('vendor/zoom/jquery.zoom.min.js') }}"></script>
|
||||
<link rel="stylesheet" href="{{ asset('vendor/swiper/swiper-bundle.min.css') }}">
|
||||
|
||||
<script src="{{ asset('vendor/element-ui/2.15.6/js.js') }}"></script>
|
||||
<link rel="stylesheet" href="{{ asset('vendor/element-ui/2.15.6/css.css') }}">
|
||||
<script src="{{ asset('vendor/element-ui/index.js') }}"></script>
|
||||
<link rel="stylesheet" href="{{ asset('vendor/element-ui/index.css') }}">
|
||||
@if ($product['video'])
|
||||
<script src="{{ asset('vendor/video/video.min.js') }}"></script>
|
||||
<link rel="stylesheet" href="{{ asset('vendor/video/video-js.min.css') }}">
|
||||
|
|
@ -203,6 +203,28 @@
|
|||
@endif
|
||||
@else
|
||||
{{-- <div class="text-danger"><i class="bi bi-exclamation-circle-fill"></i> {{ __('product.has_been_inactive') }}</div>--}}
|
||||
<div class="quantity-btns">
|
||||
@hook('product.detail.buy.before')
|
||||
@hookwrapper('product.detail.quantity.input')
|
||||
<div class="quantity-wrap">
|
||||
<input type="text" class="form-control" :disabled="!product.quantity" onkeyup="this.value=this.value.replace(/\D/g,'')" v-model="quantity" name="quantity">
|
||||
<div class="right">
|
||||
<i class="bi bi-chevron-up"></i>
|
||||
<i class="bi bi-chevron-down"></i>
|
||||
</div>
|
||||
</div>
|
||||
@endhookwrapper
|
||||
@hookwrapper('product.detail.add_to_cart')
|
||||
<button
|
||||
class="btn btn-outline-dark ms-md-3 add-cart fw-bold"
|
||||
:product-id="product.id"
|
||||
:product-price="product.price"
|
||||
:disabled="!product.quantity"
|
||||
@click="addCart(false, this)"
|
||||
><i class="bi bi-cart-fill me-1"></i>{{ __('shop/products.add_to_cart') }}
|
||||
</button>
|
||||
@endhookwrapper
|
||||
</div>
|
||||
@endif
|
||||
<button
|
||||
style="width: 16em;"
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
data-bs-placement="top"
|
||||
title="{{ __('shop/products.add_to_cart') }}"
|
||||
@if ($product['price_setting'] === 'num')
|
||||
onclick="bk.addCart({sku_id: '{{ $product['sku_id'] }}',quantity: {{$product['numprices'][0]['num']}} }, this)">
|
||||
onclick="bk.addCart({sku_id: '{{ $product['sku_id'] }}',quantity: {{$product['numprices'] != [] ? $product['numprices'][0]['num'] : 1}} }, this)">
|
||||
@else
|
||||
onclick="bk.addCart({sku_id: '{{ $product['sku_id'] }}'}, this)">
|
||||
@endif
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
<!--yt修改-->
|
||||
<div class="product-price">
|
||||
@if ($product['price_setting'] === 'num')
|
||||
<span class="price-new">{{$product['numprices'][0]['num']}} pieces</span>
|
||||
<span class="price-new">{{$product['numprices'] != [] ? $product['numprices'][0]['num'] : 1}} pieces</span>
|
||||
@else
|
||||
<span class="price-new">1 pieces</span>
|
||||
@endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue