Skip to content

Commit

Permalink
fix: support Enhanced, Selection by clicking row and Arrow selection …
Browse files Browse the repository at this point in the history
…simultaneously

Close #64
  • Loading branch information
flang authored and javier-godoy committed Jun 23, 2023
1 parent 0886943 commit a4ad7f3
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,13 @@ void enableEnhancedSelection() {

return;
}
} else if (isSpecialKey) {
} else if (isSpecialKey && !GridHelper.isSelectOnClick(grid)) {
if (grid.asMultiSelect().isSelected(clickedItem)) {
grid.deselect(clickedItem);
} else {
grid.select(clickedItem);
}
} else {
} else if (!GridHelper.isSelectOnClick(grid)) {
grid.asMultiSelect().clear();
grid.select(clickedItem);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public final class GridHelper<T> implements Serializable {
private static final Logger logger = LoggerFactory.getLogger(GridHelper.class);

private static final String ARROW_SELECTION_PROPERTY = "_fcghArrowSelection";
private static final String ENHANCED_SELECTION_PROPERTY = "_fcghEnhancedSelection";

public static final String GRID_STYLES = "./fcGridHelper/vaadin-grid.css";

Expand Down Expand Up @@ -118,8 +119,8 @@ private void onAttach(AttachEvent event) {
}

private void onItemClick(ItemClickEvent<T> event) {
T item = event.getItem();
if (selectOnClick && getSelectionMode(grid) == SelectionMode.MULTI) {
T item = event.getItem();
// https://cookbook.vaadin.com/grid-conditional-select
if (!selectionFilterHelper.canSelect(item)) {
return;
Expand Down Expand Up @@ -172,10 +173,6 @@ public void setClassNameGenerator(SerializableFunction<T, String> classNameGener
// Select on click
public static void setSelectOnClick(Grid<?> grid, boolean selectOnClick) {
getHelper(grid).selectOnClick = selectOnClick;
if (selectOnClick && GridHelper.isEnhancedSelectionEnabled(grid)) {
logger.warn(
"Please disable Enhanced Selection feature when enabling Select On Click to avoid unwanted side effects.");
}
}

public static boolean isSelectOnClick(Grid<?> grid) {
Expand All @@ -186,12 +183,7 @@ public static boolean isSelectOnClick(Grid<?> grid) {

/** Allows Grid rows to be selected using up/down arrow keys. */
public static void setArrowSelectionEnabled(Grid<?> grid, boolean value) {
getHelper(grid);
grid.getElement().setProperty(ARROW_SELECTION_PROPERTY, value);
if (value && GridHelper.isEnhancedSelectionEnabled(grid)) {
logger.warn(
"Please disable Enhanced Selection feature when enabling Arrow Selection to avoid unwanted side effects.");
}
}

/** Returns whether Grid rows can be selected using up/down arrow keys. */
Expand Down Expand Up @@ -362,13 +354,9 @@ public static String getFooter(Grid<?> grid, Column<?> column) {
* @param enabled
*/
public static final void setEnhancedSelectionEnabled(Grid<?> grid, boolean enabled) {
grid.getElement().setProperty(ENHANCED_SELECTION_PROPERTY, enabled);
if (enabled) {
getHelper(grid).enhancedSelectionGridHelper.enableEnhancedSelection();

if (GridHelper.isArrowSelectionEnabled(grid) || GridHelper.isSelectOnClick(grid)) {
logger.warn(
"Please disable Arrow Selection and Select On Click features when enabling Enhanced Selection to avoid unwanted side effects.");
}
} else {
getHelper(grid).enhancedSelectionGridHelper.disableEnhancedSelection();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import { Grid } from '@vaadin/grid/src/vaadin-grid.js';
//https://cookbook.vaadin.com/grid-arrow-selection
grid.addEventListener('keyup', function(e) {
if (e.keyCode == 32) return;
if (!grid._fcghArrowSelection) return;
if (!grid._fcghArrowSelection || grid._fcghEnhancedSelection) return;
if (grid.selectedItems){
grid.activeItem=grid.getEventContext(e).item;
grid.selectedItems=[grid.getEventContext(e).item];
Expand Down

0 comments on commit a4ad7f3

Please sign in to comment.