# @memberjunction/ng-generic-dialog A flexible, customizable modal dialog component for Angular applications in the MemberJunction framework. Built on Kendo UI Dialog, it provides a consistent way to create modals with standard OK/Cancel buttons and custom action slots. ## Installation ```bash npm install @memberjunction/ng-generic-dialog ``` ## Overview The Generic Dialog wraps Kendo UI's dialog with a standardized API for content projection, configurable buttons, and a data refresh lifecycle. It serves as the foundation for many dialog experiences throughout MemberJunction applications. ```mermaid flowchart TD A["Parent Component"] -->|DialogVisible=true| B["GenericDialogComponent"] B --> C["RefreshData event"] B --> D["Content Projection (body)"] B --> E["custom-actions slot"] B -->|OK clicked| F["DialogClosed(true)"] B -->|Cancel clicked| G["DialogClosed(false)"] style A fill:#2d6a9f,stroke:#1a4971,color:#fff style B fill:#7c5295,stroke:#563a6b,color:#fff style D fill:#2d8659,stroke:#1a5c3a,color:#fff style E fill:#2d8659,stroke:#1a5c3a,color:#fff style F fill:#b8762f,stroke:#8a5722,color:#fff style G fill:#b8762f,stroke:#8a5722,color:#fff ``` ## Usage ### Module Import ```typescript import { GenericDialogModule } from '@memberjunction/ng-generic-dialog'; @NgModule({ imports: [GenericDialogModule] }) export class YourModule {} ``` ### Basic Confirmation Dialog ```html

Are you sure you want to delete this item?

This action cannot be undone.

``` ### Dialog with Custom Actions ```html
Your dialog content here
``` ## API Reference ### Selector `mj-generic-dialog` ### Inputs | Property | Type | Default | Description | |----------|------|---------|-------------| | `DialogTitle` | `string` | `'Default Title'` | Title displayed in the dialog header | | `DialogWidth` | `string` | `'700px'` | Width of the dialog (pixels or percentage) | | `DialogHeight` | `string` | `'450px'` | Height of the dialog (pixels or percentage) | | `DialogVisible` | `boolean` | `false` | Controls dialog visibility. Setting to `true` triggers `RefreshData` | | `ShowOKButton` | `boolean` | `true` | Whether to show the OK button | | `OKButtonText` | `string` | `'OK'` | Text on the OK button | | `ShowCancelButton` | `boolean` | `true` | Whether to show the Cancel button | | `CancelButtonText` | `string` | `'Cancel'` | Text on the Cancel button | ### Outputs | Event | Type | Description | |-------|------|-------------| | `DialogClosed` | `EventEmitter` | `true` if OK was clicked, `false` if Cancel or X | | `RefreshData` | `EventEmitter` | Emitted when dialog becomes visible, for loading fresh data | ### Public Methods | Method | Description | |--------|-------------| | `HandleOKClick()` | Programmatically trigger OK (closes dialog, emits `true`) | | `HandleCancelClick()` | Programmatically trigger Cancel (closes dialog, emits `false`) | ### Content Projection Slots - **Default slot** -- Content displayed in the dialog body - **`custom-actions` slot** -- Buttons projected into the action area (use `custom-actions` attribute) ## Dependencies - `@progress/kendo-angular-dialog` -- Dialog rendering - `@progress/kendo-angular-buttons` -- Button components ## Related Packages - [@memberjunction/ng-find-record](../find-record/README.md) -- Uses generic dialog for record search modal - [@memberjunction/ng-record-selector](../record-selector/README.md) -- Uses generic dialog for record selection modal