Class: OffcanvasUtils

Oracle® JavaScript Extension Toolkit (JET)
3.2.0

E87541-01

QuickNav

oj. OffcanvasUtils

Version:
  • 3.2.0
Since:
  • 1.1.0
This class provides functions used for controlling offcanvas regions. Offcanvas regions can be used in either static (simply displaying and hiding in response to user interactions) or responsive (using media queries to dynamically move application content between the main viewport and offcanvas regions) contexts. The open, close and toggle methods can be used to directly control the display of an offcanvas region in both the static and responsive cases. The setupResponsive and tearDownResponsive methods are only needed for responsive usages and are used to add and remove listeners that use the specified media queries to configure the offcanvas in response to changes in browser size. The setupPanToReveal and tearDownPanToReveal methods are used to add and remove listeners neccessary to reveal the offcanvas as user pans on the outer wrapper.
  • open: show the offcanvas by sliding it into the viewport.
  • close: hide the offcanvas by sliding it out of the viewport.
  • toggle: toggle the offcanvas in or out of the viewport.
  • setupResponsive: setup offcanvas for the responsive layout.
  • tearDownResponsive: remove listeners that were added in setupResponsive.
  • setupPanToReveal: setup offcanvas for pan to reveal.
  • tearDownPantoReveal: remove listeners that were added in setupPanToReveal.

Events

Event Description Example
beforeClose Triggered immediately before the offcanvas is closed. It can be canceled to prevent the content from closing by returning a false in the event listener. $(".selector").on("ojbeforeclose", function(event, offcanvas) {});
beforeOpen
Triggered immediately before the offcanvas is open. It can be canceled to prevent the content from opening by returning a false in the event listener. $(".selector").on("ojbeforeopen", function(event, offcanvas) {});
close
Triggered after the offcanvas has been closed. $(".selector").on("ojclose", function(event, offcanvas) {});
open
Triggered after the offcanvas has been open (after animation completes). $(".selector").on("ojopen", function(event, offcanvas) {});

Styling

The following CSS classes can be applied by the page author as needed.

Class Description
oj-offcanvas-outer-wrapper Applied to the outer most element of the offcanvas.
oj-offcanvas-page Applied to the outer wrapper of the page level offcanvas.
oj-offcanvas-inner-wrapper
Applied to the inner wrapper of the offcanvas. Deprecated, please remove the inner wrapper.
oj-offcanvas-start
Applied to the offcanvas on the start edge.
oj-offcanvas-end
Applied to the offcanvas on the end edge.
oj-offcanvas-top
Applied to the offcanvas on the top edge.
oj-offcanvas-bottom
Applied to the offcanvas on the bottom edge.

Touch End User Information

Target Gesture Action
Offcanvas Swipe Close the offcanvas by swiping in the close direction.

Keyboard End User Information

Target Gesture Action
Close button Enter If offcanvas has a close button, navigate to the button and press Enter to close the offcanvas.
Outer wrapper Tab or Shift+Tab When focus is on the outer wrapper, Tab or shift+Tab moves the focus to the next or previous tab stop on the page. If autoDismiss is true, it also closes the offcanvas.

Constructor

new OffcanvasUtils()

Source:

Methods

<static> close(offcanvas) → {Promise}

Hides the offcanvas by sliding it out of the viewport. This method fires an ojbeforeclose event which can be vetoed by attaching a listener and returning false. If the close is not vetoed, this method will fire an ojclose event once animation has completed.
Parameters:
Name Type Description
offcanvas Object An Object contains the properties in the following table.
Properties:
Name Type Description
offcanvas.selector string JQ selector identifying the offcanvas
Source:
See:
Returns:
A promise that is resolved when all transitions have completed. The promise is rejected if the ojbeforeclose event is vetoed.
Type
Promise
Example

Slide the offcanvas out of the viewport:

   var offcanvas = {
     "selector": "#startDrawer"
   };

oj.OffcanvasUtils.close(offcanvas);

<static> open(offcanvas) → {Promise}

Shows the offcanvas by sliding it into the viewport. This method fire an ojbeforeopen event which can be vetoed by attaching a listener and returning false. If the open is not vetoed, this method will fire an ojopen event once animation has completed.

Upon opening a offcanvas, focus is automatically moved to the first item that matches the following:

  1. The first element within the offcanvas with the autofocus attribute
  2. The first :tabbable element inside the offcanvas
  3. The offcanvas itself
Parameters:
Name Type Description
offcanvas Object An Object contains the properties in the following table.
Properties:
Name Type Description
offcanvas.selector string JQ selector identifying the offcanvas.
offcanvas.content string JQ selector identifying the main content.
offcanvas.edge string the edge of the offcanvas, valid values are start, end, top, bottom. This property is optional if the offcanvas element has a "oj-offcanvas-" + class specified.
offcanvas.displayMode string how to show the offcanvas, valid values are push or overlay. Default: defined by theme.
offcanvas.autoDismiss string close behavior, valid values are focusLoss and none. If autoDismiss is default(focusLoss) then any click outside the offcanvas will close it.
offcanvas.size string size width or height of the offcanvas: width if edge is start or end and height if edge is to and bottom. Default to the computed width or height of the offcanvas.
offcanvas.modality string The modality of the offcanvas. Valid values are modal and modeless. Default: modeless. If the offcanvas is modal, interaction with the main content area is disabled like in a modal dialog.
Source:
See:
Returns:
A promise that is resolved when all transitions have completed. The promise is rejected if the ojbeforeopen event is vetoed.
Type
Promise
Example

