import { CustomError } from '@/error-handler/CustomError'; import { Select } from '@/ui/input/components/Select'; import { SelectControl } from '@/ui/input/components/SelectControl'; import { TextArea } from '@/ui/input/components/TextArea'; import { TextInputV2 } from '@/ui/input/components/TextInputV2'; import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { ConfigVariableValue } from 'twenty-shared/types'; import { MenuItemMultiSelect } from 'twenty-ui/navigation'; import { ConfigVariableType } from '~/generated/graphql'; import { ConfigVariableOptions } from '../types/ConfigVariableOptions'; type ConfigVariableDatabaseInputProps = { label: string; value: ConfigVariableValue; onChange: (value: string | number | boolean | string[] | null) => void; type: ConfigVariableType; options?: ConfigVariableOptions; disabled?: boolean; placeholder?: string; }; export const ConfigVariableDatabaseInput = ({ label, value, onChange, type, options, disabled, placeholder, }: ConfigVariableDatabaseInputProps) => { const selectOptions = options && Array.isArray(options) ? options.map((option) => ({ value: String(option), label: String(option), })) : []; const booleanOptions = [ { value: 'true', label: 'true' }, { value: 'false', label: 'false' }, ]; const isValueSelected = (optionValue: string) => { if (!Array.isArray(value)) return false; return value.includes(optionValue); }; const handleMultiSelectChange = (optionValue: string) => { if (!Array.isArray(value)) return; let newValues = [...value]; if (isValueSelected(optionValue)) { newValues = newValues.filter((val) => val !== optionValue); } else { newValues.push(optionValue); } onChange(newValues); }; switch (type) { case ConfigVariableType.BOOLEAN: return (