JSFiddle - React, Tailwind, and code Playground

by L T

HTML

<script src="//cdn.jsdelivr.net/interact.js/1.2.6/interact.min.js"></script>
<script src="https://drive.google.com/uc?export=download&amp;id=0ByUQqnidnRkFZmpTVW9YWkhjN0k"></script>
<div id="interactGridTest"></div>

CSS

table.kanban-grid {
  overflow: hidden;
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}

table.kanban-grid tr:nth-child(even) {
  background-color: #eeeeee;
}
table.kanban-grid tr:nth-child(odd) {
  background-color: #cecece;
}
 
table.kanban-grid td {
  position: relative;
  padding: 10px;
}
table.kanban-grid th {
  position: relative;
  background-color: #0275d8;
  color: white;
  padding: 10px;
}

table.kanban-grid th.hovered {
    background-color: #66b3ff;
}

div.info-div {
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    padding: 10px;
    background-color: #ff9933;
    color: white;
    min-width: 150px;
    position: fixed;
    right: 0;
    opacity: 0.8;
    z-index: 1000;
}

div.kanban-item {
    font-size: 12px;
    margin-bottom: 5px;
    background-color: orange;
    border-radius: 5px;
    box-shadow: 5px 5px 5px #888888;
}
div.kanban-item .header, div.kanban-item .content, div.kanban-item .footer, div.kanban-item .hidden {
    padding: 5px 10;
}
div.kanban-item .header {
    background-color: azure;
}
div.kanban-item .footer {
    font-size: 10px;
    text-align: right;
}

div.kanban-item div.hidden {
    display: none;
}

div.kanban-item label {
    padding-right: 5px;
    color: #333333;
}

#drag-1, #drag-2 {
  width: 25%;
  height: 20%;
  min-height: 6.5em;
  margin: 10%;

  background-color: #29e;
  color: white;

  border-radius: 0.75em;
  padding: 4%;

  -webkit-transform: translate(0px, 0px);
          transform: translate(0px, 0px);
}

#drag-me::before {
  content: "#" attr(id);
  font-weight: bold;
}

JavaScript

var parameters = {
    fieldList: [
        {name: "Id", map: "id", location: "hidden"},
        {name: "Summary", map: "title", location: "header", link: "http://examplelink.com/{id}"},
        {name: "Issue State", map: "state", location: "content", cssClass: "state"},
        {name: "Owner", map: "assignee", location: "content"},
        {name: "Priority", map: "priority", location: "footer"},
        {name: "Last Changed", map: "lastEdit", location: "footer"}
    ],
    source: [
        {id: "12", title: "Go to the laundry", state: "Created", assignee: "Tyrion", priority: 9, lastEdit: "2016.06.06"},
        {id: "13", title: "Feed the dog", state: "Ready", assignee: "Arya", priority: 4, lastEdit: "2016.06.11"},
        {id: "14", title: "Dishwashing", state: "InProgress", assignee: "Tyrion", priority: 6, lastEdit: "2016.06.03"},
        {id: "15", title: "Mowing", state: "Created", assignee: "Unassigned", priority: 2, lastEdit: "2016.06.01"},
        {id: "16", title: "Cooking", state: "Ready", assignee: "Unassigned", priority: 4, lastEdit: "2016.06.24"}
    ],
    config: {
        columnField: "state",
        columns: [{name: "Created", value: 0, limit: 3}, {name: "InProgress", value: 1, limit: 3}, {name: "Ready", value: 2, limit: 3}, {name: "Archived", value: 3, limit: 0}],
        rowField: "assignee",
        rows: [{name: "Unassigned", value: 'ua', limit: 3}, {name: "Tyrion", value: 13, limit: 3}, {name: "Arya", value: 17, limit: 3}],
        colorField: "priority",
        colorValues: {1: "#33cc33", 2: "#33cc33", 3: "#33cc33", 4: "yellow", 5: "yellow", 6: "yellow", 7: "yellow", 8: "#ffcccc", 9: "#ffcccc", 10: "#ffcccc"},
        zeroLimitColor: "#ffcccc",
        transactionUrl: "serverOk.html",
        //transactionUrl: "serverError.html",
        transactionCallback: function (droppedItem) {
            // if returns false then element gets back to its original position
            return true;
        }
    }
}

var kg = kanbanGrid(parameters,...