Skip to main content

syncfusion-angular-popups

Comprehensive guide for implementing Syncfusion Angular popup components including Dialog, Predefined Dialogs and Tooltip. Use this when building modal/modeless dialogs, confirmation popups, forms in dialogs, draggable windows, popovers, tooltips, and overlaid content with custom positioning, animations, WCAG 2.2 accessibility, forms integration, and event handling in Angular applications.

来源信息

仓库
syncfusion/angular-ui-components-skills
最近来源活动
2026年8月11日 05:24
检测到的 SKILL.md 语言
英语
星标
0
分支
1

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
24 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
syncfusion-angular-popups
description
Comprehensive guide for implementing Syncfusion Angular popup components including Dialog, Predefined Dialogs and Tooltip. Use this when building modal/modeless dialogs, confirmation popups, forms in dialogs, draggable windows, popovers, tooltips, and overlaid content with custom positioning, animations, WCAG 2.2 accessibility, forms integration, and event handling in Angular applications.
metadata
{"author":"Syncfusion Inc","version":"34.1.29","category":"Layout"}
# Implementing Syncfusion Angular Popups ## Dialog The Dialog component is a window that displays information to the user and is used to get user input. It supports both **modal dialogs** (blocking parent interaction) and **modeless dialogs** (allowing parent interaction). ### Component Overview #### Key Features - **Modal & Modeless modes** - Block or allow parent interaction - **Templates** - Customizable headers, content, and footers - **Positioning** - 9 built-in positions or custom placement - **Animations** - Smooth open/close effects (Fade, Zoom, Slide) - **Draggable & Resizable** - Allow users to move and resize dialogs - **Forms Integration** - Reactive and template-driven forms - **Accessibility** - Full WCAG 2.2 Level AA support with ARIA - **Keyboard Navigation** - Tab, Escape, Enter, and arrow keys - **Responsive** - Full-screen mode on mobile devices ### Documentation and Navigation Guide When you need to implement Dialog features, follow these references: #### Getting Started 📄 **Read:** [references/dialog-getting-started.md](references/dialog-getting-started.md) - Installation and setup in Angular 21+ - Basic dialog implementation - CSS imports and themes - Opening and closing dialogs - Built-in button support #### Dialog Modes & Types 📄 **Read:** [references/dialog-modal-vs-modeless.md](references/dialog-modal-vs-modeless.md) - Modal dialog behavior (blocks parent interaction) - Modeless dialog behavior (allows parent interaction) - Use cases and when to use each mode - Toggling between modes - Overlay customization and styling #### Content & Templates 📄 **Read:** [references/dialog-templates-and-content.md](references/dialog-templates-and-content.md) - Header templates and customization - Content as strings, HTML, or ng-template - Footer templates with buttons - Using ng-content for dynamic content - Button binding and click events - Dynamic button arrays #### Positioning & Sizing 📄 **Read:** [references/dialog-positioning-and-sizing.md](references/dialog-positioning-and-sizing.md) - Built-in positions (9 locations: Top, Center, Bottom, etc.) - Custom positioning with X, Y coordinates - Width and height configuration - Min/max height constraints - Responsive sizing on different screen sizes - Full-screen mode on mobile devices #### Styling & Customization 📄 **Read:** [references/dialog-styling-and-customization.md](references/dialog-styling-and-customization.md) - CSS class customization (header, content, footer, overlay) - Theme integration (Material, Bootstrap, Tailwind, Fluent) - Dark mode support - Animation effects (Fade, Zoom, SlideLeft, SlideRight, etc.) - Icon customization (close button, resize handles) - RTL (Right-to-Left) language support #### Accessibility & Forms 📄 **Read:** [references/dialog-accessibility-and-forms.md](references/dialog-accessibility-and-forms.md) - WCAG 2.2 Level AA compliance standards - ARIA attributes (aria-labelledby, aria-describedby, aria-modal, aria-grabbed) - Keyboard navigation patterns (Tab, Shift+Tab, Escape, Enter) - Screen reader support and best practices - Form validation with FormValidator - Reactive forms patterns - Template-driven forms patterns - Custom validation rules and error handling #### Interaction & Events 📄 **Read:** [references/dialog-interaction-and-events.md](references/dialog-interaction-and-events.md) - Dialog open/close events - Draggable dialogs (allow users to move dialogs) - Resizable dialogs (allow users to resize) - Button click events and handling - Content interaction patterns - Preventing dialog closure - Focus management - Dialog lifecycle events #### Advanced Patterns 📄 **Read:** [references/dialog-advanced-patterns.md](references/dialog-advanced-patterns.md) - Nested dialogs (dialog within dialog) - Ajax-loaded content dynamically - Utility functions for programmatic creation - Complex layouts (Rich Text Editor, multi-step forms) - Scroll handling and auto-centering - Custom event emitters - Routing integration patterns #### API Reference (Complete) 📄 **Read:** [references/dialog-api-reference.md](references/dialog-api-reference.md) - Complete Dialog API documentation - All valid properties with types and examples - All methods (show, hide, refresh, destroy) - All events (beforeOpen, beforeClose, drag, resize, etc.) - Interfaces and models (AnimationSettingsModel, ButtonPropsModel, etc.) - Valid enumerations (DialogEffect, ResizeDirections) - Official Syncfusion documentation links ### Quick Start Example Here's a minimal example to open a basic modal dialog: ```typescript import { Component, ViewChild } from '@angular/core'; import { DialogModule, DialogComponent } from '@syncfusion/ej2-angular-popups'; @Component({ selector: 'app-root', imports: [DialogModule], template: ` <div id="dialog-container" style="height: 500px;"> <button class="e-control e-btn" (click)="onOpenDialog()"> Open Dialog </button> <ejs-dialog #ejDialog target="#dialog-container" [showCloseIcon]="true" width="400px" content="This is a Dialog content" > <ng-template #header> <div class="e-dlg-header-content"> <span>Dialog Title</span> </div> </ng-template> </ejs-dialog> </div> ` }) export class AppComponent { @ViewChild('ejDialog') ejDialog!: DialogComponent; onOpenDialog(): void { this.ejDialog.show(); } } ``` **CSS:** ```css #dialog-container { height: 500px; } ``` ### Common Patterns #### Pattern 1: Modal Confirmation Dialog ```typescript // Create a modal dialog for confirmation <ejs-dialog [isModal]="true" [showCloseIcon]="true" width="350px" content="Are you sure you want to delete this item?" > <ng-template #footerTemplate> <button class="e-control e-btn e-primary" (click)="onConfirm()"> Yes, Delete </button> <button class="e-control e-btn" (click)="onCancel()"> Cancel </button> </ng-template> </ejs-dialog> ``` #### Pattern 2: Dialog with Form (Reactive Forms) ```typescript // Dialog containing a reactive form <ejs-dialog [showCloseIcon]="true" width="450px"> <form [formGroup]="form"> <div class="e-dlg-content"> <input formControlName="name" placeholder="Enter name" /> <input formControlName="email" placeholder="Enter email" /> </div> </form> <ng-template #footerTemplate> <button class="e-control e-btn e-primary" (click)="onSubmit()"> Submit </button> </ng-template> </ejs-dialog> ``` #### Pattern 3: Positioned Dialog ```typescript // Dialog positioned at a specific location <ejs-dialog [position]="{ X: 100, Y: 50 }" width="400px" content="Positioned Dialog" > </ejs-dialog> ``` ### Key Props Quick Reference | Property | Type | Purpose | Example | |----------|------|---------|---------| | `isModal` | boolean | Block parent interaction | `[isModal]="true"` | | `showCloseIcon` | boolean | Show close button in header | `[showCloseIcon]="true"` | | `width` | string \| number | Set dialog width | `width="400px"` | | `height` | string \| number | Set dialog height | `height="300px"` | | `minHeight` | string \| number | Minimum height constraint | `[minHeight]="200"` | | `position` | PositionDataModel | Set position (X, Y) or preset | `[position]="{ X: 'center', Y: 'center' }"` | | `target` | HTMLElement \| string | Set container element | `target="#container"` | | `content` | string \| HTMLElement | Set content text or HTML | `content="Hello"` | | `header` | string \| HTMLElement | Set header text or element | `header="Title"` | | `buttons` | ButtonPropsModel[] | Add footer buttons | `[buttons]="buttonArray"` | | `closeOnEscape` | boolean | Close on Escape key | `[closeOnEscape]="true"` | | `allowDragging` | boolean | Enable header dragging | `[allowDragging]="true"` | | `enableResize` | boolean | Enable resizing | `[enableResize]="true"` | | `resizeHandles` | ResizeDirections[] | Specify resize directions | `[resizeHandles]="['All']"` | | `cssClass` | string | Custom CSS class(es) | `cssClass="custom-dialog"` | | `animationSettings` | AnimationSettingsModel | Configure animations | `[animationSettings]="{ effect: 'FadeZoom' }"` | | `enablePersistence` | boolean | Save state between reloads | `[enablePersistence]="true"` | | `zIndex` | number | Z-order for layering | `[zIndex]="1000"` | ### Common Use Cases 1. **Confirmation before delete** - Modal dialog asking user to confirm deletion 2. **Form submission** - Dialog with form for user to submit data 3. **Alerts and notifications** - Display important information to users 4. **Multi-step processes** - Use nested dialogs for workflows 5. **Settings panels** - Modeless dialog for settings that don't block interaction 6. **Help and guidance** - Display help content in a draggable dialog 7. **Loading states** - Show progress in a dialog while processing 8. **Error handling** - Display error messages in a modal --- ### Related Skills - [Dialog Animation](references/dialog-styling-and-customization.md) - Customize open/close animations - [Form Validation](references/dialog-accessibility-and-forms.md) - Validate user input in dialogs - [Routing Integration](references/dialog-advanced-patterns.md) - Use dialogs with Angular routing ## Predefined Dialogs This skill covers building alert, confirm, and prompt dialogs using Syncfusion's `DialogUtility` — a zero-template, utility-first approach to displaying modal feedback and user-input dialogs in Angular applications. ### Which Dialog Type? | Need | Dialog Type | API | |------|------------|-----| | Warn/inform user, single OK | Alert | `DialogUtility.alert(...)` | | Ask for confirmation (OK + Cancel) | Confirm | `DialogUtility.confirm(...)` | | Collect user input (HTML content + OK + Cancel) | Prompt | `DialogUtility.confirm(...)` with input in `content` | > **Key insight:** Angular's predefined dialogs have no separate "prompt" method — use `DialogUtility.confirm()` with custom HTML in the `content` property to build a prompt pattern. ### Quick Start ```bash ng add @syncfusion/ej2-angular-popups ``` ```typescript // src/app/app.ts import { Component } from '@angular/core'; import { DialogModule } from '@syncfusion/ej2-angular-popups'; import { ButtonModule } from '@syncfusion/ej2-angular-buttons'; import { DialogUtility } from '@syncfusion/ej2-popups'; @Component({ selector: 'app-root', standalone: true, imports: [DialogModule, ButtonModule], template: ` <button ejs-button cssClass="e-danger" (click)="showAlert()">Alert</button> <button ejs-button cssClass="e-success" (click)="showConfirm()" style="margin-left:8px">Confirm</button> <button ejs-button [isPrimary]="true" (click)="showPrompt()" style="margin-left:8px">Prompt</button> ` }) export class App { showAlert(): void { DialogUtility.alert({ title: 'Warning', content: 'Disk space is running low.', width: '280px' }); } showConfirm(): void { const dlg = DialogUtility.confirm({ title: 'Delete Item', content: 'Are you sure you want to delete this item?', width: '300px', okButton: { text: 'Yes', click: () => { dlg.hide(); /* handle confirm */ } }, cancelButton: { text: 'No', click: () => { dlg.hide(); } } }); } showPrompt(): void { const dlg = DialogUtility.confirm({ title: 'Enter Name', content: '<p>Your name:</p><input id="nameInput" class="e-input" type="text" placeholder="Type here..." />', width: '300px', okButton: { text: 'Submit', click: () => { const value = (document.getElementById('nameInput') as HTMLInputElement).value; dlg.hide(); // use value } },
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看