diff --git a/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridColumn.java b/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridColumn.java index 9e6d2ac43..3ec22c9c5 100644 --- a/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridColumn.java +++ b/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridColumn.java @@ -5,6 +5,7 @@ import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.query.client.js.JsUtils; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.vaadin.client.widgets.Grid.Column; import com.vaadin.components.common.js.JS; import com.vaadin.components.common.js.JS.Setter; @@ -14,6 +15,7 @@ import com.vaadin.components.grid.config.JSColumn; import com.vaadin.components.grid.config.JSStaticCell; import com.vaadin.components.grid.data.DataItemContainer; +import com.vaadin.components.grid.data.GridDomTableDataSource; import com.vaadin.shared.ui.grid.GridConstants; public final class GridColumn extends Column { @@ -32,6 +34,17 @@ public static GridColumn addColumn(JSColumn jsColumn, private GridColumn(JSColumn jsColumn, GridComponent gridComponent) { this.jsColumn = jsColumn; this.gridComponent = gridComponent; + + // Default renderer + setRenderer((cell, data) -> { + String innerHTML = JS.isUndefinedOrNull(data) ? "" : data + .toString(); + innerHTML = gridComponent.getDataSource() instanceof GridDomTableDataSource ? innerHTML + : SafeHtmlUtils.htmlEscape(innerHTML); + cell.getElement().setInnerHTML( + "" + + innerHTML + ""); + }); } private JSStaticCell getDefaultHeaderCellReference() { diff --git a/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridLightDomTable.java b/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridLightDomTable.java index da89e817e..18222f6d2 100644 --- a/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridLightDomTable.java +++ b/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridLightDomTable.java @@ -4,7 +4,6 @@ import java.util.List; -import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Element; import com.google.gwt.query.client.Function; import com.google.gwt.query.client.GQuery; @@ -138,16 +137,6 @@ private void configureColumnsFromDom(GQuery columns) { jsSortOrder.setColumn(i); sortOrders.add(jsSortOrder); } - column.setRenderer(JsUtils.wrapFunction(new Function() { - @Override - public void f() { - JavaScriptObject cell = arguments(0); - Element element = JsUtils.prop(cell, "element"); - Object data = JsUtils.prop(cell, "data"); - element.setInnerHTML(data != null ? String.valueOf(data) - : ""); - } - })); String headerHtml = JSValidate.String.attr($th, "header-text", $th.html(), $th.html()); diff --git a/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridStaticSection.java b/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridStaticSection.java index c18ed99f4..a053da05e 100644 --- a/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridStaticSection.java +++ b/vaadin-components-gwt/src/main/java/com/vaadin/components/grid/table/GridStaticSection.java @@ -52,16 +52,20 @@ public JSStaticCell obtainJSStaticCell(StaticCell cell) { bind(jsCell, cell, "colspan", v -> cell.setColspan(((Double) v).intValue())); bind(jsCell, cell, "className", v -> cell.setStyleName((String) v)); - bind(jsCell, cell, "content", v -> { - if (v == null) { - cell.setHtml(null); - } else if (JS.isPrimitiveType(v) || v instanceof Number) { - cell.setHtml(String.valueOf(v)); - } else if (JsUtils.isElement(v)) { - cell.setWidget(new SimplePanel((Element) v) { + bind(jsCell, + cell, + "content", + v -> { + if (v == null) { + cell.setHtml(null); + } else if (JS.isPrimitiveType(v) || v instanceof Number) { + cell.setHtml("" + + String.valueOf(v) + ""); + } else if (JsUtils.isElement(v)) { + cell.setWidget(new SimplePanel((Element) v) { + }); + } }); - } - }); cells.put(cell, jsCell); } diff --git a/vaadin-components-gwt/src/main/webapp/vaadin-grid/vaadin-grid.html b/vaadin-components-gwt/src/main/webapp/vaadin-grid/vaadin-grid.html index e4e476514..7c05f9aec 100644 --- a/vaadin-components-gwt/src/main/webapp/vaadin-grid/vaadin-grid.html +++ b/vaadin-components-gwt/src/main/webapp/vaadin-grid/vaadin-grid.html @@ -85,26 +85,14 @@ } .v-grid-cell { - display: inline-block; - text-align: left; + display: -webkit-inline-flex; + display: inline-flex; + -webkit-align-items: center; + align-items: center; box-sizing: border-box; - overflow: hidden; - text-overflow: ellipsis; background: #fff; } - - .v-grid-cell:before { - content: ""; - height: 100%; - } - .v-grid-cell.v-grid *, - .v-grid-cell.v-grid:before, - .v-grid-cell.v-grid:after { - display: inline-block; - vertical-align: middle; - } - :host > div { position: relative; outline: none; @@ -372,10 +360,6 @@ -webkit-transform: scale(0.8); transform: scale(0.8); transition: all 180ms cubic-bezier(0.75,.0,0.25,1); - - /* The following is a Firefox specific property - that intentionally disables the splash to avoid a bug */ - -moz-appearance: scrollbar; } input[type="checkbox"] + label:active:before {