Skip to content

Commit 0cbc6fa

Browse files
authored
[WC-2595] Add aria label for select all, rework 3 state checkbox (#1573)
2 parents 1a93feb + 71e7052 commit 0cbc6fa

File tree

14 files changed

+105
-49
lines changed

14 files changed

+105
-49
lines changed

packages/pluggableWidgets/datagrid-web/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66

77
## [Unreleased]
88

9+
### Added
10+
11+
- We improved accessibility by making it possible to specify label for Select all checkbox.
12+
913
### Fixed
1014

1115
- We fixed an issue with column selector popup positioning.

packages/pluggableWidgets/datagrid-web/src/Datagrid.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ const Container = observer((props: Props): ReactElement => {
109109
exportDialogLabel={props.exportDialogLabel?.value}
110110
cancelExportLabel={props.cancelExportLabel?.value}
111111
selectRowLabel={props.selectRowLabel?.value}
112+
selectAllRowsLabel={props.selectAllRowsLabel?.value}
112113
visibleColumns={columnsStore.visibleColumns}
113114
availableColumns={columnsStore.availableColumns}
114115
setIsResizing={(status: boolean) => columnsStore.setIsResizing(status)}

packages/pluggableWidgets/datagrid-web/src/Datagrid.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,13 @@
420420
<translation lang="en_US">Select row</translation>
421421
</translations>
422422
</property>
423+
<property key="selectAllRowsLabel" type="textTemplate" required="false">
424+
<caption>Select all row</caption>
425+
<description>If selection is enabled, assistive technology will read this upon reaching 'Select all' checkbox.</description>
426+
<translations>
427+
<translation lang="en_US">Select all rows</translation>
428+
</translations>
429+
</property>
423430
</propertyGroup>
424431
</propertyGroup>
425432
</properties>

packages/pluggableWidgets/datagrid-web/src/components/CheckboxColumnHeader.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import { ThreeStateCheckBox } from "@mendix/widget-plugin-grid/components/ThreeStateCheckBox";
2-
import { Fragment, ReactElement, createElement } from "react";
1+
import { ThreeStateCheckBox } from "@mendix/widget-plugin-component-kit/ThreeStateCheckBox";
2+
import { Fragment, ReactElement, createElement, useCallback } from "react";
33
import { useWidgetProps } from "../helpers/useWidgetProps";
44

55
export function CheckboxColumnHeader(): ReactElement {
6-
const { selectActionHelper, selectionStatus } = useWidgetProps();
6+
const { selectActionHelper, selectionStatus, selectAllRowsLabel } = useWidgetProps();
77
const { showCheckboxColumn, showSelectAllToggle, onSelectAll } = selectActionHelper;
88

9+
const onChange = useCallback(() => onSelectAll(), [onSelectAll]);
10+
911
if (showCheckboxColumn === false) {
1012
return <Fragment />;
1113
}
@@ -17,7 +19,13 @@ export function CheckboxColumnHeader(): ReactElement {
1719
throw new Error("Don't know how to render checkbox with selectionStatus=unknown");
1820
}
1921

20-
checkbox = <ThreeStateCheckBox value={selectionStatus} onChange={onSelectAll} />;
22+
checkbox = (
23+
<ThreeStateCheckBox
24+
value={selectionStatus}
25+
onChange={onChange}
26+
aria-label={selectAllRowsLabel ?? "Select all rows"}
27+
/>
28+
);
2129
}
2230

2331
return (

packages/pluggableWidgets/datagrid-web/src/components/Widget.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export interface WidgetProps<C extends GridColumn, T extends ObjectItem = Object
6464
exportDialogLabel?: string;
6565
cancelExportLabel?: string;
6666
selectRowLabel?: string;
67+
selectAllRowsLabel?: string;
6768
isLoading: boolean;
6869
isFetchingNextBatch: boolean;
6970
loadingType: LoadingTypeEnum;

packages/pluggableWidgets/datagrid-web/typings/DatagridProps.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ export interface DatagridContainerProps {
145145
exportDialogLabel?: DynamicValue<string>;
146146
cancelExportLabel?: DynamicValue<string>;
147147
selectRowLabel?: DynamicValue<string>;
148+
selectAllRowsLabel?: DynamicValue<string>;
148149
}
149150

150151
export interface DatagridPreviewProps {
@@ -194,4 +195,5 @@ export interface DatagridPreviewProps {
194195
exportDialogLabel: string;
195196
cancelExportLabel: string;
196197
selectRowLabel: string;
198+
selectAllRowsLabel: string;
197199
}

packages/pluggableWidgets/selection-helper-web/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66

77
## [Unreleased]
88

9+
### Changed
10+
11+
- Internal improvements.
12+
913
## [1.0.3] - 2023-10-13
1014

1115
### Fixed

packages/pluggableWidgets/selection-helper-web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@mendix/selection-helper-web",
33
"widgetName": "SelectionHelper",
4-
"version": "1.0.3",
4+
"version": "1.0.4",
55
"description": "",
66
"copyright": "© Mendix Technology BV 2025. All rights reserved.",
77
"license": "Apache-2.0",

packages/pluggableWidgets/selection-helper-web/src/components/SelectionHelperComponent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { createElement, CSSProperties, ReactElement, ReactNode, useMemo } from "react";
2-
import { ThreeStateCheckBox } from "@mendix/widget-plugin-grid/components/ThreeStateCheckBox";
2+
import { ThreeStateCheckBox } from "@mendix/widget-plugin-component-kit/ThreeStateCheckBox";
33

44
interface Props {
55
type: "checkbox" | "custom";

packages/pluggableWidgets/selection-helper-web/src/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<package xmlns="http://www.mendix.com/package/1.0/">
3-
<clientModule name="SelectionHelper" version="1.0.3" xmlns="http://www.mendix.com/clientModule/1.0/">
3+
<clientModule name="SelectionHelper" version="1.0.4" xmlns="http://www.mendix.com/clientModule/1.0/">
44
<widgetFiles>
55
<widgetFile path="SelectionHelper.xml" />
66
</widgetFiles>

0 commit comments

Comments
 (0)