From 040527734dedefb90b110a94a5d07dae4e788bfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Tue, 26 Jul 2022 15:56:43 +0300 Subject: [PATCH] close #2552 Added: Quick category modal add parent category field --- app/Http/Controllers/Modals/Categories.php | 21 +++++++++++++--- .../js/components/AkauntingModalAddNew.vue | 24 +++++++++++++++++++ .../components/form/group/select.blade.php | 4 ++++ .../views/modals/categories/create.blade.php | 6 ++++- 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Modals/Categories.php b/app/Http/Controllers/Modals/Categories.php index fa4559fb2..11a422bfa 100644 --- a/app/Http/Controllers/Modals/Categories.php +++ b/app/Http/Controllers/Modals/Categories.php @@ -3,9 +3,10 @@ namespace App\Http\Controllers\Modals; use App\Abstracts\Http\Controller; -use App\Jobs\Setting\CreateCategory; -use Illuminate\Http\Request as IRequest; use App\Http\Requests\Setting\Category as Request; +use App\Jobs\Setting\CreateCategory; +use App\Models\Setting\Category; +use Illuminate\Http\Request as IRequest; class Categories extends Controller { @@ -30,7 +31,21 @@ class Categories extends Controller { $type = $request->get('type', 'item'); - $html = view('modals.categories.create', compact('type'))->render(); + $categories = []; + + foreach (config('type.category') as $type => $config) { + $categories[$type] = []; + } + + Category::enabled()->orderBy('name')->get()->each(function ($category) use (&$categories) { + $categories[$category->type][] = [ + 'id' => $category->id, + 'title' => $category->name, + 'level' => $category->level, + ]; + }); + + $html = view('modals.categories.create', compact('type', 'categories'))->render(); return response()->json([ 'success' => true, diff --git a/resources/assets/js/components/AkauntingModalAddNew.vue b/resources/assets/js/components/AkauntingModalAddNew.vue index 1846ca549..7225d8481 100644 --- a/resources/assets/js/components/AkauntingModalAddNew.vue +++ b/resources/assets/js/components/AkauntingModalAddNew.vue @@ -228,6 +228,8 @@ export default { '#efef32' ], min_date: false, + categoriesBasedTypes: null, + isParentCategoryDisabled: true, } }, @@ -288,6 +290,28 @@ export default { .catch(error => { }); }, + + updateParentCategories(event) { + if (event === '') { + return; + } + + if (typeof JSON.parse(this.form.categories)[event] === 'undefined') { + this.categoriesBasedTypes = []; + this.isParentCategoryDisabled = true; + + return; + } + + if (this.form.parent_category_id) { + this.form.parent_category_id = null; + + return; + } + + this.categoriesBasedTypes = JSON.parse(this.form.categories)[event]; + this.isParentCategoryDisabled = false; + }, } }) }); diff --git a/resources/views/components/form/group/select.blade.php b/resources/views/components/form/group/select.blade.php index c157a4c22..ff2c421ed 100644 --- a/resources/views/components/form/group/select.blade.php +++ b/resources/views/components/form/group/select.blade.php @@ -125,6 +125,10 @@ @change="{{ $attributes['change'] }}($event)" @endif + @if (! empty($attributes['focus'])) + @focus="{{ $attributes['focus'] }}" + @endif + @if (! empty($attributes['visible-change'])) @visible-change="{{ $attributes['visible-change'] }}" @endif diff --git a/resources/views/modals/categories/create.blade.php b/resources/views/modals/categories/create.blade.php index 1dd29da55..bf57ce287 100644 --- a/resources/views/modals/categories/create.blade.php +++ b/resources/views/modals/categories/create.blade.php @@ -4,7 +4,11 @@ - + + + + +