Справочник событий
Все колбэки событий являются необязательными пропсами. Колбэки «Before» могут вернуть false для отмены операции.
React-обёртка использует имена пропсов в формате onCamelCase (например, onAfterAction), тогда как JS API Spreadsheet использует имена событий в формате camelCase на event bus (например, afterAction). Смотрите Справочник событий JS API для императивного API.
События действий
Срабатывают при любом действии пользователя, например при редактировании ячеек, форматировании или структурных изменениях.
| Пропс | Отменяемое | Описание |
|---|---|---|
onBeforeAction | Да | Срабатывает перед выполнением любого действия пользователя. Вернуть false для отмены. Обработчик: BeforeActionHandler. JS API: beforeAction. |
onAfterAction | Нет | Срабатывает после завершения любого действия пользователя. Обработчик: AfterActionHandler. JS API: afterAction. |
Пример: Блокировка удаления строк
import { Actions } from "@dhtmlx/trial-react-spreadsheet";
<ReactSpreadsheet
sheets={sheets}
onBeforeAction={(action, config) => {
if (action === Actions.deleteRow) return false;
}}
/>
Пример: Запись всех действий пользователя
<ReactSpreadsheet
sheets={sheets}
onAfterAction={(action, config) => {
console.log("Action:", action, "Cell:", config.cell);
}}
/>
События выделения
Срабатывают при изменении выделения или фокуса ячейки.
| Пропс | Отменяемое | Описание |
|---|---|---|
onBeforeSelectionSet | Да | Срабатывает перед добавлением ячейки в выделение. Обработчик: BeforeCellHandler. JS API: beforeSelectionSet. |
onAfterSelectionSet | Нет | Срабатывает после добавления ячейки в выделение. Обработчик: AfterCellHandler. JS API: afterSelectionSet. |
onBeforeSelectionRemove | Да | Срабатывает перед удалением ячейки из выделения. Обработчик: BeforeCellHandler. |
onAfterSelectionRemove | Нет | Срабатывает после удаления ячейки из выделения. Обработчик: AfterCellHandler. |
onBeforeFocusSet | Да | Срабатывает перед изменением активной ячейки. Обработчик: BeforeCellHandler. JS API: beforeFocusSet. |
onAfterFocusSet | Нет | Срабатывает после изменения активной ячейки. Обработчик: AfterCellHandler. JS API: afterFocusSet. |
Пример: Отслеживание выбранной ячейки
const [selectedCell, setSelectedCell] = useState<string>("");
<ReactSpreadsheet
sheets={sheets}
onAfterFocusSet={(cell) => setSelectedCell(cell)}
/>
<p>Current cell: {selectedCell}</p>
События редактирования
Срабатывают при начале или завершении редактирования ячейки.
| Пропс | Отменяемое | Описание |
|---|---|---|
onBeforeEditStart | Да | Срабатывает перед началом редактирования ячейки. Обработчик: BeforeEditHandler. JS API: beforeEditStart. |
onAfterEditStart | Нет | Срабатывает после начала редактирования ячейки. Обработчик: AfterEditHandler. JS API: afterEditStart. |
onBeforeEditEnd | Да | Срабатывает перед завершением редактирования ячейки. Вернуть false для отмены и продолжения редактирования. Обработчик: BeforeEditHandler. JS API: beforeEditEnd. |
onAfterEditEnd | Нет | Срабатывает после завершения редактирования ячейки и сохранения значения. Обработчик: AfterEditHandler. JS API: afterEditEnd. |
Пример: Валидация перед сохранением
<ReactSpreadsheet
sheets={sheets}
onBeforeEditEnd={(cell, value) => {
if (cell.startsWith("B") && isNaN(Number(value))) {
return false; // Отмена: столбец B должен содержать числа
}
}}
/>
События листов
Срабатывают при смене активной вкладки листа.
| Пропс | О тменяемое | Описание |
|---|---|---|
onBeforeSheetChange | Да | Срабатывает перед сменой активного листа. Обработчик: BeforeSheetHandler. JS API: beforeSheetChange. |
onAfterSheetChange | Нет | Срабатывает после смены активного листа. Обработчик: AfterSheetHandler. JS API: afterSheetChange. |
Пример: Отслеживание активного листа
<ReactSpreadsheet
sheets={sheets}
onAfterSheetChange={(sheet) => {
console.log("Switched to sheet:", sheet.name);
}}
/>
События данных
Срабатывают при загрузке данных таблицы.
| Пропс | Описание |
|---|---|
onAfterDataLoaded | Срабатывает после завершения загрузки данных (через sheets или loadUrl). JS API: afterDataLoaded. |
Пример: Отображение состояния загрузки
const [loading, setLoading] = useState(true);
<ReactSpreadsheet
loadUrl="/api/data"
onAfterDataLoaded={() => setLoading(false)}
/>
События ввода
Срабатывают при вводе пользователя в ячейках или строке формул.
| Пропс | Описание |
|---|---|
onGroupFill | Срабатывает при операциях автозаполнения (перетаскивание). Обработчик: (focusedCell: string, selectedCell: string) => void. JS API: groupFill. |
onEditLineInput | Срабатывает при вводе в строку формул/редактирования. Обработчик: (value: string) => void. |
onCellInput | Срабатывает при вводе в ячейку во время редактирования. Обработчик: (cell: string, value: string) => void. |