import { ConfirmDeleteDialog, ConfirmDeleteDialogNode, } from '@/components/confirm-delete-dialog'; import EditTag from '@/components/edit-tag'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Modal } from '@/components/ui/modal/modal'; import { Switch } from '@/components/ui/switch'; import { Textarea } from '@/components/ui/textarea'; import { Plus, Trash2 } from 'lucide-react'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; import { useManageValues } from './hooks/use-manage-values-modal'; import { IManageValuesProps } from './interface'; // Create a separate input component, wrapped with memo to avoid unnecessary re-renders const ValueInputItem = memo( ({ item, index, onValueChange, onDelete, onBlur, }: { item: string; index: number; onValueChange: (index: number, value: string) => void; onDelete: (index: number) => void; onBlur: (index: number) => void; }) => { return (
onValueChange(index, e.target.value)} onBlur={() => onBlur(index)} />
); }, ); export const ManageValuesModal = (props: IManageValuesProps) => { const { title, isEditField, visible, isAddValue, isShowDescription, isShowValueSwitch, isVerticalShowValue, } = props; const { metaData, tempValues, valueError, deleteDialogContent, handleChange, handleValueChange, handleValueBlur, handleDelete, handleAddValue, showDeleteModal, handleSave, handleHideModal, } = useManageValues(props); const { t } = useTranslation(); return (
{!isEditField && (
{metaData.field}
)} {isEditField && (
{t('knowledgeDetails.metadata.fieldName')}
{ const value = e.target?.value || ''; if (/^[a-zA-Z_]*$/.test(value)) { handleChange('field', value); } }} />
{valueError.field}
)} {isShowDescription && (
{t('knowledgeDetails.metadata.description')}