'use client'; import { Controller, useFormContext, useWatch } from 'react-hook-form'; import { MiniButton } from '@/components/Control'; import { IconReset } from '@/components/Icons'; import { Checkbox, Label, TextArea, TextInput } from '@/components/Input'; import { useLibrary } from '@/features/library/backend/useLibrary'; import { ILibraryItem, LibraryItemID, LibraryItemType } from '@/features/library/models/library'; import { IOperationSchema } from '@/features/oss/models/oss'; import { sortItemsForOSS } from '@/features/oss/models/ossAPI'; import PickSchema from '@/features/rsform/components/PickSchema'; import { IOperationCreateDTO } from '../../backend/api'; interface TabInputOperationProps { oss: IOperationSchema; } function TabInputOperation({ oss }: TabInputOperationProps) { const { items: libraryItems } = useLibrary(); const sortedItems = sortItemsForOSS(oss, libraryItems); const { register, control, setValue, formState: { errors } } = useFormContext(); const createSchema = useWatch({ control, name: 'create_schema' }); function baseFilter(item: ILibraryItem) { return !oss.schemas.includes(item.id); } function handleChangeCreateSchema(value: boolean) { if (value) { setValue('item_data.result', null); } setValue('create_schema', value); } function handleSetInput(value: LibraryItemID) { const schema = libraryItems.find(item => item.id === value); if (!schema) { return; } setValue('item_data.result', value); setValue('create_schema', false); setValue('item_data.alias', schema.alias); setValue('item_data.title', schema.title); setValue('item_data.comment', schema.comment); } return (