Dễ tiếp cận từ đầu
Tiêu điểm được giữ trong hộp thoại rồi trả về chỗ cũ, Escape và click nền đã nối sẵn, vai trò ARIA được đặt giúp bạn. Bộ dò tiêu điểm bỏ qua những phần tử chỉ trông như nhận được tiêu điểm.
Mã nguồn mở · Giấy phép MIT · Không phụ thuộc lúc chạy
Forge Dialog là thư viện hộp thoại TypeScript không phụ thuộc, xây trên
phần tử <dialog> của trình duyệt. Dễ tiếp cận từ đầu, tuỳ biến được tới
từng thành phần, và nhẹ tới mức bản chỉ có alert vẫn dưới 6 KB sau gzip.
npm install forgedialog
Mọi thứ dưới đây đều nằm trong gói đã phát hành — không plugin phải cài, không peer dependency phải thoả mãn.
Tiêu điểm được giữ trong hộp thoại rồi trả về chỗ cũ, Escape và click nền đã nối sẵn, vai trò ARIA được đặt giúp bạn. Bộ dò tiêu điểm bỏ qua những phần tử chỉ trông như nhận được tiêu điểm.
Màu và độ mờ riêng cho nền, tiêu đề, nội dung, và viền. Bo góc theo từng góc. Đổ bóng ghép từ góc chiếu, khoảng cách, độ nhoè, và độ đậm.
Đổi kiểu khi hover (tự chọn bật) kèm nhấc lên và phóng to. Hộp thoại kéo được, có khoá trục, giới hạn vùng, di chuyển bằng bàn phím, và nhớ vị trí. Bottom sheet vuốt để đóng.
Drawer, bottom sheet, lightbox, trạng thái tải, toast, bảng lệnh, và wizard phân nhánh có lưu trạng thái — tất cả từ cùng một lõi.
Các điểm vào tree-shake được, có hạn mức gzip bắt buộc. Import
forgedialog/alert thì bạn trả cho một alert, không phải cả thư viện.
ESM, CJS, và biến toàn cục cho trình duyệt, kèm adapter cho React, Vue, Svelte, và Web Components. Có kiểu đầy đủ, an toàn với SSR, và chạy sạch dưới CSP nghiêm ngặt.
Đổi bất cứ thứ gì bên dưới và hộp thoại đổi kiểu ngay. Đoạn mã cập nhật theo — chép nó là bạn có đúng hộp thoại đó trong ứng dụng của mình.
The everyday calls. Each returns a promise, so there is no callback nesting.
import { alert, confirm, prompt } from 'forgedialog';
import 'forgedialog/style.css';
await alert('Saved successfully.', { title: 'Success' });
const ok = await confirm('Delete this item?');
const name = await prompt('What is your name?', {
validate: (value) => value.trim() ? true : 'Name is required',
});
import { open } from 'forgedialog';
const dialog = open({
title: 'Custom dialog',
content: (container) => container.append(renderForm()),
buttons: [
{ text: 'Cancel', onClick: (i) => i.close(null) },
{ text: 'Save', role: 'primary', onClick: (i) => i.close(read()) },
],
});
const result = await dialog.whenClosed();
// Just an alert, and nothing else.
import { alert } from 'forgedialog/alert';
import 'forgedialog/style/core.css';
// Opt into the richer appearance options on a focused entry.
import 'forgedialog/appearance';
import { drawer, toast, wizard } from 'forgedialog';
// A duration of 0 keeps the toast until dismiss() is called.
const upload = toast('Uploading…', { duration: 0 });
drawer({ title: 'Settings', side: 'right', content: renderSettings });
const data = await wizard({ steps }).result;
Bản ngắn gọn, thuần dữ kiện — các con số lấy từ hạn mức kích thước được kiểm tra ở mỗi pull request.
| Tên | Forge Dialog |
|---|---|
| Gói npm | forgedialog |
| Giấy phép | MIT |
| Phụ thuộc lúc chạy | Không có |
| Kích thước | ≈15 KB sau gzip cho bản đầy đủ; ≈5.5 KB cho bản chỉ có alert |
| Viết bằng | TypeScript, có kiểu cho cả ESM lẫn CommonJS |
| Trình duyệt | Chrome/Edge 88+, Firefox 78+, Safari 15.4+ |
| Node.js | 20 trở lên, cho công cụ đóng gói và import phía máy chủ |
| Framework | Chạy độc lập; có adapter cho React, Vue, Svelte, và Web Components |
| Mã nguồn | github.com/cmm-cmm/ForgeDialog |
Forge Dialog là thư viện TypeScript mã nguồn mở để dựng hộp thoại trên web: alert, confirm, prompt, drawer, bottom sheet, lightbox, trạng thái tải, toast, bảng lệnh, và wizard nhiều bước. Nó không có phụ thuộc lúc chạy và được phát hành trên npm với tên forgedialog.
Bản đầy đủ khoảng 15 KB sau gzip. Ứng dụng chỉ import forgedialog/alert thì chỉ tốn khoảng 5,5 KB sau gzip, vì mọi điểm vào đều tree-shake được và đều có hạn mức kích thước được kiểm tra tự động ở mỗi pull request.
Không. Nó chạy độc lập bằng JavaScript thuần, và có sẵn adapter cho React, Vue, Svelte, và Web Components nếu bạn muốn dùng.
Có. Nó dùng phần tử <dialog> của trình duyệt, giữ tiêu điểm bên
trong hộp thoại rồi trả về phần tử đã mở nó, xử lý Escape và click nền, và tự đặt
role="dialog" hoặc role="alertdialog" tuỳ loại.
Các hàm dựng sẵn của trình duyệt chặn luồng chính, không tạo kiểu được, và chỉ có ba hình dạng cố định. Forge Dialog trả về promise thay vì chặn, tạo kiểu được tới từng thành phần, và còn có drawer, bottom sheet, biểu mẫu, và wizard.
Có. Màu và độ mờ đặt riêng cho nền, tiêu đề, nội dung, và viền; bo góc theo từng góc; đổ bóng ghép từ góc chiếu, khoảng cách, độ nhoè, và độ đậm; cùng hiệu ứng hover tự chọn có nhấc lên và phóng to.
Chrome và Edge 88+, Firefox 78+, Safari 15.4+, cùng Node.js 20 trở lên cho công cụ đóng gói và import phía máy chủ. Bản build không chứa eval hay new Function, nên chạy được dưới Content Security Policy nghiêm ngặt.
Có. Forge Dialog phát hành theo giấy phép MIT, cho phép dùng thương mại, sửa đổi, và phân phối lại.
Forge Dialog xây trên phần tử <dialog> của trình duyệt, nên việc
giữ tiêu điểm, lớp trên cùng, và vô hiệu hoá nền là do nền tảng lo chứ không phải
JavaScript. Nó không có phụ thuộc lúc chạy, trong khi Bootstrap modal cần CSS và
JavaScript của Bootstrap. Mọi điểm vào đều tree-shake được, nên ứng dụng chỉ cần alert
chỉ tốn khoảng 5,5 KB sau gzip thay vì cả thư viện. Nó viết bằng TypeScript và có kiểu
cho cả ESM lẫn CommonJS.