UNPKG

@awsui/components-react

Version:

On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en

46 lines 1.9 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { useCallback, useState } from 'react'; import { fireCancelableEvent } from '../internal/events'; export function useCellEditing({ onCancel, onSubmit }) { const [currentEditCell, setCurrentEditCell] = useState(null); const [lastSuccessfulEditCell, setLastSuccessfulEditCell] = useState(null); const [currentEditLoading, setCurrentEditLoading] = useState(false); const startEdit = (cellId) => { setLastSuccessfulEditCell(null); setCurrentEditCell(cellId); }; const cancelEdit = useCallback(() => setCurrentEditCell(null), []); const completeEdit = (cellId, editCancelled) => { const eventCancelled = fireCancelableEvent(onCancel, {}); if (!eventCancelled) { setCurrentEditCell(null); if (!editCancelled) { setLastSuccessfulEditCell(cellId); } } }; const checkEditing = ({ row, col }) => row === (currentEditCell === null || currentEditCell === void 0 ? void 0 : currentEditCell.row) && col === currentEditCell.col; const checkLastSuccessfulEdit = ({ row, col }) => row === (lastSuccessfulEditCell === null || lastSuccessfulEditCell === void 0 ? void 0 : lastSuccessfulEditCell.row) && col === lastSuccessfulEditCell.col; const submitEdit = onSubmit ? async (...args) => { setCurrentEditLoading(true); try { await onSubmit(...args); } finally { setCurrentEditLoading(false); } } : undefined; return { isLoading: currentEditLoading, startEdit, cancelEdit, checkEditing, checkLastSuccessfulEdit, completeEdit, submitEdit, }; } //# sourceMappingURL=use-cell-editing.js.map