From 1b6f749eddf1b90d0362c4d3c924740a64ebb405 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sun, 29 Oct 2017 17:16:52 +0530 Subject: [PATCH] Cleanup styles for editing --- lib/frappe-datatable.js | 31 +++++++++++++++----- lib/frappe-datatable.js.map | 2 +- src/datatable.js | 26 ++++++++++++----- src/style.scss | 58 +++++++++++++++++++++++-------------- 4 files changed, 79 insertions(+), 38 deletions(-) diff --git a/lib/frappe-datatable.js b/lib/frappe-datatable.js index 356e79b..cfd5870 100644 --- a/lib/frappe-datatable.js +++ b/lib/frappe-datatable.js @@ -377,10 +377,14 @@ var DataTable = function () { 'margin-top': this.header.height() + 1 + 'px' }); - // hide edit cells by default - this.setStyle('.data-table .body-scrollable .edit-cell', { - display: 'none' - }); + // center align Sr. No column + if (this.options.addSerialNoColumn) { + var index = this.getSerialColumnIndex(); + + this.setStyle('.data-table [data-col-index="' + index + '"]', { + 'text-align': 'center' + }); + } this.bodyScrollable.find('.table').css('margin', 0); } @@ -420,7 +424,6 @@ var DataTable = function () { $(document.body).on('keypress', function (e) { // enter keypress on focused cell if (e.which === 13 && _this2.$focusedCell && !_this2.$editingCell) { - _this2.log('editingCell'); _this2.activateEditing(_this2.$focusedCell); e.stopImmediatePropagation(); } @@ -437,7 +440,9 @@ var DataTable = function () { $(document.body).on('click', function (e) { if ($(e.target).is('.edit-cell, .edit-cell *')) return; - self.bodyScrollable.find('.edit-cell').hide(); + if (!_this2.$editingCell) return; + + _this2.$editingCell.removeClass('editing'); _this2.$editingCell = null; }); } @@ -466,6 +471,8 @@ var DataTable = function () { } this.$editingCell = $cell; + $cell.addClass('editing'); + var $editCell = $cell.find('.edit-cell').empty(); var cell = this.getCell(rowIndex, colIndex); var editing = this.getEditingObject(colIndex, rowIndex, cell.content, $editCell); @@ -474,7 +481,6 @@ var DataTable = function () { this.currentCellEditing = editing; // initialize editing input with cell value editing.initValue(cell.content); - $editCell.show(); } } }, { @@ -839,6 +845,15 @@ var DataTable = function () { value: function getTotalRows() { return this.datamanager.getRowCount(); } + }, { + key: 'getSerialColumnIndex', + value: function getSerialColumnIndex() { + var columns = this.datamanager.getColumns(); + + return columns.findIndex(function (column) { + return column.content.includes('Sr. No'); + }); + } }, { key: 'log', value: function log() { @@ -1368,7 +1383,7 @@ exports = module.exports = __webpack_require__(6)(undefined); // module -exports.push([module.i, ".table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent; }\n .table th,\n .table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #e9ecef; }\n .table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #e9ecef; }\n .table tbody + tbody {\n border-top: 2px solid #e9ecef; }\n .table .table {\n background-color: #fff; }\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem; }\n\n.table-bordered {\n border: 1px solid #e9ecef; }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #e9ecef; }\n .table-bordered thead th,\n .table-bordered thead td {\n border-bottom-width: 2px; }\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05); }\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff; }\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff; }\n .table-hover .table-primary:hover > td,\n .table-hover .table-primary:hover > th {\n background-color: #9fcdff; }\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #dddfe2; }\n\n.table-hover .table-secondary:hover {\n background-color: #cfd2d6; }\n .table-hover .table-secondary:hover > td,\n .table-hover .table-secondary:hover > th {\n background-color: #cfd2d6; }\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb; }\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb; }\n .table-hover .table-success:hover > td,\n .table-hover .table-success:hover > th {\n background-color: #b1dfbb; }\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb; }\n\n.table-hover .table-info:hover {\n background-color: #abdde5; }\n .table-hover .table-info:hover > td,\n .table-hover .table-info:hover > th {\n background-color: #abdde5; }\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba; }\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1; }\n .table-hover .table-warning:hover > td,\n .table-hover .table-warning:hover > th {\n background-color: #ffe8a1; }\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb; }\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7; }\n .table-hover .table-danger:hover > td,\n .table-hover .table-danger:hover > th {\n background-color: #f1b0b7; }\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe; }\n\n.table-hover .table-light:hover {\n background-color: #ececf6; }\n .table-hover .table-light:hover > td,\n .table-hover .table-light:hover > th {\n background-color: #ececf6; }\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca; }\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe; }\n .table-hover .table-dark:hover > td,\n .table-hover .table-dark:hover > th {\n background-color: #b9bbbe; }\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n .table-hover .table-active:hover > td,\n .table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.thead-inverse th {\n color: #fff;\n background-color: #212529; }\n\n.thead-default th {\n color: #495057;\n background-color: #e9ecef; }\n\n.table-inverse {\n color: #fff;\n background-color: #212529; }\n .table-inverse th,\n .table-inverse td,\n .table-inverse thead th {\n border-color: #32383e; }\n .table-inverse.table-bordered {\n border: 0; }\n .table-inverse.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05); }\n .table-inverse.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075); }\n\n@media (max-width: 991px) {\n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive.table-bordered {\n border: 0; } }\n\n.data-table {\n width: 100%;\n position: relative;\n overflow: auto; }\n .data-table .table {\n border-collapse: collapse; }\n .data-table .table > thead > tr > td, .data-table .table > tbody > tr > td {\n padding: 0; }\n\n.body-scrollable {\n max-height: 500px;\n overflow: auto;\n border-bottom: 1px solid #e9ecef; }\n\n.data-table-header {\n position: absolute;\n top: 0;\n left: 0;\n background-color: white;\n font-weight: bold;\n cursor: col-resize; }\n .data-table-header .content span {\n cursor: pointer; }\n .data-table-header .sort-indicator {\n position: absolute;\n right: 8px;\n top: 9px; }\n\n.data-table-col {\n position: relative; }\n .data-table-col .content {\n padding: 8px;\n border: 1px solid transparent; }\n .data-table-col.selected .content {\n border: 1px solid #007bff; }\n .data-table-col .content.ellipsis {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden; }\n\n.data-table-row.row-highlight {\n background-color: #f8f9fa; }\n\n.edit-cell {\n position: absolute;\n top: -1px;\n left: -1px;\n background: white;\n z-index: 1; }\n .edit-cell input {\n outline: none;\n padding: 8px;\n font-size: inherit;\n font-family: inherit;\n width: inherit;\n height: inherit;\n border: 2px solid #007bff; }\n\n.noselect {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n", ""]); +exports.push([module.i, "*,\n*::before,\n*::after {\n box-sizing: border-box; }\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent; }\n\n@-ms-viewport {\n width: device-width; }\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block; }\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff; }\n\n[tabindex=\"-1\"]:focus {\n outline: none !important; }\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible; }\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem; }\n\np {\n margin-top: 0;\n margin-bottom: 1rem; }\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0; }\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit; }\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem; }\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0; }\n\ndt {\n font-weight: bold; }\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; }\n\nblockquote {\n margin: 0 0 1rem; }\n\ndfn {\n font-style: italic; }\n\nb,\nstrong {\n font-weight: bolder; }\n\nsmall {\n font-size: 80%; }\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline; }\n\nsub {\n bottom: -.25em; }\n\nsup {\n top: -.5em; }\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects; }\n a:hover {\n color: #0056b3;\n text-decoration: underline; }\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none; }\n a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none; }\n a:not([href]):not([tabindex]):focus {\n outline: 0; }\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto; }\n\nfigure {\n margin: 0 0 1rem; }\n\nimg {\n vertical-align: middle;\n border-style: none; }\n\nsvg:not(:root) {\n overflow: hidden; }\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation; }\n\ntable {\n border-collapse: collapse; }\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom; }\n\nth {\n text-align: inherit; }\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem; }\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color; }\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit; }\n\nbutton,\ninput {\n overflow: visible; }\n\nbutton,\nselect {\n text-transform: none; }\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; }\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none; }\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0; }\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox; }\n\ntextarea {\n overflow: auto;\n resize: vertical; }\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0; }\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal; }\n\nprogress {\n vertical-align: baseline; }\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none; }\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button; }\n\noutput {\n display: inline-block; }\n\nsummary {\n display: list-item; }\n\ntemplate {\n display: none; }\n\n[hidden] {\n display: none !important; }\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent; }\n .table th,\n .table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #e9ecef; }\n .table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #e9ecef; }\n .table tbody + tbody {\n border-top: 2px solid #e9ecef; }\n .table .table {\n background-color: #fff; }\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem; }\n\n.table-bordered {\n border: 1px solid #e9ecef; }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #e9ecef; }\n .table-bordered thead th,\n .table-bordered thead td {\n border-bottom-width: 2px; }\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05); }\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff; }\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff; }\n .table-hover .table-primary:hover > td,\n .table-hover .table-primary:hover > th {\n background-color: #9fcdff; }\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #dddfe2; }\n\n.table-hover .table-secondary:hover {\n background-color: #cfd2d6; }\n .table-hover .table-secondary:hover > td,\n .table-hover .table-secondary:hover > th {\n background-color: #cfd2d6; }\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb; }\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb; }\n .table-hover .table-success:hover > td,\n .table-hover .table-success:hover > th {\n background-color: #b1dfbb; }\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb; }\n\n.table-hover .table-info:hover {\n background-color: #abdde5; }\n .table-hover .table-info:hover > td,\n .table-hover .table-info:hover > th {\n background-color: #abdde5; }\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba; }\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1; }\n .table-hover .table-warning:hover > td,\n .table-hover .table-warning:hover > th {\n background-color: #ffe8a1; }\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb; }\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7; }\n .table-hover .table-danger:hover > td,\n .table-hover .table-danger:hover > th {\n background-color: #f1b0b7; }\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe; }\n\n.table-hover .table-light:hover {\n background-color: #ececf6; }\n .table-hover .table-light:hover > td,\n .table-hover .table-light:hover > th {\n background-color: #ececf6; }\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca; }\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe; }\n .table-hover .table-dark:hover > td,\n .table-hover .table-dark:hover > th {\n background-color: #b9bbbe; }\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n .table-hover .table-active:hover > td,\n .table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.thead-inverse th {\n color: #fff;\n background-color: #212529; }\n\n.thead-default th {\n color: #495057;\n background-color: #e9ecef; }\n\n.table-inverse {\n color: #fff;\n background-color: #212529; }\n .table-inverse th,\n .table-inverse td,\n .table-inverse thead th {\n border-color: #32383e; }\n .table-inverse.table-bordered {\n border: 0; }\n .table-inverse.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05); }\n .table-inverse.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075); }\n\n@media (max-width: 991px) {\n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive.table-bordered {\n border: 0; } }\n\n.data-table * {\n outline: none; }\n\n.data-table {\n width: 100%;\n position: relative;\n overflow: auto; }\n .data-table .table {\n border-collapse: collapse; }\n .data-table .table > thead > tr > td, .data-table .table > tbody > tr > td {\n padding: 0; }\n\n.body-scrollable {\n max-height: 500px;\n overflow: auto;\n border-bottom: 1px solid #e9ecef; }\n\n.data-table-header {\n position: absolute;\n top: 0;\n left: 0;\n background-color: white;\n font-weight: bold;\n cursor: col-resize; }\n .data-table-header .content span {\n cursor: pointer; }\n .data-table-header .sort-indicator {\n position: absolute;\n right: 8px;\n top: 9px; }\n\n.data-table-col {\n position: relative; }\n .data-table-col .content {\n padding: 8px;\n border: 1px solid transparent; }\n .data-table-col .content.ellipsis {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden; }\n .data-table-col .edit-cell {\n display: none;\n position: absolute;\n padding: 8px;\n background: #fff;\n z-index: 1;\n height: 100%; }\n .data-table-col .edit-cell input {\n outline: none;\n width: 100%;\n border: none;\n height: 1em; }\n .data-table-col.selected .content {\n border: 1px solid #007bff; }\n .data-table-col.editing .content {\n display: none; }\n .data-table-col.editing .edit-cell {\n border: 2px solid #007bff;\n display: block; }\n\n.data-table-row.row-highlight {\n background-color: #f8f9fa; }\n\n.noselect {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n", ""]); // exports diff --git a/lib/frappe-datatable.js.map b/lib/frappe-datatable.js.map index b264758..df1f043 100644 --- a/lib/frappe-datatable.js.map +++ b/lib/frappe-datatable.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 3a24e7423e04f37bd94e","webpack:///./src/index.js","webpack:///./src/datatable.js","webpack:///./src/utils.js","webpack:///./src/datamanager.js","webpack:///./src/style.scss?3ec1","webpack:///./src/style.scss","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./package.json"],"names":["__version__","version","DEFAULT_OPTIONS","events","data","columns","rows","editing","addSerialNoColumn","addCheckboxColumn","enableClusterize","enableLogs","DataTable","wrapper","options","$","length","Error","Object","assign","checkMap","datamanager","refresh","html","header","find","bodyScrollable","footer","init","render","appendRows","makeDom","makeStyle","bindEvents","renderHeader","renderBody","setDimensions","getColumns","renderBodyWithClusterize","renderBodyHTML","getRows","self","start","pageLength","end","initialData","getDataForClusterize","clusterize","Clusterize","scrollElem","get","contentElem","callbacks","clusterChanged","highlightCheckedRows","log","appendRemainingData","dataAppended","promises","rowCount","getRowCount","push","appendNextPagePromise","reduce","prev","cur","then","Promise","resolve","setTimeout","append","map","row","rowIndex","colIndex","value","cell","getCell","content","refreshCell","selector","$cell","$newCell","replaceWith","bindFocusCell","bindEditCell","bindResizeColumn","bindSortColumn","bindCheckbox","css","width","margin","minWidthMap","each","col","parseInt","attr","height","getCellAttr","minWidth","getColumnMinWidth","setColumnWidth","setDefaultCellHeight","setBodyWidth","setStyle","display","$focusedCell","on","removeClass","addClass","$editingCell","activateEditing","document","body","e","which","stopImmediatePropagation","submitEditing","target","is","hide","getColumn","editable","_rowIndex","_colIndex","$editCell","empty","getEditingObject","currentCellEditing","initValue","show","parent","$input","val","getValue","setValue","done","updateCell","isDragging","$currCell","startWidth","startX","resizable","pageX","finalWidth","setColumnHeaderWidth","closest","sortOrder","sortable","text","onSort","sortRows","refreshRows","$checkbox","isHeader","checked","checkAll","checkRow","c","filter","undefined","getCheckedRows","toggle","prop","highlightRow","Array","from","getTotalRows","highlightAll","$row","toggleClass","availableWidth","headerWidth","deltaWidth","getColumnCount","getColumnHeaderElement","rule","styleMap","styles","$style","prependTo","getRow","console","apply","arguments","camelCaseToDash","str","replace","g","toLowerCase","makeDataAttributeString","props","keys","key","_key","join","trim","getEditCellHTML","getColumnHTML","column","dataAttr","editCellHTML","format","getRowHTML","getHeaderHTML","$header","getBodyHTML","prepareColumn","i","prepareColumns","_columns","prepareRowHeader","prepareRow","prepareRows","getDefault","a","b","escapeRegExp","getCSSString","style","hasOwnProperty","getCSSRuleBlock","namespaceSelector","buildCSSRule","cssRulesString","rulePatternStr","rulePattern","RegExp","match","property","propPattern","propertyStr","valueStr","replacer","DataManager","currentSort","sortBy","isArray","TypeError","_serialNoColumnAdded","concat","_checkboxColumnAdded","index","_getNextRowCount","_rows","reverseArray","sort","_aIndex","_bIndex","_a","_b","array","left","right","temporary","slice","prepareCell"],"mappings":"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CA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD,cAAc;;AAElE;AACA;;;;;;;AC3EA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;AC/VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,WAAW,EAAE;AACrD,wCAAwC,WAAW,EAAE;;AAErD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC,GAAG;AACH;AACA,8DAA8D;AAC9D;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;;;;;;ACxFA,kBAAkB,+IAA+I,qPAAqP,oBAAoB,0WAA0W,eAAe,6DAA6D,+HAA+H,mDAAmD,iEAAiE,iD","file":"frappe-datatable.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DataTable\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DataTable\"] = factory();\n\telse\n\t\troot[\"DataTable\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3a24e7423e04f37bd94e","import DataTable from './datatable.js';\nimport packageJson from '../package.json';\nDataTable.__version__ = packageJson.version;\n\nexport default DataTable;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/* globals $, Clusterize */\nimport {\n getHeaderHTML,\n getBodyHTML,\n getRowHTML,\n getColumnHTML,\n buildCSSRule,\n getDefault\n} from './utils';\n\nimport DataManager from './datamanager';\n\nimport './style.scss';\n\nconst DEFAULT_OPTIONS = {\n events: null,\n data: {\n columns: [],\n rows: []\n },\n editing: null,\n addSerialNoColumn: true,\n addCheckboxColumn: true,\n enableClusterize: true,\n enableLogs: false\n};\n\nexport default class DataTable {\n constructor(wrapper, options) {\n\n this.wrapper = $(wrapper);\n if (this.wrapper.length === 0) {\n throw new Error('Invalid argument given for `wrapper`');\n }\n\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n // custom user events\n this.events = this.options.events;\n // map of checked rows\n this.checkMap = [];\n\n this.datamanager = new DataManager(this.options);\n\n if (this.options.data) {\n this.refresh(this.options.data);\n }\n }\n\n makeDom() {\n this.wrapper.html(`\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n `);\n\n this.header = this.wrapper.find('.data-table-header');\n this.bodyScrollable = this.wrapper.find('.body-scrollable');\n // this.body = this.wrapper.find('.data-table-body');\n this.footer = this.wrapper.find('.data-table-footer');\n }\n\n refresh(data) {\n this.datamanager.init(data);\n this.render();\n }\n\n appendRows(rows) {\n this.datamanager.appendRows(rows);\n this.render();\n }\n\n render() {\n if (this.wrapper.find('.data-table').length === 0) {\n this.makeDom();\n this.makeStyle();\n this.bindEvents();\n }\n\n this.renderHeader();\n this.renderBody();\n this.setDimensions();\n }\n\n renderHeader() {\n const columns = this.datamanager.getColumns();\n\n this.header.html(getHeaderHTML(columns));\n }\n\n renderBody() {\n if (this.options.enableClusterize) {\n this.renderBodyWithClusterize();\n } else {\n this.renderBodyHTML();\n }\n }\n\n renderBodyHTML() {\n const rows = this.datamanager.getRows();\n\n this.bodyScrollable.html(`\n \n ${getBodyHTML(rows)}\n
\n `);\n }\n\n renderBodyWithClusterize() {\n const self = this;\n\n // empty body\n this.bodyScrollable.html(`\n \n ${getBodyHTML([])}\n
\n `);\n\n this.start = 0;\n this.pageLength = 1000;\n this.end = this.start + this.pageLength;\n\n // only append ${this.pageLength} rows in the beginning,\n // defer remaining\n const rows = this.datamanager.getRows(this.start, this.end);\n const initialData = this.getDataForClusterize(rows);\n\n this.clusterize = new Clusterize({\n rows: initialData,\n scrollElem: this.bodyScrollable.get(0),\n contentElem: this.bodyScrollable.find('tbody').get(0),\n callbacks: {\n clusterChanged() {\n self.highlightCheckedRows();\n }\n }\n });\n this.log('dataAppended', this.pageLength);\n this.appendRemainingData();\n }\n\n appendRemainingData() {\n let dataAppended = this.pageLength;\n const promises = [];\n const rowCount = this.datamanager.getRowCount();\n\n while (dataAppended + this.pageLength < rowCount) {\n this.start = this.end;\n this.end = this.start + this.pageLength;\n promises.push(this.appendNextPagePromise(this.start, this.end));\n dataAppended += this.pageLength;\n }\n\n if (rowCount % this.pageLength > 0) {\n // last page\n this.start = this.end;\n this.end = this.start + this.pageLength;\n promises.push(this.appendNextPagePromise(this.start, this.end));\n }\n\n return promises.reduce(\n (prev, cur) => prev.then(cur), Promise.resolve()\n );\n }\n\n appendNextPagePromise(start, end) {\n return new Promise(resolve => {\n setTimeout(() => {\n const rows = this.datamanager.getRows(start, end);\n const data = this.getDataForClusterize(rows);\n\n this.clusterize.append(data);\n this.log('dataAppended', rows.length);\n resolve();\n }, 0);\n });\n }\n\n getDataForClusterize(rows) {\n return rows.map((row) => getRowHTML(row, { rowIndex: row[0].rowIndex }));\n }\n\n updateCell(rowIndex, colIndex, value) {\n const cell = this.getCell(rowIndex, colIndex);\n\n cell.content = value;\n this.refreshCell(cell);\n }\n\n refreshRows() {\n this.renderBody();\n this.setDimensions();\n }\n\n refreshCell(cell) {\n const selector = `.data-table-col[data-row-index=\"${cell.rowIndex}\"][data-col-index=\"${cell.colIndex}\"]`;\n const $cell = this.bodyScrollable.find(selector);\n const $newCell = $(getColumnHTML(cell));\n\n $cell.replaceWith($newCell);\n }\n\n bindEvents() {\n this.bindFocusCell();\n this.bindEditCell();\n this.bindResizeColumn();\n this.bindSortColumn();\n this.bindCheckbox();\n }\n\n setDimensions() {\n const self = this;\n\n // setting width as 0 will ensure that the\n // header doesn't take the available space\n this.header.css({\n width: 0,\n margin: 0\n });\n\n // cache minWidth for each column\n this.minWidthMap = getDefault(this.minWidthMap, []);\n this.header.find('.data-table-col').each(function () {\n const col = $(this);\n const width = parseInt(col.find('.content').css('width'), 10);\n const colIndex = col.attr('data-col-index');\n\n if (!self.minWidthMap[colIndex]) {\n // only set this once\n self.minWidthMap[colIndex] = width;\n }\n });\n\n // set initial width as naturally calculated by table's first row\n this.bodyScrollable.find('.data-table-row[data-row-index=\"0\"] .data-table-col').each(function () {\n const $cell = $(this);\n let width = parseInt($cell.find('.content').css('width'), 10);\n const height = parseInt($cell.find('.content').css('height'), 10);\n const { colIndex } = self.getCellAttr($cell);\n const minWidth = self.getColumnMinWidth(colIndex);\n\n if (width < minWidth) {\n width = minWidth;\n }\n self.setColumnWidth(colIndex, width);\n self.setDefaultCellHeight(height);\n });\n\n this.setBodyWidth();\n\n this.setStyle('.data-table .body-scrollable', {\n 'margin-top': (this.header.height() + 1) + 'px'\n });\n\n // hide edit cells by default\n this.setStyle('.data-table .body-scrollable .edit-cell', {\n display: 'none'\n });\n\n this.bodyScrollable.find('.table').css('margin', 0);\n }\n\n bindFocusCell() {\n const self = this;\n\n this.$focusedCell = null;\n this.bodyScrollable.on('click', '.data-table-col', function () {\n const $cell = $(this);\n const { colIndex } = self.getCellAttr($cell);\n\n if (self.options.addCheckboxColumn && colIndex === 0) {\n return;\n }\n\n self.$focusedCell = $cell;\n self.bodyScrollable.find('.data-table-col').removeClass('selected');\n $cell.addClass('selected');\n });\n }\n\n bindEditCell() {\n const self = this;\n\n this.$editingCell = null;\n this.bodyScrollable.on('dblclick', '.data-table-col', function () {\n self.activateEditing($(this));\n });\n\n $(document.body).on('keypress', (e) => {\n // enter keypress on focused cell\n if (e.which === 13 && this.$focusedCell && !this.$editingCell) {\n this.log('editingCell');\n this.activateEditing(this.$focusedCell);\n e.stopImmediatePropagation();\n }\n });\n\n $(document.body).on('keypress', (e) => {\n // enter keypress on editing cell\n if (e.which === 13 && this.$editingCell) {\n this.log('submitCell');\n this.submitEditing(this.$editingCell);\n e.stopImmediatePropagation();\n }\n });\n\n $(document.body).on('click', e => {\n if ($(e.target).is('.edit-cell, .edit-cell *')) return;\n self.bodyScrollable.find('.edit-cell').hide();\n this.$editingCell = null;\n });\n }\n\n activateEditing($cell) {\n const { rowIndex, colIndex } = this.getCellAttr($cell);\n const col = this.getColumn(colIndex);\n\n if (col && col.editable === false) {\n return;\n }\n\n if (this.$editingCell) {\n const { _rowIndex, _colIndex } = this.getCellAttr(this.$editingCell);\n\n if (rowIndex === _rowIndex && colIndex === _colIndex) {\n // editing the same cell\n return;\n }\n }\n\n this.$editingCell = $cell;\n const $editCell = $cell.find('.edit-cell').empty();\n const cell = this.getCell(rowIndex, colIndex);\n const editing = this.getEditingObject(colIndex, rowIndex, cell.content, $editCell);\n\n if (editing) {\n this.currentCellEditing = editing;\n // initialize editing input with cell value\n editing.initValue(cell.content);\n $editCell.show();\n }\n }\n\n getEditingObject(colIndex, rowIndex, value, parent) {\n if (this.options.editing) {\n return this.options.editing(colIndex, rowIndex, value, parent);\n }\n\n // editing fallback\n const $input = $('');\n\n parent.append($input);\n\n return {\n initValue(value) {\n return $input.val(value);\n },\n getValue() {\n return $input.val();\n },\n setValue(value) {\n return $input.val(value);\n }\n };\n }\n\n submitEditing($cell) {\n const { rowIndex, colIndex } = this.getCellAttr($cell);\n\n if ($cell) {\n const editing = this.currentCellEditing;\n\n if (editing) {\n const value = editing.getValue();\n const done = editing.setValue(value);\n\n if (done && done.then) {\n // wait for promise then update internal state\n done.then(\n () => this.updateCell(rowIndex, colIndex, value)\n );\n } else {\n this.updateCell(rowIndex, colIndex, value);\n }\n }\n }\n\n this.currentCellEditing = null;\n }\n\n bindResizeColumn() {\n const self = this;\n let isDragging = false;\n let $currCell, startWidth, startX;\n\n this.header.on('mousedown', '.data-table-col', function (e) {\n $currCell = $(this);\n const colIndex = $currCell.attr('data-col-index');\n const col = self.getColumn(colIndex);\n\n if (col && col.resizable === false) {\n return;\n }\n\n isDragging = true;\n startWidth = $currCell.find('.content').width();\n startX = e.pageX;\n });\n\n $('body').on('mouseup', function (e) {\n if (!$currCell) return;\n isDragging = false;\n const colIndex = $currCell.attr('data-col-index');\n\n if ($currCell) {\n const width = parseInt($currCell.find('.content').css('width'), 10);\n\n self.setColumnWidth(colIndex, width);\n self.setBodyWidth();\n $currCell = null;\n }\n });\n\n $('body').on('mousemove', function (e) {\n if (!isDragging) return;\n const finalWidth = startWidth + (e.pageX - startX);\n const colIndex = $currCell.attr('data-col-index');\n\n if (self.getColumnMinWidth(colIndex) > finalWidth) {\n // don't resize past minWidth\n return;\n }\n\n self.setColumnHeaderWidth(colIndex, finalWidth);\n });\n }\n\n bindSortColumn() {\n const self = this;\n\n this.header.on('click', '.data-table-col .content span', function () {\n const $cell = $(this).closest('.data-table-col');\n let sortOrder = getDefault($cell.attr('data-sort-order'), 'none');\n const colIndex = $cell.attr('data-col-index');\n const col = self.getColumn(colIndex);\n\n if (col && col.sortable === false) {\n return;\n }\n\n // reset sort indicator\n self.header.find('.sort-indicator').text('');\n self.header.find('.data-table-col').attr('data-sort-order', 'none');\n\n if (sortOrder === 'none') {\n $cell.attr('data-sort-order', 'asc');\n $cell.find('.sort-indicator').text('▲');\n } else if (sortOrder === 'asc') {\n $cell.attr('data-sort-order', 'desc');\n $cell.find('.sort-indicator').text('▼');\n } else if (sortOrder === 'desc') {\n $cell.attr('data-sort-order', 'none');\n $cell.find('.sort-indicator').text('');\n }\n\n // sortWith this action\n sortOrder = $cell.attr('data-sort-order');\n\n if (self.events && self.events.onSort) {\n self.events.onSort(colIndex, sortOrder);\n } else {\n self.sortRows(colIndex, sortOrder);\n self.refreshRows();\n }\n });\n }\n\n sortRows(colIndex, sortOrder) {\n this.datamanager.sortRows(colIndex, sortOrder);\n }\n\n bindCheckbox() {\n if (!this.options.addCheckboxColumn) return;\n const self = this;\n\n this.wrapper.on('click', '.data-table-col[data-col-index=\"0\"] [type=\"checkbox\"]', function () {\n const $checkbox = $(this);\n const $cell = $checkbox.closest('.data-table-col');\n const { rowIndex, isHeader } = self.getCellAttr($cell);\n const checked = $checkbox.is(':checked');\n\n if (isHeader) {\n self.checkAll(checked);\n } else {\n self.checkRow(rowIndex, checked);\n }\n });\n }\n\n getCheckedRows() {\n\n return this.checkMap\n .map((c, rowIndex) => {\n if (c) {\n return rowIndex;\n }\n return null;\n })\n .filter(c => {\n return c !== null || c !== undefined;\n });\n }\n\n highlightCheckedRows() {\n this.getCheckedRows()\n .map(rowIndex => this.checkRow(rowIndex, true));\n }\n\n checkRow(rowIndex, toggle) {\n const value = toggle ? 1 : 0;\n\n // update internal map\n this.checkMap[rowIndex] = value;\n // set checkbox value explicitly\n this.bodyScrollable\n .find(`.data-table-col[data-row-index=\"${rowIndex}\"][data-col-index=\"0\"] [type=\"checkbox\"]`)\n .prop('checked', toggle);\n // highlight row\n this.highlightRow(rowIndex, toggle);\n }\n\n checkAll(toggle) {\n const value = toggle ? 1 : 0;\n\n // update internal map\n if (toggle) {\n this.checkMap = Array.from(Array(this.getTotalRows())).map(c => value);\n } else {\n this.checkMap = [];\n }\n // set checkbox value\n this.bodyScrollable\n .find('.data-table-col[data-col-index=\"0\"] [type=\"checkbox\"]')\n .prop('checked', toggle);\n // highlight all\n this.highlightAll(toggle);\n }\n\n highlightRow(rowIndex, toggle = true) {\n const $row = this.bodyScrollable\n .find(`.data-table-row[data-row-index=\"${rowIndex}\"]`);\n\n if (toggle) {\n $row.addClass('row-highlight');\n } else {\n $row.removeClass('row-highlight');\n }\n }\n\n highlightAll(toggle = true) {\n this.bodyScrollable\n .find('.data-table-row')\n .toggleClass('row-highlight', toggle);\n }\n\n setColumnWidth(colIndex, width) {\n // set width for content\n this.setStyle(`[data-col-index=\"${colIndex}\"] .content`, {\n width: width + 'px'\n });\n // set width for edit cell\n this.setStyle(`[data-col-index=\"${colIndex}\"] .edit-cell`, {\n width: width + 'px'\n });\n }\n\n setColumnHeaderWidth(colIndex, width) {\n this.setStyle(`[data-col-index=\"${colIndex}\"][data-is-header] .content`, {\n width: width + 'px'\n });\n }\n\n setDefaultCellHeight(height) {\n this.setStyle('.data-table-col .content', {\n height: height + 'px'\n });\n }\n\n setRowHeight(rowIndex, height) {\n this.setStyle(`[data-row-index=\"${rowIndex}\"] .content`, {\n height: height + 'px'\n });\n }\n\n setColumnWidths() {\n const availableWidth = this.wrapper.width();\n const headerWidth = this.header.width();\n\n if (headerWidth > availableWidth) {\n // don't resize, horizontal scroll takes place\n return;\n }\n\n const columns = this.datamanager.getColumns();\n const deltaWidth = (availableWidth - headerWidth) / this.datamanager.getColumnCount();\n\n columns.map(col => {\n const width = this.getColumnHeaderElement(col.colIndex).width();\n let finalWidth = width + deltaWidth - 16;\n\n if (this.options.addSerialNoColumn && col.colIndex === 0) {\n return;\n }\n\n this.setColumnHeaderWidth(col.colIndex, finalWidth);\n this.setColumnWidth(col.colIndex, finalWidth);\n });\n this.setBodyWidth();\n }\n\n setBodyWidth() {\n this.bodyScrollable.css(\n 'width',\n parseInt(this.header.css('width'), 10) + 1\n );\n }\n\n setStyle(rule, styleMap) {\n let styles = this.$style.text();\n\n styles = buildCSSRule(rule, styleMap, styles);\n this.$style.html(styles);\n }\n\n makeStyle() {\n this.$style = $('')\n .prependTo(this.wrapper);\n }\n\n getColumn(colIndex) {\n return this.datamanager.getColumn(colIndex);\n }\n\n getRow(rowIndex) {\n return this.datamanager.getRow(rowIndex);\n }\n\n getCell(rowIndex, colIndex) {\n return this.datamanager.getCell(rowIndex, colIndex);\n }\n\n getColumnHeaderElement(colIndex) {\n colIndex = +colIndex;\n if (colIndex < 0) return null;\n return this.wrapper.find(\n `.data-table-col[data-is-header][data-col-index=\"${colIndex}\"]`\n );\n }\n\n getColumnMinWidth(colIndex) {\n colIndex = +colIndex;\n return this.minWidthMap && this.minWidthMap[colIndex];\n }\n\n getCellAttr($cell) {\n return $cell.data();\n }\n\n getTotalRows() {\n return this.datamanager.getRowCount();\n }\n\n log() {\n if (this.options.enableLogs) {\n console.log.apply(console, arguments);\n }\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/datatable.js","function camelCaseToDash(str) {\n return str.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);\n}\n\nfunction makeDataAttributeString(props) {\n const keys = Object.keys(props);\n\n return keys\n .map((key) => {\n const _key = camelCaseToDash(key);\n const val = props[key];\n\n if (val === undefined) return '';\n return `data-${_key}=\"${val}\" `;\n })\n .join('')\n .trim();\n}\n\nfunction getEditCellHTML() {\n return `\n
\n `;\n}\n\nfunction getColumnHTML(column) {\n const { rowIndex, colIndex, isHeader } = column;\n const dataAttr = makeDataAttributeString({\n rowIndex,\n colIndex,\n isHeader\n });\n\n const editCellHTML = isHeader ? '' : getEditCellHTML();\n\n return `\n \n
\n ${column.format ? column.format(column.content) : column.content}\n \n
\n ${editCellHTML}\n \n `;\n}\n\nfunction getRowHTML(columns, props) {\n const dataAttr = makeDataAttributeString(props);\n\n return `\n \n ${columns.map(getColumnHTML).join('')}\n \n `;\n}\n\nfunction getHeaderHTML(columns) {\n const $header = `\n \n ${getRowHTML(columns, { isHeader: 1, rowIndex: -1 })}\n \n `;\n\n // columns.map(col => {\n // if (!col.width) return;\n // const $cellContent = $header.find(\n // `.data-table-col[data-col-index=\"${col.colIndex}\"] .content`\n // );\n\n // $cellContent.width(col.width);\n // });\n\n return $header;\n}\n\nfunction getBodyHTML(rows) {\n return `\n \n ${rows.map(row => getRowHTML(row, { rowIndex: row[0].rowIndex })).join('')}\n \n `;\n}\n\nfunction prepareColumn(col, i) {\n if (typeof col === 'string') {\n col = {\n content: col\n };\n }\n return Object.assign(col, {\n colIndex: i\n });\n}\n\nfunction prepareColumns(columns, props = {}) {\n const _columns = columns.map(prepareColumn);\n\n return _columns.map(col => Object.assign({}, col, props));\n}\n\nfunction prepareRowHeader(columns) {\n return prepareColumns(columns, {\n rowIndex: -1,\n isHeader: 1,\n format: (content) => `${content}`\n });\n}\n\nfunction prepareRow(row, i) {\n return prepareColumns(row, {\n rowIndex: i\n });\n}\n\nfunction prepareRows(rows) {\n return rows.map(prepareRow);\n}\n\nfunction getDefault(a, b) {\n return a !== undefined ? a : b;\n}\n\nfunction escapeRegExp(str) {\n // https://stackoverflow.com/a/6969486\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\nfunction getCSSString(styleMap) {\n let style = '';\n\n for (const prop in styleMap) {\n if (styleMap.hasOwnProperty(prop)) {\n style += `${prop}: ${styleMap[prop]}; `;\n }\n }\n\n return style.trim();\n}\n\nfunction getCSSRuleBlock(rule, styleMap) {\n return `${rule} { ${getCSSString(styleMap)} }`;\n}\n\nfunction namespaceSelector(selector) {\n return '.data-table ' + selector;\n}\n\nfunction buildCSSRule(rule, styleMap, cssRulesString = '') {\n // build css rules efficiently,\n // append new rule if doesnt exist,\n // update existing ones\n\n const rulePatternStr = `${escapeRegExp(rule)} {([^}]*)}`;\n const rulePattern = new RegExp(rulePatternStr, 'g');\n\n if (cssRulesString && cssRulesString.match(rulePattern)) {\n for (const property in styleMap) {\n const value = styleMap[property];\n const propPattern = new RegExp(`${escapeRegExp(property)}:([^;]*);`);\n\n cssRulesString = cssRulesString.replace(rulePattern, function (match, propertyStr) {\n if (propertyStr.match(propPattern)) {\n // property exists, replace value with new value\n propertyStr = propertyStr.replace(propPattern, (match, valueStr) => {\n return `${property}: ${value};`;\n });\n }\n propertyStr = propertyStr.trim();\n\n const replacer =\n `${rule} { ${propertyStr} }`;\n\n return replacer;\n });\n }\n\n return cssRulesString;\n }\n // no match, append new rule block\n return `${cssRulesString}${getCSSRuleBlock(rule, styleMap)}`;\n}\n\nexport default {\n getHeaderHTML,\n getBodyHTML,\n getRowHTML,\n getColumnHTML,\n getEditCellHTML,\n prepareRowHeader,\n prepareRows,\n namespaceSelector,\n getCSSString,\n buildCSSRule,\n makeDataAttributeString,\n getDefault,\n escapeRegExp\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","\nexport default class DataManager {\n constructor(options) {\n this.options = options;\n this.rowCount = 0;\n this.currentSort = {\n sortBy: -1, // colIndex\n sortOrder: 'none' // asc, desc, none\n };\n }\n\n init(data) {\n let { columns, rows } = data;\n\n this.columns = this.prepareColumns(columns);\n this.rows = this.prepareRows(rows);\n }\n\n prepareColumns(columns) {\n if (!Array.isArray(columns)) {\n throw new TypeError('`columns` must be an array');\n }\n\n if (this.options.addSerialNoColumn && !this._serialNoColumnAdded) {\n const val = {\n content: 'Sr. No',\n resizable: false\n };\n\n columns = [val].concat(columns);\n this._serialNoColumnAdded = true;\n }\n\n if (this.options.addCheckboxColumn && !this._checkboxColumnAdded) {\n const val = {\n content: '',\n resizable: false\n };\n\n columns = [val].concat(columns);\n this._checkboxColumnAdded = true;\n }\n\n // wrap the title in span\n columns = columns.map(column => {\n if (typeof column === 'string') {\n column = `${column}`;\n } else if (typeof column === 'object') {\n column.content = `${column.content}`;\n }\n\n return column;\n });\n\n return prepareColumns(columns, {\n isHeader: 1\n });\n }\n\n prepareRows(rows) {\n if (!Array.isArray(rows) || !Array.isArray(rows[0])) {\n throw new TypeError('`rows` must be an array of arrays');\n }\n\n rows = rows.map((row, i) => {\n const index = this._getNextRowCount();\n\n if (row.length < this.columns.length) {\n if (this._serialNoColumnAdded) {\n const val = (index + 1) + '';\n\n row = [val].concat(row);\n }\n\n if (this._checkboxColumnAdded) {\n const val = '';\n\n row = [val].concat(row);\n }\n }\n\n return prepareRow(row, index);\n });\n\n return rows;\n }\n\n appendRows(rows) {\n if (Array.isArray(rows) && !Array.isArray(rows[0])) {\n rows = [rows];\n }\n const _rows = this.prepareRows(rows);\n\n this.rows = this.rows.concat(_rows);\n }\n\n sortRows(colIndex, sortOrder = 'none') {\n colIndex = +colIndex;\n\n if (this.currentSort.colIndex === colIndex) {\n // reverse the array if only sortOrder changed\n if (\n (this.currentSort.sortOrder === 'asc' && sortOrder === 'desc') ||\n (this.currentSort.sortOrder === 'desc' && sortOrder === 'asc')\n ) {\n this.reverseArray(this.rows);\n this.currentSort.sortOrder = sortOrder;\n return;\n }\n }\n\n this.rows.sort((a, b) => {\n const _aIndex = a[0].rowIndex;\n const _bIndex = b[0].rowIndex;\n const _a = a[colIndex].content;\n const _b = b[colIndex].content;\n\n if (sortOrder === 'none') {\n return _aIndex - _bIndex;\n } else if (sortOrder === 'asc') {\n if (_a < _b) return -1;\n if (_a > _b) return 1;\n if (_a === _b) return 0;\n } else if (sortOrder === 'desc') {\n if (_a < _b) return 1;\n if (_a > _b) return -1;\n if (_a === _b) return 0;\n }\n return 0;\n });\n\n this.currentSort.colIndex = colIndex;\n this.currentSort.sortOrder = sortOrder;\n }\n\n reverseArray(array) {\n let left = null;\n let right = null;\n let length = array.length;\n\n for (left = 0, right = length - 1; left < right; left += 1, right -= 1) {\n const temporary = array[left];\n\n array[left] = array[right];\n array[right] = temporary;\n }\n }\n\n getRowCount() {\n return this.rowCount;\n }\n\n _getNextRowCount() {\n const val = this.rowCount;\n\n this.rowCount++;\n return val;\n }\n\n getRows(start, end) {\n return this.rows.slice(start, end);\n }\n\n getColumns() {\n return this.columns;\n }\n\n getColumnCount() {\n return this.columns.length;\n }\n\n getColumn(colIndex) {\n colIndex = +colIndex;\n return this.columns.find(col => col.colIndex === colIndex);\n }\n\n getRow(rowIndex) {\n rowIndex = +rowIndex;\n return this.rows.find(row => row[0].rowIndex === rowIndex);\n }\n\n getCell(rowIndex, colIndex) {\n rowIndex = +rowIndex;\n colIndex = +colIndex;\n return this.rows.find(row => row[0].rowIndex === rowIndex)[colIndex];\n }\n\n get() {\n return {\n columns: this.columns,\n rows: this.rows\n };\n }\n}\n\nfunction prepareColumns(columns, props = {}) {\n const _columns = columns.map(prepareCell);\n\n return _columns.map(col => Object.assign({}, col, props));\n}\n\nfunction prepareRow(row, i) {\n return prepareColumns(row, {\n rowIndex: i\n });\n}\n\nfunction prepareCell(col, i) {\n if (typeof col === 'string') {\n col = {\n content: col\n };\n }\n return Object.assign(col, {\n colIndex: i\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/datamanager.js","// style-loader: Adds some css to the DOM by adding a ')\n .prependTo(this.wrapper);\n }\n\n getColumn(colIndex) {\n return this.datamanager.getColumn(colIndex);\n }\n\n getRow(rowIndex) {\n return this.datamanager.getRow(rowIndex);\n }\n\n getCell(rowIndex, colIndex) {\n return this.datamanager.getCell(rowIndex, colIndex);\n }\n\n getColumnHeaderElement(colIndex) {\n colIndex = +colIndex;\n if (colIndex < 0) return null;\n return this.wrapper.find(\n `.data-table-col[data-is-header][data-col-index=\"${colIndex}\"]`\n );\n }\n\n getColumnMinWidth(colIndex) {\n colIndex = +colIndex;\n return this.minWidthMap && this.minWidthMap[colIndex];\n }\n\n getCellAttr($cell) {\n return $cell.data();\n }\n\n getTotalRows() {\n return this.datamanager.getRowCount();\n }\n\n getSerialColumnIndex() {\n const columns = this.datamanager.getColumns();\n\n return columns.findIndex(column => column.content.includes('Sr. No'));\n }\n\n log() {\n if (this.options.enableLogs) {\n console.log.apply(console, arguments);\n }\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/datatable.js","function camelCaseToDash(str) {\n return str.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);\n}\n\nfunction makeDataAttributeString(props) {\n const keys = Object.keys(props);\n\n return keys\n .map((key) => {\n const _key = camelCaseToDash(key);\n const val = props[key];\n\n if (val === undefined) return '';\n return `data-${_key}=\"${val}\" `;\n })\n .join('')\n .trim();\n}\n\nfunction getEditCellHTML() {\n return `\n
\n `;\n}\n\nfunction getColumnHTML(column) {\n const { rowIndex, colIndex, isHeader } = column;\n const dataAttr = makeDataAttributeString({\n rowIndex,\n colIndex,\n isHeader\n });\n\n const editCellHTML = isHeader ? '' : getEditCellHTML();\n\n return `\n \n
\n ${column.format ? column.format(column.content) : column.content}\n \n
\n ${editCellHTML}\n \n `;\n}\n\nfunction getRowHTML(columns, props) {\n const dataAttr = makeDataAttributeString(props);\n\n return `\n \n ${columns.map(getColumnHTML).join('')}\n \n `;\n}\n\nfunction getHeaderHTML(columns) {\n const $header = `\n \n ${getRowHTML(columns, { isHeader: 1, rowIndex: -1 })}\n \n `;\n\n // columns.map(col => {\n // if (!col.width) return;\n // const $cellContent = $header.find(\n // `.data-table-col[data-col-index=\"${col.colIndex}\"] .content`\n // );\n\n // $cellContent.width(col.width);\n // });\n\n return $header;\n}\n\nfunction getBodyHTML(rows) {\n return `\n \n ${rows.map(row => getRowHTML(row, { rowIndex: row[0].rowIndex })).join('')}\n \n `;\n}\n\nfunction prepareColumn(col, i) {\n if (typeof col === 'string') {\n col = {\n content: col\n };\n }\n return Object.assign(col, {\n colIndex: i\n });\n}\n\nfunction prepareColumns(columns, props = {}) {\n const _columns = columns.map(prepareColumn);\n\n return _columns.map(col => Object.assign({}, col, props));\n}\n\nfunction prepareRowHeader(columns) {\n return prepareColumns(columns, {\n rowIndex: -1,\n isHeader: 1,\n format: (content) => `${content}`\n });\n}\n\nfunction prepareRow(row, i) {\n return prepareColumns(row, {\n rowIndex: i\n });\n}\n\nfunction prepareRows(rows) {\n return rows.map(prepareRow);\n}\n\nfunction getDefault(a, b) {\n return a !== undefined ? a : b;\n}\n\nfunction escapeRegExp(str) {\n // https://stackoverflow.com/a/6969486\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\nfunction getCSSString(styleMap) {\n let style = '';\n\n for (const prop in styleMap) {\n if (styleMap.hasOwnProperty(prop)) {\n style += `${prop}: ${styleMap[prop]}; `;\n }\n }\n\n return style.trim();\n}\n\nfunction getCSSRuleBlock(rule, styleMap) {\n return `${rule} { ${getCSSString(styleMap)} }`;\n}\n\nfunction namespaceSelector(selector) {\n return '.data-table ' + selector;\n}\n\nfunction buildCSSRule(rule, styleMap, cssRulesString = '') {\n // build css rules efficiently,\n // append new rule if doesnt exist,\n // update existing ones\n\n const rulePatternStr = `${escapeRegExp(rule)} {([^}]*)}`;\n const rulePattern = new RegExp(rulePatternStr, 'g');\n\n if (cssRulesString && cssRulesString.match(rulePattern)) {\n for (const property in styleMap) {\n const value = styleMap[property];\n const propPattern = new RegExp(`${escapeRegExp(property)}:([^;]*);`);\n\n cssRulesString = cssRulesString.replace(rulePattern, function (match, propertyStr) {\n if (propertyStr.match(propPattern)) {\n // property exists, replace value with new value\n propertyStr = propertyStr.replace(propPattern, (match, valueStr) => {\n return `${property}: ${value};`;\n });\n }\n propertyStr = propertyStr.trim();\n\n const replacer =\n `${rule} { ${propertyStr} }`;\n\n return replacer;\n });\n }\n\n return cssRulesString;\n }\n // no match, append new rule block\n return `${cssRulesString}${getCSSRuleBlock(rule, styleMap)}`;\n}\n\nexport default {\n getHeaderHTML,\n getBodyHTML,\n getRowHTML,\n getColumnHTML,\n getEditCellHTML,\n prepareRowHeader,\n prepareRows,\n namespaceSelector,\n getCSSString,\n buildCSSRule,\n makeDataAttributeString,\n getDefault,\n escapeRegExp\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","\nexport default class DataManager {\n constructor(options) {\n this.options = options;\n this.rowCount = 0;\n this.currentSort = {\n sortBy: -1, // colIndex\n sortOrder: 'none' // asc, desc, none\n };\n }\n\n init(data) {\n let { columns, rows } = data;\n\n this.columns = this.prepareColumns(columns);\n this.rows = this.prepareRows(rows);\n }\n\n prepareColumns(columns) {\n if (!Array.isArray(columns)) {\n throw new TypeError('`columns` must be an array');\n }\n\n if (this.options.addSerialNoColumn && !this._serialNoColumnAdded) {\n const val = {\n content: 'Sr. No',\n resizable: false\n };\n\n columns = [val].concat(columns);\n this._serialNoColumnAdded = true;\n }\n\n if (this.options.addCheckboxColumn && !this._checkboxColumnAdded) {\n const val = {\n content: '',\n resizable: false\n };\n\n columns = [val].concat(columns);\n this._checkboxColumnAdded = true;\n }\n\n // wrap the title in span\n columns = columns.map(column => {\n if (typeof column === 'string') {\n column = `${column}`;\n } else if (typeof column === 'object') {\n column.content = `${column.content}`;\n }\n\n return column;\n });\n\n return prepareColumns(columns, {\n isHeader: 1\n });\n }\n\n prepareRows(rows) {\n if (!Array.isArray(rows) || !Array.isArray(rows[0])) {\n throw new TypeError('`rows` must be an array of arrays');\n }\n\n rows = rows.map((row, i) => {\n const index = this._getNextRowCount();\n\n if (row.length < this.columns.length) {\n if (this._serialNoColumnAdded) {\n const val = (index + 1) + '';\n\n row = [val].concat(row);\n }\n\n if (this._checkboxColumnAdded) {\n const val = '';\n\n row = [val].concat(row);\n }\n }\n\n return prepareRow(row, index);\n });\n\n return rows;\n }\n\n appendRows(rows) {\n if (Array.isArray(rows) && !Array.isArray(rows[0])) {\n rows = [rows];\n }\n const _rows = this.prepareRows(rows);\n\n this.rows = this.rows.concat(_rows);\n }\n\n sortRows(colIndex, sortOrder = 'none') {\n colIndex = +colIndex;\n\n if (this.currentSort.colIndex === colIndex) {\n // reverse the array if only sortOrder changed\n if (\n (this.currentSort.sortOrder === 'asc' && sortOrder === 'desc') ||\n (this.currentSort.sortOrder === 'desc' && sortOrder === 'asc')\n ) {\n this.reverseArray(this.rows);\n this.currentSort.sortOrder = sortOrder;\n return;\n }\n }\n\n this.rows.sort((a, b) => {\n const _aIndex = a[0].rowIndex;\n const _bIndex = b[0].rowIndex;\n const _a = a[colIndex].content;\n const _b = b[colIndex].content;\n\n if (sortOrder === 'none') {\n return _aIndex - _bIndex;\n } else if (sortOrder === 'asc') {\n if (_a < _b) return -1;\n if (_a > _b) return 1;\n if (_a === _b) return 0;\n } else if (sortOrder === 'desc') {\n if (_a < _b) return 1;\n if (_a > _b) return -1;\n if (_a === _b) return 0;\n }\n return 0;\n });\n\n this.currentSort.colIndex = colIndex;\n this.currentSort.sortOrder = sortOrder;\n }\n\n reverseArray(array) {\n let left = null;\n let right = null;\n let length = array.length;\n\n for (left = 0, right = length - 1; left < right; left += 1, right -= 1) {\n const temporary = array[left];\n\n array[left] = array[right];\n array[right] = temporary;\n }\n }\n\n getRowCount() {\n return this.rowCount;\n }\n\n _getNextRowCount() {\n const val = this.rowCount;\n\n this.rowCount++;\n return val;\n }\n\n getRows(start, end) {\n return this.rows.slice(start, end);\n }\n\n getColumns() {\n return this.columns;\n }\n\n getColumnCount() {\n return this.columns.length;\n }\n\n getColumn(colIndex) {\n colIndex = +colIndex;\n return this.columns.find(col => col.colIndex === colIndex);\n }\n\n getRow(rowIndex) {\n rowIndex = +rowIndex;\n return this.rows.find(row => row[0].rowIndex === rowIndex);\n }\n\n getCell(rowIndex, colIndex) {\n rowIndex = +rowIndex;\n colIndex = +colIndex;\n return this.rows.find(row => row[0].rowIndex === rowIndex)[colIndex];\n }\n\n get() {\n return {\n columns: this.columns,\n rows: this.rows\n };\n }\n}\n\nfunction prepareColumns(columns, props = {}) {\n const _columns = columns.map(prepareCell);\n\n return _columns.map(col => Object.assign({}, col, props));\n}\n\nfunction prepareRow(row, i) {\n return prepareColumns(row, {\n rowIndex: i\n });\n}\n\nfunction prepareCell(col, i) {\n if (typeof col === 'string') {\n col = {\n content: col\n };\n }\n return Object.assign(col, {\n colIndex: i\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/datamanager.js","// style-loader: Adds some css to the DOM by adding a