Skip to content

Commit

Permalink
fix datatable selection column rendering issue
Browse files Browse the repository at this point in the history
  • Loading branch information
vegegoku committed Nov 21, 2024
1 parent 2a2c994 commit 607e7c7
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
package org.dominokit.domino.ui.datatable;

import static java.util.Objects.nonNull;
import static org.dominokit.domino.ui.utils.Domino.*;

import elemental2.dom.HTMLTableCellElement;
import elemental2.dom.Node;
import java.util.Optional;
import org.dominokit.domino.ui.forms.validations.ValidationResult;

/**
Expand Down Expand Up @@ -49,6 +49,7 @@ class CellInfo<T> {
private final HTMLTableCellElement element;
private DirtyRecordHandler<T> dirtyRecordHandler = dirty -> {};
private CellValidator cellValidator = ValidationResult::valid;
private ColumnConfig<T> columnConfig;

/**
* Creates a new cell information instance.
Expand All @@ -59,6 +60,20 @@ class CellInfo<T> {
public CellInfo(TableRow<T> tableRow, HTMLTableCellElement element) {
this.tableRow = tableRow;
this.element = element;
this.columnConfig = null;
}

/**
* Creates a new cell information instance.
*
* @param tableRow the table row containing the cell.
* @param element the HTML element representation of the cell.
*/
public CellInfo(
TableRow<T> tableRow, ColumnConfig<T> columnConfig, HTMLTableCellElement element) {
this.tableRow = tableRow;
this.element = element;
this.columnConfig = columnConfig;
}

/**
Expand Down Expand Up @@ -88,6 +103,11 @@ public T getRecord() {
return tableRow.getRecord();
}

/** @return The column config the cell belongs to. */
public Optional<ColumnConfig<T>> getColumnConfig() {
return Optional.ofNullable(columnConfig);
}

/**
* Invokes the handler for updating a dirty record.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,46 @@
package org.dominokit.domino.ui.datatable;

import static java.util.Objects.nonNull;
import static org.dominokit.domino.ui.utils.Domino.*;
import static org.dominokit.domino.ui.utils.Domino.div;
import static org.dominokit.domino.ui.utils.Domino.table;
import static org.dominokit.domino.ui.utils.Domino.tbody;
import static org.dominokit.domino.ui.utils.Domino.tfoot;
import static org.dominokit.domino.ui.utils.Domino.thead;

import elemental2.dom.DomGlobal;
import elemental2.dom.EventListener;
import elemental2.dom.HTMLDivElement;
import elemental2.dom.Node;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import org.dominokit.domino.ui.IsElement;
import org.dominokit.domino.ui.datatable.events.*;
import org.dominokit.domino.ui.datatable.events.DataSortEvent;
import org.dominokit.domino.ui.datatable.events.OnBeforeDataChangeEvent;
import org.dominokit.domino.ui.datatable.events.SelectAllEvent;
import org.dominokit.domino.ui.datatable.events.TableDataUpdatedEvent;
import org.dominokit.domino.ui.datatable.events.TableEvent;
import org.dominokit.domino.ui.datatable.events.TableEventListener;
import org.dominokit.domino.ui.datatable.model.SearchContext;
import org.dominokit.domino.ui.datatable.store.DataStore;
import org.dominokit.domino.ui.elements.*;
import org.dominokit.domino.ui.elements.DivElement;
import org.dominokit.domino.ui.elements.TBodyElement;
import org.dominokit.domino.ui.elements.TFootElement;
import org.dominokit.domino.ui.elements.THeadElement;
import org.dominokit.domino.ui.elements.TableElement;
import org.dominokit.domino.ui.events.EventType;
import org.dominokit.domino.ui.style.BooleanCssClass;
import org.dominokit.domino.ui.utils.*;
import org.dominokit.domino.ui.utils.BaseDominoElement;
import org.dominokit.domino.ui.utils.ChildHandler;
import org.dominokit.domino.ui.utils.DynamicStyleSheet;
import org.dominokit.domino.ui.utils.HasSelectionListeners;
import org.dominokit.domino.ui.utils.HasSelectionSupport;

/**
* Represents a flexible and feature-rich data table for displaying and interacting with data. The
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import static java.util.Objects.nonNull;
import static org.dominokit.domino.ui.utils.ElementsFactory.elements;

import elemental2.dom.DOMRect;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -102,6 +103,28 @@ public class TableConfig<T>
.addCss(dui_datatable_utility_element)
.appendChild(node));
});

cellInfo
.getColumnConfig()
.ifPresent(
columnConfig -> {
if (cellInfo
.getTableRow()
.getDataTable()
.getTableConfig()
.isFixed()) {
DOMRect domRect =
columnConfig
.getHeadElement()
.element()
.getBoundingClientRect();
elements
.elementOf(cellInfo.getElement())
.setCssProperty("width", domRect.width + "px")
.setCssProperty("min-width", domRect.width + "px")
.setCssProperty("max-width", domRect.width + "px");
}
});
})
.element();
});
Expand Down

0 comments on commit 607e7c7

Please sign in to comment.