From ef6849e822f3d80602acb52d955a9fe5febcafcd Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Albo Date: Mon, 10 Nov 2025 01:11:18 +0100 Subject: [PATCH] fix: copilot suggestions --- .../NamedRanges/EditNamedRange.tsx | 21 ++++++++---- .../RightDrawer/NamedRanges/NamedRanges.tsx | 33 ++++++++++++++++--- webapp/IronCalc/src/locale/en_us.json | 2 +- 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/webapp/IronCalc/src/components/RightDrawer/NamedRanges/EditNamedRange.tsx b/webapp/IronCalc/src/components/RightDrawer/NamedRanges/EditNamedRange.tsx index 317cd61..74a2dc5 100644 --- a/webapp/IronCalc/src/components/RightDrawer/NamedRanges/EditNamedRange.tsx +++ b/webapp/IronCalc/src/components/RightDrawer/NamedRanges/EditNamedRange.tsx @@ -16,12 +16,21 @@ import type React from "react"; import { theme } from "../../../theme"; import { Footer, NewButton } from "./NamedRanges"; +export interface SaveError { + nameError?: string; + formulaError?: string; +} + interface EditNamedRangeProps { worksheets: WorksheetProperties[]; name: string; scope: string; formula: string; - onSave: (name: string, scope: string, formula: string) => string | undefined; + onSave: ( + name: string, + scope: string, + formula: string, + ) => SaveError | undefined; onCancel: () => void; definedNameList?: DefinedName[]; editingDefinedName?: DefinedName | null; @@ -245,11 +254,11 @@ const EditNamedRange: React.FC = ({ onClick={() => { const error = onSave(name.trim(), scope, formula); if (error) { - const isFormulaError = /formula|reference|cell/i.test(error); - if (isFormulaError) { - setFormulaError(error); - } else { - setNameError(error); + if (error.nameError) { + setNameError(error.nameError); + } + if (error.formulaError) { + setFormulaError(error.formulaError); } } }} diff --git a/webapp/IronCalc/src/components/RightDrawer/NamedRanges/NamedRanges.tsx b/webapp/IronCalc/src/components/RightDrawer/NamedRanges/NamedRanges.tsx index ac723f7..4a70b92 100644 --- a/webapp/IronCalc/src/components/RightDrawer/NamedRanges/NamedRanges.tsx +++ b/webapp/IronCalc/src/components/RightDrawer/NamedRanges/NamedRanges.tsx @@ -12,7 +12,7 @@ import { } from "lucide-react"; import { useState } from "react"; import { theme } from "../../../theme"; -import EditNamedRange from "./EditNamedRange"; +import EditNamedRange, { type SaveError } from "./EditNamedRange"; const normalizeRangeString = (range: string): string => { return range.trim().replace(/['"]/g, ""); @@ -72,7 +72,7 @@ const NamedRanges: React.FC = ({ name: string, scope: string, formula: string, - ): string | undefined => { + ): SaveError | undefined => { if (isCreatingNew) { if (!newDefinedName) return undefined; @@ -83,7 +83,8 @@ const NamedRanges: React.FC = ({ setIsCreatingNew(false); return undefined; } catch (e) { - return `${e}`; + // Since name validation is done client-side, errors from model are formula errors + return { formulaError: `${e}` }; } } else { if (!editingDefinedName || !updateDefinedName) return undefined; @@ -101,7 +102,8 @@ const NamedRanges: React.FC = ({ setEditingDefinedName(null); return undefined; } catch (e) { - return `${e}`; + // Since name validation is done client-side, errors from model are formula errors + return { formulaError: `${e}` }; } } }; @@ -269,6 +271,15 @@ const NamedRanges: React.FC = ({ e.stopPropagation(); handleListItemClick(definedName); }} + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + e.preventDefault(); + e.stopPropagation(); + handleListItemClick(definedName); + } + }} + aria-label={t("name_manager_dialog.edit")} + tabIndex={0} > @@ -284,6 +295,20 @@ const NamedRanges: React.FC = ({ ); } }} + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + e.preventDefault(); + e.stopPropagation(); + if (deleteDefinedName) { + deleteDefinedName( + definedName.name, + definedName.scope, + ); + } + } + }} + aria-label={t("name_manager_dialog.delete")} + tabIndex={0} > diff --git a/webapp/IronCalc/src/locale/en_us.json b/webapp/IronCalc/src/locale/en_us.json index 4877c76..d95e7ca 100644 --- a/webapp/IronCalc/src/locale/en_us.json +++ b/webapp/IronCalc/src/locale/en_us.json @@ -23,7 +23,7 @@ "show_hide_grid_lines": "Show/hide grid lines", "named_ranges": "Named ranges", "vertical_align_bottom": "Align bottom", - "vertical_align_middle": " Align middle", + "vertical_align_middle": "Align middle", "vertical_align_top": "Align top", "selected_png": "Export selected area as PNG", "wrap_text": "Wrap text",