Docs Components Primitives

Collapsible

React example follows below.
ts
const collapsibleFixture = {
id: "collapsible",
title: "Advanced deployment settings",
body: "Retries are limited to one automatic rollback.",
defaultOpen: false,
} satisfies { id: string; title: string; body: string; defaultOpen: boolean };
import { Collapsible } from "@grassroot/ui-react";
export default function CollapsibleDemo() {
return (
<div>
<Collapsible
id={`${collapsibleFixture.id}-react`}
defaultOpen={collapsibleFixture.defaultOpen}
title={collapsibleFixture.title}
>
{collapsibleFixture.body}
</Collapsible>
</div>
);
}
ts
<script setup lang="ts">
import { Collapsible } from "@grassroot/ui-vue";
const collapsibleFixture = {
id: "collapsible",
title: "Advanced deployment settings",
body: "Retries are limited to one automatic rollback.",
defaultOpen: false,
} satisfies { id: string; title: string; body: string; defaultOpen: boolean };
</script>
<template>
<div>
<Collapsible
:id="`${collapsibleFixture.id}-vue`"
:title="collapsibleFixture.title"
:default-open="collapsibleFixture.defaultOpen"
>
{{ collapsibleFixture.body }}
</Collapsible>
</div>
</template>
ts
import { Component } from "@angular/core";
import { GrassrootCollapsible } from "@grassroot/ui-angular";
const collapsibleFixture = {
id: "collapsible",
title: "Advanced deployment settings",
body: "Retries are limited to one automatic rollback.",
defaultOpen: false,
} satisfies { id: string; title: string; body: string; defaultOpen: boolean };
@Component({
selector: "app-collapsible-demo",
standalone: true,
imports: [GrassrootCollapsible],
template: `
<div>
<grassroot-collapsible [id]="id" [title]="fixture.title" [defaultOpen]="fixture.defaultOpen">
{{ fixture.body }}
</grassroot-collapsible>
</div>
`,
})
export class CollapsibleDemoComponent {
protected readonly fixture = collapsibleFixture;
protected readonly id = `${collapsibleFixture.id}-angular`;
}
export default CollapsibleDemoComponent;
ts
<script lang="ts">
import { Collapsible } from "@grassroot/ui-svelte";
const collapsibleFixture = {
id: "collapsible",
title: "Advanced deployment settings",
body: "Retries are limited to one automatic rollback.",
defaultOpen: false,
} satisfies { id: string; title: string; body: string; defaultOpen: boolean };
</script>
<div>
<Collapsible
id={`${collapsibleFixture.id}-svelte`}
title={collapsibleFixture.title}
defaultOpen={collapsibleFixture.defaultOpen}
>
{collapsibleFixture.body}
</Collapsible>
</div>
ts
/** @jsxImportSource solid-js */
import { Collapsible } from "@grassroot/ui-solid";
const collapsibleFixture = {
id: "collapsible",
title: "Advanced deployment settings",
body: "Retries are limited to one automatic rollback.",
defaultOpen: false,
} satisfies { id: string; title: string; body: string; defaultOpen: boolean };
export default function CollapsibleDemo() {
return (
<div>
<Collapsible
id={`${collapsibleFixture.id}-solid`}
title={collapsibleFixture.title}
defaultOpen={collapsibleFixture.defaultOpen}
>
{collapsibleFixture.body}
</Collapsible>
</div>
);
}

Installation

API Reference

Import

import { Collapsible } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
Description
open
boolean | undefined
—
optional
Controlled open state.
defaultOpen
boolean | undefined
false
optional
Uncontrolled initial state.
onOpenChange
((open: boolean) => void) | undefined
—
optional
—
disabled
boolean | undefined
—
optional
—
Prop
open
Type
boolean | undefined
Default
—
Requirement
optional
Description
Controlled open state.
Prop
defaultOpen
Type
boolean | undefined
Default
false
Requirement
optional
Description
Uncontrolled initial state.
Prop
onOpenChange
Type
((open: boolean) => void) | undefined
Default
—
Requirement
optional
Description
—
Prop
disabled
Type
boolean | undefined
Default
—
Requirement
optional
Description
—

Events

EventPayload
onOpenChange((open: boolean) => void) | undefined

Content regions

  • children
  • title

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { Collapsible } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
title
string
—
required
open
boolean | undefined
undefined
optional
defaultOpen
boolean | undefined
false
optional
disabled
boolean | undefined
false
optional
id
string | undefined
—
optional
Prop
title
Type
string
Default
—
Requirement
required
Prop
open
Type
boolean | undefined
Default
undefined
Requirement
optional
Prop
defaultOpen
Type
boolean | undefined
Default
false
Requirement
optional
Prop
disabled
Type
boolean | undefined
Default
false
Requirement
optional
Prop
id
Type
string | undefined
Default
—
Requirement
optional

Events

EventPayload
update:open[open: boolean]

Content regions

  • default
  • title

Import

import { Component } from "@angular/core";
import { GrassrootCollapsible } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
title
string
—
required
defaultOpen
boolean
false
optional
disabled
boolean
false
optional
id
string
"grassroot-collapsible"
optional
open
boolean | undefined
undefined
optional
Prop
title
Type
string
Default
—
Requirement
required
Prop
defaultOpen
Type
boolean
Default
false
Requirement
optional
Prop
disabled
Type
boolean
Default
false
Requirement
optional
Prop
id
Type
string
Default
"grassroot-collapsible"
Requirement
optional
Prop
open
Type
boolean | undefined
Default
undefined
Requirement
optional

Events

EventPayload
openChangeboolean | undefined

Content regions

  • default
  • title

Import

import { Collapsible } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
open
boolean
—
optional
defaultOpen
boolean
false
optional
disabled
boolean
false
optional
id
string
—
optional
className
string
—
optional
onOpenChange
(open: boolean) => void
—
optional
Prop
open
Type
boolean
Default
—
Requirement
optional
Prop
defaultOpen
Type
boolean
Default
false
Requirement
optional
Prop
disabled
Type
boolean
Default
false
Requirement
optional
Prop
id
Type
string
Default
—
Requirement
optional
Prop
className
Type
string
Default
—
Requirement
optional
Prop
onOpenChange
Type
(open: boolean) => void
Default
—
Requirement
optional

Events

EventPayload
onOpenChange(open: boolean) => void

Content regions

  • children
  • title

Import

import { Collapsible } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
open
boolean
—
optional
defaultOpen
boolean
—
optional
onOpenChange
(open: boolean) => void
—
optional
disabled
boolean
—
optional
className
string
—
optional
id
string
—
optional
Prop
open
Type
boolean
Default
—
Requirement
optional
Prop
defaultOpen
Type
boolean
Default
—
Requirement
optional
Prop
onOpenChange
Type
(open: boolean) => void
Default
—
Requirement
optional
Prop
disabled
Type
boolean
Default
—
Requirement
optional
Prop
className
Type
string
Default
—
Requirement
optional
Prop
id
Type
string
Default
—
Requirement
optional

Events

EventPayload
onOpenChange(open: boolean) => void

Content regions

  • children
  • title