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 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/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 @@ - + 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