Skip to content

Navigation

Define how pages appear and enable a user to navigate through your application. If a modal page is set to full screen, all pages opened from that modal page will also appear in full screen. When you close a full-screen modal page, all full-screen modal pages in the background are closed automatically and the parent page appears.

The properties defined in Action are also applicable to this action.

Property Type Required Default
BackStackVisible boolean Optional true
ClearHistory boolean Optional false
ModalPage boolean Optional false
ModalPageFullscreen boolean Optional false
NavigationType enum Optional "Inner"
OuterNavigation boolean Optional false
PageMetadata multiple Optional
PageToOpen PageOrRule Optional
Transition Transition Optional
_Type const Required

BackStackVisible

If true, records the navigation in the backstack, allowing page to be navigated back via the Back button. Otherwise if false, subsequent navigation away from the page will prevent returning to it.

  • type: boolean
  • default: true

ClearHistory

If true, the navigation back-stack will be cleared, Back button will be disappeared.

  • type: boolean
  • default: false

ModalPage

Indicates if a page is modal.

  • type: boolean
  • default: false

ModalPageFullscreen

If true, the modal page appears in full screen.

Note: By design, modal pages always appear in full screen on mobile devices.

  • type: boolean
  • default: false

To trigger navigation based on the defined type.

  • type: enum
  • default: Inner

The value of this property must be equal to one of the known values below.

Value Description
Inner Navigation to be triggered on current page level. For FlexibleColumnLayout, it would be triggered on current column. This is default value for all scenarios except for when triggered within FlexibleColumnLayout.
Outer Navigation to be triggered on parent page level. Specific for page within BottomNavigation, Tabs, and FlexibleColumnLayout.
Cross Navigation to be triggered on next column. Specific for page within FlexibleColumnLayout. This is the default value if action is triggered within FlexibleColumnLayout.

OuterNavigation

[Deprecated. Use NavigationType instead.] Specific for navigation triggered from within a tab page, no effect on normal page. If true, user would be navigated to the specified page at outer level (parent page with the bottom navigation control). If false, user would be navigated to the specified page at tab level / within the tab content.

  • type: boolean
  • default: false

PageMetadata

Page's metadata to navigate to, when the PageMetadata is specified it will take preference over the PageToOpen.

The properties defined in Page are also applicable to it.

  • type: multiple

Either one of:

  • string
  • object

PageToOpen

Page/Rule to navigate to, references a .page file.


Transition

Optional custom page navigation transition effect. It only applies to page-to-page navigation (including within modal dialog). It does not apply to opening and closing of modal dialog and does not apply to tab switching in BottomNavigation


_Type

  • type: const

The value of this property must be equal to:

"Action.Type.Navigation"

Action Result

Refer to the MDK Guide to understand what an action result is.

The success ActionResult of this action is a NavigationEntry. The failure ActionResult is an error message.


Examples

// Navigation.action (use PageMetadata)
{
    "PageToOpen": "/MDKApp/Pages/Dummy.page",
    "PageMetadata": "{ \"Caption\": \"PageMetadata Test\", \"_Type\": \"Page\", \"_Name\": \"PageMetadataTest\", \"Controls\": [ { \"Sections\": [ { \"Header\": { \"Caption\": \"Actions\" }, \"ObjectCells\": [ {  \"ObjectCell\": { \"AccessoryType\": \"disclosureIndicator\", \"Description\": \"another pagemetadata\", \"OnPress\": \"/MDKDevApp/Actions/Navigation/PageMetadata.action\", \"Title\": \"Next Page\" } } ], \"_Name\": \"NavigationActionSection\", \"_Type\": \"Section.Type.ObjectTable\" } ], \"_Type\": \"Control.Type.SectionedTable\", \"_Name\": \"NavigationActionSectionTable\" } ] }",
    "Type": "Action.Type.Navigation"
}
// Navigation.action (use PageMetadata object)
{
    "PageToOpen": "/MDKApp/Pages/Dummy.page",
    "PageMetadata": {
        "Caption": "PageMetadata Test",
        "_Type": "Page",
        "_Name": "PageMetadataTest",
        "Controls": [{
            "Sections": [{
            "Header": {
                "Caption": "Actions"
            },
            "ObjectCells": [{
                "ObjectCell": {
                "AccessoryType": "disclosureIndicator",
                "Description": "another pagemetadata",
                "OnPress": "/MDKDevApp/Actions/Navigation/PageMetadata.action",
                "Title": "Next Page"
                }
            }],
            "_Name": "NavigationActionSection",
            "_Type": "Section.Type.ObjectTable"
            }],
            "_Type": "Control.Type.SectionedTable",
            "_Name": "NavigationActionSectionTable"
        }]
    },
    "Type": "Action.Type.Navigation"
}
// Navigation.action (default transition)
{
    "PageToOpen": "/MDKApp/Pages/ListPage.page",
    "Type": "Action.Type.Navigation"
}
// Navigation.action (fade transition)
{
    "PageToOpen": "/MDKApp/Pages/ListPage.page",
    "Type": "Action.Type.Navigation",
    "Transition": {
        "Curve": "Linear",
        "Duration": 2,
        "Name": "Fade"
    }
}
// Navigation.action (NO transition)
{
    "PageToOpen": "/MDKApp/Pages/ListPage.page",
    "Type": "Action.Type.Navigation",
    "Transition": {
        "Name": "None"
    }
}
// Navigation.action (BackStackVisible false)
{
    "PageToOpen": "/MDKApp/Pages/ListPage.page",
    "Type": "Action.Type.Navigation",
    "BackStackVisible": false
}