Containers
Collapsible
Content that a label shows and hides.
ui.Collapsible creates a disclosure, as SwiftUI's DisclosureGroup: a
label beside an arrow, which a click opens and closes, as do Enter and
Space, showing below it what its function builds while a *bool is true.
The arrow turns and the content grows into view as it opens. Changed
reports a click.
ui.Collapsible(c, "Advanced", &app.advanced, func() {
ui.Checkbox(c, &app.verbose, "Verbose logging")
ui.Checkbox(c, &app.experimental, "Experimental features")
})With less motion asked of the desktop, the content shows at once.
For several sections in a box, use an accordion.
Without a look
ui.CollapsibleBase is a collapsible without a look: a Trigger that
shows and hides what Panel builds, growing and shrinking it with
Progress, which goes from 0 closed to 1 open, for a look and a motion of
your own:
p := ui.CollapsibleBase(c, &app.open)
p.Trigger.Gap(6).Children(func() {
ui.Icon(c, chevron).Rotate(90 * p.Progress())
ui.Text(c, "Details")
})
p.Panel(func() {
ui.Text(c, app.details)
})See custom widgets.
Accessibility
Assistive technology sees a disclosure named by its label, expanded or collapsed, which it opens and closes as a click does.