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.
What this skill does
# 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 #footer>
<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 #footer>
<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 | Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing โ use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.