diff --git a/src/actions/insert_actions.ts b/src/actions/insert_actions.ts index 10c34548c3..f00208f78e 100644 --- a/src/actions/insert_actions.ts +++ b/src/actions/insert_actions.ts @@ -221,19 +221,24 @@ export const categorieFunctionAll: ActionSpec = { }; function allFunctionListMenuBuilder(): ActionSpec[] { - const fnNames = functionRegistry.getKeys(); + const fnNames = functionRegistry.getKeys().filter((key) => !functionRegistry.get(key).hidden); return createFormulaFunctions(fnNames); } export const categoriesFunctionListMenuBuilder: ActionBuilder = () => { const functions = functionRegistry.content; - const categories = [...new Set(functionRegistry.getAll().map((fn) => fn.category))].filter( - isDefined - ); + const categories = [ + ...new Set( + functionRegistry + .getAll() + .filter((fn) => !fn.hidden) + .map((fn) => fn.category) + ), + ].filter(isDefined); return categories.sort().map((category, i) => { const functionsInCategory = Object.keys(functions).filter( - (key) => functions[key].category === category + (key) => functions[key].category === category && !functions[key].hidden ); return { name: category, diff --git a/tests/menus/menu_items_registry.test.ts b/tests/menus/menu_items_registry.test.ts index fb45a10cbd..9a447b00e2 100644 --- a/tests/menus/menu_items_registry.test.ts +++ b/tests/menus/menu_items_registry.test.ts @@ -30,6 +30,7 @@ import { import { FR_LOCALE } from "../test_helpers/constants"; import { getCell, getCellContent, getEvaluatedCell } from "../test_helpers/getters_helpers"; import { + clearFunctions, doAction, getName, getNode, @@ -929,6 +930,26 @@ describe("Menu Item actions", () => { restoreDefaultFunctions(); }); + test("Insert -> Function -> hidden formulas are filtered out", () => { + clearFunctions(); + functionRegistry.add("HIDDEN.FUNC", { + args: [], + compute: () => 42, + description: "Test function", + returns: ["NUMBER"], + hidden: true, + category: "hidden", + }); + const env = makeTestEnv(); + const functionCategories = getNode(["insert", "insert_function"]).children(env); + expect(functionCategories.map((f) => f.name(env))).not.toContain("hidden"); + const allFunctions = getNode(["insert", "insert_function", "categorie_function_all"]).children( + env + ); + expect(allFunctions.map((f) => f.name(env))).not.toContain("HIDDEN.FUNC"); + restoreDefaultFunctions(); + }); + describe("Format -> numbers", () => { test("Automatic", () => { const action = getNode(["format", "format_number", "format_number_automatic"]);