From 80948d29440af9d34b1782798625c6a95daa8f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Sun, 14 Dec 2025 20:57:39 +0100 Subject: [PATCH] update case index page segment index and show page --- .../Controllers/ClientCaseContoller.original | Bin 0 -> 125202 bytes app/Http/Controllers/ClientCaseContoller.php | 80 ++- package-lock.json | 304 +++++----- package.json | 50 +- .../js/Components/DataTable/DataTableNew2.vue | 12 +- resources/js/Layouts/AppLayout.vue | 138 ++--- resources/js/Layouts/AppPhoneLayout.vue | 112 +--- .../js/Layouts/Partials/NotificationsBell.vue | 26 +- resources/js/Pages/Cases/Index.vue | 171 +++++- .../js/Pages/Cases/Partials/ActivityTable.vue | 2 +- resources/js/Pages/Segments/Index.vue | 168 +++-- resources/js/Pages/Segments/Show.vue | 572 +++++++++++++----- resources/js/Utilities/functions.js | 23 +- tests/Feature/ClientCaseIndexFilterTest.php | 109 ++++ 14 files changed, 1141 insertions(+), 626 deletions(-) create mode 100644 app/Http/Controllers/ClientCaseContoller.original create mode 100644 tests/Feature/ClientCaseIndexFilterTest.php diff --git a/app/Http/Controllers/ClientCaseContoller.original b/app/Http/Controllers/ClientCaseContoller.original new file mode 100644 index 0000000000000000000000000000000000000000..72cc781259b53688e65ab8af39b35fd4f354cd3d GIT binary patch literal 125202 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 literal 0 HcmV?d00001 diff --git a/app/Http/Controllers/ClientCaseContoller.php b/app/Http/Controllers/ClientCaseContoller.php index f0b798d..ba6aed4 100644 --- a/app/Http/Controllers/ClientCaseContoller.php +++ b/app/Http/Controllers/ClientCaseContoller.php @@ -4,15 +4,18 @@ use App\Http\Requests\StoreContractRequest; use App\Http\Requests\UpdateContractRequest; +use App\Models\Client; use App\Models\ClientCase; use App\Models\Contract; use App\Models\Document; +use App\Models\Segment; use App\Services\Documents\DocumentStreamService; use App\Services\ReferenceDataCache; use App\Services\Sms\SmsService; use Exception; use Illuminate\Database\QueryException; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Storage; use Inertia\Inertia; @@ -30,6 +33,16 @@ public function __construct( public function index(ClientCase $clientCase, Request $request) { $search = $request->input('search'); + $from = $this->normalizeDate($request->input('from')); + $to = $this->normalizeDate($request->input('to')); + $clientFilter = collect(explode(',', (string) $request->input('clients'))) + ->filter() + ->map(fn ($value) => (int) $value) + ->filter(fn ($value) => $value > 0) + ->unique() + ->values(); + + $perPage = $this->resolvePerPage($request); $query = $clientCase::query() ->select('client_cases.*') @@ -39,7 +52,6 @@ public function index(ClientCase $clientCase, Request $request) ->groupBy('client_cases.id'); }) ->where('client_cases.active', 1) - // Use LEFT JOINs for aggregated data to avoid subqueries ->leftJoin('contracts', function ($join) { $join->on('contracts.client_case_id', '=', 'client_cases.id') ->whereNull('contracts.deleted_at'); @@ -49,11 +61,18 @@ public function index(ClientCase $clientCase, Request $request) ->where('contract_segment.active', true); }) ->leftJoin('accounts', 'accounts.contract_id', '=', 'contracts.id') + ->when($clientFilter->isNotEmpty(), function ($que) use ($clientFilter) { + $que->whereIn('client_cases.client_id', $clientFilter->all()); + }) + ->when($from, function ($que) use ($from) { + $que->whereDate('client_cases.created_at', '>=', $from); + }) + ->when($to, function ($que) use ($to) { + $que->whereDate('client_cases.created_at', '<=', $to); + }) ->groupBy('client_cases.id') ->addSelect([ - // Count of active contracts (a contract is considered active if it has an active pivot in contract_segment) \DB::raw('COUNT(DISTINCT CASE WHEN contract_segment.id IS NOT NULL THEN contracts.id END) as active_contracts_count'), - // Sum of balances for accounts of active contracts \DB::raw('COALESCE(SUM(CASE WHEN contract_segment.id IS NOT NULL THEN accounts.balance_amount END), 0) as active_contracts_balance_sum'), ]) ->with(['person.client', 'client.person']) @@ -61,12 +80,49 @@ public function index(ClientCase $clientCase, Request $request) return Inertia::render('Cases/Index', [ 'client_cases' => $query - ->paginate($request->integer('perPage', 15), ['*'], 'clientCasesPage') + ->paginate($perPage, ['*'], 'clientCasesPage') ->withQueryString(), - 'filters' => $request->only(['search']), + 'filters' => [ + 'search' => $search, + 'from' => $from, + 'to' => $to, + 'clients' => $clientFilter->map(fn ($value) => (string) $value)->all(), + 'perPage' => $perPage, + ], + 'clients' => Client::query() + ->select(['clients.id', 'person.full_name as name']) + ->join('person', 'person.id', '=', 'clients.person_id') + ->orderBy('person.full_name') + ->get() + ->map(fn ($client) => [ + 'id' => (int) $client->id, + 'name' => (string) ($client->name ?? ''), + ]), ]); } + private function resolvePerPage(Request $request): int + { + $allowed = [10, 15, 25, 50, 100]; + + $perPage = (int) $request->integer('perPage', 15); + + return in_array($perPage, $allowed, true) ? $perPage : 15; + } + + private function normalizeDate(?string $value): ?string + { + if (! $value) { + return null; + } + + try { + return Carbon::parse($value)->toDateString(); + } catch (\Throwable) { + return null; + } + } + /** * Show the form for creating a new resource. */ @@ -717,7 +773,7 @@ public function show(ClientCase $clientCase) $documents = $this->caseDataService->getDocuments($case, $contractIds, $contractsPerPage); // Get archive metadata using service - + $archiveMeta = $this->caseDataService->getArchiveMeta(); return Inertia::render('Cases/Show', [ @@ -1031,7 +1087,7 @@ public function emergencyCreatePerson(ClientCase $clientCase, Request $request) if ($existing && ! $existing->trashed()) { return back()->with('flash', [ 'type' => 'info', - 'message' => 'Person already exists – emergency creation not needed.', + 'message' => 'Person already exists ÔÇô emergency creation not needed.', ]); } @@ -1136,10 +1192,10 @@ public function sendSmsToPhone(ClientCase $clientCase, Request $request, int $ph if (! empty($validated['sender_id'])) { $sender = \App\Models\SmsSender::query()->find($validated['sender_id']); if (! $sender) { - return back()->with('error', 'Izbran pošiljatelj ne obstaja.'); + return back()->with('error', 'Izbran po┼íiljatelj ne obstaja.'); } if ($profile && (int) $sender->profile_id !== (int) $profile->id) { - return back()->with('error', 'Izbran pošiljatelj ne pripada izbranemu profilu.'); + return back()->with('error', 'Izbran po┼íiljatelj ne pripada izbranemu profilu.'); } } if (! $profile) { @@ -1182,7 +1238,7 @@ public function sendSmsToPhone(ClientCase $clientCase, Request $request, int $ph } // Create an activity before sending - $activityNote = sprintf('Št: %s | Telo: %s', (string) $phone->nu, (string) $validated['message']); + $activityNote = sprintf('┼át: %s | Telo: %s', (string) $phone->nu, (string) $validated['message']); $activityData = [ 'note' => $activityNote, 'user_id' => optional($request->user())->id, @@ -1220,7 +1276,7 @@ public function sendSmsToPhone(ClientCase $clientCase, Request $request, int $ph activityId: $activity?->id, ); - return back()->with('success', 'SMS je bil dodan v čakalno vrsto.'); + return back()->with('success', 'SMS je bil dodan v ─Źakalno vrsto.'); } catch (\Throwable $e) { \Log::warning('SMS enqueue failed', [ 'error' => $e->getMessage(), @@ -1228,7 +1284,7 @@ public function sendSmsToPhone(ClientCase $clientCase, Request $request, int $ph 'phone_id' => $phone_id, ]); - return back()->with('error', 'SMS ni bil dodan v čakalno vrsto.'); + return back()->with('error', 'SMS ni bil dodan v ─Źakalno vrsto.'); } } diff --git a/package-lock.json b/package-lock.json index de1ef4e..d17239a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,21 +5,21 @@ "packages": { "": { "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.6.0", - "@fortawesome/free-brands-svg-icons": "^6.6.0", - "@fortawesome/free-regular-svg-icons": "^6.6.0", - "@fortawesome/free-solid-svg-icons": "^6.6.0", - "@fortawesome/vue-fontawesome": "^3.0.8", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/vue-fontawesome": "^3.1.2", "@headlessui/vue": "^1.7.23", - "@heroicons/vue": "^2.1.5", - "@internationalized/date": "^3.9.0", + "@heroicons/vue": "^2.2.0", + "@internationalized/date": "^3.10.0", "@tanstack/vue-table": "^8.21.3", "@unovis/ts": "^1.6.2", "@unovis/vue": "^1.6.2", "@vee-validate/zod": "^4.15.1", - "@vuepic/vue-datepicker": "^11.0.2", - "@vueuse/core": "^14.0.0", - "apexcharts": "^4.0.0", + "@vuepic/vue-datepicker": "^11.0.3", + "@vueuse/core": "^14.1.0", + "apexcharts": "^4.7.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^4.1.0", @@ -28,37 +28,37 @@ "material-design-icons-iconfont": "^6.7.0", "preline": "^2.7.0", "quill": "^1.3.7", - "reka-ui": "^2.6.0", - "tailwind-merge": "^3.3.1", + "reka-ui": "^2.6.1", + "tailwind-merge": "^3.4.0", "tailwindcss-animate": "^1.0.7", "tailwindcss-inner-border": "^0.2.0", "v-calendar": "^3.1.2", "vee-validate": "^4.15.1", "vue-currency-input": "^3.2.1", - "vue-multiselect": "^3.1.0", - "vue-search-input": "^1.1.16", + "vue-multiselect": "^3.4.0", + "vue-search-input": "^1.1.19", "vue-sonner": "^2.0.9", - "vue3-apexcharts": "^1.7.0", + "vue3-apexcharts": "^1.10.0", "vuedraggable": "^4.1.0", "zod": "^3.25.76" }, "devDependencies": { "@inertiajs/vue3": "2.0", "@mdi/js": "^7.4.47", - "@tailwindcss/forms": "^0.5.7", - "@tailwindcss/postcss": "^4.1.16", - "@tailwindcss/typography": "^0.5.10", - "@types/node": "^24.10.1", - "@vitejs/plugin-vue": "^6.0.1", - "autoprefixer": "^10.4.16", - "axios": "^1.7.4", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/postcss": "^4.1.18", + "@tailwindcss/typography": "^0.5.19", + "@types/node": "^24.10.3", + "@vitejs/plugin-vue": "^6.0.2", + "autoprefixer": "^10.4.22", + "axios": "^1.13.2", "laravel-vite-plugin": "^2.0.1", - "postcss": "^8.4.32", + "postcss": "^8.5.6", "tailwindcss": "^4.1.16", "typescript": "^5.9.3", - "vite": "^7.1.7", + "vite": "^7.2.7", "vue": "^3.3.13", - "vue-tsc": "^3.1.5" + "vue-tsc": "^3.1.8" } }, "node_modules/@alloc/quick-lru": { @@ -1472,9 +1472,9 @@ } }, "node_modules/@tailwindcss/node": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.17.tgz", - "integrity": "sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1484,37 +1484,37 @@ "lightningcss": "1.30.2", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", - "tailwindcss": "4.1.17" + "tailwindcss": "4.1.18" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.17.tgz", - "integrity": "sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", "dev": true, "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.17", - "@tailwindcss/oxide-darwin-arm64": "4.1.17", - "@tailwindcss/oxide-darwin-x64": "4.1.17", - "@tailwindcss/oxide-freebsd-x64": "4.1.17", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.17", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.17", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.17", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.17", - "@tailwindcss/oxide-linux-x64-musl": "4.1.17", - "@tailwindcss/oxide-wasm32-wasi": "4.1.17", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.17", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.17" + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.17.tgz", - "integrity": "sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", "cpu": [ "arm64" ], @@ -1529,9 +1529,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.17.tgz", - "integrity": "sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", "cpu": [ "arm64" ], @@ -1546,9 +1546,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.17.tgz", - "integrity": "sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", "cpu": [ "x64" ], @@ -1563,9 +1563,9 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.17.tgz", - "integrity": "sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", "cpu": [ "x64" ], @@ -1580,9 +1580,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.17.tgz", - "integrity": "sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", "cpu": [ "arm" ], @@ -1597,9 +1597,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.17.tgz", - "integrity": "sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", "cpu": [ "arm64" ], @@ -1614,9 +1614,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.17.tgz", - "integrity": "sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", "cpu": [ "arm64" ], @@ -1631,9 +1631,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.17.tgz", - "integrity": "sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", "cpu": [ "x64" ], @@ -1648,9 +1648,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.17.tgz", - "integrity": "sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", "cpu": [ "x64" ], @@ -1665,9 +1665,9 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.17.tgz", - "integrity": "sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -1683,10 +1683,10 @@ "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.6.0", - "@emnapi/runtime": "^1.6.0", + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.0.7", + "@napi-rs/wasm-runtime": "^1.1.0", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, @@ -1695,7 +1695,7 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { - "version": "1.6.0", + "version": "1.7.1", "dev": true, "inBundle": true, "license": "MIT", @@ -1706,7 +1706,7 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { - "version": "1.6.0", + "version": "1.7.1", "dev": true, "inBundle": true, "license": "MIT", @@ -1726,14 +1726,14 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "1.0.7", + "version": "1.1.0", "dev": true, "inBundle": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.5.0", - "@emnapi/runtime": "^1.5.0", + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, @@ -1755,9 +1755,9 @@ "optional": true }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.17.tgz", - "integrity": "sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", "cpu": [ "arm64" ], @@ -1772,9 +1772,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.17.tgz", - "integrity": "sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", "cpu": [ "x64" ], @@ -1789,17 +1789,17 @@ } }, "node_modules/@tailwindcss/postcss": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.17.tgz", - "integrity": "sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz", + "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==", "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.17", - "@tailwindcss/oxide": "4.1.17", + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", "postcss": "^8.4.41", - "tailwindcss": "4.1.17" + "tailwindcss": "4.1.18" } }, "node_modules/@tailwindcss/typography": { @@ -1829,9 +1829,9 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.13.12", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz", - "integrity": "sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==", + "version": "3.13.13", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.13.tgz", + "integrity": "sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==", "license": "MIT", "funding": { "type": "github", @@ -1858,12 +1858,12 @@ } }, "node_modules/@tanstack/vue-virtual": { - "version": "3.13.12", - "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.12.tgz", - "integrity": "sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==", + "version": "3.13.13", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.13.tgz", + "integrity": "sha512-Cf2xIEE8nWAfsX0N5nihkPYMeQRT+pHt4NEkuP8rNCn6lVnLDiV8rC8IeIxbKmQC0yPnj4SIBLwXYVf86xxKTQ==", "license": "MIT", "dependencies": { - "@tanstack/virtual-core": "3.13.12" + "@tanstack/virtual-core": "3.13.13" }, "funding": { "type": "github", @@ -2208,9 +2208,9 @@ } }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "24.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.3.tgz", + "integrity": "sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2414,30 +2414,30 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.23.tgz", - "integrity": "sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==", + "version": "2.4.26", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.26.tgz", + "integrity": "sha512-hH0SMitMxnB43OZpyF1IFPS9bgb2I3bpCh76m2WEK7BE0A0EzpYsRp0CCH2xNKshr7kacU5TQBLYn4zj7CG60A==", "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.23" + "@volar/source-map": "2.4.26" } }, "node_modules/@volar/source-map": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.23.tgz", - "integrity": "sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==", + "version": "2.4.26", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.26.tgz", + "integrity": "sha512-JJw0Tt/kSFsIRmgTQF4JSt81AUSI1aEye5Zl65EeZ8H35JHnTvFGmpDOBn5iOxd48fyGE+ZvZBp5FcgAy/1Qhw==", "dev": true, "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.23.tgz", - "integrity": "sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==", + "version": "2.4.26", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.26.tgz", + "integrity": "sha512-N87ecLD48Sp6zV9zID/5yuS1+5foj0DfuYGdQ6KHj/IbKvyKv1zNX6VCmnKYwtmHadEO6mFc2EKISiu3RDPAvA==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.23", + "@volar/language-core": "2.4.26", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -2526,13 +2526,13 @@ } }, "node_modules/@vue/language-core": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.1.5.tgz", - "integrity": "sha512-FMcqyzWN+sYBeqRMWPGT2QY0mUasZMVIuHvmb5NT3eeqPrbHBYtCP8JWEUCDCgM+Zr62uuWY/qoeBrPrzfa78w==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.1.8.tgz", + "integrity": "sha512-PfwAW7BLopqaJbneChNL6cUOTL3GL+0l8paYP5shhgY5toBNidWnMXWM+qDwL7MC9+zDtzCF2enT8r6VPu64iw==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.23", + "@volar/language-core": "2.4.26", "@vue/compiler-dom": "^3.5.0", "@vue/shared": "^3.5.0", "alien-signals": "^3.0.0", @@ -2764,9 +2764,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.8.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.32.tgz", - "integrity": "sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==", + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz", + "integrity": "sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2774,18 +2774,18 @@ } }, "node_modules/birpc": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.8.0.tgz", - "integrity": "sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -2803,11 +2803,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", - "update-browserslist-db": "^1.1.4" + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -2873,9 +2873,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001757", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", - "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", + "version": "1.0.30001760", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", + "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", "dev": true, "funding": [ { @@ -3627,9 +3627,9 @@ "license": "ISC" }, "node_modules/electron-to-chromium": { - "version": "1.5.263", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.263.tgz", - "integrity": "sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, @@ -5413,9 +5413,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", - "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", "license": "MIT" }, "node_modules/tailwindcss-animate": { @@ -5561,9 +5561,9 @@ "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", "dev": true, "funding": [ { @@ -5655,9 +5655,9 @@ } }, "node_modules/vite": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.6.tgz", - "integrity": "sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==", + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz", + "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5849,14 +5849,14 @@ } }, "node_modules/vue-tsc": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.1.5.tgz", - "integrity": "sha512-L/G9IUjOWhBU0yun89rv8fKqmKC+T0HfhrFjlIml71WpfBv9eb4E9Bev8FMbyueBIU9vxQqbd+oOsVcDa5amGw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.1.8.tgz", + "integrity": "sha512-deKgwx6exIHeZwF601P1ktZKNF0bepaSN4jBU3AsbldPx9gylUc1JDxYppl82yxgkAgaz0Y0LCLOi+cXe9HMYA==", "dev": true, "license": "MIT", "dependencies": { - "@volar/typescript": "2.4.23", - "@vue/language-core": "3.1.5" + "@volar/typescript": "2.4.26", + "@vue/language-core": "3.1.8" }, "bin": { "vue-tsc": "bin/vue-tsc.js" diff --git a/package.json b/package.json index 2149f0c..bb828cc 100644 --- a/package.json +++ b/package.json @@ -9,37 +9,37 @@ "devDependencies": { "@inertiajs/vue3": "2.0", "@mdi/js": "^7.4.47", - "@tailwindcss/forms": "^0.5.7", - "@tailwindcss/postcss": "^4.1.16", - "@tailwindcss/typography": "^0.5.10", - "@types/node": "^24.10.1", - "@vitejs/plugin-vue": "^6.0.1", - "autoprefixer": "^10.4.16", - "axios": "^1.7.4", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/postcss": "^4.1.18", + "@tailwindcss/typography": "^0.5.19", + "@types/node": "^24.10.3", + "@vitejs/plugin-vue": "^6.0.2", + "autoprefixer": "^10.4.22", + "axios": "^1.13.2", "laravel-vite-plugin": "^2.0.1", - "postcss": "^8.4.32", + "postcss": "^8.5.6", "tailwindcss": "^4.1.16", "typescript": "^5.9.3", - "vite": "^7.1.7", + "vite": "^7.2.7", "vue": "^3.3.13", - "vue-tsc": "^3.1.5" + "vue-tsc": "^3.1.8" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.6.0", - "@fortawesome/free-brands-svg-icons": "^6.6.0", - "@fortawesome/free-regular-svg-icons": "^6.6.0", - "@fortawesome/free-solid-svg-icons": "^6.6.0", - "@fortawesome/vue-fontawesome": "^3.0.8", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/vue-fontawesome": "^3.1.2", "@headlessui/vue": "^1.7.23", - "@heroicons/vue": "^2.1.5", - "@internationalized/date": "^3.9.0", + "@heroicons/vue": "^2.2.0", + "@internationalized/date": "^3.10.0", "@tanstack/vue-table": "^8.21.3", "@unovis/ts": "^1.6.2", "@unovis/vue": "^1.6.2", "@vee-validate/zod": "^4.15.1", - "@vuepic/vue-datepicker": "^11.0.2", - "@vueuse/core": "^14.0.0", - "apexcharts": "^4.0.0", + "@vuepic/vue-datepicker": "^11.0.3", + "@vueuse/core": "^14.1.0", + "apexcharts": "^4.7.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^4.1.0", @@ -48,17 +48,17 @@ "material-design-icons-iconfont": "^6.7.0", "preline": "^2.7.0", "quill": "^1.3.7", - "reka-ui": "^2.6.0", - "tailwind-merge": "^3.3.1", + "reka-ui": "^2.6.1", + "tailwind-merge": "^3.4.0", "tailwindcss-animate": "^1.0.7", "tailwindcss-inner-border": "^0.2.0", "v-calendar": "^3.1.2", "vee-validate": "^4.15.1", "vue-currency-input": "^3.2.1", - "vue-multiselect": "^3.1.0", - "vue-search-input": "^1.1.16", + "vue-multiselect": "^3.4.0", + "vue-search-input": "^1.1.19", "vue-sonner": "^2.0.9", - "vue3-apexcharts": "^1.7.0", + "vue3-apexcharts": "^1.10.0", "vuedraggable": "^4.1.0", "zod": "^3.25.76" } diff --git a/resources/js/Components/DataTable/DataTableNew2.vue b/resources/js/Components/DataTable/DataTableNew2.vue index 7ace7db..0c61595 100644 --- a/resources/js/Components/DataTable/DataTableNew2.vue +++ b/resources/js/Components/DataTable/DataTableNew2.vue @@ -441,12 +441,18 @@ function doServerRequest(overrides = {}) { }); const url = route(props.routeName, props.routeParams || {}); - router.get(url, q, { + const onlyProps = Array.isArray(props.onlyProps) ? props.onlyProps : []; + const inertiaOptions = { preserveScroll: props.preserveScroll, preserveState: props.preserveState, replace: true, - only: props.onlyProps.length ? props.onlyProps : undefined, - }); + }; + + if (onlyProps.length > 0) { + inertiaOptions.only = onlyProps; + } + + router.get(url, q, inertiaOptions); } // Row key helper diff --git a/resources/js/Layouts/AppLayout.vue b/resources/js/Layouts/AppLayout.vue index 31bd1a5..1268e85 100644 --- a/resources/js/Layouts/AppLayout.vue +++ b/resources/js/Layouts/AppLayout.vue @@ -1,5 +1,5 @@