From 9a1be88bce336b4272105be5d15d7acedf89a0a4 Mon Sep 17 00:00:00 2001 From: randy-ar Date: Wed, 21 Jan 2026 15:18:37 +0700 Subject: [PATCH] fix(FE): fixing dashboard select input UI component --- src/components/input/SelectInput.tsx | 6 + src/components/input/SelectInputCheckbox.tsx | 2 +- .../pages/dashboard/DashboardProduction.tsx | 193 +++++++++++------- 3 files changed, 131 insertions(+), 70 deletions(-) diff --git a/src/components/input/SelectInput.tsx b/src/components/input/SelectInput.tsx index 9cc9fda5..2571efc5 100644 --- a/src/components/input/SelectInput.tsx +++ b/src/components/input/SelectInput.tsx @@ -312,6 +312,12 @@ const SelectInput = (props: SelectInputProps) => { } styles={{ menuPortal: (base) => ({ ...base, zIndex: 9999 }), + multiValue(base) { + return { + ...base, + borderRadius: '8px', + }; + }, }} onMenuScrollToBottom={onMenuScrollToBottom} /> diff --git a/src/components/input/SelectInputCheckbox.tsx b/src/components/input/SelectInputCheckbox.tsx index 0827a70a..24125204 100644 --- a/src/components/input/SelectInputCheckbox.tsx +++ b/src/components/input/SelectInputCheckbox.tsx @@ -40,7 +40,7 @@ const CheckboxOption = < type='checkbox' checked={isSelected} onChange={() => null} - className='checkbox checkbox-sm checkbox-primary pointer-events-none' + className='checkbox checkbox-sm rounded checkbox-primary pointer-events-none' /> diff --git a/src/components/pages/dashboard/DashboardProduction.tsx b/src/components/pages/dashboard/DashboardProduction.tsx index 079b082c..dd4abd47 100644 --- a/src/components/pages/dashboard/DashboardProduction.tsx +++ b/src/components/pages/dashboard/DashboardProduction.tsx @@ -38,6 +38,8 @@ import Dropdown from '@/components/Dropdown'; import Menu from '@/components/menu/Menu'; import MenuItem from '@/components/menu/MenuItem'; import { useDashboardStore } from '@/stores/dashboard'; +import SelectInputRadio from '@/components/input/SelectInputRadio'; +import SelectInputCheckbox from '@/components/input/SelectInputCheckbox'; // Helper function to normalize values to array const normalizeToArray = ( @@ -413,7 +415,7 @@ const DashboardProduction = () => { {formik.values.analysisMode === 'COMPARISON' && (
- option.value === formik.values.comparisonType @@ -437,32 +439,53 @@ const DashboardProduction = () => { {/* Location */}
- { - formik.setFieldValue('location', selected); - // Update selectedLocationIds for kandang filter - setSelectedLocationIds(normalizeToArray(selected)); - // Reset dependent fields when location changes - formik.setFieldValue('flock', []); - formik.setFieldValue('kandang', []); - }} - errorMessage={formik.errors.location as string} - options={locationOptions} - isLoading={isLoadingLocationOptions} - isMulti={ - comparisonTypeOptions.find( - (option) => option.value === formik.values.comparisonType - )?.value === 'FARM' - } - isError={ - Boolean(formik.errors.location) && - Boolean(formik.touched.location) - } - /> + {comparisonTypeOptions.find( + (option) => option.value === formik.values.comparisonType + )?.value === 'FARM' ? ( + { + formik.setFieldValue('location', selected); + // Update selectedLocationIds for kandang filter + setSelectedLocationIds(normalizeToArray(selected)); + // Reset dependent fields when location changes + formik.setFieldValue('flock', []); + formik.setFieldValue('kandang', []); + }} + errorMessage={formik.errors.location as string} + options={locationOptions} + isLoading={isLoadingLocationOptions} + isError={ + Boolean(formik.errors.location) && + Boolean(formik.touched.location) + } + /> + ) : ( + { + formik.setFieldValue('location', selected); + // Update selectedLocationIds for kandang filter + setSelectedLocationIds(normalizeToArray(selected)); + // Reset dependent fields when location changes + formik.setFieldValue('flock', []); + formik.setFieldValue('kandang', []); + }} + errorMessage={formik.errors.location as string} + options={locationOptions} + isLoading={isLoadingLocationOptions} + isError={ + Boolean(formik.errors.location) && + Boolean(formik.touched.location) + } + /> + )}
{/* Flock */} @@ -474,27 +497,43 @@ const DashboardProduction = () => { ) ) && (
- - formik.setFieldValue('flock', selected) - } - errorMessage={formik.errors.flock as string} - onInputChange={setInputValueFlock} - onMenuScrollToBottom={loadMoreFlock} - options={flockOptions} - isLoading={isLoadingFlockOptions} - isMulti={ - comparisonTypeOptions.find( - (option) => option.value === formik.values.comparisonType - )?.value === 'FLOCK' - } - isError={ - Boolean(formik.errors.flock) && - Boolean(formik.touched.flock) - } - /> + {comparisonTypeOptions.find( + (option) => option.value === formik.values.comparisonType + )?.value === 'FLOCK' ? ( + + formik.setFieldValue('flock', selected) + } + errorMessage={formik.errors.flock as string} + onInputChange={setInputValueFlock} + onMenuScrollToBottom={loadMoreFlock} + options={flockOptions} + isLoading={isLoadingFlockOptions} + isError={ + Boolean(formik.errors.flock) && + Boolean(formik.touched.flock) + } + /> + ) : ( + + formik.setFieldValue('flock', selected) + } + errorMessage={formik.errors.flock as string} + onInputChange={setInputValueFlock} + onMenuScrollToBottom={loadMoreFlock} + options={flockOptions} + isLoading={isLoadingFlockOptions} + isError={ + Boolean(formik.errors.flock) && + Boolean(formik.touched.flock) + } + /> + )}
)} @@ -504,27 +543,43 @@ const DashboardProduction = () => { !(formik.values.comparisonType === 'KANDANG') ) && (
- - formik.setFieldValue('kandang', selected) - } - errorMessage={formik.errors.kandang as string} - onInputChange={setInputValueKandang} - onMenuScrollToBottom={loadMoreKandang} - options={kandangOptions} - isLoading={isLoadingKandangOptions} - isMulti={ - comparisonTypeOptions.find( - (option) => option.value === formik.values.comparisonType - )?.value === 'KANDANG' - } - isError={ - Boolean(formik.errors.kandang) && - Boolean(formik.touched.kandang) - } - /> + {comparisonTypeOptions.find( + (option) => option.value === formik.values.comparisonType + )?.value === 'KANDANG' ? ( + + formik.setFieldValue('kandang', selected) + } + errorMessage={formik.errors.kandang as string} + onInputChange={setInputValueKandang} + onMenuScrollToBottom={loadMoreKandang} + options={kandangOptions} + isLoading={isLoadingKandangOptions} + isError={ + Boolean(formik.errors.kandang) && + Boolean(formik.touched.kandang) + } + /> + ) : ( + + formik.setFieldValue('kandang', selected) + } + errorMessage={formik.errors.kandang as string} + onInputChange={setInputValueKandang} + onMenuScrollToBottom={loadMoreKandang} + options={kandangOptions} + isLoading={isLoadingKandangOptions} + isError={ + Boolean(formik.errors.kandang) && + Boolean(formik.touched.kandang) + } + /> + )}
)}