igGrid EditorProviderCheckbox edit on tab

by georgianastasov

HTML

<script src="https://igniteui.com/js/modernizr.min.js"></script>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.core.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.lob.js"></script>
<script src="https://igniteui.com/js/apiviewer.js"></script>
<script src="https://igniteui.com/js-data/northwind"></script>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/themes/infragistics/infragistics.theme.css" rel="stylesheet"></link>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/structure/infragistics.css" rel="stylesheet"></link>
<link href="https://igniteui.com/css/apiviewer.css" rel="stylesheet" type="text/css"></link>

<table id="grid"></table>

CSS

.wrapper {
   display: flex;
   justify-content: center;
   align-items: center;
}

.checkbox {
      width: 20px !important;
      height: 20px !important;
      margin: 0;
      padding: 0;
      display:inline-block;
      overflow:hidden;
      text-align:center;
}

JavaScript

$(function () {
            var titles = ["Sales Representative", "Sales Manager", "Inside Sales Coordinator", "Vice President, Sales"];
            var countries = ["UK", "USA"];

						var northwind = {
            results: [
                {
                    EmployeeID: 1,
                    FirstName: "Nancy",
                    Title: "Sales Representative",
                    BirthDate: "1968-12-08T00:00:00",
                    Country: "USA",
                    PostalCode: "98122",
                    IsActive: true
                },
                {
                    EmployeeID: 2,
                    FirstName: "Andrew",
                    Title: "Vice President, Sales",
                    BirthDate: "1952-02-19T00:00:00",
                    Country: "UK",
                    PostalCode: "WA1 1DP",
                    IsActive: false
                },
                {
                    EmployeeID: 3,
                    FirstName: "Janet",
                    Title: "Sales Manager",
                    BirthDate: "1963-08-30T00:00:00",
                    Country: "USA",
                    PostalCode: "94025",
                    IsActive: true
                }
            ]
        		};
            
        $.ig.EditorProviderCheckbox = $.ig.EditorProvider.extend({
            createEditor: function (callbacks, key, editorOptions, tabIndex, format, element) {
                // Create a wrapper span that contains a checkbox input
                element = element || $('<span class="wrapper"><input type="checkbox" class="checkbox"/></span>');
                // Call parent createEditor
                this._super(callbacks, key, editorOptions, tabIndex, format, element);
                
                // Get the actual checkbox input from the wrapper.
                var $input = element.find("input");
                // Attach keydown event on the input.
                $input.on("keydown", $.proxy(this.keyDown, this));
         ...