Docs Components Overlays

AlertDialog

React example follows below.
ts
import * as React from "react";
const alertDialogFixture = {
id: "alert-dialog",
trigger: "Tear down…",
title: "Tear down ledger-api?",
description: "This cannot be undone.",
cancelLabel: "Cancel",
confirmLabel: "Tear down",
destructive: true,
dismissable: false,
} satisfies {
id: string;
trigger: string;
title: string;
description: string;
cancelLabel: string;
confirmLabel: string;
destructive: boolean;
dismissable: boolean;
};
import { AlertDialog, Button } from "@grassroot/ui-react";
export default function AlertDialogDemo() {
const [open, setOpen] = React.useState(false);
return (
<div>
<Button onClick={() => setOpen(true)}>{alertDialogFixture.trigger}</Button>
<AlertDialog
open={open}
onOpenChange={setOpen}
onConfirm={() => undefined}
title={alertDialogFixture.title}
description={alertDialogFixture.description}
cancelLabel={alertDialogFixture.cancelLabel}
confirmLabel={alertDialogFixture.confirmLabel}
destructive={alertDialogFixture.destructive}
dismissable={alertDialogFixture.dismissable}
/>
</div>
);
}
ts
<script setup lang="ts">
import { ref } from "vue";
import { Button, AlertDialog } from "@grassroot/ui-vue";
const alertDialogFixture = {
id: "alert-dialog",
trigger: "Tear down…",
title: "Tear down ledger-api?",
description: "This cannot be undone.",
cancelLabel: "Cancel",
confirmLabel: "Tear down",
destructive: true,
dismissable: false,
} satisfies {
id: string;
trigger: string;
title: string;
description: string;
cancelLabel: string;
confirmLabel: string;
destructive: boolean;
dismissable: boolean;
};
const open = ref(false);
</script>
<template>
<div>
<Button @click="open = true">{{ alertDialogFixture.trigger }}</Button>
<AlertDialog
v-model:open="open"
:confirm-label="alertDialogFixture.confirmLabel"
:cancel-label="alertDialogFixture.cancelLabel"
:destructive="alertDialogFixture.destructive"
:dismissable="alertDialogFixture.dismissable"
>
<template #title>{{ alertDialogFixture.title }}</template>
<template #description>{{ alertDialogFixture.description }}</template>
</AlertDialog>
</div>
</template>
ts
import { Component, signal } from "@angular/core";
import {
GrassrootButton,
GrassrootAlertDialog,
GrassrootDialogDescription,
GrassrootDialogTitle,
} from "@grassroot/ui-angular";
const alertDialogFixture = {
id: "alert-dialog",
trigger: "Tear down…",
title: "Tear down ledger-api?",
description: "This cannot be undone.",
cancelLabel: "Cancel",
confirmLabel: "Tear down",
destructive: true,
dismissable: false,
} satisfies {
id: string;
trigger: string;
title: string;
description: string;
cancelLabel: string;
confirmLabel: string;
destructive: boolean;
dismissable: boolean;
};
@Component({
selector: "app-alert-dialog-demo",
standalone: true,
imports: [
GrassrootButton,
GrassrootAlertDialog,
GrassrootDialogTitle,
GrassrootDialogDescription,
],
template: `
<div>
<grassroot-button (click)="open.set(true)">{{ fixture.trigger }}</grassroot-button>
<grassroot-alert-dialog
[open]="open()"
(openChange)="open.set($event)"
(confirm)="confirmed()"
[confirmLabel]="fixture.confirmLabel"
[cancelLabel]="fixture.cancelLabel"
[destructive]="fixture.destructive"
[dismissable]="fixture.dismissable"
>
<h2 grassrootDialogTitle>{{ fixture.title }}</h2>
<p grassrootDialogDescription>{{ fixture.description }}</p>
</grassroot-alert-dialog>
</div>
`,
})
export class AlertDialogDemoComponent {
readonly open = signal(false);
protected readonly fixture = alertDialogFixture;
protected confirmed(): void {}
}
export default AlertDialogDemoComponent;
ts
<script lang="ts">
import { Button, AlertDialog } from "@grassroot/ui-svelte";
const alertDialogFixture = {
id: "alert-dialog",
trigger: "Tear down…",
title: "Tear down ledger-api?",
description: "This cannot be undone.",
cancelLabel: "Cancel",
confirmLabel: "Tear down",
destructive: true,
dismissable: false,
} satisfies {
id: string;
trigger: string;
title: string;
description: string;
cancelLabel: string;
confirmLabel: string;
destructive: boolean;
dismissable: boolean;
};
let open = $state(false);
</script>
{#snippet title()}{alertDialogFixture.title}{/snippet}
{#snippet description()}{alertDialogFixture.description}{/snippet}
<div>
<Button onClick={() => (open = true)}>{alertDialogFixture.trigger}</Button>
<AlertDialog
{open}
onOpenChange={(next) => (open = next)}
onConfirm={() => undefined}
{title}
{description}
cancelLabel={alertDialogFixture.cancelLabel}
confirmLabel={alertDialogFixture.confirmLabel}
destructive={alertDialogFixture.destructive}
dismissable={alertDialogFixture.dismissable}
/>
</div>
ts
/** @jsxImportSource solid-js */
import { createSignal } from "solid-js";
import { Button, AlertDialog } from "@grassroot/ui-solid";
const alertDialogFixture = {
id: "alert-dialog",
trigger: "Tear down…",
title: "Tear down ledger-api?",
description: "This cannot be undone.",
cancelLabel: "Cancel",
confirmLabel: "Tear down",
destructive: true,
dismissable: false,
} satisfies {
id: string;
trigger: string;
title: string;
description: string;
cancelLabel: string;
confirmLabel: string;
destructive: boolean;
dismissable: boolean;
};
export default function AlertDialogDemo() {
const [open, setOpen] = createSignal(false);
return (
<div>
<Button onClick={() => setOpen(true)}>{alertDialogFixture.trigger}</Button>
<AlertDialog
open={open()}
onOpenChange={setOpen}
onConfirm={() => {}}
title={alertDialogFixture.title}
description={alertDialogFixture.description}
cancelLabel={alertDialogFixture.cancelLabel}
confirmLabel={alertDialogFixture.confirmLabel}
destructive={alertDialogFixture.destructive}
dismissable={alertDialogFixture.dismissable}
/>
</div>
);
}

Installation

API Reference

Import

import * as React from "react";
import { AlertDialog, Button } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
open
boolean
required
onOpenChange
(open: boolean) => void
required
onConfirm
() => void
required
confirmLabel
string | undefined
optional
cancelLabel
string | undefined
optional
destructive
boolean | undefined
optional
dismissable
boolean | undefined
optional
className
string | undefined
optional
Prop
open
Type
boolean
Default
Requirement
required
Prop
onOpenChange
Type
(open: boolean) => void
Default
Requirement
required
Prop
onConfirm
Type
() => void
Default
Requirement
required
Prop
confirmLabel
Type
string | undefined
Default
Requirement
optional
Prop
cancelLabel
Type
string | undefined
Default
Requirement
optional
Prop
destructive
Type
boolean | undefined
Default
Requirement
optional
Prop
dismissable
Type
boolean | undefined
Default
Requirement
optional
Prop
className
Type
string | undefined
Default
Requirement
optional

Events

EventPayload
onOpenChange(open: boolean) => void
onConfirm() => void

Content regions

  • children
  • description
  • title

Import

import { ref } from "vue";
import { Button, AlertDialog } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
open
boolean
required
confirmLabel
string
"Confirm"
optional
cancelLabel
string
"Cancel"
optional
destructive
boolean
true
optional
dismissable
boolean
false
optional
Prop
open
Type
boolean
Default
Requirement
required
Prop
confirmLabel
Type
string
Default
"Confirm"
Requirement
optional
Prop
cancelLabel
Type
string
Default
"Cancel"
Requirement
optional
Prop
destructive
Type
boolean
Default
true
Requirement
optional
Prop
dismissable
Type
boolean
Default
false
Requirement
optional

Events

EventPayload
update:open(_open: boolean) => true
confirm() => true

Content regions

  • default
  • description
  • title

Import

import { Component, signal } from "@angular/core";
import {
  GrassrootButton,
  GrassrootAlertDialog,
  GrassrootDialogDescription,
  GrassrootDialogTitle,
} from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
open
boolean
required
confirmLabel
string
"Confirm"
optional
cancelLabel
string
"Cancel"
optional
destructive
boolean
true
optional
dismissable
boolean
false
optional
Prop
open
Type
boolean
Default
Requirement
required
Prop
confirmLabel
Type
string
Default
"Confirm"
Requirement
optional
Prop
cancelLabel
Type
string
Default
"Cancel"
Requirement
optional
Prop
destructive
Type
boolean
Default
true
Requirement
optional
Prop
dismissable
Type
boolean
Default
false
Requirement
optional

Events

EventPayload
openChangeboolean
confirmvoid

Content regions

  • default
  • description
  • title

Import

import { Button, AlertDialog } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
open
boolean
required
confirmLabel
string
"Confirm"
optional
cancelLabel
string
"Cancel"
optional
destructive
boolean
true
optional
dismissable
boolean
false
optional
onOpenChange
(open: boolean) => void
required
onConfirm
() => void
required
className
string
optional
Prop
open
Type
boolean
Default
Requirement
required
Prop
confirmLabel
Type
string
Default
"Confirm"
Requirement
optional
Prop
cancelLabel
Type
string
Default
"Cancel"
Requirement
optional
Prop
destructive
Type
boolean
Default
true
Requirement
optional
Prop
dismissable
Type
boolean
Default
false
Requirement
optional
Prop
onOpenChange
Type
(open: boolean) => void
Default
Requirement
required
Prop
onConfirm
Type
() => void
Default
Requirement
required
Prop
className
Type
string
Default
Requirement
optional

Events

EventPayload
onOpenChange(open: boolean) => void
onConfirm() => void

Content regions

  • children
  • description
  • title

Import

import { createSignal } from "solid-js";
import { Button, AlertDialog } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
open
boolean
required
onOpenChange
(open: boolean) => void
required
onConfirm
() => void
required
confirmLabel
string
"Confirm"
optional
cancelLabel
string
"Cancel"
optional
destructive
boolean
true
optional
dismissable
boolean
false
optional
className
string
optional
Prop
open
Type
boolean
Default
Requirement
required
Prop
onOpenChange
Type
(open: boolean) => void
Default
Requirement
required
Prop
onConfirm
Type
() => void
Default
Requirement
required
Prop
confirmLabel
Type
string
Default
"Confirm"
Requirement
optional
Prop
cancelLabel
Type
string
Default
"Cancel"
Requirement
optional
Prop
destructive
Type
boolean
Default
true
Requirement
optional
Prop
dismissable
Type
boolean
Default
false
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Events

EventPayload
onOpenChange(open: boolean) => void
onConfirm() => void

Content regions

  • children
  • description
  • title