JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://mleibman.github.io/SlickGrid/lib/jquery.event.drag-2.2.js"></script>
<script src="https://mleibman.github.io/SlickGrid/slick.core.js"></script>
<script src="https://mleibman.github.io/SlickGrid/slick.grid.js"></script>
<link rel="stylesheet" href="https://mleibman.github.io/SlickGrid/slick.grid.css">
<script src="https://mleibman.github.io/SlickGrid/slick.dataview.js"></script>
<div id="myGrid" style="width: 600px; height: 500px;"></div>
CSS
body{
font-size:10px;
}
.s-hidden {
visibility:hidden;
padding-right:10px;
}
.select {
cursor:pointer;
display:inline-block;
position:relative;
font:normal 11px/22px Arial, Sans-Serif;
color:black;
border:1px solid #ccc;
}
.styledSelect {
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
background-color:white;
padding:0 10px;
font-weight:bold;
}
.styledSelect:after {
content:"";
width:0;
height:0;
border:5px solid transparent;
border-color:black transparent transparent transparent;
position:absolute;
top:9px;
right:6px;
}
.styledSelect:active, .styledSelect.active {
background-color:#eee;
}
.options {
display:none;
position:absolute;
top:100%;
right:0;
left:0;
z-index:999;
margin:0 0;
padding:0 0;
list-style:none;
border:1px solid #ccc;
background-color:white;
-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
}
.options li {
padding:0 6px;
margin:0 0;
padding:0 10px;
}
.options li:hover {
background-color:#39f;
color:white;
}
.slick-headerrow-column.l3.r3 {
overflow: unset;
}
JavaScript
var grid;
var dataView;
var buttonFormat = function (row, cell, value, columnDef, dataContext) {
return "";
}
var columns = [
{id: "title", name: "Title", field: "title"},
{id: "term", name: "Term", field: "term"},
{id: "%", name: "% Complete", field: "percentComplete"},
{id: "detail", name: "Detail", field: "detail",formatter: buttonFormat}
];
var options = {
rowHeight: 25,
editable: false,
enableAddRow: false,
enableCellNavigation: true,
forceFitColumns: false,
headerrowheight:60,
multiColumnSort: true,
showHeaderRow: true,
explicitInitialization: true
};
$(function () {
var data = [];
for (var i = 0; i < 30; i++) {
var days = Math.round(Math.random() * 10);
data[i] = {
id: i ,
title: "Task " + i,
term: days + " days",
percentComplete: Math.round(Math.random() * 100),
description: "We are working hard " + days + " days!",
detail: null,
toString:function(){
var str = "";
str += "Title:" + this.title + "<br/>";
str += "Term:" + this.term + "<br/>";
str += "Comp:" + this.percentComplete + "<br/>";
str += "<b>" + this.description + "</b>";
return str;
}
};
}
dataView = new Slick.Data.DataView();
dataView.beginUpdate();
dataView.setItems(data);
dataView.endUpdate();
grid = new Slick.Grid("#myGrid", dataView, columns, options);
grid.onClick.subscribe(function (e, args) {
if ($(e.target).hasClass("btn")) {
var item = dataView.getItem(args.row);
openDialog(item);
}
e.stopImmediatePropagation();
});
grid.onHeaderRowCellRendered.subscribe(function(e, args) {
$(args.node).empty();
if(args.column.id=="detail"){
$("<select style='width: 70px;'><option...