- Prop
side- Type
"top" | "bottom" | undefined- Default
"bottom"- Requirement
- optional
- Description
- —
Docs Components Overlays
Popover
React example follows below.
Vue example follows below.
Angular example follows below.
Svelte example follows below.
Solid example follows below.
- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
const popoverFixture = { id: "popover", trigger: "ledger-api", title: "ledger-api", body: "Event-sourced payments ledger.", side: "bottom", align: "start",} satisfies { id: string; trigger: string; title: string; body: string; side: "top" | "bottom"; align: "start" | "end";}; import { Popover } from "@grassroot/ui-react"; export default function PopoverDemo() { return ( <div> <Popover trigger={popoverFixture.trigger} side={popoverFixture.side} align={popoverFixture.align} > <div className="px-1.5 py-1 font-semibold text-heading">{popoverFixture.title}</div> <div className="px-1.5 pb-2 text-body">{popoverFixture.body}</div> </Popover> </div> );}- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script setup lang="ts">const popoverFixture = { id: "popover", trigger: "ledger-api", title: "ledger-api", body: "Event-sourced payments ledger.", side: "bottom", align: "start",} satisfies { id: string; trigger: string; title: string; body: string; side: "top" | "bottom"; align: "start" | "end";}; import { Popover } from "@grassroot/ui-vue";</script> <template> <div> <Popover :side="popoverFixture.side" :align="popoverFixture.align"> <template #trigger>{{ popoverFixture.trigger }}</template> <div class="px-1.5 py-1 font-semibold text-heading">{{ popoverFixture.title }}</div> <div class="px-1.5 pb-2 text-body">{{ popoverFixture.body }}</div> </Popover> </div></template>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
import { Component } from "@angular/core";const popoverFixture = { id: "popover", trigger: "ledger-api", title: "ledger-api", body: "Event-sourced payments ledger.", side: "bottom", align: "start",} satisfies { id: string; trigger: string; title: string; body: string; side: "top" | "bottom"; align: "start" | "end";}; import { GrassrootPopover } from "@grassroot/ui-angular"; @Component({ selector: "app-popover-demo", standalone: true, imports: [GrassrootPopover], template: ` <div> <grassroot-popover [side]="fixture.side" [align]="fixture.align"> <ng-container ngProjectAs="[trigger]">{{ fixture.trigger }}</ng-container> <div class="px-1.5 py-1 font-semibold text-heading">{{ fixture.title }}</div> <div class="px-1.5 pb-2 text-body">{{ fixture.body }}</div> </grassroot-popover> </div> `,})export class PopoverDemoComponent { protected readonly fixture = popoverFixture;} export default PopoverDemoComponent;- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script lang="ts"> import { Popover } from "@grassroot/ui-svelte"; const popoverFixture = { id: "popover", trigger: "ledger-api", title: "ledger-api", body: "Event-sourced payments ledger.", side: "bottom", align: "start", } satisfies { id: string; trigger: string; title: string; body: string; side: "top" | "bottom"; align: "start" | "end"; }; </script> {#snippet trigger()}{popoverFixture.trigger}{/snippet}{#snippet children()}<div class="px-1.5 py-1 font-semibold text-heading"> {popoverFixture.title} </div> <div class="px-1.5 pb-2 text-body">{popoverFixture.body}</div>{/snippet}<div> <Popover side={popoverFixture.side} align={popoverFixture.align} {trigger} {children} /></div>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
/** @jsxImportSource solid-js */import { Popover } from "@grassroot/ui-solid";const popoverFixture = { id: "popover", trigger: "ledger-api", title: "ledger-api", body: "Event-sourced payments ledger.", side: "bottom", align: "start",} satisfies { id: string; trigger: string; title: string; body: string; side: "top" | "bottom"; align: "start" | "end";}; export default function PopoverDemo() { return ( <div> <Popover trigger={popoverFixture.trigger} side={popoverFixture.side} align={popoverFixture.align} > <div class="px-1.5 py-1 font-semibold text-heading">{popoverFixture.title}</div> <div class="px-1.5 pb-2 text-body">{popoverFixture.body}</div> </Popover> </div> );}Installation
API Reference
Import
import { Popover } from "@grassroot/ui-react";
Props
Prop
Type
Default
Requirement
Description
side"top" | "bottom" | undefined"bottom"optional
—
align"start" | "end" | undefined"start" (left)optional
Horizontal edge the panel anchors to.
defaultOpenboolean | undefined—
optional
—
classNamestring | undefined—
optional
—
contentClassNamestring | undefined—
optional
—
triggerClassNamestring | undefined—
optional
Override the trigger button styling (e.g.
- Prop
align- Type
"start" | "end" | undefined- Default
"start" (left)- Requirement
- optional
- Description
- Horizontal edge the panel anchors to.
- Prop
defaultOpen- Type
boolean | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
className- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
contentClassName- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
triggerClassName- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- Override the trigger button styling (e.g.
Content regions
childrentrigger
Import
import { Popover } from "@grassroot/ui-vue";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
align"start" | "end""start"optional
defaultOpenbooleanfalseoptional
contentClassNamestring | undefinedundefinedoptional
triggerClassNamestring | undefinedundefinedoptional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
align- Type
"start" | "end"- Default
"start"- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
false- Requirement
- optional
- Prop
contentClassName- Type
string | undefined- Default
undefined- Requirement
- optional
- Prop
triggerClassName- Type
string | undefined- Default
undefined- Requirement
- optional
Content regions
defaulttrigger
Import
import { Component } from "@angular/core";
import { GrassrootPopover } from "@grassroot/ui-angular";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
align"start" | "end""start"optional
defaultOpenbooleanfalseoptional
contentClassNamestring | undefinedundefinedoptional
triggerClassNamestring | undefinedundefinedoptional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
align- Type
"start" | "end"- Default
"start"- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
false- Requirement
- optional
- Prop
contentClassName- Type
string | undefined- Default
undefined- Requirement
- optional
- Prop
triggerClassName- Type
string | undefined- Default
undefined- Requirement
- optional
Content regions
defaulttrigger
Import
import { Popover } from "@grassroot/ui-svelte";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
align"start" | "end""start"optional
defaultOpenbooleanfalseoptional
classNamestring—
optional
contentClassNamestring—
optional
triggerClassNamestring—
optional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
align- Type
"start" | "end"- Default
"start"- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
false- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
contentClassName- Type
string- Default
- —
- Requirement
- optional
- Prop
triggerClassName- Type
string- Default
- —
- Requirement
- optional
Content regions
childrentrigger
Import
import { Popover } from "@grassroot/ui-solid";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
align"start" | "end""start"optional
defaultOpenboolean—
optional
classNamestring—
optional
contentClassNamestring—
optional
triggerClassNamestring—
optional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
align- Type
"start" | "end"- Default
"start"- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
- —
- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
contentClassName- Type
string- Default
- —
- Requirement
- optional
- Prop
triggerClassName- Type
string- Default
- —
- Requirement
- optional
Content regions
childrentrigger