import React, { type ReactNode } from 'react'; import { ComboBox, TextInputSkeleton } from '@carbon/react'; import { type Concept } from '../../../core/api/types/concept/Concept'; import { type Control, Controller, type FieldValues } from 'react-hook-form'; import { useConcept } from '../../../stock-lookups/stock-lookups.resource'; import { type ConfigObject } from '../../../config-schema'; import { type StockItemPackagingUOMDTO } from '../../../core/api/types/stockItem/StockItemPackagingUOM'; import { useConfig } from '@openmrs/esm-framework'; interface PackagingUnitsConceptSelectorProps { row?: StockItemPackagingUOMDTO; onPackageUnitChange?: (unit: { uuid: string; display: string }) => void; title?: string; placeholder?: string; invalid?: boolean; invalidText?: ReactNode; // Control controllerName: string; name: string; control: Control; } const PackagingUnitsConceptSelector = (props: PackagingUnitsConceptSelectorProps) => { const { packingUnitsUUID } = useConfig(); const { items: { answers: dispensingUnits }, isLoading, } = useConcept(packingUnitsUUID); if (isLoading) return ; return ( ( x.uuid === props.row?.packagingUomUuid) ? [] : [ { uuid: props.row?.packagingUomUuid, display: props.row?.packagingUomName, }, ]), ...(dispensingUnits ?? []), ] : dispensingUnits || [] } onChange={(data: { selectedItem: { uuid: string; display: string } }) => { props.onPackageUnitChange?.(data?.selectedItem); onChange(data?.selectedItem?.uuid || ''); // Provide a default value if needed }} initialSelectedItem={ props.row?.packagingUomUuid !== undefined ? { uuid: props.row?.packagingUomUuid, display: props.row?.packagingUomName, } : null } selectedItem={ props.row?.packagingUomUuid !== undefined ? { uuid: props.row?.packagingUomUuid, display: props.row?.packagingUomName, } : null } itemToString={(item?: Concept) => (item && item?.display ? `${item?.display}` : '')} shouldFilterItem={() => true} placeholder={props.placeholder} invalid={props.invalid} invalidText={props.invalidText} /> )} /> ); }; export default PackagingUnitsConceptSelector;