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에서 보기