Slide the offcanvas into the viewport:

   var offcanvas = {
     "selector": "#startDrawer",
     "content": "#mainContent",
     "edge": "start",
     "displayMode": "push",
     "size": "200px"
   };

oj.OffcanvasUtils.open(offcanvas);

<static> setupPanToReveal(offcanvas)

Setup offcanvas for pan to reveal. This method adds a touch listener to handle revealing the offcanvas as user pans on the outer wrapper. The following events are fired by this method: ojpanstart - fired when pan to reveal gesture initiated by the user. The event includes the direction and distance of the pan. If it is vetoed then pan to reveal is terminated ojpanmove - fired as user continues the pan gesture. The event includes the direction and distance of the pan. ojpanend - fired when pan to reveal gesture ends. The event includes the direction and distance of the pan. If it is vetoed then the offcanvas will be closed.
Parameters:
Name Type Description
offcanvas Object An Object contains the properties in the following table.
Properties:
Name Type Argument Description
offcanvas.selector string JQ selector identifying the offcanvas
offcanvas.edge string <optional>
the edge of the offcanvas, valid values are start, end. This property is optional if the offcanvas element has a "oj-offcanvas-" + class specified.
offcanvas.size string <optional>
size width of the offcanvas. Default to the computed width of the offcanvas.
Source:
See:
Example

Setup the offcanvas:

   var offcanvas = {
     "selector": "#startDrawer"
   };

oj.OffcanvasUtils.setupPanToReveal(offcanvas);

<static> setupResponsive(offcanvas)

Setup offcanvas for the responsive layout. This method adds a listener based on the media query specified in offcanvas.query. When the media query matches the listener is called and offcanvas behavior is removed. When the media query does not match the listener is called and off canvas behavior is added.
Parameters:
Name Type Description
offcanvas Object An Object contains the properties in the following table.
Properties:
Name Type Description
offcanvas.selector string JQ selector identifying the offcanvas
offcanvas.edge string the edge of the offcanvas, valid values are start, end, top, bottom. This property is optional if the offcanvas element has a "oj-offcanvas-" + class specified.
offcanvas.query string the media query determine when the offcanvas is fixed inside the viewport.
Source:
See:
Example

Setup the offcanvas:

   var offcanvas = {
     "selector": "#startDrawer",
     "edge": "start",
     "query": oj.ResponsiveUtils.getFrameworkQuery(oj.ResponsiveUtils.FRAMEWORK_QUERY_KEY.LG_UP)
   };

oj.OffcanvasUtils.setupResponsive(offcanvas);

<static> tearDownPanToReveal(offcanvas)

Removes the listener that was added in setupPanToReveal. Page authors should call tearDownPanToReveal when the offcanvas is no longer needed.
Parameters:
Name Type Description
offcanvas Object An Object contains the properties in the following table.
Properties:
Name Type Description
offcanvas.selector string JQ selector identifying the offcanvas
Source:
See:
Example

TearDown the offcanvas:

   var offcanvas = {
     "selector": "#startDrawer"
   };

oj.OffcanvasUtils.tearDownPanToReveal(offcanvas);

<static> tearDownResponsive(offcanvas)

Removes the listener that was added in setupResponsive. Page authors should call tearDownResponsive when the offcanvas is no longer needed.
Parameters:
Name Type Description
offcanvas Object An Object contains the properties in the following table.
Properties:
Name Type Description
offcanvas.selector string JQ selector identifying the offcanvas
Source:
See:
Example

TearDown the offcanvas:

   var offcanvas = {
     "selector": "#startDrawer"
   };

oj.OffcanvasUtils.tearDownResponsive(offcanvas);

<static> toggle(offcanvas) → {Promise}

Toggles the offcanvas in or out of the viewport. This method simply delegates to the open or close methods as appropriate.
Parameters:
Name Type Description
offcanvas Object An Object contains the properties in the following table.
Properties:
Name Type Description
offcanvas.selector string JQ selector identifying the offcanvas.
offcanvas.content string JQ selector identifying the main content.
offcanvas.edge string the edge of the offcanvas, valid values are start, end, top, bottom. This property is optional if the offcanvas element has a "oj-offcanvas-" + class specified.
offcanvas.displayMode string how to show the offcanvas, valid values are push or overlay. Default: defined by theme.
offcanvas.autoDismiss string close behavior, valid values are focusLoss and none. If autoDismiss is default(focusLoss) then any click outside the offcanvas will close it.
offcanvas.size string size width or height of the offcanvas: width if edge is start or end and height if edge is to and bottom. Default to the computed width or height of the offcanvas.
offcanvas.modality string The modality of the offcanvas. Valid values are modal and modeless. Default: modeless. If the offcanvas is modal, interaction with the main content area is disabled like in a modal dialog.
Source:
See:
Returns:
A promise that is resolved when all transitions have completed
Type
Promise
Example

Toggle the offcanvas in or out of the viewport:

   var offcanvas = {
     "selector": "#startDrawer",
     "edge": "start",
     "displayMode": "overlay"
   };

oj.OffcanvasUtils.toggle(offcanvas);