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.

Informations de source

Dépôt
syncfusion/angular-ui-components-skills
Dernière activité de la source
11 août 2026 à 05:24
Langue détectée de SKILL.md
anglais
Étoiles
0
Forks
1

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
24 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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 } },
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub