From d9812876e25b054a981ea8ff3ed5176892be33a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gonz=C3=A1lez-Albo?= <94169588+dg-ac@users.noreply.github.com> Date: Sun, 19 Oct 2025 12:44:58 +0200 Subject: [PATCH] update: show which format is active in FormatMenu (#450) * update: show which format is active in formatmenu * update: requested fixes --- .../src/components/FormatMenu/FormatMenu.tsx | 73 ++++++++++++++++--- .../src/components/FormatMenu/formatUtil.ts | 2 + 2 files changed, 65 insertions(+), 10 deletions(-) diff --git a/webapp/IronCalc/src/components/FormatMenu/FormatMenu.tsx b/webapp/IronCalc/src/components/FormatMenu/FormatMenu.tsx index 9333fb7..a389f8c 100644 --- a/webapp/IronCalc/src/components/FormatMenu/FormatMenu.tsx +++ b/webapp/IronCalc/src/components/FormatMenu/FormatMenu.tsx @@ -1,8 +1,9 @@ import { Menu, MenuItem, styled } from "@mui/material"; +import { Check } from "lucide-react"; import { type ComponentProps, useCallback, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import FormatPicker from "./FormatPicker"; -import { NumberFormats } from "./formatUtil"; +import { KNOWN_FORMATS, NumberFormats } from "./formatUtil"; type FormatMenuProps = { children: React.ReactNode; @@ -26,6 +27,8 @@ const FormatMenu = (properties: FormatMenuProps) => { [properties.onChange], ); + const isCustomFormat = !KNOWN_FORMATS.has(properties.numFmt); + return ( <> { }} > onSelect(NumberFormats.AUTO)}> - {t("toolbar.format_menu.auto")} + + + {t("toolbar.format_menu.auto")} + onSelect(NumberFormats.NUMBER)}> - {t("toolbar.format_menu.number")} + + + {t("toolbar.format_menu.number")} + {t("toolbar.format_menu.number_example")} @@ -60,7 +69,12 @@ const FormatMenu = (properties: FormatMenuProps) => { onSelect(NumberFormats.PERCENTAGE)} > - {t("toolbar.format_menu.percentage")} + + + {t("toolbar.format_menu.percentage")} + {t("toolbar.format_menu.percentage_example")} @@ -70,7 +84,12 @@ const FormatMenu = (properties: FormatMenuProps) => { onSelect(NumberFormats.CURRENCY_EUR)} > - {t("toolbar.format_menu.currency_eur")} + + + {t("toolbar.format_menu.currency_eur")} + {t("toolbar.format_menu.currency_eur_example")} @@ -78,7 +97,12 @@ const FormatMenu = (properties: FormatMenuProps) => { onSelect(NumberFormats.CURRENCY_USD)} > - {t("toolbar.format_menu.currency_usd")} + + + {t("toolbar.format_menu.currency_usd")} + {t("toolbar.format_menu.currency_usd_example")} @@ -86,7 +110,12 @@ const FormatMenu = (properties: FormatMenuProps) => { onSelect(NumberFormats.CURRENCY_GBP)} > - {t("toolbar.format_menu.currency_gbp")} + + + {t("toolbar.format_menu.currency_gbp")} + {t("toolbar.format_menu.currency_gbp_example")} @@ -96,7 +125,12 @@ const FormatMenu = (properties: FormatMenuProps) => { onSelect(NumberFormats.DATE_SHORT)} > - {t("toolbar.format_menu.date_short")} + + + {t("toolbar.format_menu.date_short")} + {t("toolbar.format_menu.date_short_example")} @@ -104,7 +138,12 @@ const FormatMenu = (properties: FormatMenuProps) => { onSelect(NumberFormats.DATE_LONG)} > - {t("toolbar.format_menu.date_long")} + + + {t("toolbar.format_menu.date_long")} + {t("toolbar.format_menu.date_long_example")} @@ -112,7 +151,10 @@ const FormatMenu = (properties: FormatMenuProps) => { setPickerOpen(true)}> - {t("toolbar.format_menu.custom")} + + + {t("toolbar.format_menu.custom")} + ` + width: 16px; + height: 16px; + color: ${(props) => (props.$active ? "currentColor" : "transparent")}; + margin-right: 8px; + flex-shrink: 0; +`; + const MenuItemText = styled("div")` color: #000; + display: flex; + align-items: center; `; const MenuItemExample = styled("div")` diff --git a/webapp/IronCalc/src/components/FormatMenu/formatUtil.ts b/webapp/IronCalc/src/components/FormatMenu/formatUtil.ts index e32d0b8..4495dbe 100644 --- a/webapp/IronCalc/src/components/FormatMenu/formatUtil.ts +++ b/webapp/IronCalc/src/components/FormatMenu/formatUtil.ts @@ -42,3 +42,5 @@ export enum NumberFormats { PERCENTAGE = "0.00%", NUMBER = "#,##0.00", } + +export const KNOWN_FORMATS = new Set(Object.values(NumberFormats));