mirror of
https://github.com/docmost/docmost.git
synced 2026-05-08 07:13:06 +08:00
feat(client): improve accessibility with ARIA labels and semantics
- Add aria-label to icon-only ActionIcon triggers across tree, comments, share, group, breadcrumbs, templates, AI chat, API keys, and spaces - Give custom clickable divs/spans (color swatches, status swatches, load-more, PDF error, comment selection) role="button", tabIndex, and keyboard handlers - Add listbox/combobox semantics (role, aria-selected, aria-activedescendant) to slash menu, emoji menu, mention list, and link editor results - Add aria-haspopup/aria-expanded to bubble-menu triggers (node, text align, color) and status badge - Add aria-label to Modal.Root/Dialog instances that lack a title prop (page history, template preview, trash preview, drawio, comment, find-and-replace, page verification) - Add en-US translations for new aria-label strings
This commit is contained in:
@@ -25,6 +25,7 @@ export default function CopyTextButton({ text, size }: CopyProps) {
|
||||
variant="subtle"
|
||||
onClick={copy}
|
||||
size={size}
|
||||
aria-label={copied ? t("Copied") : t("Copy")}
|
||||
>
|
||||
{copied ? <IconCheck size={16} /> : <IconCopy size={16} />}
|
||||
</ActionIcon>
|
||||
|
||||
@@ -74,7 +74,18 @@ export function PageChildren({
|
||||
/>
|
||||
))}
|
||||
{hasNextPage && (
|
||||
<div className={classes.loadMore} onClick={() => fetchNextPage()}>
|
||||
<div
|
||||
className={classes.loadMore}
|
||||
onClick={() => fetchNextPage()}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === "Enter" || e.key === " ") {
|
||||
e.preventDefault();
|
||||
fetchNextPage();
|
||||
}
|
||||
}}
|
||||
role="button"
|
||||
tabIndex={0}
|
||||
>
|
||||
{t("Load more")}
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -70,11 +70,14 @@ function EmojiPicker({
|
||||
closeOnEscape={true}
|
||||
>
|
||||
<Popover.Target ref={setTarget}>
|
||||
<ActionIcon
|
||||
c={actionIconProps?.c || "gray"}
|
||||
variant={actionIconProps?.variant || "transparent"}
|
||||
<ActionIcon
|
||||
c={actionIconProps?.c || "gray"}
|
||||
variant={actionIconProps?.variant || "transparent"}
|
||||
size={actionIconProps?.size}
|
||||
onClick={handlers.toggle}
|
||||
aria-label={t("Pick emoji")}
|
||||
aria-haspopup="dialog"
|
||||
aria-expanded={opened}
|
||||
>
|
||||
{icon}
|
||||
</ActionIcon>
|
||||
|
||||
Reference in New Issue
Block a user