> Documentation index: https://www.gooddata.ai/docs/gooddata-ui/llms.txt lists every page of these docs as Markdown.

# IScheduledEmailDialogShellProps

- Package: [@gooddata/sdk-ui-dashboard](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/index.md)
- Kind: interface
- Stability: beta
- Source: https://github.com/gooddata/gooddata-ui-sdk/blob/rel/11.64/libs/sdk-ui-dashboard/src/presentation/automations/scheduledEmail/types.ts

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

Props of [ScheduledEmailDialogShell()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.scheduledemaildialogshell/index.md).

**Signature:**

```typescript
export interface IScheduledEmailDialogShellProps extends Pick<IScheduledEmailDialogProps, "onCancel" | "onBack" | "onDeleteSuccess" | "onDeleteError"> 
```
**Extends:** Pick&lt;[IScheduledEmailDialogProps](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogprops/index.md), "onCancel" &#124; "onBack" &#124; "onDeleteSuccess" &#124; "onDeleteError"&gt;

## Properties

| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
| [bottomContent?](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropsbottomcontent) |  | ReactNode | **_(BETA)_** _(Optional)_ Rendered last inside the scrollable content area, below the selected tab's content. |
| [children?](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropschildren) |  | ReactNode | **_(BETA)_** _(Optional)_ The General tab's content: the regions and fields, in the caller's order. Rendered only while the General tab is selected; not mounted while `useScheduledEmailDialogContext().isLoading` is true (the shell shows its loading skeleton — on scheduled email the ordinary path while a widget export's filters load) or while the stale-filters confirmation step is shown. |
| [filtersTabContent?](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropsfilterstabcontent) |  | ReactNode | **_(BETA)_** _(Optional)_ The Filters tab's content. Defaults to the dialog's filters region ([DefaultScheduledEmailDialogFilters()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.defaultscheduledemaildialogfilters/index.md) with [useScheduledEmailDialogFiltersProps()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.usescheduledemaildialogfiltersprops/index.md), or the `Filters` slot). Rendered only while the Filters tab is selected. An explicit `null` counts as provided and renders an empty Filters tab. |
| [isSaving](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropsissaving) |  | boolean | **_(BETA)_** `isSavingScheduledEmail` of the same instance: disables submit and Delete and shows the footer's progress indicator. |
| [onSubmit](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropsonsubmit) |  | () =&gt; void | **_(BETA)_** The dialog's single save — `handleSaveScheduledEmail` of the caller's [useSaveScheduledEmailToBackend()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.usesavescheduledemailtobackend/index.md) instance. Drives the footer's submit button, the Enter key on it, and the header's Enter-to-submit. The shell does not own the save hook, so the caller's own Enter handlers — [useScheduledEmailSubmitOnEnter()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.usescheduledemailsubmitonenter/index.md) — share the same instance. Create the hook instance only once the dialog's data has first loaded — the state hooks throw before then. |
| [savingErrorMessage?](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropssavingerrormessage) |  | string | **_(BETA)_** _(Optional)_ `savingErrorMessage` of the same instance; shown as the body's error message, ahead of the form's validation message. |
| [slots?](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropsslots) |  | Pick&lt;[IScheduledEmailDialogSlots](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogslots/index.md), "Header" \| "ActionBar" \| "Filters"&gt; | **_(BETA)_** _(Optional)_ Header, action-bar and Filters-tab overrides — the Level 1 slot contract ([IScheduledEmailDialogSlots.Header](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogslots/index.md#ischeduledemaildialogslotsheader), [IScheduledEmailDialogSlots.ActionBar](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogslots/index.md#ischeduledemaildialogslotsactionbar), [IScheduledEmailDialogSlots.Filters](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogslots/index.md#ischeduledemaildialogslotsfilters)): each slot receives `{ Default, defaultProps }` with the shell's live values. Slot components need a stable reference identity — see . `Filters` is ignored when `filtersTabContent` is passed. The General-tab regions have no slot here: place their blocks ([ScheduledEmailDialogDestination()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.scheduledemaildialogdestination/index.md) and siblings) as children instead. |
| [topContent?](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogshellprops/index.md#ischeduledemaildialogshellpropstopcontent) |  | ReactNode | **_(BETA)_** _(Optional)_ Rendered first inside the dialog's scrollable content area, above the selected tab's content. |

## Property details

### IScheduledEmailDialogShellProps.bottomContent

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

Rendered last inside the scrollable content area, below the selected tab's content.

**Signature:**

```typescript
bottomContent?: ReactNode;
```

### IScheduledEmailDialogShellProps.children

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

The General tab's content: the regions and fields, in the caller's order. Rendered only while the General tab is selected; not mounted while `useScheduledEmailDialogContext().isLoading` is true (the shell shows its loading skeleton — on scheduled email the ordinary path while a widget export's filters load) or while the stale-filters confirmation step is shown.

**Signature:**

```typescript
children?: ReactNode;
```

### IScheduledEmailDialogShellProps.filtersTabContent

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

The Filters tab's content. Defaults to the dialog's filters region ([DefaultScheduledEmailDialogFilters()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.defaultscheduledemaildialogfilters/index.md) with [useScheduledEmailDialogFiltersProps()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.usescheduledemaildialogfiltersprops/index.md), or the `Filters` slot). Rendered only while the Filters tab is selected. An explicit `null` counts as provided and renders an empty Filters tab.

**Signature:**

```typescript
filtersTabContent?: ReactNode;
```

### IScheduledEmailDialogShellProps.isSaving

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

`isSavingScheduledEmail` of the same instance: disables submit and Delete and shows the footer's progress indicator.

**Signature:**

```typescript
isSaving: boolean;
```

### IScheduledEmailDialogShellProps.onSubmit

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

The dialog's single save — `handleSaveScheduledEmail` of the caller's [useSaveScheduledEmailToBackend()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.usesavescheduledemailtobackend/index.md) instance. Drives the footer's submit button, the Enter key on it, and the header's Enter-to-submit. The shell does not own the save hook, so the caller's own Enter handlers — [useScheduledEmailSubmitOnEnter()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.usescheduledemailsubmitonenter/index.md) — share the same instance. Create the hook instance only once the dialog's data has first loaded — the state hooks throw before then.

**Signature:**

```typescript
onSubmit: () => void;
```

### IScheduledEmailDialogShellProps.savingErrorMessage

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

`savingErrorMessage` of the same instance; shown as the body's error message, ahead of the form's validation message.

**Signature:**

```typescript
savingErrorMessage?: string;
```

### IScheduledEmailDialogShellProps.slots

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

Header, action-bar and Filters-tab overrides — the Level 1 slot contract ([IScheduledEmailDialogSlots.Header](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogslots/index.md#ischeduledemaildialogslotsheader), [IScheduledEmailDialogSlots.ActionBar](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogslots/index.md#ischeduledemaildialogslotsactionbar), [IScheduledEmailDialogSlots.Filters](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.ischeduledemaildialogslots/index.md#ischeduledemaildialogslotsfilters)): each slot receives `{ Default, defaultProps }` with the shell's live values. Slot components need a stable reference identity — see . `Filters` is ignored when `filtersTabContent` is passed. The General-tab regions have no slot here: place their blocks ([ScheduledEmailDialogDestination()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-dashboard/sdk-ui-dashboard.scheduledemaildialogdestination/index.md) and siblings) as children instead.

**Signature:**

```typescript
slots?: Pick<IScheduledEmailDialogSlots, "Header" | "ActionBar" | "Filters">;
```

### IScheduledEmailDialogShellProps.topContent

> **Beta API.** Mostly stable, but details may change in a minor release, outside SemVer. See [API maturity](https://www.gooddata.ai/docs/gooddata-ui/latest/integrations/platform/api-maturity/index.md).
> 

Rendered first inside the dialog's scrollable content area, above the selected tab's content.

**Signature:**

```typescript
topContent?: ReactNode;
```
