Hỗ trợ tiếp cận

Tất cả các thành phần picker đều được tích hợp sẵn hỗ trợ tiếp cận. Điều hướng bằng bàn phím, các thuộc tính ARIA và quản lý tiêu điểm hoạt động ngay lập tức trong mọi biến thể — Styled, Tailwind v3/v4 và Headless.

Không cần cấu hình thêm cho việc sử dụng tiêu chuẩn. Trang này ghi lại những gì được bao gồm để bạn có thể kiểm tra, mở rộng hoặc sao chép các mẫu trong giao diện người dùng tùy chỉnh.

Điều hướng bằng bàn phím

Bộ chọn lịch

PhímHành động
ArrowLeftDi chuyển tiêu điểm đến ngày trước đó
ArrowRightDi chuyển tiêu điểm đến ngày tiếp theo
ArrowUpDi chuyển tiêu điểm đến tuần trước (cùng ngày trong tuần)
ArrowDownDi chuyển tiêu điểm đến tuần tiếp theo (cùng ngày trong tuần)
Enter / SpaceChọn ngày đang được tập trung
EscapeHủy các thay đổi và đóng cửa sổ bật lên
TabDi chuyển đến phần tử có thể tập trung tiếp theo (mặc định của trình duyệt)

Bỏ qua ngày bị vô hiệu hóa: Khi điều hướng bằng các phím mũi tên, các ngày bị vô hiệu hóa sẽ tự động được bỏ qua. Bộ chọn sẽ tìm kiếm tối đa 365 ngày theo hướng di chuyển để tìm ngày được bật tiếp theo.

Tự động cuộn tháng: Khi tiêu điểm bàn phím di chuyển đến một ngày trong một tháng khác, chế độ xem lịch sẽ cập nhật để hiển thị tháng đó.

Bộ chọn thời gian

PhímHành động
EscapeHủy các thay đổi và đóng cửa sổ bật lên

Việc chọn thời gian sử dụng giao diện bánh xe cuộn với tương tác nhấp/chạm. Các cột cuộn sử dụng scroll-snap để chọn giá trị chính xác.

Thuộc tính ARIA

Mỗi phần tử tương tác đều có các vai trò và thuộc tính ARIA phù hợp:

Phần tửThuộc tínhGiá trị
Vùng chứa popuprole"dialog"
Vùng chứa nội tuyếnrole"group"
Vùng chứaaria-labelVăn bản giữ chỗ từ bản địa hóa
Vùng chứaaria-activedescendantID của ô ngày hiện đang được tập trung

Nút kích hoạt

Thuộc tínhGiá trị
aria-expandedtrue khi popup đang mở
aria-haspopup"dialog"

Lưới lịch

Phần tửThuộc tínhGiá trị
Trình bao bọc lướirole"grid"
Hàng tuầnrole"row"
Ô tiêu đề ngày trong tuầnrole"columnheader"
Ô ngàyrole"gridcell"
Ô ngàyaria-selectedtrue khi được chọn
Ô ngàyaria-current"date" khi ô là ngày hôm nay
Ô ngàyaria-labelChuỗi ngày được định dạng (ví dụ: "2026-03-04")
Ô ngàydisabledĐặt trên các ngày bị vô hiệu hóa (thuộc tính HTML gốc)

Điều hướng & Danh sách thả xuống

Phần tửThuộc tínhGiá trị
Nút tháng trướcaria-label"Tháng trước" (từ locale.prevMonthLabel)
Nút tháng sauaria-label"Tháng sau" (từ locale.nextMonthLabel)
Danh sách thả xuống thángaria-label"Chọn tháng" (từ locale.selectMonthLabel)
Danh sách thả xuống nămaria-label"Chọn năm" (từ locale.selectYearLabel)

Cột thời gian

Phần tửThuộc tínhGiá trị
Cột giờrole"listbox"
Cột giờaria-orientation"vertical"
Cột giờaria-label"Giờ" (từ locale.hourLabel)
Cột phútrole"listbox"
Cột phútaria-orientation"vertical"
Cột phútaria-label"Phút" (từ locale.minuteLabel)
Cột giâyrole"listbox"
Cột giâyaria-orientation"vertical"
Cột giâyaria-label"Giây" (từ locale.secondLabel)
Mục thời gianrole"option" (các mục đệm: "presentation")
Mục thời gianaria-selectedtrue khi mục là giá trị hiện tại
Nút chuyển đổi buổiaria-labelBuổi hiện tại + ”, chuyển đổi SA/CH”
Nút xóaaria-label"Xóa" (từ locale.clear)

Tất cả các chuỗi nhãn đều có thể tùy chỉnh thông qua hệ thống bản địa hóa.

Quản lý tiêu điểm

Roving Tabindex

Lưới lịch sử dụng mẫu roving tabindex:

  • Chỉ ô ngày hiện đang được tập trung mới có tabIndex={0} (có thể tab tới).
  • Tất cả các ô ngày khác đều có tabIndex={-1} (không thể tab tới, nhưng có thể tập trung bằng các phím mũi tên).
  • Điều này có nghĩa là phím Tab di chuyển tiêu điểm ra khỏi lưới lịch (đến điều khiển tiếp theo), và các phím mũi tên di chuyển tiêu điểm bên trong lưới.

Bẫy tiêu điểm Popup

Chế độ popup sử dụng FloatingFocusManager từ @floating-ui/react để:

  • Bẫy tiêu điểm bên trong popup khi nó đang mở.
  • Trả lại tiêu điểm cho nút kích hoạt khi popup đóng lại.
  • Ngăn chặn việc tab ra khỏi popup đến nội dung nền.

Các phần tử gốc

Việc chọn tháng và năm sử dụng các phần tử <select> gốc, vốn có khả năng truy cập bằng bàn phím. Các ô ngày sử dụng các phần tử <button> gốc với các trạng thái bị vô hiệu hóa phù hợp.

Tuân thủ WCAG 2.1

Các tiêu chí thành công của WCAG 2.