We have an exciting quick win ship that is out now in cloud 3.102
(and therefore edge-3.102
, which should be out in the next week or so).
We have added 2 new globals to multipage apps:
-
retoolContext.currentPage
: This will store the id of the current page of the app. -
retoolContext.pages
: This will store an array of objects, each representing a page. For now, each page object will contain the following information (if you have other attributes you’d like us to expose, please let us know!):id: string
– ex: page1title: string | null
– ex: 'Page 1'url: string
– ex: 'homePage'isCurrentPage: boolean
– whether page is current page
What this unlocks
retoolContext.currentPage
: You can use this, for instance, to conditionally hide things in a global header depending on the page:switch1
is not hidden ondefaultPage
:
switch1
is hidden onpage1
:
retoolContext.pages
: This array unlocks the ability now to hook up a navigation component directly to the pages that you have set up, so that you don’t have to hook up the pages manually:- To start, set the
Mode
of the navigation component to beMapped
- Then set
Data source
tofx
and then{{ retoolContext.pages }}
- Then configure the
Mapped menu items
how you’d like - Finally, add an event handler to properly navigate to the right page using
utils.openPage(item.id)
(see 2nd screenshot below)- Note about this: This isn’t our ideal way of setting up an event handler to dynamically go to a page. We have plans to make this more intuitive in the future, but for now, this should do the trick.
- To start, set the