@conectate/ct-dialog v4.4.15
@conectate/ct-dialog
A versatile dialog component system with multiple animation styles, confirmations, prompts, loading indicators, and more. Built with Web Components for maximum compatibility.
Table of Contents
- Installation
- Components
- Basic Usage
- Component API
- Dialog Types
- Styling
- Accessibility
- Follow Me
- Contributing
- License
Installation
Install via npm, yarn, or pnpm:
# npm
npm i @conectate/ct-dialog
# yarn
yarn add @conectate/ct-dialog
# pnpm
pnpm i @conectate/ct-dialogComponents
This package includes several dialog components:
| Component | Description |
|---|---|
ct-dialog | Base dialog component with multiple animation types |
ct-card-dialog | Dialog with card styling |
ct-loading | Loading dialog with spinner |
ct-promp | Prompt dialog for text input |
ct-confirm | Confirmation dialog with customizable buttons |
ct-confirm-cupertino | iOS-styled confirmation dialog |
Basic Usage
Base Dialog
import { showCtDialog, closeCtDialog } from "@conectate/ct-dialog";
// Create content for the dialog
const content = document.createElement('div');
content.innerHTML = `
<h2>Dialog Title</h2>
<p>This is a custom dialog content.</p>
<button onclick="closeCtDialog()">Close</button>
`;
// Show the dialog
const dialog = showCtDialog(content);
// Configure dialog animation
dialog.setAnimation('slide-right');
// Close programmatically
dialog.close();
// Or close by ID
closeCtDialog(dialog);Card Dialog
import { showCtCardDialog } from "@conectate/ct-dialog";
// Create content for the card dialog
const content = document.createElement('div');
content.innerHTML = `
<h2>Card Title</h2>
<p>This is card content with nice styling.</p>
<button>Close</button>
`;
// Show the card dialog
const dialog = showCtCardDialog(content);Loading Dialog
import { showCtLoading } from "@conectate/ct-dialog";
// Show a loading dialog
const loadingDialog = showCtLoading();
// Show a loading dialog with custom text
const customLoadingDialog = showCtLoading(undefined, 'Processing');
// Async operation example
async function fetchData() {
const loading = showCtLoading(undefined, 'Fetching data');
try {
await fetch('/api/data');
} finally {
loading.close();
}
}Prompt Dialog
import { showCtPrompt } from "@conectate/ct-dialog";
// Basic prompt
async function getName() {
const name = await showCtPrompt("Enter Name", "Please enter your name:");
console.log("Name:", name);
}
// Prompt with custom buttons and options
async function getEmail() {
const email = await showCtPrompt(
"Email Address",
"Please provide your email:",
"Submit",
"Cancel",
undefined,
{
label: "Email",
placeholder: "user@example.com",
value: "default@example.com"
}
);
if (email) {
console.log("Email provided:", email);
} else {
console.log("User canceled prompt");
}
}Confirmation Dialog
import { showCtConfirm, showCtConfirmCupertino } from "@conectate/ct-dialog";
// Standard Material Design confirmation
async function confirmAction() {
const confirmed = await showCtConfirm(
"Confirm Action",
"Are you sure you want to proceed?",
"Yes",
"No"
);
if (confirmed) {
// User clicked "Yes"
performAction();
}
}
// Three-option dialog
async function chooseAction() {
const result = await showCtConfirm(
"Choose Action",
"What would you like to do?",
"Save",
"Delete",
"Cancel"
);
if (result === true) {
// User clicked "Save"
saveData();
} else if (result === false) {
// User clicked "Delete"
deleteData();
} else {
// User clicked "Cancel"
console.log("Action canceled");
}
}
// iOS-style confirmation
async function confirmIOS() {
const confirmed = await showCtConfirmCupertino(
"Confirm Action",
"Are you sure you want to proceed?",
"Yes",
"No"
);
}Component API
ct-dialog
The base dialog component that all other dialogs build upon.
Functions
| Function | Description | Parameters | Returns |
|---|---|---|---|
showCtDialog() | Opens a dialog with the provided element as content | element: HTMLElement, id?: string, history?: ConectateHistory | CtDialog |
closeCtDialog() | Closes a specific dialog or all dialogs | dialog?: CtDialog | Promise<void> |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
type | string | "alert" | Animation type for the dialog |
interactiveDismissDisabled | boolean | false | Prevents closing by clicking outside |
role | string | "alert" | ARIA role for the dialog |
Methods
| Method | Description | Parameters |
|---|---|---|
show() | Shows the dialog | - |
close() | Closes the dialog | event?: Event, source?: string |
setAnimation() | Sets the animation type | type: string |
fullscreenMode() | Makes the dialog fullscreen | - |
fullsizeMode() | Makes the dialog 80% of window size | - |
enableHistoryAPI() | Enables or disables browser history integration | value: boolean |
ct-card-dialog
A card-styled dialog component.
Functions
| Function | Description | Parameters | Returns |
|---|---|---|---|
showCtCardDialog() | Opens a card-styled dialog | element: HTMLElement, id?: string, history?: ConectateHistory | CtDialog |
ct-loading
A loading dialog with a spinner.
Functions
| Function | Description | Parameters | Returns |
|---|---|---|---|
showCtLoading() | Shows a loading dialog | id?: string, text?: string | CtDialog |
showCtLoading2() | Shows a loading dialog and returns the component | id?: string, text?: string | CtLoading |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
ttl | string | "Loading" | Text to display next to the spinner |
ct-promp
A dialog with an input field for user input.
Functions
| Function | Description | Parameters | Returns |
|---|---|---|---|
showCtPrompt() | Shows a prompt dialog | title: string, body: string\|TemplateResult, ok?: string, cancel?: string, neutral?: string, options?: PromptOptions | Promise<string\|undefined> |
Options
| Option | Type | Default | Description |
|---|---|---|---|
wordwrap | boolean | false | Whether to wrap text in the body |
value | string | - | Initial value for the input |
label | string | - | Label for the input |
placeholder | string | - | Placeholder text |
rawplaceholder | string | - | Raw placeholder text |
ct-confirm
A confirmation dialog with customizable buttons.
Functions
| Function | Description | Parameters | Returns |
|---|---|---|---|
showCtConfirm() | Shows a standard confirmation dialog | title: string, body: string, ok?: string, cancel?: string, neutral?: string, options?: { history?: boolean } | Promise<boolean\|null\|undefined> |
showCtConfirmCupertino() | Shows an iOS-styled confirmation dialog | title: string, body: string, ok?: string, cancel?: string, neutral?: string | Promise<boolean\|null\|undefined> |
Return Values
| Value | Description |
|---|---|
true | User clicked the positive button (ok) |
false | User clicked the negative button (cancel) |
null | User clicked the neutral button |
undefined | Dialog was dismissed in another way |
Dialog Types
The ct-dialog component supports different animation and display styles:
| Type | Description |
|---|---|
alert | Standard modal dialog (default) |
cupertino | iOS-style dialog animation |
slide-right | Dialog slides in from the right |
slide-left | Dialog slides in from the left |
bottom-sheet | Dialog slides up from the bottom |
const dialog = showCtDialog(content);
dialog.setAnimation('bottom-sheet');Styling
You can customize the dialog using CSS variables:
ct-dialog {
--ct-dialog-width: 600px; /* Dialog width */
--ct-dialog-height: auto; /* Dialog height */
--ct-dialog-background: white; /* Dialog background color */
--ct-dialog-border-radius: 8px; /* Dialog border radius */
--ct-dialog-box-shadow: 0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12); /* Dialog shadow */
}
ct-card-dialog {
--border-radius: 16px; /* Card border radius */
--color-background: #fff; /* Card background color */
--color-on-surface: #333; /* Card text color */
--color-primary: #2cb5e8; /* Scrollbar color */
}Accessibility
The dialog component supports accessibility features including:
- ARIA roles and attributes
- Focus management
- Keyboard navigation (Escape to close)
Follow Me
https://dev.to/herberthobregon
Contributing
- Fork the repo
- Create a new branch:
git checkout -b feature-branch - Commit your changes:
git commit -m 'Add new feature' - Push to your branch:
git push origin feature-branch - Open a pull request!
License
See LICENSE
10 months ago
10 months ago
7 months ago
7 months ago
8 months ago
7 months ago
8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
