From 9aba51db93b6a411a0cb9e9fe7c8f761b02969c2 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 9 Jul 2026 15:31:37 +0700 Subject: [PATCH] feat: add raw material selection dropdown to CuttingPosCombinationDialog, allowing users to filter materials and enhancing the search functionality --- .../form/CuttingPosCombinationDialog.vue | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue b/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue index 40ba09e..3c99941 100644 --- a/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue +++ b/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue @@ -14,6 +14,13 @@ import { DialogTitle, } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; import { Label } from '@/components/ui/label'; import { apiFetch } from '@/lib/api'; import draft_combinations from '@/routes/admin/manage/cuttings/draft_combinations'; @@ -50,19 +57,28 @@ const emit = defineEmits<{ }>(); const search = ref(''); +const selectedRawMaterialId = ref('all'); const selectedMaterials = ref([]); const combinationResult = ref(''); const loading = ref(false); +const selectPortalTarget = ref(); const filteredRawMaterials = computed(() => { const keyword = search.value.trim().toLowerCase(); + const rawMaterialId = selectedRawMaterialId.value; const catalog = props.rawMaterialCatalog; - if (!keyword) { - return catalog; + let items = catalog; + if (rawMaterialId !== 'all') { + const idNum = Number(rawMaterialId); + items = catalog.filter((rawMaterial) => rawMaterial.id === idNum); } - return catalog + if (!keyword) { + return items; + } + + return items .map((rawMaterial) => { const matchingPrices = rawMaterial.prices.filter((price) => price.variant.toLowerCase().includes(keyword), @@ -110,6 +126,7 @@ function removeSelected(priceId: number) { function resetForm() { search.value = ''; + selectedRawMaterialId.value = 'all'; selectedMaterials.value = []; combinationResult.value = ''; } @@ -218,10 +235,25 @@ watch(open, (value) => { -
- - +
+
+ + +
+
+ +
{
+