About syncfusion-javascript-popups
syncfusion-javascript-popups is a skill for JavaScript and TypeScript developers using Syncfusion EJ2 popup UI components. It covers dialogs, predefined dialogs, and tooltips, with usage and accessibility guidance.
Key features
- 01Modal and modeless dialogs
- 02Alert, confirm, and prompt dialogs
- 03Tooltips triggered by hover, focus, or click
- 04Animation, dragging, and resizing
- 05Keyboard interaction and accessibility
- 06Multiple theme styles
Use cases
- 01Add confirmation or alert flows to actions
- 02Show guidance when a form field receives focus
- 03Display contextual information for page elements
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ syncfusion/ javascript-ui-controls-skills --skill syncfusion-javascript-popupsAfter installing, type/syncfusion-javascript-popupsin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/dialog-accessibility.mddialog-api.mddialog-dialog-utility.mddialog-events.mddialog-features.mddialog-getting-started.mddialog-how-to.mddialog-templates.mdpredefineddialog-animation.mdpredefineddialog-api.mdpredefineddialog-customization.mdpredefineddialog-dimension.mdpredefineddialog-draggable.mdpredefineddialog-getting-started.mdpredefineddialog-position.mdtooltip-accessibility.mdtooltip-animation.mdtooltip-api.mdtooltip-content.mdtooltip-customization.mdtooltip-getting-started.mdtooltip-how-to.mdtooltip-open-mode.mdtooltip-position.mdDetails
From the project READMESyncfusion EJ2 JavaScript Popups
Overview
The Syncfusion EJ2 JavaScript Popups library provides three essential UI components for building interactive overlay content. Each component is fully documented with TypeScript/JavaScript examples, accessibility guidelines, and common usage patterns.
All components support:
- Accessibility: WCAG 2.2 Level AA, Section 508, ADA compliance
- Themes: Material 3, Bootstrap 5, Fluent, Tailwind 3, Fabric
- APIs: Imperative TypeScript/JavaScript with full event support
- Keyboard: Full keyboard navigation and interaction
Component Overview
Quick Navigation
| Component | Purpose | Package | Files |
|---|---|---|---|
| Dialog | Modal/modeless dialog with templates | ej2-popups | 8 |
| Predefined Dialog | Alert/Confirm/Prompt via DialogUtility | ej2-popups | 7 |
| Tooltip | Contextual popup on hover/focus/click | ej2-popups | 9 |
Package: @syncfusion/ej2-popups
Dialog Component
Purpose: Displays content in an overlay window above the main page, supporting modal/modeless modes, custom templates, action buttons, animations, drag, resize, and built-in utility dialogs (alert/confirm).
Package: @syncfusion/ej2-popups
Quick Example
import { Dialog } from '@syncfusion/ej2-popups';
import { enableRipple } from '@syncfusion/ej2-base';
enableRipple(true);
let dialog: Dialog = new Dialog({
header: 'Welcome',
content: 'This is a simple dialog.',
showCloseIcon: true,
width: '350px',
target: document.body,
buttons: [
{
buttonModel: { content: 'OK', isPrimary: true },
click: () => { dialog.hide(); }
}
]
});
dialog.appendTo('#dialog');
Documentation
- dialog-getting-started.md - Setup and installation
- dialog-templates.md - Header, content, and footer templates
- dialog-features.md - Animation, resize, localization, RTL
- dialog-events.md - All dialog events
- dialog-how-to.md - Common how-to scenarios
- dialog-dialog-utility.md - DialogUtility.alert() and confirm()
- dialog-accessibility.md - WCAG 2.2, ARIA, keyboard
- dialog-api.md - Complete API reference
Predefined Dialog Component
Purpose: Imperative alert, confirm, and prompt dialogs opened via the DialogUtility class. No component instance required—perfect for simple notifications and user confirmations.
Package: @syncfusion/ej2-popups
Quick Example - Alert
import { DialogUtility } from '@syncfusion/ej2-popups';
let dialogObj: any = DialogUtility.alert({
title: 'Low Battery',
content: '10% of battery remaining',
width: '250px',
okButton: { click: () => dialogObj.hide() }
});
Quick Example - Confirm
import { DialogUtility } from '@syncfusion/ej2-popups';
let dialogObj: any = DialogUtility.confirm({
title: 'Delete File',
content: 'Are you sure you want to delete this file?',
okButton: {
text: 'Delete',
click: () => { /* delete logic */ dialogObj.hide(); }
},
cancelButton: {
text: 'Cancel',
click: () => dialogObj.hide()
}
});
Quick Example - Prompt
import { DialogUtility } from '@syncfusion/ej2-popups';
let dialogObj: any = DialogUtility.confirm({
title: 'Enter Name',
content: '<input id="nameInput" class="e-input" placeholder="Your name" />',
okButton: {
text: 'Submit',
click: () => {
const name: string = (document.getElementById('nameInput') as HTMLInputElement).value;
console.log('Name:', name);
dialogObj.hide();
}
}
});
Documentation
- predefineddialog-getting-started.md - Alert, Confirm, Prompt basics
- predefineddialog-animation.md - Animation effects
- predefineddialog-position.md - 9 positions and custom coordinates
- predefineddialog-dimension.md - Width, height, CSS constraints
- predefineddialog-draggable.md - Draggable dialogs
- predefineddialog-customization.md - Button customization, close icon, content
- predefineddialog-api.md - Complete API reference
Tooltip Component
Purpose: Displays contextual popup information when users hover, focus, or click on target elements. Supports 12 positions, multiple open modes, animations, custom content, and full accessibility.
Package: @syncfusion/ej2-popups
Quick Example
import { Tooltip } from '@syncfusion/ej2-popups';
let tooltip: Tooltip = new Tooltip({
content: 'Tooltip Content',
position: 'TopCenter'
});
tooltip.appendTo('#target');
Quick Example - Multiple Targets
import { Tooltip } from '@syncfusion/ej2-popups';
let tooltip: Tooltip = new Tooltip({
target: '.e-info',
position: 'RightCenter'
});
tooltip.appendTo('#container');
HTML:
<div id="container">
<input type="text" class="e-info" title="Please enter your name" />
<input type="email" class="e-info" title="Enter a valid email address" />
</div>
Documentation
- tooltip-getting-started.md - Setup and basic usage
- tooltip-content.md - Content strategies, templates, dynamic loading
- tooltip-position.md - 12 positions, tip pointer, offsets
- tooltip-open-mode.md - Hover, Click, Focus, Custom, Sticky
- tooltip-animation.md - Animation effects
- tooltip-customization.md - CSS customization, themes
- tooltip-how-to.md - Common patterns and solutions
- tooltip-accessibility.md - WCAG 2.2, ARIA, keyboard
- tooltip-api.md - Complete API reference
Installation and Setup
Install the Package
npm install @syncfusion/[email protected] --save
npm audit
Add CSS Theme Imports
/* src/styles.css */
@import '../node_modules/@syncfusion/ej2-base/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/tailwind3.css';
Other available themes: material.css, bootstrap5.css, fluent.css, fabric.css
Common Patterns
Modal Dialog with Confirmation
import { Dialog } from '@syncfusion/ej2-popups';
let dialog: Dialog = new Dialog({
header: 'Confirm Action',
content: 'Are you sure you want to proceed?',
isModal: true,
showCloseIcon: true,
width: '400px',
target: document.body,
buttons: [
{ buttonModel: { content: 'Yes', isPrimary: true }, click: () => { /* action */ dialog.hide(); } },
{ buttonModel: { content: 'No', cssClass: 'e-flat' }, click: () => dialog.hide() }
]
});
dialog.appendTo('#dialog');
Quick Alert Notification
import { DialogUtility } from '@syncfusion/ej2-popups';
DialogUtility.alert('Operation completed successfully!');
Form Validation Tooltip
import { Tooltip } from '@syncfusion/ej2-popups';
let emailTooltip: Tooltip = new Tooltip({
content: 'Please enter a valid email address',
position: 'RightCenter',
opensOn: 'Focus'
});
emailTooltip.appendTo('#email');
Draggable Dialog
import { DialogUtility } from '@syncfusion/ej2-popups';
let dialogObj: any = DialogUtility.alert({
title: 'Draggable',
content: 'Drag me by the header',
isDraggable: true,
okButton: { click: () => dialogObj.hide() }
});
Tooltip on Disabled Elements
import { Tooltip } from '@syncfusion/ej2-popups';
let tooltip: Tooltip = new Tooltip({
content: 'This feature is currently disabled',
position: 'TopCenter'
});
tooltip.appendTo('#disabled-wrapper');
HTML:
<span id="disabled-wrapper" style="display: inline-block;">
<button class="e-btn" disabled>Disabled</button>
</span>
Theme Support
All popup components support the following themes:
| Theme | CSS File |
|---|---|
| Material 3 | material.css |
| Bootstrap 5 | bootstrap5.css |
| Fluent | fluent.css |
| Tailwind 3 | tailwind3.css |
| Fabric | fabric.css |
Accessibility
All popup components comply with WCAG 2.2 Level AA, Section 508, and ADA standards.
Dialog Accessibility
- WAI-ARIA roles and attributes
- Keyboard navigation (Tab, Enter, Escape)
- Focus management
- Screen reader support
Predefined Dialog Accessibility
- Inherits Dialog accessibility features
- Alert, Confirm, and Prompt patterns follow ARIA best practices
- Keyboard navigation for all buttons
Tooltip Accessibility
role="tooltip"witharia-describedbyaria-hiddenfor visibility state- Keyboard support (Escape to close, Focus to open)
- Screen reader announcements
prefers-reduced-motionrespect
Browser Support
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Internet Explorer 11 (with polyfills)
Version Compatibility
| Syncfusion EJ2 Version | Status |
|---|---|
| 33.x.x | Current (Recommended) |
| 32.x.x | Supported |
| 31.x.x | Supported |
| < 30.x.x | Legacy |
Quick Reference
| Need | Component | Method/Property |
|---|---|---|
| Modal dialog | Dialog | isModal: true |
| Draggable dialog | Dialog | allowDragging: true |
| Resizable dialog | Dialog | enableResize: true |
| Quick alert | Predefined Dialog | DialogUtility.alert() |
| Quick confirm | Predefined Dialog | DialogUtility.confirm() |
| Input prompt | Predefined Dialog | DialogUtility.confirm() with <input> |
| Tooltip on hover | Tooltip | opensOn: 'Hover' |
| Tooltip on focus | Tooltip | opensOn: 'Focus' |
| Sticky tooltip | Tooltip | isSticky: true |
| Multiple tooltips | Tooltip | target: '.class-selector' |
Status: ✅ Production Ready
Quality Rating: 9+/10 (Professional Grade)
Coverage: 3 components, 24 reference files