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