Browse Source

adds simple fix for missing label text in grid select checkboxes (#10223)

* adds simple fix for missing label text in grid select checkboxes

* updated comment and wording
tags/8.2.0.alpha3
Knoobie 6 years ago
parent
commit
d0dde67c18

+ 12
- 0
client/src/main/java/com/vaadin/client/widget/grid/selection/MultiSelectionRenderer.java View File



CheckBoxEventHandler handler = new CheckBoxEventHandler(checkBox); CheckBoxEventHandler handler = new CheckBoxEventHandler(checkBox);


// label of checkbox should only be visible for assistive devices
checkBox.addStyleName("v-assistive-device-only-label");

// Sink events // Sink events
checkBox.sinkBitlessEvent(BrowserEvents.MOUSEDOWN); checkBox.sinkBitlessEvent(BrowserEvents.MOUSEDOWN);
checkBox.sinkBitlessEvent(BrowserEvents.TOUCHSTART); checkBox.sinkBitlessEvent(BrowserEvents.TOUCHSTART);
public void render(final RendererCellReference cell, final Boolean data, public void render(final RendererCellReference cell, final Boolean data,
CheckBox checkBox) { CheckBox checkBox) {
checkBox.setValue(data, false); checkBox.setValue(data, false);
// this should be a temp fix.
checkBox.setText("Selects row number " + getDOMRowIndex(cell) + ".");
checkBox.setEnabled(grid.isEnabled() && !grid.isEditorActive()); checkBox.setEnabled(grid.isEnabled() && !grid.isEditorActive());
} }


private int getDOMRowIndex(RendererCellReference cell){
// getRowIndex starts with zero, that's why we add an additional 1.
// getDOMRowIndex should include getHeaderRows as well, this number
// should be equals to aria-rowindex.
return cell.getGrid().getHeaderRowCount() + cell.getRowIndex() + 1;
}

@Override @Override
public Collection<String> getConsumedEvents() { public Collection<String> getConsumedEvents() {
final HashSet<String> events = new HashSet<>(); final HashSet<String> events = new HashSet<>();

+ 3
- 0
client/src/main/java/com/vaadin/client/widgets/Grid.java View File

selectAllCheckBox = GWT.create(CheckBox.class); selectAllCheckBox = GWT.create(CheckBox.class);
selectAllCheckBox.setStylePrimaryName( selectAllCheckBox.setStylePrimaryName(
getStylePrimaryName() + SELECT_ALL_CHECKBOX_CLASSNAME); getStylePrimaryName() + SELECT_ALL_CHECKBOX_CLASSNAME);
// label of checkbox should only be visible for assistive devices
selectAllCheckBox.addStyleName("v-assistive-device-only-label");
selectAllCheckBox.addValueChangeHandler(event -> { selectAllCheckBox.addValueChangeHandler(event -> {
selected = event.getValue(); selected = event.getValue();
fireEvent(new SelectAllEvent<>(getSelectionModel(), fireEvent(new SelectAllEvent<>(getSelectionModel(),
selected)); selected));
}); });
selectAllCheckBox.setText("Selects all rows of the table.");
selectAllCheckBox.setValue(selected); selectAllCheckBox.setValue(selected);


addHeaderClickHandler(this::onHeaderClickEvent); addHeaderClickHandler(this::onHeaderClickEvent);

+ 1
- 1
themes/src/main/themes/VAADIN/themes/valo/shared/_global.scss View File

overflow:auto; overflow:auto;
} }


.v-assistive-device-only {
.v-assistive-device-only, .v-assistive-device-only-label label {
position: absolute; position: absolute;
top: -2000px; top: -2000px;
left: -2000px; left: -2000px;

Loading…
Cancel
Save