prevent strings from being pasted in number type fields

This commit is contained in:
shamsmosowi
2022-02-05 17:51:41 +08:00
parent 670ef8669a
commit 235d69be21

View File

@@ -7,6 +7,7 @@ import Paste from "@mui/icons-material/ContentPaste";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { useSnackbar } from "notistack";
import { SelectedCell } from "@src/atoms/ContextMenu";
import { getFieldProp, getColumnType } from "@src/components/fields";
export interface IContextMenuActions {
label: string;
@@ -48,15 +49,26 @@ export default function BasicContextMenuActions(
} catch (error) {
enqueueSnackbar(`Failed to cut: ${error}`, { variant: "error" });
}
handleClose();
};
const handlePaste = async () => {
try {
const text = await navigator.clipboard.readText();
const paste = await JSON.parse(text);
updateCell?.(selectedRow?.ref, selectedCol.key, paste);
const cellDataType = getFieldProp("dataType", getColumnType(selectedCol));
let parsed;
if (cellDataType === "number") {
parsed = Number(text);
if (isNaN(parsed)) {
enqueueSnackbar(`Failed to paste: ${text} is not a number`, {
variant: "error",
});
return;
}
} else {
parsed = await JSON.parse(text);
}
updateCell?.(selectedRow?.ref, selectedCol.key, parsed);
} catch (error) {
enqueueSnackbar(`Failed to paste: ${error}`, { variant: "error" });
}