From 4bcbf84748115fade9a0ec1d3d8eefde4d2b1427 Mon Sep 17 00:00:00 2001 From: JokoPrasetio Date: Fri, 25 Jul 2025 16:23:37 +0700 Subject: [PATCH] progress master menu --- .../Controllers/KlasifikasiMenuController.php | 16 ++++ public/assets/css/demo.css | 3 + public/js/menu/action.js | 96 +++++++++++++++---- .../views/dashboard/layouts/main.blade.php | 17 ++++ .../dashboard/master/menu/modal/add.blade.php | 35 ++++++- routes/web.php | 1 + 6 files changed, 146 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/KlasifikasiMenuController.php b/app/Http/Controllers/KlasifikasiMenuController.php index 5df687a..d480865 100644 --- a/app/Http/Controllers/KlasifikasiMenuController.php +++ b/app/Http/Controllers/KlasifikasiMenuController.php @@ -126,4 +126,20 @@ class KlasifikasiMenuController extends Controller public function datatable(){ return KlasifikasiMenu::where('statusenabled', true)->get(); } + + public function optionKlasifikasi(){ + $search = request('search'); + $query = KlasifikasiMenu::where('statusenabled', true); + + if(!empty($search)){ + $query->where('nama_kategori_diet', 'ILIKE', '%' . $search . '%'); + }else{ + $query->take(30); + } + $data = $query->select('kategori_diet_id', 'nama_kategori_diet')->get(); + return response()->json([ + 'error' => 0, + 'data' => $data + ]); + } } diff --git a/public/assets/css/demo.css b/public/assets/css/demo.css index 90d2ef6..de1e494 100644 --- a/public/assets/css/demo.css +++ b/public/assets/css/demo.css @@ -127,3 +127,6 @@ .swal2-backdrop-show { z-index: 9998 !important; } +.tagify__dropdown { + z-index: 99999 !important; +} diff --git a/public/js/menu/action.js b/public/js/menu/action.js index e010087..a787479 100644 --- a/public/js/menu/action.js +++ b/public/js/menu/action.js @@ -1,9 +1,8 @@ - document.addEventListener('DOMContentLoaded', function () { const formSetsContainer = document.getElementById('form-sets-container'); const btnTambahForm = document.getElementById('btnTambahForm'); - // Auto-expand untuk textarea + // Auto-expand textarea function autoExpand(textarea) { textarea.addEventListener('input', function () { this.style.height = 'auto'; @@ -11,46 +10,58 @@ document.addEventListener('DOMContentLoaded', function () { }); } - // Inisialisasi Tagify - function initTagifyAll() { - document.querySelectorAll('input.tags-input').forEach(input => { - if (!input._tagify) { - new Tagify(input); - } + // Inisialisasi Selectize + function initSelectizeAll(context = document) { + $(context).find('.tags-menu').selectize(selectizeConfigTagsMenu); + $(context).find('.date-input').selectize(selectizeConfigDateInput); + } + + // Destroy semua selectize sebelum clone + function destroySelectize(context) { + context.querySelectorAll('select').forEach(select => { + const instance = select.selectize; + if (instance) instance.destroy(); }); } // Inisialisasi awal document.querySelectorAll('.auto-expand').forEach(autoExpand); - initTagifyAll(); + initSelectizeAll(); // Tambah form-set btnTambahForm.addEventListener('click', function () { const lastFormSet = formSetsContainer.querySelector('.form-set:last-of-type'); + + // Destroy selectize sebelum clone + destroySelectize(lastFormSet); + const clone = lastFormSet.cloneNode(true); - // Bersihkan field - clone.querySelectorAll('input, textarea, select').forEach(el => { + // Bersihkan input dan textarea + clone.querySelectorAll('input, textarea').forEach(el => { if (el.type === 'file') { el.value = null; } else { el.value = ''; } - - if (el._tagify) el._tagify.destroy(); }); - clone.querySelectorAll('.tagify').forEach(el => el.remove()); + // Bersihkan select (hapus .selectize dan reset element + -
+
+
+
+ + +
+
+
+
+ +
+ +
+ + +
+
+ + +
+
+
+ + +
diff --git a/routes/web.php b/routes/web.php index 28cfe7c..01141a2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -25,6 +25,7 @@ Route::group(['middleware' => ['auth']], function(){ Route::resource('/klasifikasi-menu', KlasifikasiMenuController::class); Route::get('/datatable/klasifikasi-menu', [KlasifikasiMenuController::class, 'datatable']); + Route::get('/option/klasifikasi-menu', [KlasifikasiMenuController::class, 'optionKlasifikasi']); Route::resource('/karbohidrat', KarbohidratController::class); Route::get('/datatable/karbohidrat', [KarbohidratController::class, 'datatable']);