Action. The action keeps its form, validation,
authorization, submit callback, focus trap, nested actions and close lifecycle.
The theme adds presentation and gestures; it does not introduce a second dialog
or require a separate JavaScript open/close controller.
A first bottom sheet
Complete FLEX API
Bottom detents must be a PHP list of 1–8 unique ascending finite numbers,
each greater than zero and at most one. The initial index must exist. Empty,
duplicate, descending, nonnumeric, infinite or out-of-range values throw an
InvalidArgumentException. Use fractions, not pixel values or percentages such
as 45. Existing extra modal-window attributes are merged.
Three heights, opened at the middle
One height and short content
Adaptive content
Desktop scrolling and pointer gestures
- Scroll upward over eligible sheet content to expand before scrolling long content. Once expanded, content keeps its native scroll behavior.
- Drag the grabber/header to move between detents. Release uses movement and velocity; upward overscroll has resistance.
- Downward content scrolling does not unexpectedly collapse the sheet. A downward dismissal drag uses the native Close button when it is available.
- Interactive controls and nested scrollable inputs retain their native behavior.
Keyboard controls
Tab/focus expansion helps reveal lower form controls. Reduced motion removes
decorative settling interpolation. The sheet does not take over field shortcuts
or native focus trapping.
Native modal options still apply
These are Filament Action methods, not additionalDrawer::position() arguments:
For a scrolling header/footer:
Floating side panels
Action::make(...)->slideOver() is also
themed. Non-fullscreen panels float with an outside gutter and theme corner
radius; smaller screens use a compact gutter. Radius None removes the rounded
shape. Detents do not apply to side panels.
Detent events
The window emits a bubblingft-sheet-detent-change with
{ index, fraction, height }: index is zero-based, fraction is the configured
viewport fraction and height is the effective content-capped height in pixels.