diff --git a/.changeset/soft-rings-rhyme.md b/.changeset/soft-rings-rhyme.md new file mode 100644 index 000000000..cff6daaf5 --- /dev/null +++ b/.changeset/soft-rings-rhyme.md @@ -0,0 +1,6 @@ +--- +"@ensembleui/react-kitchen-sink": patch +"@ensembleui/react-runtime": patch +--- + +include selectedPage of EnsembleMenu in js context and bindings diff --git a/apps/kitchen-sink/src/ensemble/widgets/Header.yaml b/apps/kitchen-sink/src/ensemble/widgets/Header.yaml index ac3e00b4f..af8b35abe 100644 --- a/apps/kitchen-sink/src/ensemble/widgets/Header.yaml +++ b/apps/kitchen-sink/src/ensemble/widgets/Header.yaml @@ -2,7 +2,7 @@ Widget: inputs: - message onLoad: - executeCode: + executeCode: body: | console.log("hello from header", message); onComplete: @@ -58,6 +58,8 @@ Widget: styles: gap: 10 children: + - Text: + text: Selected Page ${selectedPage} - Avatar: styles: backgroundColor: "#171B2A" diff --git a/packages/runtime/src/runtime/menu.tsx b/packages/runtime/src/runtime/menu.tsx index 32fb23e94..cb00aeeea 100644 --- a/packages/runtime/src/runtime/menu.tsx +++ b/packages/runtime/src/runtime/menu.tsx @@ -166,10 +166,12 @@ export const EnsembleMenu: React.FC<{ const [isCollapsed, setIsCollapsed] = useState( type === EnsembleMenuModelType.Drawer, ); + const [selectedItem, setSelectedItem] = useState(); const outletContext = { isMenuCollapsed: isCollapsed, setMenuCollapsed: setIsCollapsed, + selectedPage: selectedItem, }; const { id, items: rawItems, styles, header, footer, onCollapse } = menu; // custom items may contain their own bindings to be evaluated in dynamic context @@ -178,7 +180,14 @@ export const EnsembleMenu: React.FC<{ ); const { values } = useRegisterBindings( - { itemInputs, styles, header, footer, isCollapsed }, + { + itemInputs, + styles, + header, + footer, + isCollapsed, + selectedPage: selectedItem, + }, id, { setIsCollapsed, @@ -186,7 +195,6 @@ export const EnsembleMenu: React.FC<{ ); const location = useLocation(); - const [selectedItem, setSelectedItem] = useState(); const items = useMemo( () =>