FleetbaseFleetbase

Overlay

<Overlay> is a sliding panel that docks to the left/right/top/bottom of the screen. Used for slide-out detail views, side panels, and drawer-like UIs.

<Overlay>

<Overlay> is a sliding panel that docks to one edge of the screen. It supports minimize / maximize / resize gestures and is the basis for most slide-out detail views in the Fleetbase Console.

For modal dialogs (centered, dimmed background) use the modals system instead.

Basic Usage

<Overlay
  @position="right"
  @isOpen={{this.detailOpen}}
  @onClose={{fn (mut this.detailOpen) false}}
  @isResizable={{true}}
>
  {{!-- Body content --}}
  <h2>Driver Details</h2>
  <p>{{this.driver.name}}</p>
</Overlay>

Arguments

Position & Sizing

ArgumentTypeDefaultDescription
@positionstringrightleft, right, top, bottom
@isOpenbooleantrueInitial open state
@isResizablebooleanfalseAllow the user to drag-resize
@isMinimizablebooleanfalseShow the minimize button
@isMaximizablebooleanfalseShow the maximize button
@disableResizebooleanfalseDisable resize even if @isResizable
@minResizeWidthnumber560Minimum resize width in px
@maxResizeWidthnumber900Maximum resize width in px

Callbacks

ArgumentSignatureDescription
@onLoad(api)Called once when the overlay mounts. api exposes { toggle, open, close, minimize, maximize }
@onOpen / @onClose(api)Called when state changes
@onToggle(api)Called on toggle
@onResize / @onResizeStart / @onResizeEnd({ event, overlayPanelNode })Resize lifecycle
@onMinimize / @onMaximize()Buttons emit these in addition to mutating internal state

Imperative Control

Capture the API via @onLoad:

<Overlay @position="right" @onLoad={{this.captureApi}}>
  {{!-- ... --}}
</Overlay>
@tracked api = null;
@action captureApi(api) { this.api = api; }
@action openDetail() { this.api.open(); }
@action minimizeDetail() { this.api.minimize(); }

The API object: { toggle, open, close, minimize, maximize, isOpen, isMinimized, isMaximized, overlayNode }.

Yielded Sub-Components

<Overlay> yields named contextual components for the header, body, and footer regions. See addon/components/overlay/ for the subcomponent list.

Real-World Examples

{{!-- Right-docked detail overlay --}}
<Overlay
  @position="right"
  @isOpen={{this.detailOpen}}
  @isResizable={{true}}
  @isMinimizable={{true}}
  @onClose={{fn (mut this.detailOpen) false}}
>
  <h2>{{this.selectedOrder.public_id}}</h2>
  {{!-- ... --}}
</Overlay>

See Also

Source

FileDescription
addon/components/overlay.hbsTemplate
addon/components/overlay.jsClass
addon/components/overlay/Subcomponents (header, body, footer regions)
Overlay | Fleetbase