From 2dfcaa4682630693590984730b9ff91572eb2328 Mon Sep 17 00:00:00 2001
From: Carter Moorse <40695530+Carter-Moorse@users.noreply.github.com>
Date: Wed, 11 Feb 2026 11:20:55 +0000
Subject: [PATCH 1/3] feat(popup-menu-web): click close on
Added Close on property, which follows from Open on, type 'Click'.
This new property has two options:
- 'Click anywhere' - Closes when user clicks anywhere on page
- 'Click outside' - Closes when user clicks outside the menu
---
packages/pluggableWidgets/popup-menu-web/package.json | 2 +-
.../popup-menu-web/src/PopupMenu.editorConfig.ts | 4 ++++
.../pluggableWidgets/popup-menu-web/src/PopupMenu.xml | 8 ++++++++
.../popup-menu-web/src/components/PopupMenu.tsx | 11 +++++++----
.../popup-menu-web/typings/PopupMenuProps.d.ts | 4 ++++
packages/shared/charts/tsconfig.build.tsbuildinfo | 2 +-
6 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/packages/pluggableWidgets/popup-menu-web/package.json b/packages/pluggableWidgets/popup-menu-web/package.json
index ece020e720..df92fb0bb1 100644
--- a/packages/pluggableWidgets/popup-menu-web/package.json
+++ b/packages/pluggableWidgets/popup-menu-web/package.json
@@ -1,7 +1,7 @@
{
"name": "@mendix/popup-menu-web",
"widgetName": "PopupMenu",
- "version": "4.0.3",
+ "version": "4.1.0",
"description": "Popup Menu widget for displaying a list of actions in a popup.",
"copyright": "© Mendix Technology BV 2025. All rights reserved.",
"license": "Apache-2.0",
diff --git a/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.editorConfig.ts b/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.editorConfig.ts
index f06ba25b66..c4ddb6b0a8 100644
--- a/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.editorConfig.ts
+++ b/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.editorConfig.ts
@@ -85,6 +85,10 @@ export function getProperties(
hidePropertyIn(defaultProperties, values, "hoverCloseOn");
}
+ if (values.trigger !== "onclick") {
+ hidePropertyIn(defaultProperties, values, "clickCloseOn");
+ }
+
return defaultProperties;
}
diff --git a/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.xml b/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.xml
index 00c80dbbf9..ce04ee0da1 100644
--- a/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.xml
+++ b/packages/pluggableWidgets/popup-menu-web/src/PopupMenu.xml
@@ -91,6 +91,14 @@
Hover
+
+ Close on
+
+
+ Click anywhere
+ Click outside
+
+
Close on
diff --git a/packages/pluggableWidgets/popup-menu-web/src/components/PopupMenu.tsx b/packages/pluggableWidgets/popup-menu-web/src/components/PopupMenu.tsx
index 38973ab21b..62b7a2ae56 100644
--- a/packages/pluggableWidgets/popup-menu-web/src/components/PopupMenu.tsx
+++ b/packages/pluggableWidgets/popup-menu-web/src/components/PopupMenu.tsx
@@ -24,10 +24,13 @@ export function PopupMenu(props: PopupMenuProps): ReactElement {
clippingStrategy: props.clippingStrategy
});
- const handleOnClickItem = useCallback((itemAction?: ActionValue): void => {
- setVisibility(false);
- executeAction(itemAction);
- }, []);
+ const handleOnClickItem = useCallback(
+ (itemAction?: ActionValue): void => {
+ if (props.clickCloseOn === "onClickAnywhere") setVisibility(false);
+ executeAction(itemAction);
+ },
+ [props.clickCloseOn]
+ );
useEffect(() => {
setVisibility(props.menuToggle);
diff --git a/packages/pluggableWidgets/popup-menu-web/typings/PopupMenuProps.d.ts b/packages/pluggableWidgets/popup-menu-web/typings/PopupMenuProps.d.ts
index 3cab795a57..8d183c99c9 100644
--- a/packages/pluggableWidgets/popup-menu-web/typings/PopupMenuProps.d.ts
+++ b/packages/pluggableWidgets/popup-menu-web/typings/PopupMenuProps.d.ts
@@ -26,6 +26,8 @@ export interface CustomItemsType {
export type TriggerEnum = "onclick" | "onhover";
+export type ClickCloseOnEnum = "onClickAnywhere" | "onClickOutside";
+
export type HoverCloseOnEnum = "onClickOutside" | "onHoverLeave";
export type PositionEnum = "left" | "right" | "top" | "bottom";
@@ -56,6 +58,7 @@ export interface PopupMenuContainerProps {
basicItems: BasicItemsType[];
customItems: CustomItemsType[];
trigger: TriggerEnum;
+ clickCloseOn: ClickCloseOnEnum;
hoverCloseOn: HoverCloseOnEnum;
position: PositionEnum;
clippingStrategy: ClippingStrategyEnum;
@@ -78,6 +81,7 @@ export interface PopupMenuPreviewProps {
basicItems: BasicItemsPreviewType[];
customItems: CustomItemsPreviewType[];
trigger: TriggerEnum;
+ clickCloseOn: ClickCloseOnEnum;
hoverCloseOn: HoverCloseOnEnum;
position: PositionEnum;
clippingStrategy: ClippingStrategyEnum;
diff --git a/packages/shared/charts/tsconfig.build.tsbuildinfo b/packages/shared/charts/tsconfig.build.tsbuildinfo
index b351b2cb2a..f43879631e 100644
--- a/packages/shared/charts/tsconfig.build.tsbuildinfo
+++ b/packages/shared/charts/tsconfig.build.tsbuildinfo
@@ -1 +1 @@
-{"root":["./src/main.ts","./src/preview.ts","./src/components/chart.tsx","./src/components/chartpreview.tsx","./src/components/chartview.tsx","./src/components/chartwidget.tsx","./src/components/types.ts","./src/helpers/editorstore.ts","./src/helpers/playground-context.ts","./src/helpers/usechartcontroller.ts","./src/helpers/useeditorstore.ts","./src/hooks/useplotchartdataseries.ts","./src/hooks/useresizeobserver.ts","./src/typings/declare-svg.d.ts","./src/typings/global.d.ts","./src/typings/json-source-map.d.ts","./src/utils/aggregations.ts","./src/utils/chartstyles.ts","./src/utils/compareattrvaluesasc.ts","./src/utils/configs.ts","./src/utils/equality.ts","./src/utils/json.ts","./src/utils/preview-utils.ts","./src/utils/setupbasicseries.ts","./src/utils/themefolderconfig.ts"],"version":"5.9.2"}
\ No newline at end of file
+{"root":["./src/main.ts","./src/preview.ts","./src/components/chart.tsx","./src/components/chartpreview.tsx","./src/components/chartview.tsx","./src/components/chartwidget.tsx","./src/components/types.ts","./src/helpers/editorstore.ts","./src/helpers/playground-context.ts","./src/helpers/usechartcontroller.ts","./src/helpers/useeditorstore.ts","./src/hooks/useplotchartdataseries.ts","./src/hooks/useresizeobserver.ts","./src/typings/declare-svg.d.ts","./src/typings/global.d.ts","./src/typings/json-source-map.d.ts","./src/utils/aggregations.ts","./src/utils/chartstyles.ts","./src/utils/compareattrvaluesasc.ts","./src/utils/configs.ts","./src/utils/equality.ts","./src/utils/json.ts","./src/utils/preview-utils.ts","./src/utils/setupbasicseries.ts","./src/utils/themefolderconfig.ts"],"version":"5.9.3"}
\ No newline at end of file
From 729d44fae12a2dc2e5960fd9b751575864819264 Mon Sep 17 00:00:00 2001
From: Carter Moorse <40695530+Carter-Moorse@users.noreply.github.com>
Date: Wed, 11 Feb 2026 11:51:45 +0000
Subject: [PATCH 2/3] chore(popup-menu-web): update changelog
Update changelog to include 4.1.0 changes
---
packages/pluggableWidgets/popup-menu-web/CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/packages/pluggableWidgets/popup-menu-web/CHANGELOG.md b/packages/pluggableWidgets/popup-menu-web/CHANGELOG.md
index 3f95ac3684..7fcb4cd8cb 100644
--- a/packages/pluggableWidgets/popup-menu-web/CHANGELOG.md
+++ b/packages/pluggableWidgets/popup-menu-web/CHANGELOG.md
@@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased]
+## [4.1.0] - 2024-02-11
+
+### Added
+
+- We added a new 'Close on' setting to customize the popup's closing behavior on click, allowing it to close when clicked anywhere or only outside the popup.
+
## [4.0.3] - 2026-02-10
### Added
From 985a4c112a999ef63fd85d0654ffeb741935caa4 Mon Sep 17 00:00:00 2001
From: Carter Moorse <40695530+Carter-Moorse@users.noreply.github.com>
Date: Wed, 11 Feb 2026 16:08:17 +0000
Subject: [PATCH 3/3] chore(popup-menu-web): update version
Updated version in package XML
---
packages/pluggableWidgets/popup-menu-web/src/package.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/pluggableWidgets/popup-menu-web/src/package.xml b/packages/pluggableWidgets/popup-menu-web/src/package.xml
index 15810cc7ac..9f95ace297 100644
--- a/packages/pluggableWidgets/popup-menu-web/src/package.xml
+++ b/packages/pluggableWidgets/popup-menu-web/src/package.xml
@@ -1,6 +1,6 @@
-
+