import React from 'react'; import {Checkbox, Dialog, Label, Popover, TextArea, TextInput} from '@gravity-ui/uikit'; import type {ColumnValueField} from '../../../../store/reducers/table/types'; import {cn} from '../../../../utils/cn'; import {BRAND_BUTTON_CLASS} from '../../../../utils/constants'; import {isValueForTypeValid} from '../columnValueValidation'; import {SPLIT_POINT_STRING_TYPES} from '../constants'; import i18n from '../i18n'; import type {Column, ColumnField} from '../types'; import {generateColumnId, getColumnTypeDescription} from '../utils'; const b = cn('ydb-table-form-dialog'); interface SplitPointDraftRow { column: Column; id: string; isDefined: boolean; value: string; } export interface SplitPointDialogState { open: boolean; index: number; columns: Column[]; values: SplitPointDraftRow[]; } interface SplitPointDialogProps { state: SplitPointDialogState; onClose: () => void; onSubmit: (index: number, values: ColumnValueField[]) => void; } function isColumnValueMustBeDefined(column: Column) { return !column.autoincrement; } function getNotDefinedValue(column: Column) { const fallback = column.autoincrement ? 'AUTO INCREMENT' : 'NULL'; return column.defaultValue === undefined ? fallback : String(column.defaultValue); } function isRowInvalid(row: SplitPointDraftRow) { return row.isDefined && !isValueForTypeValid(row.value, row.column.type); } function SplitPointValueControl({ row, invalid, errorMessage, isStringType, onChange, onBlur, }: { row: SplitPointDraftRow; invalid: boolean; errorMessage?: string; isStringType: boolean; onChange: (id: string, value: string) => void; onBlur: (id: string) => void; }) { if (!row.isDefined) { const notDefinedValue = getNotDefinedValue(row.column); return ( ); } if (isStringType) { return (