Panel

icon-note.gif NOTE
This component is supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version.

The <Panel> component is a slidable panel that presents lightweight content with flexible sizes. It is a pop-up component.

Required Permissions

None

Child Components

This component can contain child components.

APIs

Panel(value:{show:boolean})

  • Parameters
Name Type Mandatory Default Value Description
show boolean Yes - Whether the panel is shown or hidden.

Attributes

Name Type Default Value Description
type PanelType PanelType.Foldable Type of the panel.
mode PanelMode - Initial status of the panel.
dragBar boolean true Whether to enable a drag bar. The value true means that the drag bar will be displayed, and false means the opposite.
fullHeight Length - Panel height in the PanelMode.Full mode.
halfHeight Length - Panel height in the PanelMode.Half mode. The default value is half of the screen height.
miniHeight Length - Panel height in the PanelMode.Mini mode.
  • PanelType enums
Name Description
Minibar A minibar panel displays content in the minibar area or a large (fullscreen-like) area.
Foldable A foldable panel displays permanent content in a large (fullscreen-like), medium-sized (halfscreen-like), or small area.
Temporary A temporary panel displays content in a large (fullscreen-like) or medium-sized (halfscreen-like) area.
  • PanelMode enums
Name Description
Mini Displays a minibar or foldable panel in its minimum size. This attribute does not take effect for temporary panels.
Half Displays a foldable or temporary panel in a medium-sized (halfscreen-like) area. This attribute does not take effect for minibar panels.
Full Displays a panel in a large (fullscreen-like) area.

Events

Name Description
onChange(callback: (width: number, height: number, mode: PanelMode) => void) Triggered when the status of the panel changes. The returned height value is the height of the content area. When the value of dragbar is true, the height of the panel is the drag bar height plus the height of the content area.

Example

@Entry
@Component
struct PanelExample {
  @State show: boolean = false

  build() {
    Column() {
      Text('2021-09-30    Today Calendar: 1.afternoon......Click for details')
        .width('90%').height(50).borderRadius(10)
        .backgroundColor(0xFFFFFF).padding({ left: 20 })
        .onClick(() => {
          this.show = !this.show
        })
      Panel(this.show) { // Display the agenda.
        Column() {
          Text('Today Calendar')
          Divider()
          Text('1. afternoon 4:00 The project meeting')
        }
      }
      .type(PanelType.Foldable).mode(PanelMode.Half)
      .dragBar(true) // The drag bar is enabled by default.
      .halfHeight(500) // The default value is half of the screen height.
      .onChange((width: number, height: number, mode: PanelMode) => {
        console.info(`width:${width},height:${height},mode:${mode}`)
      })
    }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })
  }
}

en-us_image_0000001256978381