import React from 'react'; import {TextInput} from '@gravity-ui/uikit'; import {Controller, useFormContext, useWatch} from 'react-hook-form'; import {cn} from '../../../../utils/cn'; import {ColumnSelectorField} from '../components/ColumnSelectorField'; import {FormFieldError, FormRow, FormSection} from '../components/layout'; import i18n from '../i18n'; import type {FormValues} from '../types'; import {acceptIntegerInput, formatOptionalIntegerInput, parseOptionalIntegerInput} from '../utils'; const b = cn('ydb-table-form-dialog'); interface PartitioningSectionProps { pkTypes: Set; } export function PartitioningSection({pkTypes}: PartitioningSectionProps) { const {control, formState} = useFormContext(); const columns = useWatch({control, name: 'columns'}); const pkColumns = React.useMemo( () => columns.filter(({key, type}) => key && pkTypes.has(type)), [columns, pkTypes], ); const partitionKeyError = formState.errors.partitionKey?.message; const partitionCountError = formState.errors.partitionCount?.message; return ( (
)} />
( { if (!acceptIntegerInput(value)) { return; } field.onChange(parseOptionalIntegerInput(value)); }} validationState={partitionCountError ? 'invalid' : undefined} errorMessage={partitionCountError} /> )} />
); }