Handsontable example

HTML

<div>
  <div id="example3" class="hot as-you-type-demo handsontable htRowHeaders htColumnHeaders"></div>
</div>

CSS

.handsontable.as-you-type-demo tr:first-child th {
  vertical-align: bottom;
}

.handsontable.as-you-type-demo th > div.filterHeader {
  border-top: 1px solid #CCC;
}

.handsontable.as-you-type-demo th > div.filterHeader > input {
  width: calc(100% - 10px);
  box-shadow: none;
  border: 1px solid #CCC;
  margin-top: 1px;
}

#externalFilter {
  display: none;
  margin-left: 10px;
  -ms-user-select: none; /* Internet Explorer/Edge */
  user-select: none;
  margin-bottom: 50px;
}

#externalFilter > .button-holder {
  position: relative;
}

#externalFilter > .button-holder .buttons {
  left: 5px;
}

#externalFilter > .demo-columnChoose,
#externalFilter > .demo-columnChoose > select,
#externalFilter > .demo-filterSelect {
  width: 200px;
}

#externalFilter > .demo-columnChoose > select {
  display: block;
  margin: 2px 0px 10px 0px;
}

#externalFilter > .demo-filterSelect {
  border: 1px solid #cccccc;
  max-height: 200px;
  overflow: auto;
}

#externalFilter > .demo-filterSelect > .demo-controllers {
  font-weight: bold;
  border-bottom: 1px solid #cccccc;
  background-color: rgb(243, 243, 243);
  padding: 2px 0px;
}

#externalFilter > .demo-filterSelect > .demo-controllers {
  padding: 5px;
}

#externalFilter > .demo-filterSelect > .demo-items {
  padding: 5px;
}

#externalFilter > .demo-filterSelect > .demo-items > .demo-item > label:before {
  content: ' ';
  white-space: pre;
}

#externalFilter > .button-holder {
  margin-top: 10px;
}


</style><!-- Ugly Hack due to jsFiddle issue -->

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handsontable.full.min.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/handsontable.full.min.css">

JavaScript

var dataObj = [
    ['12/1/2015', 23],
    ['5/12/2015', 6],
    ['10/23/2015', 26],
    ['12/1/2014', 98],
    ['12/1/2016', 8.5]
  ];
  
  var hot = new Handsontable(document.getElementById('example3'), {
    data: dataObj,
    colHeaders: true,
    rowHeaders: true,
    columns: [
    	{
      	header: 'Date',
      	type: 'date',
        format: 'M/D/YYYY'
      },
      {
      	header: 'Number',
        type: 'numeric'
      }
    ],
    className: 'as-you-type-demo',
    filters: true,
    dropdownMenu: true,
    afterFilter: function(){
    	console.log(arguments)
    },    
    colWidths: 100
  });
  
	//hot.getPlugin('filters').addCondition(0, 'lt', ['1/1/2016'], 'conjunction');
  	hot.getPlugin('filters').addCondition(0, 'date_before', ['1/1/2015'], 'conjunction');
  hot.getPlugin('filters').filter();