@swimlane/ngx-datatable 17.0.0 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +0 -1
  2. package/assets/icons.css +39 -19
  3. package/bundles/swimlane-ngx-datatable.umd.js +1103 -1564
  4. package/bundles/swimlane-ngx-datatable.umd.js.map +1 -1
  5. package/esm2015/lib/components/body/body-cell.component.js +40 -86
  6. package/esm2015/lib/components/body/body-group-header-template.directive.js +8 -10
  7. package/esm2015/lib/components/body/body-group-header.directive.js +11 -19
  8. package/esm2015/lib/components/body/body-row-wrapper.component.js +32 -54
  9. package/esm2015/lib/components/body/body-row.component.js +38 -75
  10. package/esm2015/lib/components/body/body.component.js +61 -137
  11. package/esm2015/lib/components/body/progress-bar.component.js +10 -12
  12. package/esm2015/lib/components/body/scroller.component.js +21 -33
  13. package/esm2015/lib/components/body/selection.component.js +19 -35
  14. package/esm2015/lib/components/body/summary/summary-row.component.js +19 -29
  15. package/esm2015/lib/components/columns/column-cell.directive.js +6 -8
  16. package/esm2015/lib/components/columns/column-header.directive.js +6 -8
  17. package/esm2015/lib/components/columns/column.directive.js +36 -92
  18. package/esm2015/lib/components/columns/tree.directive.js +6 -8
  19. package/esm2015/lib/components/datatable.component.js +85 -214
  20. package/esm2015/lib/components/footer/footer-template.directive.js +6 -8
  21. package/esm2015/lib/components/footer/footer.component.js +28 -54
  22. package/esm2015/lib/components/footer/footer.directive.js +16 -34
  23. package/esm2015/lib/components/footer/pager.component.js +23 -39
  24. package/esm2015/lib/components/header/header-cell.component.js +45 -80
  25. package/esm2015/lib/components/header/header.component.js +43 -80
  26. package/esm2015/lib/components/row-detail/row-detail-template.directive.js +8 -10
  27. package/esm2015/lib/components/row-detail/row-detail.directive.js +11 -19
  28. package/esm2015/lib/directives/draggable.directive.js +16 -30
  29. package/esm2015/lib/directives/long-press.directive.js +16 -34
  30. package/esm2015/lib/directives/orderable.directive.js +12 -19
  31. package/esm2015/lib/directives/resizeable.directive.js +19 -29
  32. package/esm2015/lib/directives/visibility.directive.js +11 -15
  33. package/esm2015/lib/events.js +1 -1
  34. package/esm2015/lib/ngx-datatable.module.js +54 -57
  35. package/esm2015/lib/services/column-changes.service.js +6 -8
  36. package/esm2015/lib/services/dimensions-helper.service.js +6 -8
  37. package/esm2015/lib/services/scrollbar-helper.service.js +6 -9
  38. package/esm2015/lib/types/click.type.js +1 -1
  39. package/esm2015/lib/types/column-mode.type.js +1 -1
  40. package/esm2015/lib/types/contextmenu.type.js +1 -1
  41. package/esm2015/lib/types/selection.type.js +1 -1
  42. package/esm2015/lib/types/sort-direction.type.js +1 -1
  43. package/esm2015/lib/types/sort-prop-dir.type.js +2 -1
  44. package/esm2015/lib/types/sort.type.js +1 -1
  45. package/esm2015/lib/types/table-column.type.js +2 -1
  46. package/esm2015/lib/utils/camel-case.js +1 -1
  47. package/esm2015/lib/utils/column-helper.js +1 -1
  48. package/esm2015/lib/utils/column-prop-getters.js +1 -1
  49. package/esm2015/lib/utils/column.js +1 -1
  50. package/esm2015/lib/utils/elm-from-point.js +1 -1
  51. package/esm2015/lib/utils/id.js +1 -1
  52. package/esm2015/lib/utils/keys.js +1 -1
  53. package/esm2015/lib/utils/math.js +1 -1
  54. package/esm2015/lib/utils/prefixes.js +1 -1
  55. package/esm2015/lib/utils/row-height-cache.js +1 -1
  56. package/esm2015/lib/utils/selection.js +1 -1
  57. package/esm2015/lib/utils/sort.js +1 -1
  58. package/esm2015/lib/utils/throttle.js +1 -1
  59. package/esm2015/lib/utils/translate.js +1 -1
  60. package/esm2015/lib/utils/tree.js +1 -1
  61. package/esm2015/public-api.js +3 -1
  62. package/esm2015/swimlane-ngx-datatable.js +1 -1
  63. package/fesm2015/swimlane-ngx-datatable.js +682 -1248
  64. package/fesm2015/swimlane-ngx-datatable.js.map +1 -1
  65. package/lib/components/header/header-cell.component.d.ts +2 -0
  66. package/lib/components/header/header.component.d.ts +1 -0
  67. package/lib/utils/throttle.d.ts +1 -1
  68. package/package.json +10 -10
  69. package/swimlane-ngx-datatable.metadata.json +1 -1
  70. package/bundles/swimlane-ngx-datatable.umd.min.js +0 -16
  71. package/bundles/swimlane-ngx-datatable.umd.min.js.map +0 -1
  72. package/esm5/lib/components/body/body-cell.component.js +0 -438
  73. package/esm5/lib/components/body/body-group-header-template.directive.js +0 -18
  74. package/esm5/lib/components/body/body-group-header.directive.js +0 -67
  75. package/esm5/lib/components/body/body-row-wrapper.component.js +0 -114
  76. package/esm5/lib/components/body/body-row.component.js +0 -260
  77. package/esm5/lib/components/body/body.component.js +0 -775
  78. package/esm5/lib/components/body/progress-bar.component.js +0 -16
  79. package/esm5/lib/components/body/scroller.component.js +0 -97
  80. package/esm5/lib/components/body/selection.component.js +0 -159
  81. package/esm5/lib/components/body/summary/summary-row.component.js +0 -81
  82. package/esm5/lib/components/columns/column-cell.directive.js +0 -16
  83. package/esm5/lib/components/columns/column-header.directive.js +0 -16
  84. package/esm5/lib/components/columns/column.directive.js +0 -134
  85. package/esm5/lib/components/columns/tree.directive.js +0 -16
  86. package/esm5/lib/components/datatable.component.js +0 -1147
  87. package/esm5/lib/components/footer/footer-template.directive.js +0 -16
  88. package/esm5/lib/components/footer/footer.component.js +0 -74
  89. package/esm5/lib/components/footer/footer.directive.js +0 -47
  90. package/esm5/lib/components/footer/pager.component.js +0 -135
  91. package/esm5/lib/components/header/header-cell.component.js +0 -253
  92. package/esm5/lib/components/header/header.component.js +0 -317
  93. package/esm5/lib/components/row-detail/row-detail-template.directive.js +0 -18
  94. package/esm5/lib/components/row-detail/row-detail.directive.js +0 -68
  95. package/esm5/lib/directives/draggable.directive.js +0 -118
  96. package/esm5/lib/directives/long-press.directive.js +0 -132
  97. package/esm5/lib/directives/orderable.directive.js +0 -161
  98. package/esm5/lib/directives/resizeable.directive.js +0 -101
  99. package/esm5/lib/directives/visibility.directive.js +0 -69
  100. package/esm5/lib/events.js +0 -7
  101. package/esm5/lib/ngx-datatable.module.js +0 -103
  102. package/esm5/lib/services/column-changes.service.js +0 -28
  103. package/esm5/lib/services/dimensions-helper.service.js +0 -19
  104. package/esm5/lib/services/scrollbar-helper.service.js +0 -38
  105. package/esm5/lib/types/click.type.js +0 -6
  106. package/esm5/lib/types/column-mode.type.js +0 -7
  107. package/esm5/lib/types/contextmenu.type.js +0 -6
  108. package/esm5/lib/types/selection.type.js +0 -9
  109. package/esm5/lib/types/sort-direction.type.js +0 -6
  110. package/esm5/lib/types/sort-prop-dir.type.js +0 -1
  111. package/esm5/lib/types/sort.type.js +0 -6
  112. package/esm5/lib/types/table-column.type.js +0 -1
  113. package/esm5/lib/utils/camel-case.js +0 -28
  114. package/esm5/lib/utils/column-helper.js +0 -128
  115. package/esm5/lib/utils/column-prop-getters.js +0 -96
  116. package/esm5/lib/utils/column.js +0 -103
  117. package/esm5/lib/utils/elm-from-point.js +0 -38
  118. package/esm5/lib/utils/id.js +0 -8
  119. package/esm5/lib/utils/keys.js +0 -10
  120. package/esm5/lib/utils/math.js +0 -224
  121. package/esm5/lib/utils/prefixes.js +0 -40
  122. package/esm5/lib/utils/row-height-cache.js +0 -137
  123. package/esm5/lib/utils/selection.js +0 -40
  124. package/esm5/lib/utils/sort.js +0 -139
  125. package/esm5/lib/utils/throttle.js +0 -60
  126. package/esm5/lib/utils/translate.js +0 -25
  127. package/esm5/lib/utils/tree.js +0 -106
  128. package/esm5/public-api.js +0 -62
  129. package/esm5/swimlane-ngx-datatable.js +0 -5
  130. package/fesm5/swimlane-ngx-datatable.js +0 -6088
  131. package/fesm5/swimlane-ngx-datatable.js.map +0 -1
  132. package/lib/test/jasmine-matchers.d.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"swimlane-ngx-datatable.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@swimlane/ngx-datatable/lib/services/scrollbar-helper.service.ts","ng://@swimlane/ngx-datatable/lib/services/dimensions-helper.service.ts","ng://@swimlane/ngx-datatable/lib/services/column-changes.service.ts","ng://@swimlane/ngx-datatable/lib/components/footer/footer-template.directive.ts","ng://@swimlane/ngx-datatable/lib/directives/visibility.directive.ts","ng://@swimlane/ngx-datatable/lib/directives/draggable.directive.ts","ng://@swimlane/ngx-datatable/lib/directives/resizeable.directive.ts","ng://@swimlane/ngx-datatable/lib/directives/orderable.directive.ts","ng://@swimlane/ngx-datatable/lib/directives/long-press.directive.ts","ng://@swimlane/ngx-datatable/lib/components/body/scroller.component.ts","ng://@swimlane/ngx-datatable/lib/components/body/body-group-header-template.directive.ts","ng://@swimlane/ngx-datatable/lib/components/body/body-group-header.directive.ts","ng://@swimlane/ngx-datatable/lib/utils/column-prop-getters.ts","ng://@swimlane/ngx-datatable/lib/utils/tree.ts","ng://@swimlane/ngx-datatable/lib/utils/camel-case.ts","ng://@swimlane/ngx-datatable/lib/utils/id.ts","ng://@swimlane/ngx-datatable/lib/utils/column-helper.ts","ng://@swimlane/ngx-datatable/lib/types/column-mode.type.ts","ng://@swimlane/ngx-datatable/lib/types/selection.type.ts","ng://@swimlane/ngx-datatable/lib/types/sort.type.ts","ng://@swimlane/ngx-datatable/lib/types/contextmenu.type.ts","ng://@swimlane/ngx-datatable/lib/components/columns/column-header.directive.ts","ng://@swimlane/ngx-datatable/lib/components/columns/column-cell.directive.ts","ng://@swimlane/ngx-datatable/lib/components/columns/tree.directive.ts","ng://@swimlane/ngx-datatable/lib/components/columns/column.directive.ts","ng://@swimlane/ngx-datatable/lib/components/row-detail/row-detail-template.directive.ts","ng://@swimlane/ngx-datatable/lib/components/row-detail/row-detail.directive.ts","ng://@swimlane/ngx-datatable/lib/components/footer/footer.directive.ts","ng://@swimlane/ngx-datatable/lib/utils/column.ts","ng://@swimlane/ngx-datatable/lib/utils/row-height-cache.ts","ng://@swimlane/ngx-datatable/lib/utils/prefixes.ts","ng://@swimlane/ngx-datatable/lib/utils/translate.ts","ng://@swimlane/ngx-datatable/lib/components/body/body.component.ts","ng://@swimlane/ngx-datatable/lib/components/header/header.component.ts","ng://@swimlane/ngx-datatable/lib/utils/throttle.ts","ng://@swimlane/ngx-datatable/lib/utils/math.ts","ng://@swimlane/ngx-datatable/lib/types/sort-direction.type.ts","ng://@swimlane/ngx-datatable/lib/utils/sort.ts","ng://@swimlane/ngx-datatable/lib/components/datatable.component.ts","ng://@swimlane/ngx-datatable/lib/components/header/header-cell.component.ts","ng://@swimlane/ngx-datatable/lib/components/footer/footer.component.ts","ng://@swimlane/ngx-datatable/lib/components/footer/pager.component.ts","ng://@swimlane/ngx-datatable/lib/components/body/progress-bar.component.ts","ng://@swimlane/ngx-datatable/lib/utils/keys.ts","ng://@swimlane/ngx-datatable/lib/components/body/body-row.component.ts","ng://@swimlane/ngx-datatable/lib/components/body/body-row-wrapper.component.ts","ng://@swimlane/ngx-datatable/lib/components/body/body-cell.component.ts","ng://@swimlane/ngx-datatable/lib/utils/selection.ts","ng://@swimlane/ngx-datatable/lib/components/body/selection.component.ts","ng://@swimlane/ngx-datatable/lib/components/body/summary/summary-row.component.ts","ng://@swimlane/ngx-datatable/lib/ngx-datatable.module.ts","ng://@swimlane/ngx-datatable/lib/types/click.type.ts","ng://@swimlane/ngx-datatable/lib/utils/elm-from-point.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\n@Injectable()\nexport class ScrollbarHelper {\n width: number = this.getWidth();\n\n constructor(@Inject(DOCUMENT) private document: any) {}\n\n getWidth(): number {\n const outer = this.document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.msOverflowStyle = 'scrollbar';\n this.document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = this.document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\n@Injectable()\nexport class DimensionsHelper {\n getDimensions(element: Element): ClientRect {\n return element.getBoundingClientRect();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * service to make DatatableComponent aware of changes to\n * input bindings of DataTableColumnDirective\n */\n@Injectable()\nexport class ColumnChangesService {\n private columnInputChanges = new Subject<undefined>();\n\n get columnInputChanges$(): Observable<undefined> {\n return this.columnInputChanges.asObservable();\n }\n\n onInputChange(): void {\n this.columnInputChanges.next();\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-footer-template]' })\nexport class DataTableFooterTemplateDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, Output, EventEmitter, ElementRef, HostBinding, NgZone, OnInit, OnDestroy } from '@angular/core';\n\n/**\n * Visibility Observer Directive\n *\n * Usage:\n *\n * \t\t<div\n * \t\t\tvisibilityObserver\n * \t\t\t(visible)=\"onVisible($event)\">\n * \t\t</div>\n *\n */\n@Directive({ selector: '[visibilityObserver]' })\nexport class VisibilityDirective implements OnInit, OnDestroy {\n @HostBinding('class.visible')\n isVisible: boolean = false;\n\n @Output() visible: EventEmitter<any> = new EventEmitter();\n\n timeout: any;\n\n constructor(private element: ElementRef, private zone: NgZone) {}\n\n ngOnInit(): void {\n this.runCheck();\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timeout);\n }\n\n onVisibilityChange(): void {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n\n runCheck(): void {\n const check = () => {\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n } else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 50);\n });\n }\n };\n\n this.timeout = setTimeout(() => check());\n }\n}\n","import { Directive, ElementRef, Input, Output, EventEmitter, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Draggable Directive for Angular2\n *\n * Inspiration:\n * https://github.com/AngularClass/angular2-examples/blob/master/rx-draggable/directives/draggable.ts\n * http://stackoverflow.com/questions/35662530/how-to-implement-drag-and-drop-in-angular2\n *\n */\n@Directive({ selector: '[draggable]' })\nexport class DraggableDirective implements OnDestroy, OnChanges {\n @Input() dragEventTarget: any;\n @Input() dragModel: any;\n @Input() dragX: boolean = true;\n @Input() dragY: boolean = true;\n\n @Output() dragStart: EventEmitter<any> = new EventEmitter();\n @Output() dragging: EventEmitter<any> = new EventEmitter();\n @Output() dragEnd: EventEmitter<any> = new EventEmitter();\n\n element: HTMLElement;\n isDragging: boolean = false;\n subscription: Subscription;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dragEventTarget'] && changes['dragEventTarget'].currentValue && this.dragModel.dragging) {\n this.onMousedown(changes['dragEventTarget'].currentValue);\n }\n }\n\n ngOnDestroy(): void {\n this._destroySubscription();\n }\n\n onMouseup(event: MouseEvent): void {\n if (!this.isDragging) return;\n\n this.isDragging = false;\n this.element.classList.remove('dragging');\n\n if (this.subscription) {\n this._destroySubscription();\n this.dragEnd.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n\n onMousedown(event: MouseEvent): void {\n // we only want to drag the inner header text\n const isDragElm = (<HTMLElement>event.target).classList.contains('draggable');\n\n if (isDragElm && (this.dragX || this.dragY)) {\n event.preventDefault();\n this.isDragging = true;\n\n const mouseDownPos = { x: event.clientX, y: event.clientY };\n\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup(ev));\n\n const mouseMoveSub = fromEvent(document, 'mousemove')\n .pipe(takeUntil(mouseup))\n .subscribe((ev: MouseEvent) => this.move(ev, mouseDownPos));\n\n this.subscription.add(mouseMoveSub);\n\n this.dragStart.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n\n move(event: MouseEvent, mouseDownPos: { x: number; y: number }): void {\n if (!this.isDragging) return;\n\n const x = event.clientX - mouseDownPos.x;\n const y = event.clientY - mouseDownPos.y;\n\n if (this.dragX) this.element.style.left = `${x}px`;\n if (this.dragY) this.element.style.top = `${y}px`;\n\n this.element.classList.add('dragging');\n\n this.dragging.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n\n private _destroySubscription(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n AfterViewInit,\n Renderer2\n} from '@angular/core';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizeable]',\n host: {\n '[class.resizeable]': 'resizeEnabled'\n }\n})\nexport class ResizeableDirective implements OnDestroy, AfterViewInit {\n @Input() resizeEnabled: boolean = true;\n @Input() minWidth: number;\n @Input() maxWidth: number;\n\n @Output() resize: EventEmitter<any> = new EventEmitter();\n\n element: HTMLElement;\n subscription: Subscription;\n resizing: boolean = false;\n private resizeHandle: HTMLElement;\n\n constructor(element: ElementRef, private renderer: Renderer2) {\n this.element = element.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const renderer2 = this.renderer;\n this.resizeHandle = renderer2.createElement('span');\n if (this.resizeEnabled) {\n renderer2.addClass(this.resizeHandle, 'resize-handle');\n } else {\n renderer2.addClass(this.resizeHandle, 'resize-handle--not-resizable');\n }\n renderer2.appendChild(this.element, this.resizeHandle);\n }\n\n ngOnDestroy(): void {\n this._destroySubscription();\n if (this.renderer.destroyNode) {\n this.renderer.destroyNode(this.resizeHandle);\n } else if (this.resizeHandle) {\n this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle);\n }\n }\n\n onMouseup(): void {\n this.resizing = false;\n\n if (this.subscription && !this.subscription.closed) {\n this._destroySubscription();\n this.resize.emit(this.element.clientWidth);\n }\n }\n\n @HostListener('mousedown', ['$event'])\n onMousedown(event: MouseEvent): void {\n const isHandle = (<HTMLElement>event.target).classList.contains('resize-handle');\n const initialWidth = this.element.clientWidth;\n const mouseDownScreenX = event.screenX;\n\n if (isHandle) {\n event.stopPropagation();\n this.resizing = true;\n\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup());\n\n const mouseMoveSub = fromEvent(document, 'mousemove')\n .pipe(takeUntil(mouseup))\n .subscribe((e: MouseEvent) => this.move(e, initialWidth, mouseDownScreenX));\n\n this.subscription.add(mouseMoveSub);\n }\n }\n\n move(event: MouseEvent, initialWidth: number, mouseDownScreenX: number): void {\n const movementX = event.screenX - mouseDownScreenX;\n const newWidth = initialWidth + movementX;\n\n const overMinWidth = !this.minWidth || newWidth >= this.minWidth;\n const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth;\n\n if (overMinWidth && underMaxWidth) {\n this.element.style.width = `${newWidth}px`;\n }\n }\n\n private _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","import {\n Directive,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n KeyValueDiffers,\n AfterContentInit,\n OnDestroy,\n Inject\n} from '@angular/core';\nimport { DraggableDirective } from './draggable.directive';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({ selector: '[orderable]' })\nexport class OrderableDirective implements AfterContentInit, OnDestroy {\n @Output() reorder: EventEmitter<any> = new EventEmitter();\n @Output() targetChanged: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(DraggableDirective, { descendants: true })\n draggables: QueryList<DraggableDirective>;\n\n positions: any;\n differ: any;\n lastDraggingIndex: number;\n\n constructor(differs: KeyValueDiffers, @Inject(DOCUMENT) private document: any) {\n this.differ = differs.find({}).create();\n }\n\n ngAfterContentInit(): void {\n // HACK: Investigate Better Way\n this.updateSubscriptions();\n this.draggables.changes.subscribe(this.updateSubscriptions.bind(this));\n }\n\n ngOnDestroy(): void {\n this.draggables.forEach(d => {\n d.dragStart.unsubscribe();\n d.dragging.unsubscribe();\n d.dragEnd.unsubscribe();\n });\n }\n\n updateSubscriptions(): void {\n const diffs = this.differ.diff(this.createMapDiffs());\n\n if (diffs) {\n const subscribe = ({ currentValue, previousValue }: any) => {\n unsubscribe({ previousValue });\n\n if (currentValue) {\n currentValue.dragStart.subscribe(this.onDragStart.bind(this));\n currentValue.dragging.subscribe(this.onDragging.bind(this));\n currentValue.dragEnd.subscribe(this.onDragEnd.bind(this));\n }\n };\n\n const unsubscribe = ({ previousValue }: any) => {\n if (previousValue) {\n previousValue.dragStart.unsubscribe();\n previousValue.dragging.unsubscribe();\n previousValue.dragEnd.unsubscribe();\n }\n };\n\n diffs.forEachAddedItem(subscribe);\n // diffs.forEachChangedItem(subscribe.bind(this));\n diffs.forEachRemovedItem(unsubscribe);\n }\n }\n\n onDragStart(): void {\n this.positions = {};\n\n let i = 0;\n for (const dragger of this.draggables.toArray()) {\n const elm = dragger.element;\n const left = parseInt(elm.offsetLeft.toString(), 0);\n this.positions[dragger.dragModel.prop] = {\n left,\n right: left + parseInt(elm.offsetWidth.toString(), 0),\n index: i++,\n element: elm\n };\n }\n }\n\n onDragging({ element, model, event }: any): void {\n const prevPos = this.positions[model.prop];\n const target = this.isTarget(model, event);\n\n if (target) {\n if (this.lastDraggingIndex !== target.i) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n newIndex: target.i,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = target.i;\n }\n } else if (this.lastDraggingIndex !== prevPos.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = prevPos.index;\n }\n }\n\n onDragEnd({ element, model, event }: any): void {\n const prevPos = this.positions[model.prop];\n\n const target = this.isTarget(model, event);\n if (target) {\n this.reorder.emit({\n prevIndex: prevPos.index,\n newIndex: target.i,\n model\n });\n }\n\n this.lastDraggingIndex = undefined;\n element.style.left = 'auto';\n }\n\n isTarget(model: any, event: any): any {\n let i = 0;\n const x = event.x || event.clientX;\n const y = event.y || event.clientY;\n const targets = this.document.elementsFromPoint(x, y);\n\n for (const prop in this.positions) {\n // current column position which throws event.\n const pos = this.positions[prop];\n\n // since we drag the inner span, we need to find it in the elements at the cursor\n if (model.prop !== prop && targets.find((el: any) => el === pos.element)) {\n return {\n pos,\n i\n };\n }\n\n i++;\n }\n }\n\n private createMapDiffs(): { [key: string]: DraggableDirective } {\n return this.draggables.toArray().reduce((acc, curr) => {\n acc[curr.dragModel.$$id] = curr;\n return acc;\n }, {});\n }\n}\n","import { Directive, Input, Output, EventEmitter, HostBinding, HostListener, OnDestroy } from '@angular/core';\nimport { Observable, Subscription, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MouseEvent } from '../events';\n\n@Directive({ selector: '[long-press]' })\nexport class LongPressDirective implements OnDestroy {\n @Input() pressEnabled: boolean = true;\n @Input() pressModel: any;\n @Input() duration: number = 500;\n\n @Output() longPressStart: EventEmitter<any> = new EventEmitter();\n @Output() longPressing: EventEmitter<any> = new EventEmitter();\n @Output() longPressEnd: EventEmitter<any> = new EventEmitter();\n\n pressing: boolean;\n isLongPressing: boolean;\n timeout: any;\n mouseX: number = 0;\n mouseY: number = 0;\n\n subscription: Subscription;\n\n @HostBinding('class.press')\n get press(): boolean {\n return this.pressing;\n }\n\n @HostBinding('class.longpress')\n get isLongPress(): boolean {\n return this.isLongPressing;\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n // don't do right/middle clicks\n if (event.which !== 1 || !this.pressEnabled) return;\n\n // don't start drag if its on resize handle\n const target = <HTMLElement>event.target;\n if (target.classList.contains('resize-handle')) return;\n\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n\n this.pressing = true;\n this.isLongPressing = false;\n\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup());\n\n this.timeout = setTimeout(() => {\n this.isLongPressing = true;\n this.longPressStart.emit({\n event,\n model: this.pressModel\n });\n\n this.subscription.add(\n fromEvent(document, 'mousemove')\n .pipe(takeUntil(mouseup))\n .subscribe((mouseEvent: MouseEvent) => this.onMouseMove(mouseEvent))\n );\n\n this.loop(event);\n }, this.duration);\n\n this.loop(event);\n }\n\n onMouseMove(event: MouseEvent): void {\n if (this.pressing && !this.isLongPressing) {\n const xThres = Math.abs(event.clientX - this.mouseX) > 10;\n const yThres = Math.abs(event.clientY - this.mouseY) > 10;\n\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n\n loop(event: MouseEvent): void {\n if (this.isLongPressing) {\n this.timeout = setTimeout(() => {\n this.longPressing.emit({\n event,\n model: this.pressModel\n });\n this.loop(event);\n }, 50);\n }\n }\n\n endPress(): void {\n clearTimeout(this.timeout);\n this.isLongPressing = false;\n this.pressing = false;\n this._destroySubscription();\n\n this.longPressEnd.emit({\n model: this.pressModel\n });\n }\n\n onMouseup(): void {\n this.endPress();\n }\n\n ngOnDestroy(): void {\n this._destroySubscription();\n }\n\n private _destroySubscription(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","import {\n Component,\n Input,\n ElementRef,\n Output,\n EventEmitter,\n Renderer2,\n NgZone,\n OnInit,\n OnDestroy,\n HostBinding,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { MouseEvent } from '../../events';\n\n@Component({\n selector: 'datatable-scroller',\n template: ` <ng-content></ng-content> `,\n host: {\n class: 'datatable-scroll'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScrollerComponent implements OnInit, OnDestroy {\n @Input() scrollbarV: boolean = false;\n @Input() scrollbarH: boolean = false;\n\n @HostBinding('style.height.px')\n @Input()\n scrollHeight: number;\n\n @HostBinding('style.width.px')\n @Input()\n scrollWidth: number;\n\n @Output() scroll: EventEmitter<any> = new EventEmitter();\n\n scrollYPos: number = 0;\n scrollXPos: number = 0;\n prevScrollYPos: number = 0;\n prevScrollXPos: number = 0;\n element: any;\n parentElement: any;\n onScrollListener: any;\n\n private _scrollEventListener: any = null;\n\n constructor(private ngZone: NgZone, element: ElementRef, private renderer: Renderer2) {\n this.element = element.nativeElement;\n }\n\n ngOnInit(): void {\n // manual bind so we don't always listen\n if (this.scrollbarV || this.scrollbarH) {\n const renderer = this.renderer;\n this.parentElement = renderer.parentNode(renderer.parentNode(this.element));\n this._scrollEventListener = this.onScrolled.bind(this);\n this.parentElement.addEventListener('scroll', this._scrollEventListener);\n }\n }\n\n ngOnDestroy(): void {\n if (this._scrollEventListener) {\n this.parentElement.removeEventListener('scroll', this._scrollEventListener);\n this._scrollEventListener = null;\n }\n }\n\n setOffset(offsetY: number): void {\n if (this.parentElement) {\n this.parentElement.scrollTop = offsetY;\n }\n }\n\n onScrolled(event: MouseEvent): void {\n const dom: Element = <Element>event.currentTarget;\n requestAnimationFrame(() => {\n this.scrollYPos = dom.scrollTop;\n this.scrollXPos = dom.scrollLeft;\n this.updateOffset();\n });\n }\n\n updateOffset(): void {\n let direction: string;\n if (this.scrollYPos < this.prevScrollYPos) {\n direction = 'down';\n } else if (this.scrollYPos > this.prevScrollYPos) {\n direction = 'up';\n }\n\n this.scroll.emit({\n direction,\n scrollYPos: this.scrollYPos,\n scrollXPos: this.scrollXPos\n });\n\n this.prevScrollYPos = this.scrollYPos;\n this.prevScrollXPos = this.scrollXPos;\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-group-header-template]'\n})\nexport class DatatableGroupHeaderTemplateDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';\nimport { DatatableGroupHeaderTemplateDirective } from './body-group-header-template.directive';\n\n@Directive({ selector: 'ngx-datatable-group-header' })\nexport class DatatableGroupHeaderDirective {\n /**\n * Row height is required when virtual scroll is enabled.\n */\n @Input() rowHeight: number | ((group?: any, index?: number) => number) = 0;\n\n @Input('template')\n _templateInput: TemplateRef<any>;\n\n @ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any>;\n\n get template(): TemplateRef<any> {\n return this._templateInput || this._templateQuery;\n }\n\n /**\n * Track toggling of group visibility\n */\n @Output() toggle: EventEmitter<any> = new EventEmitter();\n\n /**\n * Toggle the expansion of a group\n */\n toggleExpandGroup(group: any): void {\n this.toggle.emit({\n type: 'group',\n value: group\n });\n }\n\n /**\n * Expand all groups\n */\n expandAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * Collapse all groups\n */\n collapseAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import { TableColumnProp } from '../types/table-column.type';\n\n// maybe rename this file to prop-getters.ts\n\nexport type ValueGetter = (obj: any, prop: TableColumnProp) => any;\n\n/**\n * Always returns the empty string ''\n */\nexport function emptyStringGetter(): string {\n return '';\n}\n\n/**\n * Returns the appropriate getter function for this kind of prop.\n * If prop == null, returns the emptyStringGetter.\n */\nexport function getterForProp(prop: TableColumnProp): ValueGetter {\n if (prop == null) {\n return emptyStringGetter;\n }\n\n if (typeof prop === 'number') {\n return numericIndexGetter;\n } else {\n // deep or simple\n if (prop.indexOf('.') !== -1) {\n return deepValueGetter;\n } else {\n return shallowValueGetter;\n }\n }\n}\n\n/**\n * Returns the value at this numeric index.\n * @param row array of values\n * @param index numeric index\n * @returns any or '' if invalid index\n */\nexport function numericIndexGetter(row: any[], index: number): any {\n if (row == null) {\n return '';\n }\n // mimic behavior of deepValueGetter\n if (!row || index == null) {\n return row;\n }\n\n const value = row[index];\n if (value == null) {\n return '';\n }\n return value;\n}\n\n/**\n * Returns the value of a field.\n * (more efficient than deepValueGetter)\n * @param obj object containing the field\n * @param fieldName field name string\n */\nexport function shallowValueGetter(obj: any, fieldName: string): any {\n if (obj == null) {\n return '';\n }\n if (!obj || !fieldName) {\n return obj;\n }\n\n const value = obj[fieldName];\n if (value == null) {\n return '';\n }\n return value;\n}\n\n/**\n * Returns a deep object given a string. zoo['animal.type']\n */\nexport function deepValueGetter(obj: any, path: string): any {\n if (obj == null) {\n return '';\n }\n if (!obj || !path) {\n return obj;\n }\n\n // check if path matches a root-level field\n // { \"a.b.c\": 123 }\n let current = obj[path];\n if (current !== undefined) {\n return current;\n }\n\n current = obj;\n const split = path.split('.');\n\n if (split.length) {\n for (let i = 0; i < split.length; i++) {\n current = current[split[i]];\n\n // if found undefined, return empty string\n if (current === undefined || current === null) {\n return '';\n }\n }\n }\n\n return current;\n}\n","import { getterForProp } from './column-prop-getters';\nimport { TableColumnProp } from '../types/table-column.type';\n\nexport type OptionalValueGetter = (row: any) => any | undefined;\nexport function optionalGetterForProp(prop: TableColumnProp): OptionalValueGetter {\n return prop && (row => getterForProp(prop)(row, prop));\n}\n\n/**\n * This functions rearrange items by their parents\n * Also sets the level value to each of the items\n *\n * Note: Expecting each item has a property called parentId\n * Note: This algorithm will fail if a list has two or more items with same ID\n * NOTE: This algorithm will fail if there is a deadlock of relationship\n *\n * For example,\n *\n * Input\n *\n * id -> parent\n * 1 -> 0\n * 2 -> 0\n * 3 -> 1\n * 4 -> 1\n * 5 -> 2\n * 7 -> 8\n * 6 -> 3\n *\n *\n * Output\n * id -> level\n * 1 -> 0\n * --3 -> 1\n * ----6 -> 2\n * --4 -> 1\n * 2 -> 0\n * --5 -> 1\n * 7 -> 8\n *\n *\n * @param rows\n *\n */\nexport function groupRowsByParents(rows: any[], from?: OptionalValueGetter, to?: OptionalValueGetter): any[] {\n if (from && to) {\n const nodeById = {};\n const l = rows.length;\n let node: TreeNode | null = null;\n\n nodeById[0] = new TreeNode(); // that's the root node\n\n const uniqIDs = rows.reduce((arr, item) => {\n const toValue = to(item);\n if (arr.indexOf(toValue) === -1) {\n arr.push(toValue);\n }\n return arr;\n }, []);\n\n for (let i = 0; i < l; i++) {\n // make TreeNode objects for each item\n nodeById[to(rows[i])] = new TreeNode(rows[i]);\n }\n\n for (let i = 0; i < l; i++) {\n // link all TreeNode objects\n node = nodeById[to(rows[i])];\n let parent = 0;\n const fromValue = from(node.row);\n if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) {\n parent = fromValue;\n }\n node.parent = nodeById[parent];\n node.row['level'] = node.parent.row['level'] + 1;\n node.parent.children.push(node);\n }\n\n let resolvedRows: any[] = [];\n nodeById[0].flatten(function () {\n resolvedRows = [...resolvedRows, this.row];\n }, true);\n\n return resolvedRows;\n } else {\n return rows;\n }\n}\n\nclass TreeNode {\n public row: any;\n public parent: any;\n public children: any[];\n\n constructor(row: any | null = null) {\n if (!row) {\n row = {\n level: -1,\n treeStatus: 'expanded'\n };\n }\n this.row = row;\n this.parent = null;\n this.children = [];\n }\n\n flatten(f: any, recursive: boolean) {\n if (this.row['treeStatus'] === 'expanded') {\n for (let i = 0, l = this.children.length; i < l; i++) {\n const child = this.children[i];\n f.apply(child, Array.prototype.slice.call(arguments, 2));\n if (recursive) child.flatten.apply(child, arguments);\n }\n }\n }\n}\n","/**\n * Converts strings from something to camel case\n * http://stackoverflow.com/questions/10425287/convert-dash-separated-string-to-camelcase\n */\nexport function camelCase(str: string): string {\n // Replace special characters with a space\n str = str.replace(/[^a-zA-Z0-9 ]/g, ' ');\n // put a space before an uppercase letter\n str = str.replace(/([a-z](?=[A-Z]))/g, '$1 ');\n\n // Lower case first character and some other stuff\n str = str\n .replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, '')\n .trim()\n .toLowerCase();\n\n // uppercase characters preceded by a space or number\n str = str.replace(/([ 0-9]+)([a-zA-Z])/g, function (a, b, c) {\n return b.trim() + c.toUpperCase();\n });\n\n return str;\n}\n\n/**\n * Converts strings from camel case to words\n * http://stackoverflow.com/questions/7225407/convert-camelcasetext-to-camel-case-text\n */\nexport function deCamelCase(str: string): string {\n return str.replace(/([A-Z])/g, match => ` ${match}`).replace(/^./, match => match.toUpperCase());\n}\n","/**\n * Creates a unique object id.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n */\nexport function id() {\n return ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n}\n","import { camelCase, deCamelCase } from './camel-case';\nimport { id } from './id';\nimport { getterForProp } from './column-prop-getters';\nimport { TableColumn } from '../types/table-column.type';\nimport { DataTableColumnDirective } from '../components/columns/column.directive';\n\n/**\n * Sets the column defaults\n */\nexport function setColumnDefaults(columns: TableColumn[]) {\n if (!columns) return;\n\n // Only one column should hold the tree view\n // Thus if multiple columns are provided with\n // isTreeColumn as true we take only the first one\n let treeColumnFound: boolean = false;\n\n for (const column of columns) {\n if (!column.$$id) {\n column.$$id = id();\n }\n\n // prop can be numeric; zero is valid not a missing prop\n // translate name => prop\n if (isNullOrUndefined(column.prop) && column.name) {\n column.prop = camelCase(column.name);\n }\n\n if (!column.$$valueGetter) {\n column.$$valueGetter = getterForProp(column.prop);\n }\n\n // format props if no name passed\n if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = deCamelCase(String(column.prop));\n }\n\n if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = ''; // Fixes IE and Edge displaying `null`\n }\n\n if (!column.hasOwnProperty('resizeable')) {\n column.resizeable = true;\n }\n\n if (!column.hasOwnProperty('sortable')) {\n column.sortable = true;\n }\n\n if (!column.hasOwnProperty('draggable')) {\n column.draggable = true;\n }\n\n if (!column.hasOwnProperty('canAutoResize')) {\n column.canAutoResize = true;\n }\n\n if (!column.hasOwnProperty('width')) {\n column.width = 150;\n }\n\n if (!column.hasOwnProperty('isTreeColumn')) {\n column.isTreeColumn = false;\n } else {\n if (column.isTreeColumn && !treeColumnFound) {\n // If the first column with isTreeColumn is true found\n // we mark that treeCoulmn is found\n treeColumnFound = true;\n } else {\n // After that isTreeColumn property for any other column\n // will be set as false\n column.isTreeColumn = false;\n }\n }\n }\n}\n\nexport function isNullOrUndefined<T>(value: T | null | undefined): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Translates templates definitions to objects\n */\nexport function translateTemplates(templates: DataTableColumnDirective[]): any[] {\n const result: any[] = [];\n for (const temp of templates) {\n const col: any = {};\n\n const props = Object.getOwnPropertyNames(temp);\n for (const prop of props) {\n col[prop] = temp[prop];\n }\n\n if (temp.headerTemplate) {\n col.headerTemplate = temp.headerTemplate;\n }\n\n if (temp.cellTemplate) {\n col.cellTemplate = temp.cellTemplate;\n }\n\n if (temp.summaryFunc) {\n col.summaryFunc = temp.summaryFunc;\n }\n\n if (temp.summaryTemplate) {\n col.summaryTemplate = temp.summaryTemplate;\n }\n\n result.push(col);\n }\n\n return result;\n}\n","export enum ColumnMode {\n standard = 'standard',\n flex = 'flex',\n force = 'force'\n}\n","export enum SelectionType {\n single = 'single',\n multi = 'multi',\n multiClick = 'multiClick',\n cell = 'cell',\n checkbox = 'checkbox'\n}\n","export enum SortType {\n single = 'single',\n multi = 'multi'\n}\n","export enum ContextmenuType {\n header = 'header',\n body = 'body'\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-header-template]' })\nexport class DataTableColumnHeaderDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-cell-template]' })\nexport class DataTableColumnCellDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-tree-toggle]' })\nexport class DataTableColumnCellTreeToggle {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef, ContentChild, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataTableColumnHeaderDirective } from './column-header.directive';\nimport { DataTableColumnCellDirective } from './column-cell.directive';\nimport { DataTableColumnCellTreeToggle } from './tree.directive';\nimport { ColumnChangesService } from '../../services/column-changes.service';\nimport { TableColumnProp } from '../../types/table-column.type';\n\n@Directive({ selector: 'ngx-datatable-column' })\nexport class DataTableColumnDirective implements OnChanges {\n @Input() name: string;\n @Input() prop: TableColumnProp;\n @Input() frozenLeft: any;\n @Input() frozenRight: any;\n @Input() flexGrow: number;\n @Input() resizeable: boolean;\n @Input() comparator: any;\n @Input() pipe: any;\n @Input() sortable: boolean;\n @Input() draggable: boolean;\n @Input() canAutoResize: boolean;\n @Input() minWidth: number;\n @Input() width: number;\n @Input() maxWidth: number;\n @Input() checkboxable: boolean;\n @Input() headerCheckboxable: boolean;\n @Input() headerClass: string | ((data: any) => string | any);\n @Input() cellClass: string | ((data: any) => string | any);\n @Input() isTreeColumn: boolean;\n @Input() treeLevelIndent: number;\n @Input() summaryFunc: (cells: any[]) => any;\n @Input() summaryTemplate: TemplateRef<any>;\n\n @Input('cellTemplate')\n _cellTemplateInput: TemplateRef<any>;\n\n @ContentChild(DataTableColumnCellDirective, { read: TemplateRef, static: true })\n _cellTemplateQuery: TemplateRef<any>;\n\n get cellTemplate(): TemplateRef<any> {\n return this._cellTemplateInput || this._cellTemplateQuery;\n }\n\n @Input('headerTemplate')\n _headerTemplateInput: TemplateRef<any>;\n\n @ContentChild(DataTableColumnHeaderDirective, { read: TemplateRef, static: true })\n _headerTemplateQuery: TemplateRef<any>;\n\n get headerTemplate(): TemplateRef<any> {\n return this._headerTemplateInput || this._headerTemplateQuery;\n }\n\n @Input('treeToggleTemplate')\n _treeToggleTemplateInput: TemplateRef<any>;\n\n @ContentChild(DataTableColumnCellTreeToggle, { read: TemplateRef, static: true })\n _treeToggleTemplateQuery: TemplateRef<any>;\n\n get treeToggleTemplate(): TemplateRef<any> {\n return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;\n }\n\n private isFirstChange = true;\n\n constructor(private columnChangesService: ColumnChangesService) {}\n\n ngOnChanges() {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.columnChangesService.onInputChange();\n }\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-row-detail-template]'\n})\nexport class DatatableRowDetailTemplateDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';\nimport { DatatableRowDetailTemplateDirective } from './row-detail-template.directive';\n\n@Directive({ selector: 'ngx-datatable-row-detail' })\nexport class DatatableRowDetailDirective {\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n @Input() rowHeight: number | ((row?: any, index?: number) => number) = 0;\n\n @Input('template')\n _templateInput: TemplateRef<any>;\n\n @ContentChild(DatatableRowDetailTemplateDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any>;\n\n get template(): TemplateRef<any> {\n return this._templateInput || this._templateQuery;\n }\n\n /**\n * Row detail row visbility was toggled.\n */\n @Output() toggle: EventEmitter<any> = new EventEmitter();\n\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row: any): void {\n this.toggle.emit({\n type: 'row',\n value: row\n });\n }\n\n /**\n * API method to expand all the rows.\n */\n expandAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import { Input, Directive, TemplateRef, ContentChild } from '@angular/core';\nimport { DataTableFooterTemplateDirective } from './footer-template.directive';\n\n@Directive({ selector: 'ngx-datatable-footer' })\nexport class DatatableFooterDirective {\n @Input() footerHeight: number;\n @Input() totalMessage: string;\n @Input() selectedMessage: string | boolean;\n @Input() pagerLeftArrowIcon: string;\n @Input() pagerRightArrowIcon: string;\n @Input() pagerPreviousIcon: string;\n @Input() pagerNextIcon: string;\n\n @Input('template')\n _templateInput: TemplateRef<any>;\n\n @ContentChild(DataTableFooterTemplateDirective, { read: TemplateRef })\n _templateQuery: TemplateRef<any>;\n\n get template(): TemplateRef<any> {\n return this._templateInput || this._templateQuery;\n }\n}\n","/**\n * Returns the columns by pin.\n */\nexport function columnsByPin(cols: any[]) {\n const ret: { left: any; center: any; right: any } = {\n left: [],\n center: [],\n right: []\n };\n\n if (cols) {\n for (const col of cols) {\n if (col.frozenLeft) {\n ret.left.push(col);\n } else if (col.frozenRight) {\n ret.right.push(col);\n } else {\n ret.center.push(col);\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Returns the widths of all group sets of a column\n */\nexport function columnGroupWidths(groups: any, all: any) {\n return {\n left: columnTotalWidth(groups.left),\n center: columnTotalWidth(groups.center),\n right: columnTotalWidth(groups.right),\n total: Math.floor(columnTotalWidth(all))\n };\n}\n\n/**\n * Calculates the total width of all columns and their groups\n */\nexport function columnTotalWidth(columns: any[], prop?: string) {\n let totalWidth = 0;\n\n if (columns) {\n for (const c of columns) {\n const has = prop && c[prop];\n const width = has ? c[prop] : c.width;\n totalWidth = totalWidth + parseFloat(width);\n }\n }\n\n return totalWidth;\n}\n\n/**\n * Calculates the total width of all columns and their groups\n */\nexport function columnsTotalWidth(columns: any, prop?: any) {\n let totalWidth = 0;\n\n for (const column of columns) {\n const has = prop && column[prop];\n totalWidth = totalWidth + (has ? column[prop] : column.width);\n }\n\n return totalWidth;\n}\n\nexport function columnsByPinArr(val: any) {\n const colsByPinArr = [];\n const colsByPin = columnsByPin(val);\n\n colsByPinArr.push({ type: 'left', columns: colsByPin['left'] });\n colsByPinArr.push({ type: 'center', columns: colsByPin['center'] });\n colsByPinArr.push({ type: 'right', columns: colsByPin['right'] });\n\n return colsByPinArr;\n}\n","/**\n * This object contains the cache of the various row heights that are present inside\n * the data table. Its based on Fenwick tree data structure that helps with\n * querying sums that have time complexity of log n.\n *\n * Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html\n * https://github.com/mikolalysenko/fenwick-tree\n *\n */\nexport class RowHeightCache {\n /**\n * Tree Array stores the cumulative information of the row heights to perform efficient\n * range queries and updates. Currently the tree is initialized to the base row\n * height instead of the detail row height.\n */\n private treeArray: number[] = [];\n\n /**\n * Clear the Tree array.\n */\n clearCache(): void {\n this.treeArray = [];\n }\n\n /**\n * Initialize the Fenwick tree with row Heights.\n *\n * @param rows The array of rows which contain the expanded status.\n * @param rowHeight The row height.\n * @param detailRowHeight The detail row height.\n */\n initCache(details: any): void {\n const { rows, rowHeight, detailRowHeight, externalVirtual, rowCount, rowIndexes, rowExpansions } = details;\n const isFn = typeof rowHeight === 'function';\n const isDetailFn = typeof detailRowHeight === 'function';\n\n if (!isFn && isNaN(rowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n // Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.\n if (!isDetailFn && isNaN(detailRowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n const n = externalVirtual ? rowCount : rows.length;\n this.treeArray = new Array(n);\n\n for (let i = 0; i < n; ++i) {\n this.treeArray[i] = 0;\n }\n\n for (let i = 0; i < n; ++i) {\n const row = rows[i];\n let currentRowHeight = rowHeight;\n if (isFn) {\n currentRowHeight = rowHeight(row);\n }\n\n // Add the detail row height to the already expanded rows.\n // This is useful for the table that goes through a filter or sort.\n const expanded = rowExpansions.has(row);\n if (row && expanded) {\n if (isDetailFn) {\n const index = rowIndexes.get(row);\n currentRowHeight += detailRowHeight(row, index);\n } else {\n currentRowHeight += detailRowHeight;\n }\n }\n\n this.update(i, currentRowHeight);\n }\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port. Below handles edge cases.\n */\n getRowIndex(scrollY: number): number {\n if (scrollY === 0) return 0;\n return this.calcRowIndex(scrollY);\n }\n\n /**\n * When a row is expanded or rowHeight is changed, update the height. This can\n * be utilized in future when Angular Data table supports dynamic row heights.\n */\n update(atRowIndex: number, byRowHeight: number): void {\n if (!this.treeArray.length) {\n throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:\n Row Height cache not initialized.`);\n }\n\n const n = this.treeArray.length;\n atRowIndex |= 0;\n\n while (atRowIndex < n) {\n this.treeArray[atRowIndex] += byRowHeight;\n atRowIndex |= atRowIndex + 1;\n }\n }\n\n /**\n * Range Sum query from 1 to the rowIndex\n */\n query(atIndex: number): number {\n if (!this.treeArray.length) {\n throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);\n }\n\n let sum = 0;\n atIndex |= 0;\n\n while (atIndex >= 0) {\n sum += this.treeArray[atIndex];\n atIndex = (atIndex & (atIndex + 1)) - 1;\n }\n\n return sum;\n }\n\n /**\n * Find the total height between 2 row indexes\n */\n queryBetween(atIndexA: number, atIndexB: number): number {\n return this.query(atIndexB) - this.query(atIndexA - 1);\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port.\n */\n private calcRowIndex(sum: number): number {\n if (!this.treeArray.length) return 0;\n\n let pos = -1;\n const dataLength = this.treeArray.length;\n\n // Get the highest bit for the block size.\n const highestBit = Math.pow(2, dataLength.toString(2).length - 1);\n\n for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {\n const nextPos = pos + blockSize;\n if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {\n sum -= this.treeArray[nextPos];\n pos = nextPos;\n }\n }\n\n return pos + 1;\n }\n}\n","import { camelCase } from './camel-case';\n\nconst cache = {};\nconst testStyle = typeof document !== 'undefined' ? document.createElement('div').style : undefined;\n\n// Get Prefix\n// http://davidwalsh.name/vendor-prefix\nconst prefix = (function () {\n const styles = typeof window !== 'undefined' ? window.getComputedStyle(document.documentElement, '') : undefined;\n const match =\n typeof styles !== 'undefined'\n ? Array.prototype.slice\n .call(styles)\n .join('')\n .match(/-(moz|webkit|ms)-/)\n : null;\n const pre = match !== null ? match[1] : undefined;\n // tslint:disable-next-line: tsr-detect-non-literal-regexp\n const dom = typeof pre !== 'undefined' ? 'WebKit|Moz|MS|O'.match(new RegExp('(' + pre + ')', 'i'))[1] : undefined;\n\n return dom\n ? {\n dom,\n lowercase: pre,\n css: `-${pre}-`,\n js: pre[0].toUpperCase() + pre.substr(1)\n }\n : undefined;\n})();\n\nexport function getVendorPrefixedName(property: string) {\n const name = camelCase(property);\n\n if (!cache[name]) {\n if (prefix !== undefined && testStyle[prefix.css + property] !== undefined) {\n cache[name] = prefix.css + property;\n } else if (testStyle[property] !== undefined) {\n cache[name] = property;\n }\n }\n\n return cache[name];\n}\n","import { getVendorPrefixedName } from './prefixes';\nimport { camelCase } from './camel-case';\n\n// browser detection and prefixing tools\nconst transform = typeof window !== 'undefined' ? getVendorPrefixedName('transform') : undefined;\nconst backfaceVisibility = typeof window !== 'undefined' ? getVendorPrefixedName('backfaceVisibility') : undefined;\nconst hasCSSTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('transform') : undefined;\nconst hasCSS3DTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('perspective') : undefined;\nconst ua = typeof window !== 'undefined' ? window.navigator.userAgent : 'Chrome';\nconst isSafari = /Safari\\//.test(ua) && !/Chrome\\//.test(ua);\n\nexport function translateXY(styles: any, x: number, y: number) {\n if (typeof transform !== 'undefined' && hasCSSTransforms) {\n if (!isSafari && hasCSS3DTransforms) {\n styles[transform] = `translate3d(${x}px, ${y}px, 0)`;\n styles[backfaceVisibility] = 'hidden';\n } else {\n styles[camelCase(transform)] = `translate(${x}px, ${y}px)`;\n }\n } else {\n styles.top = `${y}px`;\n styles.left = `${x}px`;\n }\n}\n","import {\n Component,\n Output,\n EventEmitter,\n Input,\n HostBinding,\n ChangeDetectorRef,\n ViewChild,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { ScrollerComponent } from './scroller.component';\nimport { SelectionType } from '../../types/selection.type';\nimport { columnsByPin, columnGroupWidths } from '../../utils/column';\nimport { RowHeightCache } from '../../utils/row-height-cache';\nimport { translateXY } from '../../utils/translate';\n\n@Component({\n selector: 'datatable-body',\n template: `\n <datatable-progress *ngIf=\"loadingIndicator\"> </datatable-progress>\n <datatable-selection\n #selector\n [selected]=\"selected\"\n [rows]=\"rows\"\n [selectCheck]=\"selectCheck\"\n [selectEnabled]=\"selectEnabled\"\n [selectionType]=\"selectionType\"\n [rowIdentity]=\"rowIdentity\"\n (select)=\"select.emit($event)\"\n (activate)=\"activate.emit($event)\"\n >\n <datatable-scroller\n *ngIf=\"rows?.length\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [scrollHeight]=\"scrollHeight\"\n [scrollWidth]=\"columnGroupWidths?.total\"\n (scroll)=\"onBodyScroll($event)\"\n >\n <datatable-summary-row\n *ngIf=\"summaryRow && summaryPosition === 'top'\"\n [rowHeight]=\"summaryHeight\"\n [offsetX]=\"offsetX\"\n [innerWidth]=\"innerWidth\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n >\n </datatable-summary-row>\n <datatable-row-wrapper\n [groupedRows]=\"groupedRows\"\n *ngFor=\"let group of temp; let i = index; trackBy: rowTrackingFn\"\n [innerWidth]=\"innerWidth\"\n [ngStyle]=\"getRowsStyles(group)\"\n [rowDetail]=\"rowDetail\"\n [groupHeader]=\"groupHeader\"\n [offsetX]=\"offsetX\"\n [detailRowHeight]=\"getDetailRowHeight(group && group[i], i)\"\n [row]=\"group\"\n [expanded]=\"getRowExpanded(group)\"\n [rowIndex]=\"getRowIndex(group && group[i])\"\n (rowContextmenu)=\"rowContextmenu.emit($event)\"\n >\n <datatable-body-row\n *ngIf=\"!groupedRows; else groupedRowsTemplate\"\n tabindex=\"-1\"\n [isSelected]=\"selector.getRowSelected(group)\"\n [innerWidth]=\"innerWidth\"\n [offsetX]=\"offsetX\"\n [columns]=\"columns\"\n [rowHeight]=\"getRowHeight(group)\"\n [row]=\"group\"\n [rowIndex]=\"getRowIndex(group)\"\n [expanded]=\"getRowExpanded(group)\"\n [rowClass]=\"rowClass\"\n [displayCheck]=\"displayCheck\"\n [treeStatus]=\"group && group.treeStatus\"\n (treeAction)=\"onTreeAction(group)\"\n (activate)=\"selector.onActivate($event, indexes.first + i)\"\n >\n </datatable-body-row>\n <ng-template #groupedRowsTemplate>\n <datatable-body-row\n *ngFor=\"let row of group.value; let i = index; trackBy: rowTrackingFn\"\n tabindex=\"-1\"\n [isSelected]=\"selector.getRowSelected(row)\"\n [innerWidth]=\"innerWidth\"\n [offsetX]=\"offsetX\"\n [columns]=\"columns\"\n [rowHeight]=\"getRowHeight(row)\"\n [row]=\"row\"\n [group]=\"group.value\"\n [rowIndex]=\"getRowIndex(row)\"\n [expanded]=\"getRowExpanded(row)\"\n [rowClass]=\"rowClass\"\n (activate)=\"selector.onActivate($event, i)\"\n >\n </datatable-body-row>\n </ng-template>\n </datatable-row-wrapper>\n <datatable-summary-row\n *ngIf=\"summaryRow && summaryPosition === 'bottom'\"\n [ngStyle]=\"getBottomSummaryRowStyles()\"\n [rowHeight]=\"summaryHeight\"\n [offsetX]=\"offsetX\"\n [innerWidth]=\"innerWidth\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n >\n </datatable-summary-row>\n </datatable-scroller>\n <div class=\"empty-row\" *ngIf=\"!rows?.length && !loadingIndicator\" [innerHTML]=\"emptyMessage\"></div>\n </datatable-selection>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-body'\n }\n})\nexport class DataTableBodyComponent implements OnInit, OnDestroy {\n @Input() scrollbarV: boolean;\n @Input() scrollbarH: boolean;\n @Input() loadingIndicator: boolean;\n @Input() externalPaging: boolean;\n @Input() rowHeight: number | 'auto' | ((row?: any) => number);\n @Input() offsetX: number;\n @Input() emptyMessage: string;\n @Input() selectionType: SelectionType;\n @Input() selected: any[] = [];\n @Input() rowIdentity: any;\n @Input() rowDetail: any;\n @Input() groupHeader: any;\n @Input() selectCheck: any;\n @Input() displayCheck: any;\n @Input() trackByProp: string;\n @Input() rowClass: any;\n @Input() groupedRows: any;\n @Input() groupExpansionDefault: boolean;\n @Input() innerWidth: number;\n @Input() groupRowsBy: string;\n @Input() virtualization: boolean;\n @Input() summaryRow: boolean;\n @Input() summaryPosition: string;\n @Input() summaryHeight: number;\n\n @Input() set pageSize(val: number) {\n this._pageSize = val;\n this.recalcLayout();\n }\n\n get pageSize(): number {\n return this._pageSize;\n }\n\n @Input() set rows(val: any[]) {\n this._rows = val;\n this.recalcLayout();\n }\n\n get rows(): any[] {\n return this._rows;\n }\n\n @Input() set columns(val: any[]) {\n this._columns = val;\n const colsByPin = columnsByPin(val);\n this.columnGroupWidths = columnGroupWidths(colsByPin, val);\n }\n\n get columns(): any[] {\n return this._columns;\n }\n\n @Input() set offset(val: number) {\n this._offset = val;\n if (!this.scrollbarV || (this.scrollbarV && !this.virtualization)) this.recalcLayout();\n }\n\n get offset(): number {\n return this._offset;\n }\n\n @Input() set rowCount(val: number) {\n this._rowCount = val;\n this.recalcLayout();\n }\n\n get rowCount(): number {\n return this._rowCount;\n }\n\n @HostBinding('style.width')\n get bodyWidth(): string {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n } else {\n return '100%';\n }\n }\n\n @Input()\n @HostBinding('style.height')\n set bodyHeight(val) {\n if (this.scrollbarV) {\n this._bodyHeight = val + 'px';\n } else {\n this._bodyHeight = 'auto';\n }\n\n this.recalcLayout();\n }\n\n get bodyHeight() {\n return this._bodyHeight;\n }\n\n @Output() scroll: EventEmitter<any> = new EventEmitter();\n @Output() page: EventEmitter<any> = new EventEmitter();\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n @Output() detailToggle: EventEmitter<any> = new EventEmitter();\n @Output() rowContextmenu = new EventEmitter<{ event: MouseEvent; row: any }>(false);\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(ScrollerComponent) scroller: ScrollerComponent;\n\n /**\n * Returns if selection is enabled.\n */\n get selectEnabled(): boolean {\n return !!this.selectionType;\n }\n\n /**\n * Property that would calculate the height of scroll bar\n * based on the row heights cache for virtual scroll and virtualization. Other scenarios\n * calculate scroll height automatically (as height will be undefined).\n */\n get scrollHeight(): number | undefined {\n if (this.scrollbarV && this.virtualization && this.rowCount) {\n return this.rowHeightsCache.query(this.rowCount - 1);\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n\n rowHeightsCache: RowHeightCache = new RowHeightCache();\n temp: any[] = [];\n offsetY = 0;\n indexes: any = {};\n columnGroupWidths: any;\n columnGroupWidthsWithoutGroup: any;\n rowTrackingFn: any;\n listener: any;\n rowIndexes: any = new WeakMap<any, string>();\n rowExpansions: any[] = [];\n\n _rows: any[];\n _bodyHeight: any;\n _columns: any[];\n _rowCount: number;\n _offset: number;\n _pageSize: number;\n\n /**\n * Creates an instance of DataTableBodyComponent.\n */\n constructor(private cd: ChangeDetectorRef) {\n // declare fn here so we can get access to the `this` property\n this.rowTrackingFn = (index: number, row: any): any => {\n const idx = this.getRowIndex(row);\n if (this.trackByProp) {\n return row[this.trackByProp];\n } else {\n return idx;\n }\n };\n }\n\n /**\n * Called after the constructor, initializing input properties\n */\n ngOnInit(): void {\n if (this.rowDetail) {\n this.listener = this.rowDetail.toggle.subscribe(({ type, value }: { type: string; value: any }) => {\n if (type === 'row') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n\n if (this.groupHeader) {\n this.listener = this.groupHeader.toggle.subscribe(({ type, value }: { type: string; value: any }) => {\n if (type === 'group') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n }\n\n /**\n * Called once, before the instance is destroyed.\n */\n ngOnDestroy(): void {\n if (this.rowDetail || this.groupHeader) {\n this.listener.unsubscribe();\n }\n }\n\n /**\n * Updates the Y offset given a new offset.\n */\n updateOffsetY(offset?: number): void {\n // scroller is missing on empty table\n if (!this.scroller) {\n return;\n }\n\n if (this.scrollbarV && this.virtualization && offset) {\n // First get the row Index that we need to move to.\n const rowIndex = this.pageSize * offset;\n offset = this.rowHeightsCache.query(rowIndex - 1);\n } else if (this.scrollbarV && !this.virtualization) {\n offset = 0;\n }\n\n this.scroller.setOffset(offset || 0);\n }\n\n /**\n * Body was scrolled, this is mainly useful for\n * when a user is server-side pagination via virtual scroll.\n */\n onBodyScroll(event: any): void {\n const scrollYPos: number = event.scrollYPos;\n const scrollXPos: number = event.scrollXPos;\n\n // if scroll change, trigger update\n // this is mainly used for header cell positions\n if (this.offsetY !== scrollYPos || this.offsetX !== scrollXPos) {\n this.scroll.emit({\n offsetY: scrollYPos,\n offsetX: scrollXPos\n });\n }\n\n this.offsetY = scrollYPos;\n this.offsetX = scrollXPos;\n\n this.updateIndexes();\n this.updatePage(event.direction);\n this.updateRows();\n }\n\n /**\n * Updates the page given a direction.\n */\n updatePage(direction: string): void {\n let offset = this.indexes.first / this.pageSize;\n\n if (direction === 'up') {\n offset = Math.ceil(offset);\n } else if (direction === 'down') {\n offset = Math.floor(offset);\n }\n\n if (direction !== undefined && !isNaN(offset)) {\n this.page.emit({ offset });\n }\n }\n\n /**\n * Updates the rows in the view port\n */\n updateRows(): void {\n const { first, last } = this.indexes;\n let rowIndex = first;\n let idx = 0;\n const temp: any[] = [];\n\n // if grouprowsby has been specified treat row paging\n // parameters as group paging parameters ie if limit 10 has been\n // specified treat it as 10 groups rather than 10 rows\n if (this.groupedRows) {\n let maxRowsPerGroup = 3;\n // if there is only one group set the maximum number of\n // rows per group the same as the total number of rows\n if (this.groupedRows.length === 1) {\n maxRowsPerGroup = this.groupedRows[0].value.length;\n }\n\n while (rowIndex < last && rowIndex < this.groupedRows.length) {\n // Add the groups into this page\n const group = this.groupedRows[rowIndex];\n this.rowIndexes.set(group, rowIndex);\n\n if (group.value) {\n // add indexes for each group item\n group.value.forEach((g: any, i: number) => {\n const _idx = `${rowIndex}-${i}`;\n this.rowIndexes.set(g, _idx);\n });\n }\n temp[idx] = group;\n idx++;\n\n // Group index in this context\n rowIndex++;\n }\n } else {\n while (rowIndex < last && rowIndex < this.rowCount) {\n const row = this.rows[rowIndex];\n\n if (row) {\n // add indexes for each row\n this.rowIndexes.set(row, rowIndex);\n temp[idx] = row;\n }\n\n idx++;\n rowIndex++;\n }\n }\n\n this.temp = temp;\n }\n\n /**\n * Get the row height\n */\n getRowHeight(row: any): number {\n // if its a function return it\n if (typeof this.rowHeight === 'function') {\n return this.rowHeight(row);\n }\n\n return this.rowHeight as number;\n }\n\n /**\n * @param group the group with all rows\n */\n getGroupHeight(group: any): number {\n let rowHeight = 0;\n\n if (group.value) {\n for (let index = 0; index < group.value.length; index++) {\n rowHeight += this.getRowAndDetailHeight(group.value[index]);\n }\n }\n\n return rowHeight;\n }\n\n /**\n * Calculate row height based on the expanded state of the row.\n */\n getRowAndDetailHeight(row: any): number {\n let rowHeight = this.getRowHeight(row);\n const expanded = this.getRowExpanded(row);\n\n // Adding detail row height if its expanded.\n if (expanded) {\n rowHeight += this.getDetailRowHeight(row);\n }\n\n return rowHeight;\n }\n\n /**\n * Get the height of the detail row.\n */\n getDetailRowHeight = (row?: any, index?: any): number => {\n if (!this.rowDetail) {\n return 0;\n }\n const rowHeight = this.rowDetail.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight(row, index) : (rowHeight as number);\n };\n\n /**\n * Calculates the styles for the row so that the rows can be moved in 2D space\n * during virtual scroll inside the DOM. In the below case the Y position is\n * manipulated. As an example, if the height of row 0 is 30 px and row 1 is\n * 100 px then following styles are generated:\n *\n * transform: translate3d(0px, 0px, 0px); -> row0\n * transform: translate3d(0px, 30px, 0px); -> row1\n * transform: translate3d(0px, 130px, 0px); -> row2\n *\n * Row heights have to be calculated based on the row heights cache as we wont\n * be able to determine which row is of what height before hand. In the above\n * case the positionY of the translate3d for row2 would be the sum of all the\n * heights of the rows before it (i.e. row0 and row1).\n *\n * @param rows the row that needs to be placed in the 2D space.\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getRowsStyles(rows: any): any {\n const styles: any = {};\n\n // only add styles for the group if there is a group\n if (this.groupedRows) {\n styles.width = this.columnGroupWidths.total;\n }\n\n if (this.scrollbarV && this.virtualization) {\n let idx = 0;\n\n if (this.groupedRows) {\n // Get the latest row rowindex in a group\n const row = rows[rows.length - 1];\n idx = row ? this.getRowIndex(row) : 0;\n } else {\n idx = this.getRowIndex(rows);\n }\n\n // const pos = idx * rowHeight;\n // The position of this row would be the sum of all row heights\n // until the previous row position.\n const pos = this.rowHeightsCache.query(idx - 1);\n\n translateXY(styles, 0, pos);\n }\n\n return styles;\n }\n\n /**\n * Calculate bottom summary row offset for scrollbar mode.\n * For more information about cache and offset calculation\n * see description for `getRowsStyles` method\n *\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getBottomSummaryRowStyles(): any {\n if (!this.scrollbarV || !this.rows || !this.rows.length) {\n return null;\n }\n\n const styles = { position: 'absolute' };\n const pos = this.rowHeightsCache.query(this.rows.length - 1);\n\n translateXY(styles, 0, pos);\n\n return styles;\n }\n\n /**\n * Hides the loading indicator\n */\n hideIndicator(): void {\n setTimeout(() => (this.loadingIndicator = false), 500);\n }\n\n /**\n * Updates the index of the rows in the viewport\n */\n updateIndexes(): void {\n let first = 0;\n let last = 0;\n\n if (this.scrollbarV) {\n if (this.virtualization) {\n // Calculation of the first and last indexes will be based on where the\n // scrollY position would be at. The last index would be the one\n // that shows up inside the view port the last.\n const height = parseInt(this.bodyHeight, 0);\n first = this.rowHeightsCache.getRowIndex(this.offsetY);\n last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;\n } else {\n // If virtual rows are not needed\n // We render all in one go\n first = 0;\n last = this.rowCount;\n }\n } else {\n // The server is handling paging and will pass an array that begins with the\n // element at a specified offset. first should always be 0 with external paging.\n if (!this.externalPaging) {\n first = Math.max(this.offset * this.pageSize, 0);\n }\n last = Math.min(first + this.pageSize, this.rowCount);\n }\n\n this.indexes = { first, last };\n }\n\n /**\n * Refreshes the full Row Height cache. Should be used\n * when the entire row array state has changed.\n */\n refreshRowHeightCache(): void {\n if (!this.scrollbarV || (this.scrollbarV && !this.virtualization)) {\n return;\n }\n\n // clear the previous row height cache if already present.\n // this is useful during sorts, filters where the state of the\n // rows array is changed.\n this.rowHeightsCache.clearCache();\n\n // Initialize the tree only if there are rows inside the tree.\n if (this.rows && this.rows.length) {\n const rowExpansions = new Set();\n for (const row of this.rows) {\n if (this.getRowExpanded(row)) {\n rowExpansions.add(row);\n }\n }\n\n this.rowHeightsCache.initCache({\n rows: this.rows,\n rowHeight: this.rowHeight,\n detailRowHeight: this.getDetailRowHeight,\n externalVirtual: this.scrollbarV && this.externalPaging,\n rowCount: this.rowCount,\n rowIndexes: this.rowIndexes,\n rowExpansions\n });\n }\n }\n\n /**\n * Gets the index for the view port\n */\n getAdjustedViewPortIndex(): number {\n // Capture the row index of the first row that is visible on the viewport.\n // If the scroll bar is just below the row which is highlighted then make that as the\n // first index.\n const viewPortFirstRowIndex = this.indexes.first;\n\n if (this.scrollbarV && this.virtualization) {\n const offsetScroll = this.rowHeightsCache.query(viewPortFirstRowIndex - 1);\n return offsetScroll <= this.offsetY ? viewPortFirstRowIndex - 1 : viewPortFirstRowIndex;\n }\n\n return viewPortFirstRowIndex;\n }\n\n /**\n * Toggle the Expansion of the row i.e. if the row is expanded then it will\n * collapse and vice versa. Note that the expanded status is stored as\n * a part of the row object itself as we have to preserve the expanded row\n * status in case of sorting and filtering of the row set.\n */\n toggleRowExpansion(row: any): void {\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n const rowExpandedIdx = this.getRowExpandedIdx(row, this.rowExpansions);\n const expanded = rowExpandedIdx > -1;\n\n // If the detailRowHeight is auto --> only in case of non-virtualized scroll\n if (this.scrollbarV && this.virtualization) {\n const detailRowHeight = this.getDetailRowHeight(row) * (expanded ? -1 : 1);\n // const idx = this.rowIndexes.get(row) || 0;\n const idx = this.getRowIndex(row);\n this.rowHeightsCache.update(idx, detailRowHeight);\n }\n\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.rowExpansions.splice(rowExpandedIdx, 1);\n } else {\n this.rowExpansions.push(row);\n }\n\n this.detailToggle.emit({\n rows: [row],\n currentIndex: viewPortFirstRowIndex\n });\n }\n\n /**\n * Expand/Collapse all the rows no matter what their state is.\n */\n toggleAllRows(expanded: boolean): void {\n // clear prev expansions\n this.rowExpansions = [];\n\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n\n if (expanded) {\n for (const row of this.rows) {\n this.rowExpansions.push(row);\n }\n }\n\n if (this.scrollbarV) {\n // Refresh the full row heights cache since every row was affected.\n this.recalcLayout();\n }\n\n // Emit all rows that have been expanded.\n this.detailToggle.emit({\n rows: this.rows,\n currentIndex: viewPortFirstRowIndex\n });\n }\n\n /**\n * Recalculates the table\n */\n recalcLayout(): void {\n this.refreshRowHeightCache();\n this.updateIndexes();\n this.updateRows();\n }\n\n /**\n * Tracks the column\n */\n columnTrackingFn(index: number, column: any): any {\n return column.$$id;\n }\n\n /**\n * Gets the row pinning group styles\n */\n stylesByGroup(group: string) {\n const widths = this.columnGroupWidths;\n const offsetX = this.offsetX;\n\n const styles = {\n width: `${widths[group]}px`\n };\n\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = offsetDiff * -1;\n translateXY(styles, offset, 0);\n }\n\n return styles;\n }\n\n /**\n * Returns if the row was expanded and set default row expansion when row expansion is empty\n */\n getRowExpanded(row: any): boolean {\n if (this.rowExpansions.length === 0 && this.groupExpansionDefault) {\n for (const group of this.groupedRows) {\n this.rowExpansions.push(group);\n }\n }\n\n return this.getRowExpandedIdx(row, this.rowExpansions) > -1;\n }\n\n getRowExpandedIdx(row: any, expanded: any[]): number {\n if (!expanded || !expanded.length) return -1;\n\n const rowId = this.rowIdentity(row);\n return expanded.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n\n /**\n * Gets the row index given a row\n */\n getRowIndex(row: any): number {\n return this.rowIndexes.get(row) || 0;\n }\n\n onTreeAction(row: any) {\n this.treeAction.emit({ row });\n }\n}\n","import {\n Component,\n Output,\n EventEmitter,\n Input,\n HostBinding,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n OnDestroy\n} from '@angular/core';\nimport { columnsByPin, columnGroupWidths, columnsByPinArr } from '../../utils/column';\nimport { SortType } from '../../types/sort.type';\nimport { SelectionType } from '../../types/selection.type';\nimport { DataTableColumnDirective } from '../columns/column.directive';\nimport { translateXY } from '../../utils/translate';\n\n@Component({\n selector: 'datatable-header',\n template: `\n <div\n orderable\n (reorder)=\"onColumnReordered($event)\"\n (targetChanged)=\"onTargetChanged($event)\"\n [style.width.px]=\"_columnGroupWidths.total\"\n class=\"datatable-header-inner\"\n >\n <div\n *ngFor=\"let colGroup of _columnsByPin; trackBy: trackByGroups\"\n [class]=\"'datatable-row-' + colGroup.type\"\n [ngStyle]=\"_styleByGroup[colGroup.type]\"\n >\n <datatable-header-cell\n *ngFor=\"let column of colGroup.columns; trackBy: columnTrackingFn\"\n resizeable\n [resizeEnabled]=\"column.resizeable\"\n (resize)=\"onColumnResized($event, column)\"\n long-press\n [pressModel]=\"column\"\n [pressEnabled]=\"reorderable && column.draggable\"\n (longPressStart)=\"onLongPressStart($event)\"\n (longPressEnd)=\"onLongPressEnd($event)\"\n draggable\n [dragX]=\"reorderable && column.draggable && column.dragging\"\n [dragY]=\"false\"\n [dragModel]=\"column\"\n [dragEventTarget]=\"dragEventTarget\"\n [headerHeight]=\"headerHeight\"\n [isTarget]=\"column.isTarget\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [targetMarkerContext]=\"column.targetMarkerContext\"\n [column]=\"column\"\n [sortType]=\"sortType\"\n [sorts]=\"sorts\"\n [selectionType]=\"selectionType\"\n [sortAscendingIcon]=\"sortAscendingIcon\"\n [sortDescendingIcon]=\"sortDescendingIcon\"\n [allRowsSelected]=\"allRowsSelected\"\n (sort)=\"onSort($event)\"\n (select)=\"select.emit($event)\"\n (columnContextmenu)=\"columnContextmenu.emit($event)\"\n >\n </datatable-header-cell>\n </div>\n </div>\n `,\n host: {\n class: 'datatable-header'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableHeaderComponent implements OnDestroy {\n @Input() sortAscendingIcon: any;\n @Input() sortDescendingIcon: any;\n @Input() scrollbarH: boolean;\n @Input() dealsWithGroup: boolean;\n @Input() targetMarkerTemplate: any;\n\n targetMarkerContext: any;\n\n @Input() set innerWidth(val: number) {\n this._innerWidth = val;\n setTimeout(() => {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n this.setStylesByGroup();\n }\n });\n }\n\n get innerWidth(): number {\n return this._innerWidth;\n }\n\n @Input() sorts: any[];\n @Input() sortType: SortType;\n @Input() allRowsSelected: boolean;\n @Input() selectionType: SelectionType;\n @Input() reorderable: boolean;\n\n dragEventTarget: any;\n\n @HostBinding('style.height')\n @Input()\n set headerHeight(val: any) {\n if (val !== 'auto') {\n this._headerHeight = `${val}px`;\n } else {\n this._headerHeight = val;\n }\n }\n\n get headerHeight(): any {\n return this._headerHeight;\n }\n\n @Input() set columns(val: any[]) {\n this._columns = val;\n\n const colsByPin = columnsByPin(val);\n this._columnsByPin = columnsByPinArr(val);\n setTimeout(() => {\n this._columnGroupWidths = columnGroupWidths(colsByPin, val);\n this.setStylesByGroup();\n });\n }\n\n get columns(): any[] {\n return this._columns;\n }\n\n @Input()\n set offsetX(val: number) {\n this._offsetX = val;\n this.setStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n\n @Output() sort: EventEmitter<any> = new EventEmitter();\n @Output() reorder: EventEmitter<any> = new EventEmitter();\n @Output() resize: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n @Output() columnContextmenu = new EventEmitter<{ event: MouseEvent; column: any }>(false);\n\n _columnsByPin: any;\n _columnGroupWidths: any = {\n total: 100\n };\n _innerWidth: number;\n _offsetX: number;\n _columns: any[];\n _headerHeight: string;\n _styleByGroup: { [prop: string]: {} } = {\n left: {},\n center: {},\n right: {}\n };\n\n private destroyed = false;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n onLongPressStart({ event, model }: { event: any; model: any }) {\n model.dragging = true;\n this.dragEventTarget = event;\n }\n\n onLongPressEnd({ event, model }: { event: any; model: any }) {\n this.dragEventTarget = event;\n\n // delay resetting so sort can be\n // prevented if we were dragging\n setTimeout(() => {\n // datatable component creates copies from columns on reorder\n // set dragging to false on new objects\n const column = this._columns.find(c => c.$$id === model.$$id);\n if (column) {\n column.dragging = false;\n }\n }, 5);\n }\n\n @HostBinding('style.width')\n get headerWidth(): string {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n }\n\n return '100%';\n }\n\n trackByGroups(index: number, colGroup: any): any {\n return colGroup.type;\n }\n\n columnTrackingFn(index: number, column: any): any {\n return column.$$id;\n }\n\n onColumnResized(width: number, column: DataTableColumnDirective): void {\n if (width <= column.minWidth) {\n width = column.minWidth;\n } else if (width >= column.maxWidth) {\n width = column.maxWidth;\n }\n\n this.resize.emit({\n column,\n prevValue: column.width,\n newValue: width\n });\n }\n\n onColumnReordered({ prevIndex, newIndex, model }: any): void {\n const column = this.getColumn(newIndex);\n column.isTarget = false;\n column.targetMarkerContext = undefined;\n this.reorder.emit({\n column: model,\n prevValue: prevIndex,\n newValue: newIndex\n });\n }\n\n onTargetChanged({ prevIndex, newIndex, initialIndex }: any): void {\n if (prevIndex || prevIndex === 0) {\n const oldColumn = this.getColumn(prevIndex);\n oldColumn.isTarget = false;\n oldColumn.targetMarkerContext = undefined;\n }\n if (newIndex || newIndex === 0) {\n const newColumn = this.getColumn(newIndex);\n newColumn.isTarget = true;\n\n if (initialIndex !== newIndex) {\n newColumn.targetMarkerContext = {\n class: 'targetMarker '.concat(initialIndex > newIndex ? 'dragFromRight' : 'dragFromLeft')\n };\n }\n }\n }\n\n getColumn(index: number): any {\n const leftColumnCount = this._columnsByPin[0].columns.length;\n if (index < leftColumnCount) {\n return this._columnsByPin[0].columns[index];\n }\n\n const centerColumnCount = this._columnsByPin[1].columns.length;\n if (index < leftColumnCount + centerColumnCount) {\n return this._columnsByPin[1].columns[index - leftColumnCount];\n }\n\n return this._columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];\n }\n\n onSort({ column, prevValue, newValue }: any): void {\n // if we are dragging don't sort!\n if (column.dragging) {\n return;\n }\n\n const sorts = this.calcNewSorts(column, prevValue, newValue);\n this.sort.emit({\n sorts,\n column,\n prevValue,\n newValue\n });\n }\n\n calcNewSorts(column: any, prevValue: number, newValue: number): any[] {\n let idx = 0;\n\n if (!this.sorts) {\n this.sorts = [];\n }\n\n const sorts = this.sorts.map((s, i) => {\n s = { ...s };\n if (s.prop === column.prop) {\n idx = i;\n }\n return s;\n });\n\n if (newValue === undefined) {\n sorts.splice(idx, 1);\n } else if (prevValue) {\n sorts[idx].dir = newValue;\n } else {\n if (this.sortType === SortType.single) {\n sorts.splice(0, this.sorts.length);\n }\n\n sorts.push({ dir: newValue, prop: column.prop });\n }\n\n return sorts;\n }\n\n setStylesByGroup() {\n this._styleByGroup.left = this.calcStylesByGroup('left');\n this._styleByGroup.center = this.calcStylesByGroup('center');\n this._styleByGroup.right = this.calcStylesByGroup('right');\n if (!this.destroyed) {\n this.cd.detectChanges();\n }\n }\n\n calcStylesByGroup(group: string): any {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n\n const styles = {\n width: `${widths[group]}px`\n };\n\n if (group === 'center') {\n translateXY(styles, offsetX * -1, 0);\n } else if (group === 'right') {\n const totalDiff = widths.total - this.innerWidth;\n const offset = totalDiff * -1;\n translateXY(styles, offset, 0);\n }\n\n return styles;\n }\n}\n","/**\n * Throttle a function\n */\nexport function throttle(func: any, wait: number, options?: any) {\n options = options || {};\n let context: any;\n let args: any;\n let result: any;\n let timeout: any = null;\n let previous = 0;\n\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n\n return function (this: any) {\n const now = +new Date();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n}\n\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nexport function throttleable(duration: number, options?: any) {\n return function innerDecorator(target: any, key: PropertyKey, descriptor: PropertyDescriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n\n return this[key];\n }\n };\n };\n}\n","import { columnsByPin, columnsTotalWidth } from './column';\n\n/**\n * Calculates the Total Flex Grow\n */\nexport function getTotalFlexGrow(columns: any[]) {\n let totalFlexGrow = 0;\n\n for (const c of columns) {\n totalFlexGrow += c.flexGrow || 0;\n }\n\n return totalFlexGrow;\n}\n\n/**\n * Adjusts the column widths.\n * Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js\n */\nexport function adjustColumnWidths(allColumns: any, expectedWidth: any) {\n const columnsWidth = columnsTotalWidth(allColumns);\n const totalFlexGrow = getTotalFlexGrow(allColumns);\n const colsByGroup = columnsByPin(allColumns);\n\n if (columnsWidth !== expectedWidth) {\n scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);\n }\n}\n\n/**\n * Resizes columns based on the flexGrow property, while respecting manually set widths\n */\nfunction scaleColumns(colsByGroup: any, maxWidth: any, totalFlexGrow: any) {\n // calculate total width and flexgrow points for coulumns that can be resized\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n if (!column.canAutoResize) {\n maxWidth -= column.width;\n totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;\n } else {\n column.width = 0;\n }\n }\n }\n\n const hasMinWidth = {};\n let remainingWidth = maxWidth;\n\n // resize columns until no width is left to be distributed\n do {\n const widthPerFlexPoint = remainingWidth / totalFlexGrow;\n remainingWidth = 0;\n\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n // if the column can be resize and it hasn't reached its minimum width yet\n if (column.canAutoResize && !hasMinWidth[column.prop]) {\n const newWidth = column.width + column.flexGrow * widthPerFlexPoint;\n if (column.minWidth !== undefined && newWidth < column.minWidth) {\n remainingWidth += newWidth - column.minWidth;\n column.width = column.minWidth;\n hasMinWidth[column.prop] = true;\n } else {\n column.width = newWidth;\n }\n }\n }\n }\n } while (remainingWidth !== 0);\n}\n\n/**\n * Forces the width of the columns to\n * distribute equally but overflowing when necessary\n *\n * Rules:\n *\n * - If combined withs are less than the total width of the grid,\n * proportion the widths given the min / max / normal widths to fill the width.\n *\n * - If the combined widths, exceed the total width of the grid,\n * use the standard widths.\n *\n * - If a column is resized, it should always use that width\n *\n * - The proportional widths should never fall below min size if specified.\n *\n * - If the grid starts off small but then becomes greater than the size ( + / - )\n * the width should use the original width; not the newly proportioned widths.\n */\nexport function forceFillColumnWidths(\n allColumns: any[],\n expectedWidth: number,\n startIdx: number,\n allowBleed: boolean,\n defaultColWidth: number = 300\n) {\n const columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter(c => {\n return c.canAutoResize !== false;\n });\n\n for (const column of columnsToResize) {\n if (!column.$$oldWidth) {\n column.$$oldWidth = column.width;\n }\n }\n\n let additionWidthPerColumn = 0;\n let exceedsWindow = false;\n let contentWidth = getContentWidth(allColumns, defaultColWidth);\n let remainingWidth = expectedWidth - contentWidth;\n const columnsProcessed: any[] = [];\n const remainingWidthLimit = 1; // when to stop\n\n // This loop takes care of the\n do {\n additionWidthPerColumn = remainingWidth / columnsToResize.length;\n exceedsWindow = contentWidth >= expectedWidth;\n\n for (const column of columnsToResize) {\n if (exceedsWindow && allowBleed) {\n column.width = column.$$oldWidth || column.width || defaultColWidth;\n } else {\n const newSize = (column.width || defaultColWidth) + additionWidthPerColumn;\n\n if (column.minWidth && newSize < column.minWidth) {\n column.width = column.minWidth;\n columnsProcessed.push(column);\n } else if (column.maxWidth && newSize > column.maxWidth) {\n column.width = column.maxWidth;\n columnsProcessed.push(column);\n } else {\n column.width = newSize;\n }\n }\n\n column.width = Math.max(0, column.width);\n }\n\n contentWidth = getContentWidth(allColumns);\n remainingWidth = expectedWidth - contentWidth;\n removeProcessedColumns(columnsToResize, columnsProcessed);\n } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);\n}\n\n/**\n * Remove the processed columns from the current active columns.\n */\nfunction removeProcessedColumns(columnsToResize: any[], columnsProcessed: any[]) {\n for (const column of columnsProcessed) {\n const index = columnsToResize.indexOf(column);\n columnsToResize.splice(index, 1);\n }\n}\n\n/**\n * Gets the width of the columns\n */\nfunction getContentWidth(allColumns: any, defaultColWidth: number = 300): number {\n let contentWidth = 0;\n\n for (const column of allColumns) {\n contentWidth += column.width || defaultColWidth;\n }\n\n return contentWidth;\n}\n","export enum SortDirection {\n asc = 'asc',\n desc = 'desc'\n}\n","import { getterForProp } from './column-prop-getters';\nimport { SortType } from '../types/sort.type';\nimport { SortDirection } from '../types/sort-direction.type';\nimport { SortPropDir } from '../types/sort-prop-dir.type';\n/**\n * Gets the next sort direction\n */\nexport function nextSortDir(sortType: SortType, current: SortDirection): SortDirection | undefined {\n if (sortType === SortType.single) {\n if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else {\n return SortDirection.asc;\n }\n } else {\n if (!current) {\n return SortDirection.asc;\n } else if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else if (current === SortDirection.desc) {\n return undefined;\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n}\n\n/**\n * Adapted from fueld-ui on 6/216\n * https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\n */\nexport function orderByComparator(a: any, b: any): number {\n if (a === null || typeof a === 'undefined') a = 0;\n if (b === null || typeof b === 'undefined') b = 0;\n if (a instanceof Date && b instanceof Date) {\n if (a < b) return -1;\n if (a > b) return 1;\n } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {\n // Convert to string in case of a=0 or b=0\n a = String(a);\n b = String(b);\n // Isn't a number so lowercase the string to properly compare\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n } else {\n // Parse strings as numbers to compare properly\n if (parseFloat(a) < parseFloat(b)) return -1;\n if (parseFloat(a) > parseFloat(b)) return 1;\n }\n\n // equal each other\n return 0;\n}\n\n/**\n * creates a shallow copy of the `rows` input and returns the sorted copy. this function\n * does not sort the `rows` argument in place\n */\nexport function sortRows(rows: any[], columns: any[], dirs: SortPropDir[]): any[] {\n if (!rows) return [];\n if (!dirs || !dirs.length || !columns) return [...rows];\n\n /**\n * record the row ordering of results from prior sort operations (if applicable)\n * this is necessary to guarantee stable sorting behavior\n */\n const rowToIndexMap = new Map<any, number>();\n rows.forEach((row, index) => rowToIndexMap.set(row, index));\n\n const temp = [...rows];\n const cols = columns.reduce((obj, col) => {\n if (col.comparator && typeof col.comparator === 'function') {\n obj[col.prop] = col.comparator;\n }\n return obj;\n }, {});\n\n // cache valueGetter and compareFn so that they\n // do not need to be looked-up in the sort function body\n const cachedDirs = dirs.map(dir => {\n const prop = dir.prop;\n return {\n prop,\n dir: dir.dir,\n valueGetter: getterForProp(prop),\n compareFn: cols[prop] || orderByComparator\n };\n });\n\n return temp.sort(function (rowA: any, rowB: any) {\n for (const cachedDir of cachedDirs) {\n // Get property and valuegetters for column to be sorted\n const { prop, valueGetter } = cachedDir;\n // Get A and B cell values from rows based on properties of the columns\n const propA = valueGetter(rowA, prop);\n const propB = valueGetter(rowB, prop);\n\n // Compare function gets five parameters:\n // Two cell values to be compared as propA and propB\n // Two rows corresponding to the cells as rowA and rowB\n // Direction of the sort for this column as SortDirection\n // Compare can be a standard JS comparison function (a,b) => -1|0|1\n // as additional parameters are silently ignored. The whole row and sort\n // direction enable more complex sort logic.\n const comparison =\n cachedDir.dir !== SortDirection.desc\n ? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir)\n : -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir);\n\n // Don't return 0 yet in case of needing to sort by next property\n if (comparison !== 0) return comparison;\n }\n\n if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB))) return 0;\n\n /**\n * all else being equal, preserve original order of the rows (stable sort)\n */\n return rowToIndexMap.get(rowA) < rowToIndexMap.get(rowB) ? -1 : 1;\n });\n}\n","import {\n Component,\n Input,\n Output,\n ElementRef,\n EventEmitter,\n ViewChild,\n HostListener,\n ContentChildren,\n OnInit,\n QueryList,\n AfterViewInit,\n HostBinding,\n ContentChild,\n DoCheck,\n KeyValueDiffers,\n KeyValueDiffer,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n SkipSelf,\n Optional,\n Inject\n} from '@angular/core';\n\nimport { DatatableGroupHeaderDirective } from './body/body-group-header.directive';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { INgxDatatableConfig } from '../ngx-datatable.module';\nimport { groupRowsByParents, optionalGetterForProp } from '../utils/tree';\nimport { TableColumn } from '../types/table-column.type';\nimport { setColumnDefaults, translateTemplates } from '../utils/column-helper';\nimport { ColumnMode } from '../types/column-mode.type';\nimport { SelectionType } from '../types/selection.type';\nimport { SortType } from '../types/sort.type';\nimport { ContextmenuType } from '../types/contextmenu.type';\nimport { DataTableColumnDirective } from './columns/column.directive';\nimport { DatatableRowDetailDirective } from './row-detail/row-detail.directive';\nimport { DatatableFooterDirective } from './footer/footer.directive';\nimport { DataTableBodyComponent } from './body/body.component';\nimport { DataTableHeaderComponent } from './header/header.component';\nimport { ScrollbarHelper } from '../services/scrollbar-helper.service';\nimport { ColumnChangesService } from '../services/column-changes.service';\nimport { DimensionsHelper } from '../services/dimensions-helper.service';\nimport { throttleable } from '../utils/throttle';\nimport { forceFillColumnWidths, adjustColumnWidths } from '../utils/math';\nimport { sortRows } from '../utils/sort';\n\n@Component({\n selector: 'ngx-datatable',\n templateUrl: './datatable.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./datatable.component.scss'],\n host: {\n class: 'ngx-datatable'\n }\n})\nexport class DatatableComponent implements OnInit, DoCheck, AfterViewInit {\n /**\n * Template for the target marker of drag target columns.\n */\n @Input() targetMarkerTemplate: any;\n\n /**\n * Rows that are displayed in the table.\n */\n @Input() set rows(val: any) {\n this._rows = val;\n\n if (val) {\n this._internalRows = [...val];\n }\n\n // auto sort on new updates\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(\n this._internalRows,\n optionalGetterForProp(this.treeFromRelation),\n optionalGetterForProp(this.treeToRelation)\n );\n\n // recalculate sizes/etc\n this.recalculate();\n\n if (this._rows && this._groupRowsBy) {\n // If a column has been specified in _groupRowsBy created a new array with the data grouped by that row\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n\n this.cd.markForCheck();\n }\n\n /**\n * Gets the rows.\n */\n get rows(): any {\n return this._rows;\n }\n\n /**\n * This attribute allows the user to set the name of the column to group the data with\n */\n @Input() set groupRowsBy(val: string) {\n if (val) {\n this._groupRowsBy = val;\n if (this._rows && this._groupRowsBy) {\n // cretes a new array with the data grouped\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n }\n }\n\n get groupRowsBy() {\n return this._groupRowsBy;\n }\n\n /**\n * This attribute allows the user to set a grouped array in the following format:\n * [\n * {groupid=1} [\n * {id=1 name=\"test1\"},\n * {id=2 name=\"test2\"},\n * {id=3 name=\"test3\"}\n * ]},\n * {groupid=2>[\n * {id=4 name=\"test4\"},\n * {id=5 name=\"test5\"},\n * {id=6 name=\"test6\"}\n * ]}\n * ]\n */\n @Input() groupedRows: any[];\n\n /**\n * Columns to be displayed.\n */\n @Input() set columns(val: TableColumn[]) {\n if (val) {\n this._internalColumns = [...val];\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n }\n\n this._columns = val;\n }\n\n /**\n * Get the columns.\n */\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n /**\n * List of row objects that should be\n * represented as selected in the grid.\n * Default value: `[]`\n */\n @Input() selected: any[] = [];\n\n /**\n * Enable vertical scrollbars\n */\n @Input() scrollbarV: boolean = false;\n\n /**\n * Enable horz scrollbars\n */\n @Input() scrollbarH: boolean = false;\n\n /**\n * The row height; which is necessary\n * to calculate the height for the lazy rendering.\n */\n @Input() rowHeight: number | 'auto' | ((row?: any) => number) = 30;\n\n /**\n * Type of column width distribution formula.\n * Example: flex, force, standard\n */\n @Input() columnMode: ColumnMode | keyof typeof ColumnMode = ColumnMode.standard;\n\n /**\n * The minimum header height in pixels.\n * Pass a falsey for no header\n */\n @Input() headerHeight: number = 30;\n\n /**\n * The minimum footer height in pixels.\n * Pass falsey for no footer\n */\n @Input() footerHeight: number = 0;\n\n /**\n * If the table should use external paging\n * otherwise its assumed that all data is preloaded.\n */\n @Input() externalPaging: boolean = false;\n\n /**\n * If the table should use external sorting or\n * the built-in basic sorting.\n */\n @Input() externalSorting: boolean = false;\n\n /**\n * The page size to be shown.\n * Default value: `undefined`\n */\n @Input() set limit(val: number | undefined) {\n this._limit = val;\n\n // recalculate sizes/etc\n this.recalculate();\n }\n\n /**\n * Gets the limit.\n */\n get limit(): number | undefined {\n return this._limit;\n }\n\n /**\n * The total count of all rows.\n * Default value: `0`\n */\n @Input() set count(val: number) {\n this._count = val;\n\n // recalculate sizes/etc\n this.recalculate();\n }\n\n /**\n * Gets the count.\n */\n get count(): number {\n return this._count;\n }\n\n /**\n * The current offset ( page - 1 ) shown.\n * Default value: `0`\n */\n @Input() set offset(val: number) {\n this._offset = val;\n }\n get offset(): number {\n return Math.max(Math.min(this._offset, Math.ceil(this.rowCount / this.pageSize) - 1), 0);\n }\n\n /**\n * Show the linear loading bar.\n * Default value: `false`\n */\n @Input() loadingIndicator: boolean = false;\n\n /**\n * Type of row selection. Options are:\n *\n * - `single`\n * - `multi`\n * - `checkbox`\n * - `multiClick`\n * - `cell`\n *\n * For no selection pass a `falsey`.\n * Default value: `undefined`\n */\n @Input() selectionType: SelectionType;\n\n /**\n * Enable/Disable ability to re-order columns\n * by dragging them.\n */\n @Input() reorderable: boolean = true;\n\n /**\n * Swap columns on re-order columns or\n * move them.\n */\n @Input() swapColumns: boolean = true;\n\n /**\n * The type of sorting\n */\n @Input() sortType: SortType = SortType.single;\n\n /**\n * Array of sorted columns by property and type.\n * Default value: `[]`\n */\n @Input() sorts: any[] = [];\n\n /**\n * Css class overrides\n */\n @Input() cssClasses: any = {\n sortAscending: 'datatable-icon-up',\n sortDescending: 'datatable-icon-down',\n pagerLeftArrow: 'datatable-icon-left',\n pagerRightArrow: 'datatable-icon-right',\n pagerPrevious: 'datatable-icon-prev',\n pagerNext: 'datatable-icon-skip'\n };\n\n /**\n * Message overrides for localization\n *\n * emptyMessage [default] = 'No data to display'\n * totalMessage [default] = 'total'\n * selectedMessage [default] = 'selected'\n */\n @Input() messages: any = {\n // Message to show when array is presented\n // but contains no values\n emptyMessage: 'No data to display',\n\n // Footer total message\n totalMessage: 'total',\n\n // Footer selected message\n selectedMessage: 'selected'\n };\n\n /**\n * Row specific classes.\n * Similar implementation to ngClass.\n *\n * [rowClass]=\"'first second'\"\n * [rowClass]=\"{ 'first': true, 'second': true, 'third': false }\"\n */\n @Input() rowClass: any;\n\n /**\n * A boolean/function you can use to check whether you want\n * to select a particular row based on a criteria. Example:\n *\n * (selection) => {\n * return selection !== 'Ethel Price';\n * }\n */\n @Input() selectCheck: any;\n\n /**\n * A function you can use to check whether you want\n * to show the checkbox for a particular row based on a criteria. Example:\n *\n * (row, column, value) => {\n * return row.name !== 'Ethel Price';\n * }\n */\n @Input() displayCheck: (row: any, column?: any, value?: any) => boolean;\n\n /**\n * A boolean you can use to set the detault behaviour of rows and groups\n * whether they will start expanded or not. If ommited the default is NOT expanded.\n *\n */\n @Input() groupExpansionDefault: boolean = false;\n\n /**\n * Property to which you can use for custom tracking of rows.\n * Example: 'name'\n */\n @Input() trackByProp: string;\n\n /**\n * Property to which you can use for determining select all\n * rows on current page or not.\n *\n * @memberOf DatatableComponent\n */\n @Input() selectAllRowsOnPage = false;\n\n /**\n * A flag for row virtualization on / off\n */\n @Input() virtualization: boolean = true;\n\n /**\n * Tree from relation\n */\n @Input() treeFromRelation: string;\n\n /**\n * Tree to relation\n */\n @Input() treeToRelation: string;\n\n /**\n * A flag for switching summary row on / off\n */\n @Input() summaryRow: boolean = false;\n\n /**\n * A height of summary row\n */\n @Input() summaryHeight: number = 30;\n\n /**\n * A property holds a summary row position: top/bottom\n */\n @Input() summaryPosition: string = 'top';\n\n /**\n * Body was scrolled typically in a `scrollbarV:true` scenario.\n */\n @Output() scroll: EventEmitter<any> = new EventEmitter();\n\n /**\n * A cell or row was focused via keyboard or mouse click.\n */\n @Output() activate: EventEmitter<any> = new EventEmitter();\n\n /**\n * A cell or row was selected.\n */\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n /**\n * Column sort was invoked.\n */\n @Output() sort: EventEmitter<any> = new EventEmitter();\n\n /**\n * The table was paged either triggered by the pager or the body scroll.\n */\n @Output() page: EventEmitter<any> = new EventEmitter();\n\n /**\n * Columns were re-ordered.\n */\n @Output() reorder: EventEmitter<any> = new EventEmitter();\n\n /**\n * Column was resized.\n */\n @Output() resize: EventEmitter<any> = new EventEmitter();\n\n /**\n * The context menu was invoked on the table.\n * type indicates whether the header or the body was clicked.\n * content contains either the column or the row that was clicked.\n */\n @Output() tableContextmenu = new EventEmitter<{ event: MouseEvent; type: ContextmenuType; content: any }>(false);\n\n /**\n * A row was expanded ot collapsed for tree\n */\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n /**\n * CSS class applied if the header height if fixed height.\n */\n @HostBinding('class.fixed-header')\n get isFixedHeader(): boolean {\n const headerHeight: number | string = this.headerHeight;\n return typeof headerHeight === 'string' ? <string>headerHeight !== 'auto' : true;\n }\n\n /**\n * CSS class applied to the root element if\n * the row heights are fixed heights.\n */\n @HostBinding('class.fixed-row')\n get isFixedRow(): boolean {\n return this.rowHeight !== 'auto';\n }\n\n /**\n * CSS class applied to root element if\n * vertical scrolling is enabled.\n */\n @HostBinding('class.scroll-vertical')\n get isVertScroll(): boolean {\n return this.scrollbarV;\n }\n\n /**\n * CSS class applied to root element if\n * virtualization is enabled.\n */\n @HostBinding('class.virtualized')\n get isVirtualized(): boolean {\n return this.virtualization;\n }\n\n /**\n * CSS class applied to the root element\n * if the horziontal scrolling is enabled.\n */\n @HostBinding('class.scroll-horz')\n get isHorScroll(): boolean {\n return this.scrollbarH;\n }\n\n /**\n * CSS class applied to root element is selectable.\n */\n @HostBinding('class.selectable')\n get isSelectable(): boolean {\n return this.selectionType !== undefined;\n }\n\n /**\n * CSS class applied to root is checkbox selection.\n */\n @HostBinding('class.checkbox-selection')\n get isCheckboxSelection(): boolean {\n return this.selectionType === SelectionType.checkbox;\n }\n\n /**\n * CSS class applied to root if cell selection.\n */\n @HostBinding('class.cell-selection')\n get isCellSelection(): boolean {\n return this.selectionType === SelectionType.cell;\n }\n\n /**\n * CSS class applied to root if single select.\n */\n @HostBinding('class.single-selection')\n get isSingleSelection(): boolean {\n return this.selectionType === SelectionType.single;\n }\n\n /**\n * CSS class added to root element if mulit select\n */\n @HostBinding('class.multi-selection')\n get isMultiSelection(): boolean {\n return this.selectionType === SelectionType.multi;\n }\n\n /**\n * CSS class added to root element if mulit click select\n */\n @HostBinding('class.multi-click-selection')\n get isMultiClickSelection(): boolean {\n return this.selectionType === SelectionType.multiClick;\n }\n\n /**\n * Column templates gathered from `ContentChildren`\n * if described in your markup.\n */\n @ContentChildren(DataTableColumnDirective)\n set columnTemplates(val: QueryList<DataTableColumnDirective>) {\n this._columnTemplates = val;\n this.translateColumns(val);\n }\n\n /**\n * Returns the column templates.\n */\n get columnTemplates(): QueryList<DataTableColumnDirective> {\n return this._columnTemplates;\n }\n\n /**\n * Row Detail templates gathered from the ContentChild\n */\n @ContentChild(DatatableRowDetailDirective)\n rowDetail: DatatableRowDetailDirective;\n\n /**\n * Group Header templates gathered from the ContentChild\n */\n @ContentChild(DatatableGroupHeaderDirective)\n groupHeader: DatatableGroupHeaderDirective;\n\n /**\n * Footer template gathered from the ContentChild\n */\n @ContentChild(DatatableFooterDirective)\n footer: DatatableFooterDirective;\n\n /**\n * Reference to the body component for manually\n * invoking functions on the body.\n */\n @ViewChild(DataTableBodyComponent)\n bodyComponent: DataTableBodyComponent;\n\n /**\n * Reference to the header component for manually\n * invoking functions on the header.\n *\n * @memberOf DatatableComponent\n */\n @ViewChild(DataTableHeaderComponent)\n headerComponent: DataTableHeaderComponent;\n\n /**\n * Returns if all rows are selected.\n */\n get allRowsSelected(): boolean {\n let allRowsSelected = this.rows && this.selected && this.selected.length === this.rows.length;\n\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n const indexes = this.bodyComponent.indexes;\n const rowsOnPage = indexes.last - indexes.first;\n allRowsSelected = this.selected.length === rowsOnPage;\n }\n\n return this.selected && this.rows && this.rows.length !== 0 && allRowsSelected;\n }\n\n element: HTMLElement;\n _innerWidth: number;\n pageSize: number;\n bodyHeight: number;\n rowCount: number = 0;\n rowDiffer: KeyValueDiffer<{}, {}>;\n\n _offsetX = new BehaviorSubject(0);\n _limit: number | undefined;\n _count: number = 0;\n _offset: number = 0;\n _rows: any[];\n _groupRowsBy: string;\n _internalRows: any[];\n _internalColumns: TableColumn[];\n _columns: TableColumn[];\n _columnTemplates: QueryList<DataTableColumnDirective>;\n _subscriptions: Subscription[] = [];\n\n constructor(\n @SkipSelf() private scrollbarHelper: ScrollbarHelper,\n @SkipSelf() private dimensionsHelper: DimensionsHelper,\n private cd: ChangeDetectorRef,\n element: ElementRef,\n differs: KeyValueDiffers,\n private columnChangesService: ColumnChangesService,\n @Optional() @Inject('configuration') private configuration: INgxDatatableConfig\n ) {\n // get ref to elm for measuring\n this.element = element.nativeElement;\n this.rowDiffer = differs.find({}).create();\n\n // apply global settings from Module.forRoot\n if (this.configuration && this.configuration.messages) {\n this.messages = { ...this.configuration.messages };\n }\n }\n\n /**\n * Lifecycle hook that is called after data-bound\n * properties of a directive are initialized.\n */\n ngOnInit(): void {\n // need to call this immediatly to size\n // if the table is hidden the visibility\n // listener will invoke this itself upon show\n this.recalculate();\n }\n\n /**\n * Lifecycle hook that is called after a component's\n * view has been fully initialized.\n */\n ngAfterViewInit(): void {\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n\n // this has to be done to prevent the change detection\n // tree from freaking out because we are readjusting\n if (typeof requestAnimationFrame === 'undefined') {\n return;\n }\n\n requestAnimationFrame(() => {\n this.recalculate();\n\n // emit page for virtual server-side kickoff\n if (this.externalPaging && this.scrollbarV) {\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: 0\n });\n }\n });\n }\n\n /**\n * Lifecycle hook that is called after a component's\n * content has been fully initialized.\n */\n ngAfterContentInit() {\n this.columnTemplates.changes.subscribe(v => this.translateColumns(v));\n this.listenForColumnInputChanges();\n }\n\n /**\n * This will be used when displaying or selecting rows.\n * when tracking/comparing them, we'll use the value of this fn,\n *\n * (`fn(x) === fn(y)` instead of `x === y`)\n */\n @Input() rowIdentity: (x: any) => any = (x: any) => {\n if (this._groupRowsBy) {\n // each group in groupedRows are stored as {key, value: [rows]},\n // where key is the groupRowsBy index\n return x.key;\n } else {\n return x;\n }\n };\n\n /**\n * Translates the templates to the column objects\n */\n translateColumns(val: any) {\n if (val) {\n const arr = val.toArray();\n if (arr.length) {\n this._internalColumns = translateTemplates(arr);\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n this.sortInternalRows();\n this.cd.markForCheck();\n }\n }\n }\n\n /**\n * Creates a map with the data grouped by the user choice of grouping index\n *\n * @param originalArray the original array passed via parameter\n * @param groupByIndex the index of the column to group the data by\n */\n groupArrayBy(originalArray: any, groupBy: any) {\n // create a map to hold groups with their corresponding results\n const map = new Map();\n let i: number = 0;\n\n originalArray.forEach((item: any) => {\n const key = item[groupBy];\n if (!map.has(key)) {\n map.set(key, [item]);\n } else {\n map.get(key).push(item);\n }\n i++;\n });\n\n const addGroup = (key: any, value: any) => {\n return { key, value };\n };\n\n // convert map back to a simple array of objects\n return Array.from(map, x => addGroup(x[0], x[1]));\n }\n\n /*\n * Lifecycle hook that is called when Angular dirty checks a directive.\n */\n ngDoCheck(): void {\n if (this.rowDiffer.diff(this.rows)) {\n if (!this.externalSorting) {\n this.sortInternalRows();\n } else {\n this._internalRows = [...this.rows];\n }\n\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(\n this._internalRows,\n optionalGetterForProp(this.treeFromRelation),\n optionalGetterForProp(this.treeToRelation)\n );\n\n this.recalculatePages();\n this.cd.markForCheck();\n }\n }\n\n /**\n * Recalc's the sizes of the grid.\n *\n * Updated automatically on changes to:\n *\n * - Columns\n * - Rows\n * - Paging related\n *\n * Also can be manually invoked or upon window resize.\n */\n recalculate(): void {\n this.recalculateDims();\n this.recalculateColumns();\n this.cd.markForCheck();\n }\n\n /**\n * Window resize handler to update sizes.\n */\n @HostListener('window:resize')\n @throttleable(5)\n onWindowResize(): void {\n this.recalculate();\n }\n\n /**\n * Recalulcates the column widths based on column width\n * distribution mode and scrollbar offsets.\n */\n recalculateColumns(\n columns: any[] = this._internalColumns,\n forceIdx: number = -1,\n allowBleed: boolean = this.scrollbarH\n ): any[] | undefined {\n if (!columns) return undefined;\n\n let width = this._innerWidth;\n if (this.scrollbarV) {\n width = width - this.scrollbarHelper.width;\n }\n\n if (this.columnMode === ColumnMode.force) {\n forceFillColumnWidths(columns, width, forceIdx, allowBleed);\n } else if (this.columnMode === ColumnMode.flex) {\n adjustColumnWidths(columns, width);\n }\n\n return columns;\n }\n\n /**\n * Recalculates the dimensions of the table size.\n * Internally calls the page size and row count calcs too.\n *\n */\n recalculateDims(): void {\n const dims = this.dimensionsHelper.getDimensions(this.element);\n this._innerWidth = Math.floor(dims.width);\n\n if (this.scrollbarV) {\n let height = dims.height;\n if (this.headerHeight) height = height - this.headerHeight;\n if (this.footerHeight) height = height - this.footerHeight;\n this.bodyHeight = height;\n }\n\n this.recalculatePages();\n }\n\n /**\n * Recalculates the pages after a update.\n */\n recalculatePages(): void {\n this.pageSize = this.calcPageSize();\n this.rowCount = this.calcRowCount();\n }\n\n /**\n * Body triggered a page event.\n */\n onBodyPage({ offset }: any): void {\n // Avoid pagination caming from body events like scroll when the table\n // has no virtualization and the external paging is enable.\n // This means, let's the developer handle pagination by my him(her) self\n if (this.externalPaging && !this.virtualization) {\n return;\n }\n\n this.offset = offset;\n\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n }\n\n /**\n * The body triggered a scroll event.\n */\n onBodyScroll(event: MouseEvent): void {\n this._offsetX.next(event.offsetX);\n this.scroll.emit(event);\n this.cd.detectChanges();\n }\n\n /**\n * The footer triggered a page event.\n */\n onFooterPage(event: any) {\n this.offset = event.page - 1;\n this.bodyComponent.updateOffsetY(this.offset);\n\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n }\n\n /**\n * Recalculates the sizes of the page\n */\n calcPageSize(val: any[] = this.rows): number {\n // Keep the page size constant even if the row has been expanded.\n // This is because an expanded row is still considered to be a child of\n // the original row. Hence calculation would use rowHeight only.\n if (this.scrollbarV && this.virtualization) {\n const size = Math.ceil(this.bodyHeight / (this.rowHeight as number));\n return Math.max(size, 0);\n }\n\n // if limit is passed, we are paging\n if (this.limit !== undefined) {\n return this.limit;\n }\n\n // otherwise use row length\n if (val) {\n return val.length;\n }\n\n // other empty :(\n return 0;\n }\n\n /**\n * Calculates the row count.\n */\n calcRowCount(val: any[] = this.rows): number {\n if (!this.externalPaging) {\n if (!val) return 0;\n\n if (this.groupedRows) {\n return this.groupedRows.length;\n } else if (this.treeFromRelation != null && this.treeToRelation != null) {\n return this._internalRows.length;\n } else {\n return val.length;\n }\n }\n\n return this.count;\n }\n\n /**\n * The header triggered a contextmenu event.\n */\n onColumnContextmenu({ event, column }: any): void {\n this.tableContextmenu.emit({ event, type: ContextmenuType.header, content: column });\n }\n\n /**\n * The body triggered a contextmenu event.\n */\n onRowContextmenu({ event, row }: any): void {\n this.tableContextmenu.emit({ event, type: ContextmenuType.body, content: row });\n }\n\n /**\n * The header triggered a column resize event.\n */\n onColumnResize({ column, newValue }: any): void {\n /* Safari/iOS 10.2 workaround */\n if (column === undefined) {\n return;\n }\n\n let idx: number;\n const cols = this._internalColumns.map((c, i) => {\n c = { ...c };\n\n if (c.$$id === column.$$id) {\n idx = i;\n c.width = newValue;\n\n // set this so we can force the column\n // width distribution to be to this value\n c.$$oldWidth = newValue;\n }\n\n return c;\n });\n\n this.recalculateColumns(cols, idx);\n this._internalColumns = cols;\n\n this.resize.emit({\n column,\n newValue\n });\n }\n\n /**\n * The header triggered a column re-order event.\n */\n onColumnReorder({ column, newValue, prevValue }: any): void {\n const cols = this._internalColumns.map(c => {\n return { ...c };\n });\n\n if (this.swapColumns) {\n const prevCol = cols[newValue];\n cols[newValue] = column;\n cols[prevValue] = prevCol;\n } else {\n if (newValue > prevValue) {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i < newValue; i++) {\n cols[i] = cols[i + 1];\n }\n cols[newValue] = movedCol;\n } else {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i > newValue; i--) {\n cols[i] = cols[i - 1];\n }\n cols[newValue] = movedCol;\n }\n }\n\n this._internalColumns = cols;\n\n this.reorder.emit({\n column,\n newValue,\n prevValue\n });\n }\n\n /**\n * The header triggered a column sort event.\n */\n onColumnSort(event: any): void {\n // clean selected rows\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n\n this.sorts = event.sorts;\n\n // this could be optimized better since it will resort\n // the rows again on the 'push' detection...\n if (this.externalSorting === false) {\n // don't use normal setter so we don't resort\n this.sortInternalRows();\n }\n\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(\n this._internalRows,\n optionalGetterForProp(this.treeFromRelation),\n optionalGetterForProp(this.treeToRelation)\n );\n\n // Always go to first page when sorting to see the newly sorted data\n this.offset = 0;\n this.bodyComponent.updateOffsetY(this.offset);\n this.sort.emit(event);\n }\n\n /**\n * Toggle all row selection\n */\n onHeaderSelect(event: any): void {\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n // before we splice, chk if we currently have all selected\n const first = this.bodyComponent.indexes.first;\n const last = this.bodyComponent.indexes.last;\n const allSelected = this.selected.length === last - first;\n\n // remove all existing either way\n this.selected = [];\n\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this._internalRows.slice(first, last));\n }\n } else {\n // before we splice, chk if we currently have all selected\n const allSelected = this.selected.length === this.rows.length;\n // remove all existing either way\n this.selected = [];\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this.rows);\n }\n }\n\n this.select.emit({\n selected: this.selected\n });\n }\n\n /**\n * A row was selected from body\n */\n onBodySelect(event: any): void {\n this.select.emit(event);\n }\n\n /**\n * A row was expanded or collapsed for tree\n */\n onTreeAction(event: any) {\n const row = event.row;\n // TODO: For duplicated items this will not work\n const rowIndex = this._rows.findIndex(r => r[this.treeToRelation] === event.row[this.treeToRelation]);\n this.treeAction.emit({ row, rowIndex });\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n /**\n * listen for changes to input bindings of all DataTableColumnDirective and\n * trigger the columnTemplates.changes observable to emit\n */\n private listenForColumnInputChanges(): void {\n this._subscriptions.push(\n this.columnChangesService.columnInputChanges$.subscribe(() => {\n if (this.columnTemplates) {\n this.columnTemplates.notifyOnChanges();\n }\n })\n );\n }\n\n private sortInternalRows(): void {\n this._internalRows = sortRows(this._internalRows, this._internalColumns, this.sorts);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n HostBinding,\n HostListener,\n ChangeDetectionStrategy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { SortType } from '../../types/sort.type';\nimport { SelectionType } from '../../types/selection.type';\nimport { TableColumn } from '../../types/table-column.type';\nimport { nextSortDir } from '../../utils/sort';\nimport { SortDirection } from '../../types/sort-direction.type';\n\n@Component({\n selector: 'datatable-header-cell',\n template: `\n <div class=\"datatable-header-cell-template-wrap\">\n <ng-template\n *ngIf=\"isTarget\"\n [ngTemplateOutlet]=\"targetMarkerTemplate\"\n [ngTemplateOutletContext]=\"targetMarkerContext\"\n >\n </ng-template>\n <label *ngIf=\"isCheckboxable\" class=\"datatable-checkbox\">\n <input type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"select.emit(!allRowsSelected)\" />\n </label>\n <span *ngIf=\"!column.headerTemplate\" class=\"datatable-header-cell-wrapper\">\n <span class=\"datatable-header-cell-label draggable\" (click)=\"onSort()\" [innerHTML]=\"name\"> </span>\n </span>\n <ng-template\n *ngIf=\"column.headerTemplate\"\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\"\n >\n </ng-template>\n <span (click)=\"onSort()\" [class]=\"sortClass\"> </span>\n </div>\n `,\n host: {\n class: 'datatable-header-cell'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableHeaderCellComponent {\n @Input() sortType: SortType;\n @Input() sortAscendingIcon: string;\n @Input() sortDescendingIcon: string;\n\n @Input() isTarget: boolean;\n @Input() targetMarkerTemplate: any;\n @Input() targetMarkerContext: any;\n\n _allRowsSelected: boolean;\n\n @Input() set allRowsSelected(value) {\n this._allRowsSelected = value;\n this.cellContext.allRowsSelected = value;\n }\n get allRowsSelected() {\n return this._allRowsSelected;\n }\n\n @Input() selectionType: SelectionType;\n\n @Input() set column(column: TableColumn) {\n this._column = column;\n this.cellContext.column = column;\n this.cd.markForCheck();\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @HostBinding('style.height.px')\n @Input()\n headerHeight: number;\n\n @Input() set sorts(val: any[]) {\n this._sorts = val;\n this.sortDir = this.calcSortDir(val);\n this.cellContext.sortDir = this.sortDir;\n this.sortClass = this.calcSortClass(this.sortDir);\n this.cd.markForCheck();\n }\n\n get sorts(): any[] {\n return this._sorts;\n }\n\n @Output() sort: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n @Output() columnContextmenu = new EventEmitter<{ event: MouseEvent; column: any }>(false);\n\n @HostBinding('class')\n get columnCssClasses(): any {\n let cls = 'datatable-header-cell';\n\n if (this.column.sortable) cls += ' sortable';\n if (this.column.resizeable) cls += ' resizeable';\n if (this.column.headerClass) {\n if (typeof this.column.headerClass === 'string') {\n cls += ' ' + this.column.headerClass;\n } else if (typeof this.column.headerClass === 'function') {\n const res = this.column.headerClass({\n column: this.column\n });\n\n if (typeof res === 'string') {\n cls += res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) cls += ` ${k}`;\n }\n }\n }\n }\n\n const sortDir = this.sortDir;\n if (sortDir) {\n cls += ` sort-active sort-${sortDir}`;\n }\n\n return cls;\n }\n\n @HostBinding('attr.title')\n get name(): string {\n // guaranteed to have a value by setColumnDefaults() in column-helper.ts\n return this.column.headerTemplate === undefined ? this.column.name : undefined;\n }\n\n @HostBinding('style.minWidth.px')\n get minWidth(): number {\n return this.column.minWidth;\n }\n\n @HostBinding('style.maxWidth.px')\n get maxWidth(): number {\n return this.column.maxWidth;\n }\n\n @HostBinding('style.width.px')\n get width(): number {\n return this.column.width;\n }\n\n get isCheckboxable(): boolean {\n return this.column.checkboxable && this.column.headerCheckboxable && this.selectionType === SelectionType.checkbox;\n }\n\n sortFn = this.onSort.bind(this);\n sortClass: string;\n sortDir: SortDirection;\n selectFn = this.select.emit.bind(this.select);\n\n cellContext: any = {\n column: this.column,\n sortDir: this.sortDir,\n sortFn: this.sortFn,\n allRowsSelected: this.allRowsSelected,\n selectFn: this.selectFn\n };\n\n private _column: TableColumn;\n private _sorts: any[];\n\n constructor(private cd: ChangeDetectorRef) {}\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.columnContextmenu.emit({ event: $event, column: this.column });\n }\n\n calcSortDir(sorts: any[]): any {\n if (sorts && this.column) {\n const sort = sorts.find((s: any) => {\n return s.prop === this.column.prop;\n });\n\n if (sort) return sort.dir;\n }\n }\n\n onSort(): void {\n if (!this.column.sortable) return;\n\n const newValue = nextSortDir(this.sortType, this.sortDir);\n this.sort.emit({\n column: this.column,\n prevValue: this.sortDir,\n newValue\n });\n }\n\n calcSortClass(sortDir: SortDirection): string {\n if (sortDir === SortDirection.asc) {\n return `sort-btn sort-asc ${this.sortAscendingIcon}`;\n } else if (sortDir === SortDirection.desc) {\n return `sort-btn sort-desc ${this.sortDescendingIcon}`;\n } else {\n return `sort-btn`;\n }\n }\n}\n","import { Component, Output, EventEmitter, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { DatatableFooterDirective } from './footer.directive';\n@Component({\n selector: 'datatable-footer',\n template: `\n <div\n class=\"datatable-footer-inner\"\n [ngClass]=\"{ 'selected-count': selectedMessage }\"\n [style.height.px]=\"footerHeight\"\n >\n <ng-template\n *ngIf=\"footerTemplate\"\n [ngTemplateOutlet]=\"footerTemplate.template\"\n [ngTemplateOutletContext]=\"{\n rowCount: rowCount,\n pageSize: pageSize,\n selectedCount: selectedCount,\n curPage: curPage,\n offset: offset\n }\"\n >\n </ng-template>\n <div class=\"page-count\" *ngIf=\"!footerTemplate\">\n <span *ngIf=\"selectedMessage\"> {{ selectedCount?.toLocaleString() }} {{ selectedMessage }} / </span>\n {{ rowCount?.toLocaleString() }} {{ totalMessage }}\n </div>\n <datatable-pager\n *ngIf=\"!footerTemplate\"\n [pagerLeftArrowIcon]=\"pagerLeftArrowIcon\"\n [pagerRightArrowIcon]=\"pagerRightArrowIcon\"\n [pagerPreviousIcon]=\"pagerPreviousIcon\"\n [pagerNextIcon]=\"pagerNextIcon\"\n [page]=\"curPage\"\n [size]=\"pageSize\"\n [count]=\"rowCount\"\n [hidden]=\"!isVisible\"\n (change)=\"page.emit($event)\"\n >\n </datatable-pager>\n </div>\n `,\n host: {\n class: 'datatable-footer'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableFooterComponent {\n @Input() footerHeight: number;\n @Input() rowCount: number;\n @Input() pageSize: number;\n @Input() offset: number;\n @Input() pagerLeftArrowIcon: string;\n @Input() pagerRightArrowIcon: string;\n @Input() pagerPreviousIcon: string;\n @Input() pagerNextIcon: string;\n @Input() totalMessage: string;\n @Input() footerTemplate: DatatableFooterDirective;\n\n @Input() selectedCount: number = 0;\n @Input() selectedMessage: string | boolean;\n\n @Output() page: EventEmitter<any> = new EventEmitter();\n\n get isVisible(): boolean {\n return this.rowCount / this.pageSize > 1;\n }\n\n get curPage(): number {\n return this.offset + 1;\n }\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'datatable-pager',\n template: `\n <ul class=\"pager\">\n <li [class.disabled]=\"!canPrevious()\">\n <a role=\"button\" aria-label=\"go to first page\" href=\"javascript:void(0)\" (click)=\"selectPage(1)\">\n <i class=\"{{ pagerPreviousIcon }}\"></i>\n </a>\n </li>\n <li [class.disabled]=\"!canPrevious()\">\n <a role=\"button\" aria-label=\"go to previous page\" href=\"javascript:void(0)\" (click)=\"prevPage()\">\n <i class=\"{{ pagerLeftArrowIcon }}\"></i>\n </a>\n </li>\n <li\n role=\"button\"\n [attr.aria-label]=\"'page ' + pg.number\"\n class=\"pages\"\n *ngFor=\"let pg of pages\"\n [class.active]=\"pg.number === page\"\n >\n <a href=\"javascript:void(0)\" (click)=\"selectPage(pg.number)\">\n {{ pg.text }}\n </a>\n </li>\n <li [class.disabled]=\"!canNext()\">\n <a role=\"button\" aria-label=\"go to next page\" href=\"javascript:void(0)\" (click)=\"nextPage()\">\n <i class=\"{{ pagerRightArrowIcon }}\"></i>\n </a>\n </li>\n <li [class.disabled]=\"!canNext()\">\n <a role=\"button\" aria-label=\"go to last page\" href=\"javascript:void(0)\" (click)=\"selectPage(totalPages)\">\n <i class=\"{{ pagerNextIcon }}\"></i>\n </a>\n </li>\n </ul>\n `,\n host: {\n class: 'datatable-pager'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTablePagerComponent {\n @Input() pagerLeftArrowIcon: string;\n @Input() pagerRightArrowIcon: string;\n @Input() pagerPreviousIcon: string;\n @Input() pagerNextIcon: string;\n\n @Input()\n set size(val: number) {\n this._size = val;\n this.pages = this.calcPages();\n }\n\n get size(): number {\n return this._size;\n }\n\n @Input()\n set count(val: number) {\n this._count = val;\n this.pages = this.calcPages();\n }\n\n get count(): number {\n return this._count;\n }\n\n @Input()\n set page(val: number) {\n this._page = val;\n this.pages = this.calcPages();\n }\n\n get page(): number {\n return this._page;\n }\n\n get totalPages(): number {\n const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size);\n return Math.max(count || 0, 1);\n }\n\n @Output() change: EventEmitter<any> = new EventEmitter();\n\n _count: number = 0;\n _page: number = 1;\n _size: number = 0;\n pages: any;\n\n canPrevious(): boolean {\n return this.page > 1;\n }\n\n canNext(): boolean {\n return this.page < this.totalPages;\n }\n\n prevPage(): void {\n this.selectPage(this.page - 1);\n }\n\n nextPage(): void {\n this.selectPage(this.page + 1);\n }\n\n selectPage(page: number): void {\n if (page > 0 && page <= this.totalPages && page !== this.page) {\n this.page = page;\n\n this.change.emit({\n page\n });\n }\n }\n\n calcPages(page?: number): any[] {\n const pages = [];\n let startPage = 1;\n let endPage = this.totalPages;\n const maxSize = 5;\n const isMaxSized = maxSize < this.totalPages;\n\n page = page || this.page;\n\n if (isMaxSized) {\n startPage = page - Math.floor(maxSize / 2);\n endPage = page + Math.floor(maxSize / 2);\n\n if (startPage < 1) {\n startPage = 1;\n endPage = Math.min(startPage + maxSize - 1, this.totalPages);\n } else if (endPage > this.totalPages) {\n startPage = Math.max(this.totalPages - maxSize + 1, 1);\n endPage = this.totalPages;\n }\n }\n\n for (let num = startPage; num <= endPage; num++) {\n pages.push({\n number: num,\n text: <string>(<any>num)\n });\n }\n\n return pages;\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'datatable-progress',\n template: `\n <div class=\"progress-linear\" role=\"progressbar\">\n <div class=\"container\">\n <div class=\"bar\"></div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ProgressBarComponent {}\n","export enum Keys {\n up = 38,\n down = 40,\n return = 13,\n escape = 27,\n left = 37,\n right = 39\n}\n","import {\n Component,\n Input,\n HostBinding,\n ElementRef,\n Output,\n KeyValueDiffers,\n KeyValueDiffer,\n EventEmitter,\n HostListener,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n DoCheck,\n SkipSelf\n} from '@angular/core';\n\nimport { TreeStatus } from './body-cell.component';\nimport { columnsByPin, columnGroupWidths, columnsByPinArr } from '../../utils/column';\nimport { Keys } from '../../utils/keys';\nimport { ScrollbarHelper } from '../../services/scrollbar-helper.service';\nimport { translateXY } from '../../utils/translate';\n\n@Component({\n selector: 'datatable-body-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n *ngFor=\"let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups\"\n class=\"datatable-row-{{ colGroup.type }} datatable-row-group\"\n [ngStyle]=\"_groupStyles[colGroup.type]\"\n >\n <datatable-body-cell\n *ngFor=\"let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn\"\n tabindex=\"-1\"\n [row]=\"row\"\n [group]=\"group\"\n [expanded]=\"expanded\"\n [isSelected]=\"isSelected\"\n [rowIndex]=\"rowIndex\"\n [column]=\"column\"\n [rowHeight]=\"rowHeight\"\n [displayCheck]=\"displayCheck\"\n [treeStatus]=\"treeStatus\"\n (activate)=\"onActivate($event, ii)\"\n (treeAction)=\"onTreeAction()\"\n >\n </datatable-body-cell>\n </div>\n `\n})\nexport class DataTableBodyRowComponent implements DoCheck {\n @Input() set columns(val: any[]) {\n this._columns = val;\n this.recalculateColumns(val);\n this.buildStylesByGroup();\n }\n\n get columns(): any[] {\n return this._columns;\n }\n\n @Input() set innerWidth(val: number) {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n }\n\n this._innerWidth = val;\n this.recalculateColumns();\n this.buildStylesByGroup();\n }\n\n get innerWidth(): number {\n return this._innerWidth;\n }\n\n @Input() expanded: boolean;\n @Input() rowClass: any;\n @Input() row: any;\n @Input() group: any;\n @Input() isSelected: boolean;\n @Input() rowIndex: number;\n @Input() displayCheck: any;\n @Input() treeStatus: TreeStatus = 'collapsed';\n\n @Input()\n set offsetX(val: number) {\n this._offsetX = val;\n this.buildStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n\n @HostBinding('class')\n get cssClass() {\n let cls = 'datatable-body-row';\n if (this.isSelected) {\n cls += ' active';\n }\n if (this.rowIndex % 2 !== 0) {\n cls += ' datatable-row-odd';\n }\n if (this.rowIndex % 2 === 0) {\n cls += ' datatable-row-even';\n }\n\n if (this.rowClass) {\n const res = this.rowClass(this.row);\n if (typeof res === 'string') {\n cls += ` ${res}`;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n\n return cls;\n }\n\n @HostBinding('style.height.px')\n @Input()\n rowHeight: number;\n\n @HostBinding('style.width.px')\n get columnsTotalWidths(): string {\n return this._columnGroupWidths.total;\n }\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n _element: any;\n _columnGroupWidths: any;\n _columnsByPin: any;\n _offsetX: number;\n _columns: any[];\n _innerWidth: number;\n _groupStyles: { [prop: string]: {} } = {\n left: {},\n center: {},\n right: {}\n };\n\n private _rowDiffer: KeyValueDiffer<{}, {}>;\n\n constructor(\n private differs: KeyValueDiffers,\n @SkipSelf() private scrollbarHelper: ScrollbarHelper,\n private cd: ChangeDetectorRef,\n element: ElementRef\n ) {\n this._element = element.nativeElement;\n this._rowDiffer = differs.find({}).create();\n }\n\n ngDoCheck(): void {\n if (this._rowDiffer.diff(this.row)) {\n this.cd.markForCheck();\n }\n }\n\n trackByGroups(index: number, colGroup: any): any {\n return colGroup.type;\n }\n\n columnTrackingFn(index: number, column: any): any {\n return column.$$id;\n }\n\n buildStylesByGroup() {\n this._groupStyles.left = this.calcStylesByGroup('left');\n this._groupStyles.center = this.calcStylesByGroup('center');\n this._groupStyles.right = this.calcStylesByGroup('right');\n this.cd.markForCheck();\n }\n\n calcStylesByGroup(group: string) {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n\n const styles = {\n width: `${widths[group]}px`\n };\n\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = (offsetDiff + this.scrollbarHelper.width) * -1;\n translateXY(styles, offset, 0);\n }\n\n return styles;\n }\n\n onActivate(event: any, index: number): void {\n event.cellIndex = index;\n event.rowElement = this._element;\n this.activate.emit(event);\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isTargetRow = event.target === this._element;\n\n const isAction =\n keyCode === Keys.return ||\n keyCode === Keys.down ||\n keyCode === Keys.up ||\n keyCode === Keys.left ||\n keyCode === Keys.right;\n\n if (isAction && isTargetRow) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseenter(event: any): void {\n this.activate.emit({\n type: 'mouseenter',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n\n recalculateColumns(val: any[] = this.columns): void {\n this._columns = val;\n const colsByPin = columnsByPin(this._columns);\n this._columnsByPin = columnsByPinArr(this._columns);\n this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);\n }\n\n onTreeAction() {\n this.treeAction.emit();\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostListener,\n DoCheck,\n ChangeDetectionStrategy,\n KeyValueDiffer,\n ChangeDetectorRef,\n KeyValueDiffers\n} from '@angular/core';\n\n@Component({\n selector: 'datatable-row-wrapper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div *ngIf=\"groupHeader && groupHeader.template\" class=\"datatable-group-header\" [ngStyle]=\"getGroupHeaderStyle()\">\n <ng-template\n *ngIf=\"groupHeader && groupHeader.template\"\n [ngTemplateOutlet]=\"groupHeader.template\"\n [ngTemplateOutletContext]=\"groupContext\"\n >\n </ng-template>\n </div>\n <ng-content *ngIf=\"(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template\">\n </ng-content>\n <div\n *ngIf=\"rowDetail && rowDetail.template && expanded\"\n [style.height.px]=\"detailRowHeight\"\n class=\"datatable-row-detail\"\n >\n <ng-template\n *ngIf=\"rowDetail && rowDetail.template\"\n [ngTemplateOutlet]=\"rowDetail.template\"\n [ngTemplateOutletContext]=\"rowContext\"\n >\n </ng-template>\n </div>\n `,\n host: {\n class: 'datatable-row-wrapper'\n }\n})\nexport class DataTableRowWrapperComponent implements DoCheck {\n @Input() innerWidth: number;\n @Input() rowDetail: any;\n @Input() groupHeader: any;\n @Input() offsetX: number;\n @Input() detailRowHeight: any;\n @Input() row: any;\n @Input() groupedRows: any;\n @Output() rowContextmenu = new EventEmitter<{ event: MouseEvent; row: any }>(false);\n\n @Input() set rowIndex(val: number) {\n this._rowIndex = val;\n this.rowContext.rowIndex = val;\n this.groupContext.rowIndex = val;\n this.cd.markForCheck();\n }\n\n get rowIndex(): number {\n return this._rowIndex;\n }\n\n @Input() set expanded(val: boolean) {\n this._expanded = val;\n this.groupContext.expanded = val;\n this.rowContext.expanded = val;\n this.cd.markForCheck();\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n\n groupContext: any = {\n group: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n\n rowContext: any = {\n row: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n\n private rowDiffer: KeyValueDiffer<{}, {}>;\n private _expanded: boolean = false;\n private _rowIndex: number;\n\n constructor(private cd: ChangeDetectorRef, private differs: KeyValueDiffers) {\n this.rowDiffer = differs.find({}).create();\n }\n\n ngDoCheck(): void {\n if (this.rowDiffer.diff(this.row)) {\n this.rowContext.row = this.row;\n this.groupContext.group = this.row;\n this.cd.markForCheck();\n }\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.rowContextmenu.emit({ event: $event, row: this.row });\n }\n\n getGroupHeaderStyle(): any {\n const styles = {};\n\n styles['transform'] = 'translate3d(' + this.offsetX + 'px, 0px, 0px)';\n styles['backface-visibility'] = 'hidden';\n styles['width'] = this.innerWidth;\n\n return styles;\n }\n}\n","import {\n Component,\n Input,\n PipeTransform,\n HostBinding,\n ViewChild,\n ChangeDetectorRef,\n Output,\n EventEmitter,\n HostListener,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n DoCheck,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { TableColumn } from '../../types/table-column.type';\nimport { SortDirection } from '../../types/sort-direction.type';\nimport { Keys } from '../../utils/keys';\n\nexport type TreeStatus = 'collapsed' | 'expanded' | 'loading' | 'disabled';\n\n@Component({\n selector: 'datatable-body-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"datatable-body-cell-label\" [style.margin-left.px]=\"calcLeftMargin(column, row)\">\n <label\n *ngIf=\"column.checkboxable && (!displayCheck || displayCheck(row, column, value))\"\n class=\"datatable-checkbox\"\n >\n <input type=\"checkbox\" [checked]=\"isSelected\" (click)=\"onCheckboxChange($event)\" />\n </label>\n <ng-container *ngIf=\"column.isTreeColumn\">\n <button\n *ngIf=\"!column.treeToggleTemplate\"\n class=\"datatable-tree-button\"\n [disabled]=\"treeStatus === 'disabled'\"\n (click)=\"onTreeAction()\"\n >\n <span>\n <i *ngIf=\"treeStatus === 'loading'\" class=\"icon datatable-icon-collapse\"></i>\n <i *ngIf=\"treeStatus === 'collapsed'\" class=\"icon datatable-icon-up\"></i>\n <i *ngIf=\"treeStatus === 'expanded' || treeStatus === 'disabled'\" class=\"icon datatable-icon-down\"></i>\n </span>\n </button>\n <ng-template\n *ngIf=\"column.treeToggleTemplate\"\n [ngTemplateOutlet]=\"column.treeToggleTemplate\"\n [ngTemplateOutletContext]=\"{ cellContext: cellContext }\"\n >\n </ng-template>\n </ng-container>\n\n <span *ngIf=\"!column.cellTemplate\" [title]=\"sanitizedValue\" [innerHTML]=\"value\"> </span>\n <ng-template\n #cellTemplate\n *ngIf=\"column.cellTemplate\"\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"cellContext\"\n >\n </ng-template>\n </div>\n `\n})\nexport class DataTableBodyCellComponent implements DoCheck, OnDestroy {\n @Input() displayCheck: (row: any, column?: TableColumn, value?: any) => boolean;\n\n @Input() set group(group: any) {\n this._group = group;\n this.cellContext.group = group;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get group() {\n return this._group;\n }\n\n @Input() set rowHeight(val: number) {\n this._rowHeight = val;\n this.cellContext.rowHeight = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get rowHeight() {\n return this._rowHeight;\n }\n\n @Input() set isSelected(val: boolean) {\n this._isSelected = val;\n this.cellContext.isSelected = val;\n this.cd.markForCheck();\n }\n\n get isSelected(): boolean {\n return this._isSelected;\n }\n\n @Input() set expanded(val: boolean) {\n this._expanded = val;\n this.cellContext.expanded = val;\n this.cd.markForCheck();\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n\n @Input() set rowIndex(val: number) {\n this._rowIndex = val;\n this.cellContext.rowIndex = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get rowIndex(): number {\n return this._rowIndex;\n }\n\n @Input() set column(column: TableColumn) {\n this._column = column;\n this.cellContext.column = column;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @Input() set row(row: any) {\n this._row = row;\n this.cellContext.row = row;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get row(): any {\n return this._row;\n }\n\n @Input() set sorts(val: any[]) {\n this._sorts = val;\n this.calcSortDir = this.calcSortDir(val);\n }\n\n get sorts(): any[] {\n return this._sorts;\n }\n\n @Input() set treeStatus(status: TreeStatus) {\n if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {\n this._treeStatus = 'collapsed';\n } else {\n this._treeStatus = status;\n }\n this.cellContext.treeStatus = this._treeStatus;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get treeStatus(): TreeStatus {\n return this._treeStatus;\n }\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('cellTemplate', { read: ViewContainerRef, static: true })\n cellTemplate: ViewContainerRef;\n\n @HostBinding('class')\n get columnCssClasses(): any {\n let cls = 'datatable-body-cell';\n if (this.column.cellClass) {\n if (typeof this.column.cellClass === 'string') {\n cls += ' ' + this.column.cellClass;\n } else if (typeof this.column.cellClass === 'function') {\n const res = this.column.cellClass({\n row: this.row,\n group: this.group,\n column: this.column,\n value: this.value,\n rowHeight: this.rowHeight\n });\n\n if (typeof res === 'string') {\n cls += ' ' + res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n }\n if (!this.sortDir) {\n cls += ' sort-active';\n }\n if (this.isFocused) {\n cls += ' active';\n }\n if (this.sortDir === SortDirection.asc) {\n cls += ' sort-asc';\n }\n if (this.sortDir === SortDirection.desc) {\n cls += ' sort-desc';\n }\n\n return cls;\n }\n\n @HostBinding('style.width.px')\n get width(): number {\n return this.column.width;\n }\n\n @HostBinding('style.minWidth.px')\n get minWidth(): number {\n return this.column.minWidth;\n }\n\n @HostBinding('style.maxWidth.px')\n get maxWidth(): number {\n return this.column.maxWidth;\n }\n\n @HostBinding('style.height')\n get height(): string | number {\n const height = this.rowHeight;\n if (isNaN(height)) {\n return height;\n }\n return height + 'px';\n }\n\n sanitizedValue: any;\n value: any;\n sortDir: SortDirection;\n isFocused = false;\n onCheckboxChangeFn = this.onCheckboxChange.bind(this);\n activateFn = this.activate.emit.bind(this.activate);\n\n cellContext: any = {\n onCheckboxChangeFn: this.onCheckboxChangeFn,\n activateFn: this.activateFn,\n row: this.row,\n group: this.group,\n value: this.value,\n column: this.column,\n rowHeight: this.rowHeight,\n isSelected: this.isSelected,\n rowIndex: this.rowIndex,\n treeStatus: this.treeStatus,\n onTreeAction: this.onTreeAction.bind(this)\n };\n\n private _isSelected: boolean;\n private _sorts: any[];\n private _column: TableColumn;\n private _row: any;\n private _group: any;\n private _rowHeight: number;\n private _rowIndex: number;\n private _expanded: boolean;\n private _element: any;\n private _treeStatus: TreeStatus;\n\n constructor(element: ElementRef, private cd: ChangeDetectorRef) {\n this._element = element.nativeElement;\n }\n\n ngDoCheck(): void {\n this.checkValueUpdates();\n }\n\n ngOnDestroy(): void {\n if (this.cellTemplate) {\n this.cellTemplate.clear();\n }\n }\n\n checkValueUpdates(): void {\n let value = '';\n\n if (!this.row || !this.column) {\n value = '';\n } else {\n const val = this.column.$$valueGetter(this.row, this.column.prop);\n const userPipe: PipeTransform = this.column.pipe;\n\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n\n if (this.value !== value) {\n this.value = value;\n this.cellContext.value = value;\n this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;\n this.cd.markForCheck();\n }\n }\n\n @HostListener('focus')\n onFocus(): void {\n this.isFocused = true;\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.isFocused = false;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'click',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n\n @HostListener('dblclick', ['$event'])\n onDblClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'dblclick',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isTargetCell = event.target === this._element;\n\n const isAction =\n keyCode === Keys.return ||\n keyCode === Keys.down ||\n keyCode === Keys.up ||\n keyCode === Keys.left ||\n keyCode === Keys.right;\n\n if (isAction && isTargetCell) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n }\n\n onCheckboxChange(event: any): void {\n this.activate.emit({\n type: 'checkbox',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element,\n treeStatus: 'collapsed'\n });\n }\n\n calcSortDir(sorts: any[]): any {\n if (!sorts) {\n return;\n }\n\n const sort = sorts.find((s: any) => {\n return s.prop === this.column.prop;\n });\n\n if (sort) {\n return sort.dir;\n }\n }\n\n stripHtml(html: string): string {\n if (!html.replace) {\n return html;\n }\n return html.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n\n onTreeAction() {\n this.treeAction.emit(this.row);\n }\n\n calcLeftMargin(column: any, row: any) {\n const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;\n return column.isTreeColumn ? row.level * levelIndent : 0;\n }\n}\n","export function selectRows(selected: any[], row: any, comparefn: any) {\n const selectedIndex = comparefn(row, selected);\n\n if (selectedIndex > -1) {\n selected.splice(selectedIndex, 1);\n } else {\n selected.push(row);\n }\n\n return selected;\n}\n\nexport function selectRowsBetween(\n selected: any[],\n rows: any[],\n index: number,\n prevIndex: number,\n comparefn: any\n): any[] {\n const reverse = index < prevIndex;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n const greater = i >= prevIndex && i <= index;\n const lesser = i <= prevIndex && i >= index;\n\n let range = { start: 0, end: 0 };\n if (reverse) {\n range = {\n start: index,\n end: prevIndex\n };\n } else {\n range = {\n start: prevIndex,\n end: index + 1\n };\n }\n\n if ((reverse && lesser) || (!reverse && greater)) {\n // if in the positive range to be added to `selected`, and\n // not already in the selected array, add it\n if (i >= range.start && i <= range.end) {\n selected.push(row);\n }\n }\n }\n\n return selected;\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { SelectionType } from '../../types/selection.type';\nimport { selectRowsBetween, selectRows } from '../../utils/selection';\nimport { Keys } from '../../utils/keys';\n\nexport interface Model {\n type: string;\n event: MouseEvent | KeyboardEvent;\n row: any;\n rowElement: any;\n cellElement: any;\n cellIndex: number;\n}\n\n@Component({\n selector: 'datatable-selection',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableSelectionComponent {\n @Input() rows: any[];\n @Input() selected: any[];\n @Input() selectEnabled: boolean;\n @Input() selectionType: SelectionType;\n @Input() rowIdentity: any;\n @Input() selectCheck: any;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n prevIndex: number;\n\n selectRow(event: KeyboardEvent | MouseEvent, index: number, row: any): void {\n if (!this.selectEnabled) return;\n\n const chkbox = this.selectionType === SelectionType.checkbox;\n const multi = this.selectionType === SelectionType.multi;\n const multiClick = this.selectionType === SelectionType.multiClick;\n let selected: any[] = [];\n\n if (multi || chkbox || multiClick) {\n if (event.shiftKey) {\n selected = selectRowsBetween([], this.rows, index, this.prevIndex, this.getRowSelectedIdx.bind(this));\n } else if (event.ctrlKey || event.metaKey || multiClick || chkbox) {\n selected = selectRows([...this.selected], row, this.getRowSelectedIdx.bind(this));\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n\n if (typeof this.selectCheck === 'function') {\n selected = selected.filter(this.selectCheck.bind(this));\n }\n\n this.selected.splice(0, this.selected.length);\n this.selected.push(...selected);\n\n this.prevIndex = index;\n\n this.select.emit({\n selected\n });\n }\n\n onActivate(model: Model, index: number): void {\n const { type, event, row } = model;\n const chkbox = this.selectionType === SelectionType.checkbox;\n const select = (!chkbox && (type === 'click' || type === 'dblclick')) || (chkbox && type === 'checkbox');\n\n if (select) {\n this.selectRow(event, index, row);\n } else if (type === 'keydown') {\n if ((<KeyboardEvent>event).keyCode === Keys.return) {\n this.selectRow(event, index, row);\n } else {\n this.onKeyboardFocus(model);\n }\n }\n this.activate.emit(model);\n }\n\n onKeyboardFocus(model: Model): void {\n const { keyCode } = <KeyboardEvent>model.event;\n const shouldFocus = keyCode === Keys.up || keyCode === Keys.down || keyCode === Keys.right || keyCode === Keys.left;\n\n if (shouldFocus) {\n const isCellSelection = this.selectionType === SelectionType.cell;\n\n if (!model.cellElement || !isCellSelection) {\n this.focusRow(model.rowElement, keyCode);\n } else if (isCellSelection) {\n this.focusCell(model.cellElement, model.rowElement, keyCode, model.cellIndex);\n }\n }\n }\n\n focusRow(rowElement: any, keyCode: number): void {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) nextRowElement.focus();\n }\n\n getPrevNextRow(rowElement: any, keyCode: number): any {\n const parentElement = rowElement.parentElement;\n\n if (parentElement) {\n let focusElement: HTMLElement;\n if (keyCode === Keys.up) {\n focusElement = parentElement.previousElementSibling;\n } else if (keyCode === Keys.down) {\n focusElement = parentElement.nextElementSibling;\n }\n\n if (focusElement && focusElement.children.length) {\n return focusElement.children[0];\n }\n }\n }\n\n focusCell(cellElement: any, rowElement: any, keyCode: number, cellIndex: number): void {\n let nextCellElement: HTMLElement;\n\n if (keyCode === Keys.left) {\n nextCellElement = cellElement.previousElementSibling;\n } else if (keyCode === Keys.right) {\n nextCellElement = cellElement.nextElementSibling;\n } else if (keyCode === Keys.up || keyCode === Keys.down) {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) {\n const children = nextRowElement.getElementsByClassName('datatable-body-cell');\n if (children.length) nextCellElement = children[cellIndex];\n }\n }\n\n if (nextCellElement) nextCellElement.focus();\n }\n\n getRowSelected(row: any): boolean {\n return this.getRowSelectedIdx(row, this.selected) > -1;\n }\n\n getRowSelectedIdx(row: any, selected: any[]): number {\n if (!selected || !selected.length) return -1;\n\n const rowId = this.rowIdentity(row);\n return selected.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n}\n","import { Component, Input, OnChanges, PipeTransform, TemplateRef } from '@angular/core';\n\nexport interface ISummaryColumn {\n summaryFunc?: (cells: any[]) => any;\n summaryTemplate?: TemplateRef<any>;\n\n prop: string;\n pipe?: PipeTransform;\n}\n\nfunction defaultSumFunc(cells: any[]): any {\n const cellsWithValues = cells.filter(cell => !!cell);\n\n if (!cellsWithValues.length) {\n return null;\n }\n if (cellsWithValues.some(cell => typeof cell !== 'number')) {\n return null;\n }\n\n return cellsWithValues.reduce((res, cell) => res + cell);\n}\n\nfunction noopSumFunc(cells: any[]): void {\n return null;\n}\n\n@Component({\n selector: 'datatable-summary-row',\n template: `\n <datatable-body-row\n *ngIf=\"summaryRow && _internalColumns\"\n tabindex=\"-1\"\n [innerWidth]=\"innerWidth\"\n [offsetX]=\"offsetX\"\n [columns]=\"_internalColumns\"\n [rowHeight]=\"rowHeight\"\n [row]=\"summaryRow\"\n [rowIndex]=\"-1\"\n >\n </datatable-body-row>\n `,\n host: {\n class: 'datatable-summary-row'\n }\n})\nexport class DataTableSummaryRowComponent implements OnChanges {\n @Input() rows: any[];\n @Input() columns: ISummaryColumn[];\n\n @Input() rowHeight: number;\n @Input() offsetX: number;\n @Input() innerWidth: number;\n\n _internalColumns: ISummaryColumn[];\n summaryRow: any = {};\n\n ngOnChanges() {\n if (!this.columns || !this.rows) {\n return;\n }\n this.updateInternalColumns();\n this.updateValues();\n }\n\n private updateInternalColumns() {\n this._internalColumns = this.columns.map(col => ({\n ...col,\n cellTemplate: col.summaryTemplate\n }));\n }\n\n private updateValues() {\n this.summaryRow = {};\n\n this.columns\n .filter(col => !col.summaryTemplate)\n .forEach(col => {\n const cellsFromSingleColumn = this.rows.map(row => row[col.prop]);\n const sumFunc = this.getSummaryFunction(col);\n\n this.summaryRow[col.prop] = col.pipe\n ? col.pipe.transform(sumFunc(cellsFromSingleColumn))\n : sumFunc(cellsFromSingleColumn);\n });\n }\n\n private getSummaryFunction(column: ISummaryColumn): (a: any[]) => any {\n if (column.summaryFunc === undefined) {\n return defaultSumFunc;\n } else if (column.summaryFunc === null) {\n return noopSumFunc;\n } else {\n return column.summaryFunc;\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollbarHelper } from './services/scrollbar-helper.service';\nimport { DimensionsHelper } from './services/dimensions-helper.service';\nimport { ColumnChangesService } from './services/column-changes.service';\nimport { DataTableFooterTemplateDirective } from './components/footer/footer-template.directive';\nimport { VisibilityDirective } from './directives/visibility.directive';\nimport { DraggableDirective } from './directives/draggable.directive';\nimport { ResizeableDirective } from './directives/resizeable.directive';\nimport { OrderableDirective } from './directives/orderable.directive';\nimport { LongPressDirective } from './directives/long-press.directive';\nimport { ScrollerComponent } from './components/body/scroller.component';\nimport { DatatableComponent } from './components/datatable.component';\nimport { DataTableColumnDirective } from './components/columns/column.directive';\nimport { DataTableHeaderComponent } from './components/header/header.component';\nimport { DataTableHeaderCellComponent } from './components/header/header-cell.component';\nimport { DataTableBodyComponent } from './components/body/body.component';\nimport { DataTableFooterComponent } from './components/footer/footer.component';\nimport { DataTablePagerComponent } from './components/footer/pager.component';\nimport { ProgressBarComponent } from './components/body/progress-bar.component';\nimport { DataTableBodyRowComponent } from './components/body/body-row.component';\nimport { DataTableRowWrapperComponent } from './components/body/body-row-wrapper.component';\nimport { DatatableRowDetailDirective } from './components/row-detail/row-detail.directive';\nimport { DatatableGroupHeaderDirective } from './components/body/body-group-header.directive';\nimport { DatatableRowDetailTemplateDirective } from './components/row-detail/row-detail-template.directive';\nimport { DataTableBodyCellComponent } from './components/body/body-cell.component';\nimport { DataTableSelectionComponent } from './components/body/selection.component';\nimport { DataTableColumnHeaderDirective } from './components/columns/column-header.directive';\nimport { DataTableColumnCellDirective } from './components/columns/column-cell.directive';\nimport { DataTableColumnCellTreeToggle } from './components/columns/tree.directive';\nimport { DatatableFooterDirective } from './components/footer/footer.directive';\nimport { DatatableGroupHeaderTemplateDirective } from './components/body/body-group-header-template.directive';\nimport { DataTableSummaryRowComponent } from './components/body/summary/summary-row.component';\n\n@NgModule({\n imports: [CommonModule],\n providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],\n declarations: [\n DataTableFooterTemplateDirective,\n VisibilityDirective,\n DraggableDirective,\n ResizeableDirective,\n OrderableDirective,\n LongPressDirective,\n ScrollerComponent,\n DatatableComponent,\n DataTableColumnDirective,\n DataTableHeaderComponent,\n DataTableHeaderCellComponent,\n DataTableBodyComponent,\n DataTableFooterComponent,\n DataTablePagerComponent,\n ProgressBarComponent,\n DataTableBodyRowComponent,\n DataTableRowWrapperComponent,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableBodyCellComponent,\n DataTableSelectionComponent,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnCellTreeToggle,\n DatatableFooterDirective,\n DatatableGroupHeaderTemplateDirective,\n DataTableSummaryRowComponent\n ],\n exports: [\n DatatableComponent,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnCellTreeToggle,\n DataTableFooterTemplateDirective,\n DatatableFooterDirective,\n DataTablePagerComponent,\n DatatableGroupHeaderTemplateDirective\n ]\n})\nexport class NgxDatatableModule {\n /**\n * Configure global configuration via INgxDatatableConfig\n * @param configuration\n */\n static forRoot(configuration: INgxDatatableConfig): ModuleWithProviders<NgxDatatableModule> {\n return {\n ngModule: NgxDatatableModule,\n providers: [{ provide: 'configuration', useValue: configuration }]\n };\n }\n}\n\n/**\n * Interface definition for INgxDatatableConfig global configuration\n */\nexport interface INgxDatatableConfig {\n messages: {\n emptyMessage: string; // Message to show when array is presented, but contains no values\n totalMessage: string; // Footer total message\n selectedMessage: string; // Footer selected message\n };\n}\n","export enum ClickType {\n single = 'single',\n double = 'double'\n}\n","if (typeof document !== 'undefined' && !document.elementsFromPoint) {\n document.elementsFromPoint = elementsFromPoint;\n}\n\n/*tslint:disable*/\n/**\n * Polyfill for `elementsFromPoint`\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint\n * https://gist.github.com/iddan/54d5d9e58311b0495a91bf06de661380\n * https://gist.github.com/oslego/7265412\n */\nexport function elementsFromPoint(x: number, y: number) {\n const elements = [];\n const previousPointerEvents = [];\n let current: any; // TODO: window.getComputedStyle should be used with inferred type (Element)\n let i;\n let d;\n\n //if (document === undefined) return elements;\n\n // get all elements via elementFromPoint, and remove them from hit-testing in order\n while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) {\n // push the element and its current style\n elements.push(current);\n previousPointerEvents.push({\n value: current.style.getPropertyValue('pointer-events'),\n priority: current.style.getPropertyPriority('pointer-events')\n });\n\n // add \"pointer-events: none\", to get to the underlying element\n current.style.setProperty('pointer-events', 'none', 'important');\n }\n\n // restore the previous pointer-events values\n for (i = previousPointerEvents.length; (d = previousPointerEvents[--i]); ) {\n elements[i].style.setProperty('pointer-events', d.value ? d.value : '', d.priority);\n }\n\n // return our results\n return elements;\n}\n/*tslint:enable*/\n"],"names":["Inject","DOCUMENT","Injectable","Subject","TemplateRef","Directive","EventEmitter","ElementRef","NgZone","HostBinding","Output","fromEvent","takeUntil","Input","Renderer2","HostListener","KeyValueDiffers","ContentChildren","Component","ChangeDetectionStrategy","ContentChild","ColumnMode","SelectionType","SortType","ContextmenuType","ChangeDetectorRef","ViewChild","SortDirection","BehaviorSubject","SkipSelf","Optional","ViewEncapsulation","Keys","ViewContainerRef","NgModule","CommonModule","ClickType"],"mappings":"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"}
1
+ {"version":3,"file":"swimlane-ngx-datatable.umd.js","sources":["../../../../projects/swimlane/ngx-datatable/src/lib/services/scrollbar-helper.service.ts","../../../../projects/swimlane/ngx-datatable/src/lib/services/dimensions-helper.service.ts","../../../../projects/swimlane/ngx-datatable/src/lib/services/column-changes.service.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/visibility.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/draggable.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/resizeable.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/swimlane/ngx-datatable/src/lib/directives/orderable.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/long-press.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/scroller.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-header-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-header.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column-prop-getters.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/tree.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/camel-case.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/id.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column-helper.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/column-mode.type.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/selection.type.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/sort.type.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/contextmenu.type.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-header.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-cell.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/tree.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/row-detail/row-detail-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/row-detail/row-detail.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/row-height-cache.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/prefixes.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/translate.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/header/header.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/throttle.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/math.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/sort-direction.type.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/sort.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/datatable.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/header/header-cell.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/pager.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/progress-bar.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/keys.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row-wrapper.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-cell.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/selection.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/selection.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/summary/summary-row.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/ngx-datatable.module.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/click.type.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/elm-from-point.ts","../../../../projects/swimlane/ngx-datatable/src/public-api.ts","../../../../projects/swimlane/ngx-datatable/src/swimlane-ngx-datatable.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\n@Injectable()\nexport class ScrollbarHelper {\n width: number = this.getWidth();\n\n constructor(@Inject(DOCUMENT) private document: any) {}\n\n getWidth(): number {\n const outer = this.document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.msOverflowStyle = 'scrollbar';\n this.document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = this.document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\n@Injectable()\nexport class DimensionsHelper {\n getDimensions(element: Element): ClientRect {\n return element.getBoundingClientRect();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * service to make DatatableComponent aware of changes to\n * input bindings of DataTableColumnDirective\n */\n@Injectable()\nexport class ColumnChangesService {\n private columnInputChanges = new Subject<undefined>();\n\n get columnInputChanges$(): Observable<undefined> {\n return this.columnInputChanges.asObservable();\n }\n\n onInputChange(): void {\n this.columnInputChanges.next();\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-footer-template]' })\nexport class DataTableFooterTemplateDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, Output, EventEmitter, ElementRef, HostBinding, NgZone, OnInit, OnDestroy } from '@angular/core';\n\n/**\n * Visibility Observer Directive\n *\n * Usage:\n *\n * \t\t<div\n * \t\t\tvisibilityObserver\n * \t\t\t(visible)=\"onVisible($event)\">\n * \t\t</div>\n *\n */\n@Directive({ selector: '[visibilityObserver]' })\nexport class VisibilityDirective implements OnInit, OnDestroy {\n @HostBinding('class.visible')\n isVisible: boolean = false;\n\n @Output() visible: EventEmitter<any> = new EventEmitter();\n\n timeout: any;\n\n constructor(private element: ElementRef, private zone: NgZone) {}\n\n ngOnInit(): void {\n this.runCheck();\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timeout);\n }\n\n onVisibilityChange(): void {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n\n runCheck(): void {\n const check = () => {\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n } else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 50);\n });\n }\n };\n\n this.timeout = setTimeout(() => check());\n }\n}\n","import { Directive, ElementRef, Input, Output, EventEmitter, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Draggable Directive for Angular2\n *\n * Inspiration:\n * https://github.com/AngularClass/angular2-examples/blob/master/rx-draggable/directives/draggable.ts\n * http://stackoverflow.com/questions/35662530/how-to-implement-drag-and-drop-in-angular2\n *\n */\n@Directive({ selector: '[draggable]' })\nexport class DraggableDirective implements OnDestroy, OnChanges {\n @Input() dragEventTarget: any;\n @Input() dragModel: any;\n @Input() dragX: boolean = true;\n @Input() dragY: boolean = true;\n\n @Output() dragStart: EventEmitter<any> = new EventEmitter();\n @Output() dragging: EventEmitter<any> = new EventEmitter();\n @Output() dragEnd: EventEmitter<any> = new EventEmitter();\n\n element: HTMLElement;\n isDragging: boolean = false;\n subscription: Subscription;\n\n constructor(element: ElementRef) {\n this.element = element.nativeElement;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dragEventTarget'] && changes['dragEventTarget'].currentValue && this.dragModel.dragging) {\n this.onMousedown(changes['dragEventTarget'].currentValue);\n }\n }\n\n ngOnDestroy(): void {\n this._destroySubscription();\n }\n\n onMouseup(event: MouseEvent): void {\n if (!this.isDragging) return;\n\n this.isDragging = false;\n this.element.classList.remove('dragging');\n\n if (this.subscription) {\n this._destroySubscription();\n this.dragEnd.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n\n onMousedown(event: MouseEvent): void {\n // we only want to drag the inner header text\n const isDragElm = (<HTMLElement>event.target).classList.contains('draggable');\n\n if (isDragElm && (this.dragX || this.dragY)) {\n event.preventDefault();\n this.isDragging = true;\n\n const mouseDownPos = { x: event.clientX, y: event.clientY };\n\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup(ev));\n\n const mouseMoveSub = fromEvent(document, 'mousemove')\n .pipe(takeUntil(mouseup))\n .subscribe((ev: MouseEvent) => this.move(ev, mouseDownPos));\n\n this.subscription.add(mouseMoveSub);\n\n this.dragStart.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n\n move(event: MouseEvent, mouseDownPos: { x: number; y: number }): void {\n if (!this.isDragging) return;\n\n const x = event.clientX - mouseDownPos.x;\n const y = event.clientY - mouseDownPos.y;\n\n if (this.dragX) this.element.style.left = `${x}px`;\n if (this.dragY) this.element.style.top = `${y}px`;\n\n this.element.classList.add('dragging');\n\n this.dragging.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n\n private _destroySubscription(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n AfterViewInit,\n Renderer2\n} from '@angular/core';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizeable]',\n host: {\n '[class.resizeable]': 'resizeEnabled'\n }\n})\nexport class ResizeableDirective implements OnDestroy, AfterViewInit {\n @Input() resizeEnabled: boolean = true;\n @Input() minWidth: number;\n @Input() maxWidth: number;\n\n @Output() resize: EventEmitter<any> = new EventEmitter();\n\n element: HTMLElement;\n subscription: Subscription;\n resizing: boolean = false;\n private resizeHandle: HTMLElement;\n\n constructor(element: ElementRef, private renderer: Renderer2) {\n this.element = element.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const renderer2 = this.renderer;\n this.resizeHandle = renderer2.createElement('span');\n if (this.resizeEnabled) {\n renderer2.addClass(this.resizeHandle, 'resize-handle');\n } else {\n renderer2.addClass(this.resizeHandle, 'resize-handle--not-resizable');\n }\n renderer2.appendChild(this.element, this.resizeHandle);\n }\n\n ngOnDestroy(): void {\n this._destroySubscription();\n if (this.renderer.destroyNode) {\n this.renderer.destroyNode(this.resizeHandle);\n } else if (this.resizeHandle) {\n this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle);\n }\n }\n\n onMouseup(): void {\n this.resizing = false;\n\n if (this.subscription && !this.subscription.closed) {\n this._destroySubscription();\n this.resize.emit(this.element.clientWidth);\n }\n }\n\n @HostListener('mousedown', ['$event'])\n onMousedown(event: MouseEvent): void {\n const isHandle = (<HTMLElement>event.target).classList.contains('resize-handle');\n const initialWidth = this.element.clientWidth;\n const mouseDownScreenX = event.screenX;\n\n if (isHandle) {\n event.stopPropagation();\n this.resizing = true;\n\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup());\n\n const mouseMoveSub = fromEvent(document, 'mousemove')\n .pipe(takeUntil(mouseup))\n .subscribe((e: MouseEvent) => this.move(e, initialWidth, mouseDownScreenX));\n\n this.subscription.add(mouseMoveSub);\n }\n }\n\n move(event: MouseEvent, initialWidth: number, mouseDownScreenX: number): void {\n const movementX = event.screenX - mouseDownScreenX;\n const newWidth = initialWidth + movementX;\n\n const overMinWidth = !this.minWidth || newWidth >= this.minWidth;\n const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth;\n\n if (overMinWidth && underMaxWidth) {\n this.element.style.width = `${newWidth}px`;\n }\n }\n\n private _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n Directive,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n KeyValueDiffers,\n AfterContentInit,\n OnDestroy,\n Inject\n} from '@angular/core';\nimport { DraggableDirective } from './draggable.directive';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({ selector: '[orderable]' })\nexport class OrderableDirective implements AfterContentInit, OnDestroy {\n @Output() reorder: EventEmitter<any> = new EventEmitter();\n @Output() targetChanged: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(DraggableDirective, { descendants: true })\n draggables: QueryList<DraggableDirective>;\n\n positions: any;\n differ: any;\n lastDraggingIndex: number;\n\n constructor(differs: KeyValueDiffers, @Inject(DOCUMENT) private document: any) {\n this.differ = differs.find({}).create();\n }\n\n ngAfterContentInit(): void {\n // HACK: Investigate Better Way\n this.updateSubscriptions();\n this.draggables.changes.subscribe(this.updateSubscriptions.bind(this));\n }\n\n ngOnDestroy(): void {\n this.draggables.forEach(d => {\n d.dragStart.unsubscribe();\n d.dragging.unsubscribe();\n d.dragEnd.unsubscribe();\n });\n }\n\n updateSubscriptions(): void {\n const diffs = this.differ.diff(this.createMapDiffs());\n\n if (diffs) {\n const subscribe = ({ currentValue, previousValue }: any) => {\n unsubscribe({ previousValue });\n\n if (currentValue) {\n currentValue.dragStart.subscribe(this.onDragStart.bind(this));\n currentValue.dragging.subscribe(this.onDragging.bind(this));\n currentValue.dragEnd.subscribe(this.onDragEnd.bind(this));\n }\n };\n\n const unsubscribe = ({ previousValue }: any) => {\n if (previousValue) {\n previousValue.dragStart.unsubscribe();\n previousValue.dragging.unsubscribe();\n previousValue.dragEnd.unsubscribe();\n }\n };\n\n diffs.forEachAddedItem(subscribe);\n // diffs.forEachChangedItem(subscribe.bind(this));\n diffs.forEachRemovedItem(unsubscribe);\n }\n }\n\n onDragStart(): void {\n this.positions = {};\n\n let i = 0;\n for (const dragger of this.draggables.toArray()) {\n const elm = dragger.element;\n const left = parseInt(elm.offsetLeft.toString(), 0);\n this.positions[dragger.dragModel.prop] = {\n left,\n right: left + parseInt(elm.offsetWidth.toString(), 0),\n index: i++,\n element: elm\n };\n }\n }\n\n onDragging({ element, model, event }: any): void {\n const prevPos = this.positions[model.prop];\n const target = this.isTarget(model, event);\n\n if (target) {\n if (this.lastDraggingIndex !== target.i) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n newIndex: target.i,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = target.i;\n }\n } else if (this.lastDraggingIndex !== prevPos.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = prevPos.index;\n }\n }\n\n onDragEnd({ element, model, event }: any): void {\n const prevPos = this.positions[model.prop];\n\n const target = this.isTarget(model, event);\n if (target) {\n this.reorder.emit({\n prevIndex: prevPos.index,\n newIndex: target.i,\n model\n });\n }\n\n this.lastDraggingIndex = undefined;\n element.style.left = 'auto';\n }\n\n isTarget(model: any, event: any): any {\n let i = 0;\n const x = event.x || event.clientX;\n const y = event.y || event.clientY;\n const targets = this.document.elementsFromPoint(x, y);\n\n for (const prop in this.positions) {\n // current column position which throws event.\n const pos = this.positions[prop];\n\n // since we drag the inner span, we need to find it in the elements at the cursor\n if (model.prop !== prop && targets.find((el: any) => el === pos.element)) {\n return {\n pos,\n i\n };\n }\n\n i++;\n }\n }\n\n private createMapDiffs(): { [key: string]: DraggableDirective } {\n return this.draggables.toArray().reduce((acc, curr) => {\n acc[curr.dragModel.$$id] = curr;\n return acc;\n }, {});\n }\n}\n","import { Directive, Input, Output, EventEmitter, HostBinding, HostListener, OnDestroy } from '@angular/core';\nimport { Observable, Subscription, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MouseEvent } from '../events';\n\n@Directive({ selector: '[long-press]' })\nexport class LongPressDirective implements OnDestroy {\n @Input() pressEnabled: boolean = true;\n @Input() pressModel: any;\n @Input() duration: number = 500;\n\n @Output() longPressStart: EventEmitter<any> = new EventEmitter();\n @Output() longPressing: EventEmitter<any> = new EventEmitter();\n @Output() longPressEnd: EventEmitter<any> = new EventEmitter();\n\n pressing: boolean;\n isLongPressing: boolean;\n timeout: any;\n mouseX: number = 0;\n mouseY: number = 0;\n\n subscription: Subscription;\n\n @HostBinding('class.press')\n get press(): boolean {\n return this.pressing;\n }\n\n @HostBinding('class.longpress')\n get isLongPress(): boolean {\n return this.isLongPressing;\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n // don't do right/middle clicks\n if (event.which !== 1 || !this.pressEnabled) return;\n\n // don't start drag if its on resize handle\n const target = <HTMLElement>event.target;\n if (target.classList.contains('resize-handle')) return;\n\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n\n this.pressing = true;\n this.isLongPressing = false;\n\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup());\n\n this.timeout = setTimeout(() => {\n this.isLongPressing = true;\n this.longPressStart.emit({\n event,\n model: this.pressModel\n });\n\n this.subscription.add(\n fromEvent(document, 'mousemove')\n .pipe(takeUntil(mouseup))\n .subscribe((mouseEvent: MouseEvent) => this.onMouseMove(mouseEvent))\n );\n\n this.loop(event);\n }, this.duration);\n\n this.loop(event);\n }\n\n onMouseMove(event: MouseEvent): void {\n if (this.pressing && !this.isLongPressing) {\n const xThres = Math.abs(event.clientX - this.mouseX) > 10;\n const yThres = Math.abs(event.clientY - this.mouseY) > 10;\n\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n\n loop(event: MouseEvent): void {\n if (this.isLongPressing) {\n this.timeout = setTimeout(() => {\n this.longPressing.emit({\n event,\n model: this.pressModel\n });\n this.loop(event);\n }, 50);\n }\n }\n\n endPress(): void {\n clearTimeout(this.timeout);\n this.isLongPressing = false;\n this.pressing = false;\n this._destroySubscription();\n\n this.longPressEnd.emit({\n model: this.pressModel\n });\n }\n\n onMouseup(): void {\n this.endPress();\n }\n\n ngOnDestroy(): void {\n this._destroySubscription();\n }\n\n private _destroySubscription(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","import {\n Component,\n Input,\n ElementRef,\n Output,\n EventEmitter,\n Renderer2,\n NgZone,\n OnInit,\n OnDestroy,\n HostBinding,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { MouseEvent } from '../../events';\n\n@Component({\n selector: 'datatable-scroller',\n template: ` <ng-content></ng-content> `,\n host: {\n class: 'datatable-scroll'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScrollerComponent implements OnInit, OnDestroy {\n @Input() scrollbarV: boolean = false;\n @Input() scrollbarH: boolean = false;\n\n @HostBinding('style.height.px')\n @Input()\n scrollHeight: number;\n\n @HostBinding('style.width.px')\n @Input()\n scrollWidth: number;\n\n @Output() scroll: EventEmitter<any> = new EventEmitter();\n\n scrollYPos: number = 0;\n scrollXPos: number = 0;\n prevScrollYPos: number = 0;\n prevScrollXPos: number = 0;\n element: any;\n parentElement: any;\n onScrollListener: any;\n\n private _scrollEventListener: any = null;\n\n constructor(private ngZone: NgZone, element: ElementRef, private renderer: Renderer2) {\n this.element = element.nativeElement;\n }\n\n ngOnInit(): void {\n // manual bind so we don't always listen\n if (this.scrollbarV || this.scrollbarH) {\n const renderer = this.renderer;\n this.parentElement = renderer.parentNode(renderer.parentNode(this.element));\n this._scrollEventListener = this.onScrolled.bind(this);\n this.parentElement.addEventListener('scroll', this._scrollEventListener);\n }\n }\n\n ngOnDestroy(): void {\n if (this._scrollEventListener) {\n this.parentElement.removeEventListener('scroll', this._scrollEventListener);\n this._scrollEventListener = null;\n }\n }\n\n setOffset(offsetY: number): void {\n if (this.parentElement) {\n this.parentElement.scrollTop = offsetY;\n }\n }\n\n onScrolled(event: MouseEvent): void {\n const dom: Element = <Element>event.currentTarget;\n requestAnimationFrame(() => {\n this.scrollYPos = dom.scrollTop;\n this.scrollXPos = dom.scrollLeft;\n this.updateOffset();\n });\n }\n\n updateOffset(): void {\n let direction: string;\n if (this.scrollYPos < this.prevScrollYPos) {\n direction = 'down';\n } else if (this.scrollYPos > this.prevScrollYPos) {\n direction = 'up';\n }\n\n this.scroll.emit({\n direction,\n scrollYPos: this.scrollYPos,\n scrollXPos: this.scrollXPos\n });\n\n this.prevScrollYPos = this.scrollYPos;\n this.prevScrollXPos = this.scrollXPos;\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-group-header-template]'\n})\nexport class DatatableGroupHeaderTemplateDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';\nimport { DatatableGroupHeaderTemplateDirective } from './body-group-header-template.directive';\n\n@Directive({ selector: 'ngx-datatable-group-header' })\nexport class DatatableGroupHeaderDirective {\n /**\n * Row height is required when virtual scroll is enabled.\n */\n @Input() rowHeight: number | ((group?: any, index?: number) => number) = 0;\n\n @Input('template')\n _templateInput: TemplateRef<any>;\n\n @ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any>;\n\n get template(): TemplateRef<any> {\n return this._templateInput || this._templateQuery;\n }\n\n /**\n * Track toggling of group visibility\n */\n @Output() toggle: EventEmitter<any> = new EventEmitter();\n\n /**\n * Toggle the expansion of a group\n */\n toggleExpandGroup(group: any): void {\n this.toggle.emit({\n type: 'group',\n value: group\n });\n }\n\n /**\n * Expand all groups\n */\n expandAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * Collapse all groups\n */\n collapseAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import { TableColumnProp } from '../types/table-column.type';\n\n// maybe rename this file to prop-getters.ts\n\nexport type ValueGetter = (obj: any, prop: TableColumnProp) => any;\n\n/**\n * Always returns the empty string ''\n */\nexport function emptyStringGetter(): string {\n return '';\n}\n\n/**\n * Returns the appropriate getter function for this kind of prop.\n * If prop == null, returns the emptyStringGetter.\n */\nexport function getterForProp(prop: TableColumnProp): ValueGetter {\n if (prop == null) {\n return emptyStringGetter;\n }\n\n if (typeof prop === 'number') {\n return numericIndexGetter;\n } else {\n // deep or simple\n if (prop.indexOf('.') !== -1) {\n return deepValueGetter;\n } else {\n return shallowValueGetter;\n }\n }\n}\n\n/**\n * Returns the value at this numeric index.\n * @param row array of values\n * @param index numeric index\n * @returns any or '' if invalid index\n */\nexport function numericIndexGetter(row: any[], index: number): any {\n if (row == null) {\n return '';\n }\n // mimic behavior of deepValueGetter\n if (!row || index == null) {\n return row;\n }\n\n const value = row[index];\n if (value == null) {\n return '';\n }\n return value;\n}\n\n/**\n * Returns the value of a field.\n * (more efficient than deepValueGetter)\n * @param obj object containing the field\n * @param fieldName field name string\n */\nexport function shallowValueGetter(obj: any, fieldName: string): any {\n if (obj == null) {\n return '';\n }\n if (!obj || !fieldName) {\n return obj;\n }\n\n const value = obj[fieldName];\n if (value == null) {\n return '';\n }\n return value;\n}\n\n/**\n * Returns a deep object given a string. zoo['animal.type']\n */\nexport function deepValueGetter(obj: any, path: string): any {\n if (obj == null) {\n return '';\n }\n if (!obj || !path) {\n return obj;\n }\n\n // check if path matches a root-level field\n // { \"a.b.c\": 123 }\n let current = obj[path];\n if (current !== undefined) {\n return current;\n }\n\n current = obj;\n const split = path.split('.');\n\n if (split.length) {\n for (let i = 0; i < split.length; i++) {\n current = current[split[i]];\n\n // if found undefined, return empty string\n if (current === undefined || current === null) {\n return '';\n }\n }\n }\n\n return current;\n}\n","import { getterForProp } from './column-prop-getters';\nimport { TableColumnProp } from '../types/table-column.type';\n\nexport type OptionalValueGetter = (row: any) => any | undefined;\nexport function optionalGetterForProp(prop: TableColumnProp): OptionalValueGetter {\n return prop && (row => getterForProp(prop)(row, prop));\n}\n\n/**\n * This functions rearrange items by their parents\n * Also sets the level value to each of the items\n *\n * Note: Expecting each item has a property called parentId\n * Note: This algorithm will fail if a list has two or more items with same ID\n * NOTE: This algorithm will fail if there is a deadlock of relationship\n *\n * For example,\n *\n * Input\n *\n * id -> parent\n * 1 -> 0\n * 2 -> 0\n * 3 -> 1\n * 4 -> 1\n * 5 -> 2\n * 7 -> 8\n * 6 -> 3\n *\n *\n * Output\n * id -> level\n * 1 -> 0\n * --3 -> 1\n * ----6 -> 2\n * --4 -> 1\n * 2 -> 0\n * --5 -> 1\n * 7 -> 8\n *\n *\n * @param rows\n *\n */\nexport function groupRowsByParents(rows: any[], from?: OptionalValueGetter, to?: OptionalValueGetter): any[] {\n if (from && to) {\n const nodeById = {};\n const l = rows.length;\n let node: TreeNode | null = null;\n\n nodeById[0] = new TreeNode(); // that's the root node\n\n const uniqIDs = rows.reduce((arr, item) => {\n const toValue = to(item);\n if (arr.indexOf(toValue) === -1) {\n arr.push(toValue);\n }\n return arr;\n }, []);\n\n for (let i = 0; i < l; i++) {\n // make TreeNode objects for each item\n nodeById[to(rows[i])] = new TreeNode(rows[i]);\n }\n\n for (let i = 0; i < l; i++) {\n // link all TreeNode objects\n node = nodeById[to(rows[i])];\n let parent = 0;\n const fromValue = from(node.row);\n if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) {\n parent = fromValue;\n }\n node.parent = nodeById[parent];\n node.row['level'] = node.parent.row['level'] + 1;\n node.parent.children.push(node);\n }\n\n let resolvedRows: any[] = [];\n nodeById[0].flatten(function () {\n resolvedRows = [...resolvedRows, this.row];\n }, true);\n\n return resolvedRows;\n } else {\n return rows;\n }\n}\n\nclass TreeNode {\n public row: any;\n public parent: any;\n public children: any[];\n\n constructor(row: any | null = null) {\n if (!row) {\n row = {\n level: -1,\n treeStatus: 'expanded'\n };\n }\n this.row = row;\n this.parent = null;\n this.children = [];\n }\n\n flatten(f: any, recursive: boolean) {\n if (this.row['treeStatus'] === 'expanded') {\n for (let i = 0, l = this.children.length; i < l; i++) {\n const child = this.children[i];\n f.apply(child, Array.prototype.slice.call(arguments, 2));\n if (recursive) child.flatten.apply(child, arguments);\n }\n }\n }\n}\n","/**\n * Converts strings from something to camel case\n * http://stackoverflow.com/questions/10425287/convert-dash-separated-string-to-camelcase\n */\nexport function camelCase(str: string): string {\n // Replace special characters with a space\n str = str.replace(/[^a-zA-Z0-9 ]/g, ' ');\n // put a space before an uppercase letter\n str = str.replace(/([a-z](?=[A-Z]))/g, '$1 ');\n\n // Lower case first character and some other stuff\n str = str\n .replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, '')\n .trim()\n .toLowerCase();\n\n // uppercase characters preceded by a space or number\n str = str.replace(/([ 0-9]+)([a-zA-Z])/g, function (a, b, c) {\n return b.trim() + c.toUpperCase();\n });\n\n return str;\n}\n\n/**\n * Converts strings from camel case to words\n * http://stackoverflow.com/questions/7225407/convert-camelcasetext-to-camel-case-text\n */\nexport function deCamelCase(str: string): string {\n return str.replace(/([A-Z])/g, match => ` ${match}`).replace(/^./, match => match.toUpperCase());\n}\n","/**\n * Creates a unique object id.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n */\nexport function id() {\n return ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n}\n","import { camelCase, deCamelCase } from './camel-case';\nimport { id } from './id';\nimport { getterForProp } from './column-prop-getters';\nimport { TableColumn } from '../types/table-column.type';\nimport { DataTableColumnDirective } from '../components/columns/column.directive';\n\n/**\n * Sets the column defaults\n */\nexport function setColumnDefaults(columns: TableColumn[]) {\n if (!columns) return;\n\n // Only one column should hold the tree view\n // Thus if multiple columns are provided with\n // isTreeColumn as true we take only the first one\n let treeColumnFound: boolean = false;\n\n for (const column of columns) {\n if (!column.$$id) {\n column.$$id = id();\n }\n\n // prop can be numeric; zero is valid not a missing prop\n // translate name => prop\n if (isNullOrUndefined(column.prop) && column.name) {\n column.prop = camelCase(column.name);\n }\n\n if (!column.$$valueGetter) {\n column.$$valueGetter = getterForProp(column.prop);\n }\n\n // format props if no name passed\n if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = deCamelCase(String(column.prop));\n }\n\n if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = ''; // Fixes IE and Edge displaying `null`\n }\n\n if (!column.hasOwnProperty('resizeable')) {\n column.resizeable = true;\n }\n\n if (!column.hasOwnProperty('sortable')) {\n column.sortable = true;\n }\n\n if (!column.hasOwnProperty('draggable')) {\n column.draggable = true;\n }\n\n if (!column.hasOwnProperty('canAutoResize')) {\n column.canAutoResize = true;\n }\n\n if (!column.hasOwnProperty('width')) {\n column.width = 150;\n }\n\n if (!column.hasOwnProperty('isTreeColumn')) {\n column.isTreeColumn = false;\n } else {\n if (column.isTreeColumn && !treeColumnFound) {\n // If the first column with isTreeColumn is true found\n // we mark that treeCoulmn is found\n treeColumnFound = true;\n } else {\n // After that isTreeColumn property for any other column\n // will be set as false\n column.isTreeColumn = false;\n }\n }\n }\n}\n\nexport function isNullOrUndefined<T>(value: T | null | undefined): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Translates templates definitions to objects\n */\nexport function translateTemplates(templates: DataTableColumnDirective[]): any[] {\n const result: any[] = [];\n for (const temp of templates) {\n const col: any = {};\n\n const props = Object.getOwnPropertyNames(temp);\n for (const prop of props) {\n col[prop] = temp[prop];\n }\n\n if (temp.headerTemplate) {\n col.headerTemplate = temp.headerTemplate;\n }\n\n if (temp.cellTemplate) {\n col.cellTemplate = temp.cellTemplate;\n }\n\n if (temp.summaryFunc) {\n col.summaryFunc = temp.summaryFunc;\n }\n\n if (temp.summaryTemplate) {\n col.summaryTemplate = temp.summaryTemplate;\n }\n\n result.push(col);\n }\n\n return result;\n}\n","export enum ColumnMode {\n standard = 'standard',\n flex = 'flex',\n force = 'force'\n}\n","export enum SelectionType {\n single = 'single',\n multi = 'multi',\n multiClick = 'multiClick',\n cell = 'cell',\n checkbox = 'checkbox'\n}\n","export enum SortType {\n single = 'single',\n multi = 'multi'\n}\n","export enum ContextmenuType {\n header = 'header',\n body = 'body'\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-header-template]' })\nexport class DataTableColumnHeaderDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-cell-template]' })\nexport class DataTableColumnCellDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ngx-datatable-tree-toggle]' })\nexport class DataTableColumnCellTreeToggle {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef, ContentChild, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DataTableColumnHeaderDirective } from './column-header.directive';\nimport { DataTableColumnCellDirective } from './column-cell.directive';\nimport { DataTableColumnCellTreeToggle } from './tree.directive';\nimport { ColumnChangesService } from '../../services/column-changes.service';\nimport { TableColumnProp } from '../../types/table-column.type';\n\n@Directive({ selector: 'ngx-datatable-column' })\nexport class DataTableColumnDirective implements OnChanges {\n @Input() name: string;\n @Input() prop: TableColumnProp;\n @Input() frozenLeft: any;\n @Input() frozenRight: any;\n @Input() flexGrow: number;\n @Input() resizeable: boolean;\n @Input() comparator: any;\n @Input() pipe: any;\n @Input() sortable: boolean;\n @Input() draggable: boolean;\n @Input() canAutoResize: boolean;\n @Input() minWidth: number;\n @Input() width: number;\n @Input() maxWidth: number;\n @Input() checkboxable: boolean;\n @Input() headerCheckboxable: boolean;\n @Input() headerClass: string | ((data: any) => string | any);\n @Input() cellClass: string | ((data: any) => string | any);\n @Input() isTreeColumn: boolean;\n @Input() treeLevelIndent: number;\n @Input() summaryFunc: (cells: any[]) => any;\n @Input() summaryTemplate: TemplateRef<any>;\n\n @Input('cellTemplate')\n _cellTemplateInput: TemplateRef<any>;\n\n @ContentChild(DataTableColumnCellDirective, { read: TemplateRef, static: true })\n _cellTemplateQuery: TemplateRef<any>;\n\n get cellTemplate(): TemplateRef<any> {\n return this._cellTemplateInput || this._cellTemplateQuery;\n }\n\n @Input('headerTemplate')\n _headerTemplateInput: TemplateRef<any>;\n\n @ContentChild(DataTableColumnHeaderDirective, { read: TemplateRef, static: true })\n _headerTemplateQuery: TemplateRef<any>;\n\n get headerTemplate(): TemplateRef<any> {\n return this._headerTemplateInput || this._headerTemplateQuery;\n }\n\n @Input('treeToggleTemplate')\n _treeToggleTemplateInput: TemplateRef<any>;\n\n @ContentChild(DataTableColumnCellTreeToggle, { read: TemplateRef, static: true })\n _treeToggleTemplateQuery: TemplateRef<any>;\n\n get treeToggleTemplate(): TemplateRef<any> {\n return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;\n }\n\n private isFirstChange = true;\n\n constructor(private columnChangesService: ColumnChangesService) {}\n\n ngOnChanges() {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.columnChangesService.onInputChange();\n }\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-row-detail-template]'\n})\nexport class DatatableRowDetailTemplateDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';\nimport { DatatableRowDetailTemplateDirective } from './row-detail-template.directive';\n\n@Directive({ selector: 'ngx-datatable-row-detail' })\nexport class DatatableRowDetailDirective {\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n @Input() rowHeight: number | ((row?: any, index?: number) => number) = 0;\n\n @Input('template')\n _templateInput: TemplateRef<any>;\n\n @ContentChild(DatatableRowDetailTemplateDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any>;\n\n get template(): TemplateRef<any> {\n return this._templateInput || this._templateQuery;\n }\n\n /**\n * Row detail row visbility was toggled.\n */\n @Output() toggle: EventEmitter<any> = new EventEmitter();\n\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row: any): void {\n this.toggle.emit({\n type: 'row',\n value: row\n });\n }\n\n /**\n * API method to expand all the rows.\n */\n expandAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import { Input, Directive, TemplateRef, ContentChild } from '@angular/core';\nimport { DataTableFooterTemplateDirective } from './footer-template.directive';\n\n@Directive({ selector: 'ngx-datatable-footer' })\nexport class DatatableFooterDirective {\n @Input() footerHeight: number;\n @Input() totalMessage: string;\n @Input() selectedMessage: string | boolean;\n @Input() pagerLeftArrowIcon: string;\n @Input() pagerRightArrowIcon: string;\n @Input() pagerPreviousIcon: string;\n @Input() pagerNextIcon: string;\n\n @Input('template')\n _templateInput: TemplateRef<any>;\n\n @ContentChild(DataTableFooterTemplateDirective, { read: TemplateRef })\n _templateQuery: TemplateRef<any>;\n\n get template(): TemplateRef<any> {\n return this._templateInput || this._templateQuery;\n }\n}\n","/**\n * Returns the columns by pin.\n */\nexport function columnsByPin(cols: any[]) {\n const ret: { left: any; center: any; right: any } = {\n left: [],\n center: [],\n right: []\n };\n\n if (cols) {\n for (const col of cols) {\n if (col.frozenLeft) {\n ret.left.push(col);\n } else if (col.frozenRight) {\n ret.right.push(col);\n } else {\n ret.center.push(col);\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Returns the widths of all group sets of a column\n */\nexport function columnGroupWidths(groups: any, all: any) {\n return {\n left: columnTotalWidth(groups.left),\n center: columnTotalWidth(groups.center),\n right: columnTotalWidth(groups.right),\n total: Math.floor(columnTotalWidth(all))\n };\n}\n\n/**\n * Calculates the total width of all columns and their groups\n */\nexport function columnTotalWidth(columns: any[], prop?: string) {\n let totalWidth = 0;\n\n if (columns) {\n for (const c of columns) {\n const has = prop && c[prop];\n const width = has ? c[prop] : c.width;\n totalWidth = totalWidth + parseFloat(width);\n }\n }\n\n return totalWidth;\n}\n\n/**\n * Calculates the total width of all columns and their groups\n */\nexport function columnsTotalWidth(columns: any, prop?: any) {\n let totalWidth = 0;\n\n for (const column of columns) {\n const has = prop && column[prop];\n totalWidth = totalWidth + (has ? column[prop] : column.width);\n }\n\n return totalWidth;\n}\n\nexport function columnsByPinArr(val: any) {\n const colsByPinArr = [];\n const colsByPin = columnsByPin(val);\n\n colsByPinArr.push({ type: 'left', columns: colsByPin['left'] });\n colsByPinArr.push({ type: 'center', columns: colsByPin['center'] });\n colsByPinArr.push({ type: 'right', columns: colsByPin['right'] });\n\n return colsByPinArr;\n}\n","/**\n * This object contains the cache of the various row heights that are present inside\n * the data table. Its based on Fenwick tree data structure that helps with\n * querying sums that have time complexity of log n.\n *\n * Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html\n * https://github.com/mikolalysenko/fenwick-tree\n *\n */\nexport class RowHeightCache {\n /**\n * Tree Array stores the cumulative information of the row heights to perform efficient\n * range queries and updates. Currently the tree is initialized to the base row\n * height instead of the detail row height.\n */\n private treeArray: number[] = [];\n\n /**\n * Clear the Tree array.\n */\n clearCache(): void {\n this.treeArray = [];\n }\n\n /**\n * Initialize the Fenwick tree with row Heights.\n *\n * @param rows The array of rows which contain the expanded status.\n * @param rowHeight The row height.\n * @param detailRowHeight The detail row height.\n */\n initCache(details: any): void {\n const { rows, rowHeight, detailRowHeight, externalVirtual, rowCount, rowIndexes, rowExpansions } = details;\n const isFn = typeof rowHeight === 'function';\n const isDetailFn = typeof detailRowHeight === 'function';\n\n if (!isFn && isNaN(rowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n // Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.\n if (!isDetailFn && isNaN(detailRowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n const n = externalVirtual ? rowCount : rows.length;\n this.treeArray = new Array(n);\n\n for (let i = 0; i < n; ++i) {\n this.treeArray[i] = 0;\n }\n\n for (let i = 0; i < n; ++i) {\n const row = rows[i];\n let currentRowHeight = rowHeight;\n if (isFn) {\n currentRowHeight = rowHeight(row);\n }\n\n // Add the detail row height to the already expanded rows.\n // This is useful for the table that goes through a filter or sort.\n const expanded = rowExpansions.has(row);\n if (row && expanded) {\n if (isDetailFn) {\n const index = rowIndexes.get(row);\n currentRowHeight += detailRowHeight(row, index);\n } else {\n currentRowHeight += detailRowHeight;\n }\n }\n\n this.update(i, currentRowHeight);\n }\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port. Below handles edge cases.\n */\n getRowIndex(scrollY: number): number {\n if (scrollY === 0) return 0;\n return this.calcRowIndex(scrollY);\n }\n\n /**\n * When a row is expanded or rowHeight is changed, update the height. This can\n * be utilized in future when Angular Data table supports dynamic row heights.\n */\n update(atRowIndex: number, byRowHeight: number): void {\n if (!this.treeArray.length) {\n throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:\n Row Height cache not initialized.`);\n }\n\n const n = this.treeArray.length;\n atRowIndex |= 0;\n\n while (atRowIndex < n) {\n this.treeArray[atRowIndex] += byRowHeight;\n atRowIndex |= atRowIndex + 1;\n }\n }\n\n /**\n * Range Sum query from 1 to the rowIndex\n */\n query(atIndex: number): number {\n if (!this.treeArray.length) {\n throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);\n }\n\n let sum = 0;\n atIndex |= 0;\n\n while (atIndex >= 0) {\n sum += this.treeArray[atIndex];\n atIndex = (atIndex & (atIndex + 1)) - 1;\n }\n\n return sum;\n }\n\n /**\n * Find the total height between 2 row indexes\n */\n queryBetween(atIndexA: number, atIndexB: number): number {\n return this.query(atIndexB) - this.query(atIndexA - 1);\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port.\n */\n private calcRowIndex(sum: number): number {\n if (!this.treeArray.length) return 0;\n\n let pos = -1;\n const dataLength = this.treeArray.length;\n\n // Get the highest bit for the block size.\n const highestBit = Math.pow(2, dataLength.toString(2).length - 1);\n\n for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {\n const nextPos = pos + blockSize;\n if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {\n sum -= this.treeArray[nextPos];\n pos = nextPos;\n }\n }\n\n return pos + 1;\n }\n}\n","import { camelCase } from './camel-case';\n\nconst cache = {};\nconst testStyle = typeof document !== 'undefined' ? document.createElement('div').style : undefined;\n\n// Get Prefix\n// http://davidwalsh.name/vendor-prefix\nconst prefix = (function () {\n const styles = typeof window !== 'undefined' ? window.getComputedStyle(document.documentElement, '') : undefined;\n const match =\n typeof styles !== 'undefined'\n ? Array.prototype.slice\n .call(styles)\n .join('')\n .match(/-(moz|webkit|ms)-/)\n : null;\n const pre = match !== null ? match[1] : undefined;\n // tslint:disable-next-line: tsr-detect-non-literal-regexp\n const dom = typeof pre !== 'undefined' ? 'WebKit|Moz|MS|O'.match(new RegExp('(' + pre + ')', 'i'))[1] : undefined;\n\n return dom\n ? {\n dom,\n lowercase: pre,\n css: `-${pre}-`,\n js: pre[0].toUpperCase() + pre.substr(1)\n }\n : undefined;\n})();\n\nexport function getVendorPrefixedName(property: string) {\n const name = camelCase(property);\n\n if (!cache[name]) {\n if (prefix !== undefined && testStyle[prefix.css + property] !== undefined) {\n cache[name] = prefix.css + property;\n } else if (testStyle[property] !== undefined) {\n cache[name] = property;\n }\n }\n\n return cache[name];\n}\n","import { getVendorPrefixedName } from './prefixes';\nimport { camelCase } from './camel-case';\n\n// browser detection and prefixing tools\nconst transform = typeof window !== 'undefined' ? getVendorPrefixedName('transform') : undefined;\nconst backfaceVisibility = typeof window !== 'undefined' ? getVendorPrefixedName('backfaceVisibility') : undefined;\nconst hasCSSTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('transform') : undefined;\nconst hasCSS3DTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('perspective') : undefined;\nconst ua = typeof window !== 'undefined' ? window.navigator.userAgent : 'Chrome';\nconst isSafari = /Safari\\//.test(ua) && !/Chrome\\//.test(ua);\n\nexport function translateXY(styles: any, x: number, y: number) {\n if (typeof transform !== 'undefined' && hasCSSTransforms) {\n if (!isSafari && hasCSS3DTransforms) {\n styles[transform] = `translate3d(${x}px, ${y}px, 0)`;\n styles[backfaceVisibility] = 'hidden';\n } else {\n styles[camelCase(transform)] = `translate(${x}px, ${y}px)`;\n }\n } else {\n styles.top = `${y}px`;\n styles.left = `${x}px`;\n }\n}\n","import {\n Component,\n Output,\n EventEmitter,\n Input,\n HostBinding,\n ChangeDetectorRef,\n ViewChild,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { ScrollerComponent } from './scroller.component';\nimport { SelectionType } from '../../types/selection.type';\nimport { columnsByPin, columnGroupWidths } from '../../utils/column';\nimport { RowHeightCache } from '../../utils/row-height-cache';\nimport { translateXY } from '../../utils/translate';\n\n@Component({\n selector: 'datatable-body',\n template: `\n <datatable-progress *ngIf=\"loadingIndicator\"> </datatable-progress>\n <datatable-selection\n #selector\n [selected]=\"selected\"\n [rows]=\"rows\"\n [selectCheck]=\"selectCheck\"\n [selectEnabled]=\"selectEnabled\"\n [selectionType]=\"selectionType\"\n [rowIdentity]=\"rowIdentity\"\n (select)=\"select.emit($event)\"\n (activate)=\"activate.emit($event)\"\n >\n <datatable-scroller\n *ngIf=\"rows?.length\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [scrollHeight]=\"scrollHeight\"\n [scrollWidth]=\"columnGroupWidths?.total\"\n (scroll)=\"onBodyScroll($event)\"\n >\n <datatable-summary-row\n *ngIf=\"summaryRow && summaryPosition === 'top'\"\n [rowHeight]=\"summaryHeight\"\n [offsetX]=\"offsetX\"\n [innerWidth]=\"innerWidth\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n >\n </datatable-summary-row>\n <datatable-row-wrapper\n [groupedRows]=\"groupedRows\"\n *ngFor=\"let group of temp; let i = index; trackBy: rowTrackingFn\"\n [innerWidth]=\"innerWidth\"\n [ngStyle]=\"getRowsStyles(group)\"\n [rowDetail]=\"rowDetail\"\n [groupHeader]=\"groupHeader\"\n [offsetX]=\"offsetX\"\n [detailRowHeight]=\"getDetailRowHeight(group && group[i], i)\"\n [row]=\"group\"\n [expanded]=\"getRowExpanded(group)\"\n [rowIndex]=\"getRowIndex(group && group[i])\"\n (rowContextmenu)=\"rowContextmenu.emit($event)\"\n >\n <datatable-body-row\n role=\"row\"\n *ngIf=\"!groupedRows; else groupedRowsTemplate\"\n tabindex=\"-1\"\n [isSelected]=\"selector.getRowSelected(group)\"\n [innerWidth]=\"innerWidth\"\n [offsetX]=\"offsetX\"\n [columns]=\"columns\"\n [rowHeight]=\"getRowHeight(group)\"\n [row]=\"group\"\n [rowIndex]=\"getRowIndex(group)\"\n [expanded]=\"getRowExpanded(group)\"\n [rowClass]=\"rowClass\"\n [displayCheck]=\"displayCheck\"\n [treeStatus]=\"group && group.treeStatus\"\n (treeAction)=\"onTreeAction(group)\"\n (activate)=\"selector.onActivate($event, indexes.first + i)\"\n >\n </datatable-body-row>\n <ng-template #groupedRowsTemplate>\n <datatable-body-row\n role=\"row\"\n *ngFor=\"let row of group.value; let i = index; trackBy: rowTrackingFn\"\n tabindex=\"-1\"\n [isSelected]=\"selector.getRowSelected(row)\"\n [innerWidth]=\"innerWidth\"\n [offsetX]=\"offsetX\"\n [columns]=\"columns\"\n [rowHeight]=\"getRowHeight(row)\"\n [row]=\"row\"\n [group]=\"group.value\"\n [rowIndex]=\"getRowIndex(row)\"\n [expanded]=\"getRowExpanded(row)\"\n [rowClass]=\"rowClass\"\n (activate)=\"selector.onActivate($event, i)\"\n >\n </datatable-body-row>\n </ng-template>\n </datatable-row-wrapper>\n <datatable-summary-row\n role=\"row\"\n *ngIf=\"summaryRow && summaryPosition === 'bottom'\"\n [ngStyle]=\"getBottomSummaryRowStyles()\"\n [rowHeight]=\"summaryHeight\"\n [offsetX]=\"offsetX\"\n [innerWidth]=\"innerWidth\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n >\n </datatable-summary-row>\n </datatable-scroller>\n <div class=\"empty-row\" *ngIf=\"!rows?.length && !loadingIndicator\" [innerHTML]=\"emptyMessage\"></div>\n </datatable-selection>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-body'\n }\n})\nexport class DataTableBodyComponent implements OnInit, OnDestroy {\n @Input() scrollbarV: boolean;\n @Input() scrollbarH: boolean;\n @Input() loadingIndicator: boolean;\n @Input() externalPaging: boolean;\n @Input() rowHeight: number | 'auto' | ((row?: any) => number);\n @Input() offsetX: number;\n @Input() emptyMessage: string;\n @Input() selectionType: SelectionType;\n @Input() selected: any[] = [];\n @Input() rowIdentity: any;\n @Input() rowDetail: any;\n @Input() groupHeader: any;\n @Input() selectCheck: any;\n @Input() displayCheck: any;\n @Input() trackByProp: string;\n @Input() rowClass: any;\n @Input() groupedRows: any;\n @Input() groupExpansionDefault: boolean;\n @Input() innerWidth: number;\n @Input() groupRowsBy: string;\n @Input() virtualization: boolean;\n @Input() summaryRow: boolean;\n @Input() summaryPosition: string;\n @Input() summaryHeight: number;\n\n @Input() set pageSize(val: number) {\n this._pageSize = val;\n this.recalcLayout();\n }\n\n get pageSize(): number {\n return this._pageSize;\n }\n\n @Input() set rows(val: any[]) {\n this._rows = val;\n this.recalcLayout();\n }\n\n get rows(): any[] {\n return this._rows;\n }\n\n @Input() set columns(val: any[]) {\n this._columns = val;\n const colsByPin = columnsByPin(val);\n this.columnGroupWidths = columnGroupWidths(colsByPin, val);\n }\n\n get columns(): any[] {\n return this._columns;\n }\n\n @Input() set offset(val: number) {\n this._offset = val;\n if (!this.scrollbarV || (this.scrollbarV && !this.virtualization)) this.recalcLayout();\n }\n\n get offset(): number {\n return this._offset;\n }\n\n @Input() set rowCount(val: number) {\n this._rowCount = val;\n this.recalcLayout();\n }\n\n get rowCount(): number {\n return this._rowCount;\n }\n\n @HostBinding('style.width')\n get bodyWidth(): string {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n } else {\n return '100%';\n }\n }\n\n @Input()\n @HostBinding('style.height')\n set bodyHeight(val) {\n if (this.scrollbarV) {\n this._bodyHeight = val + 'px';\n } else {\n this._bodyHeight = 'auto';\n }\n\n this.recalcLayout();\n }\n\n get bodyHeight() {\n return this._bodyHeight;\n }\n\n @Output() scroll: EventEmitter<any> = new EventEmitter();\n @Output() page: EventEmitter<any> = new EventEmitter();\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n @Output() detailToggle: EventEmitter<any> = new EventEmitter();\n @Output() rowContextmenu = new EventEmitter<{ event: MouseEvent; row: any }>(false);\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(ScrollerComponent) scroller: ScrollerComponent;\n\n /**\n * Returns if selection is enabled.\n */\n get selectEnabled(): boolean {\n return !!this.selectionType;\n }\n\n /**\n * Property that would calculate the height of scroll bar\n * based on the row heights cache for virtual scroll and virtualization. Other scenarios\n * calculate scroll height automatically (as height will be undefined).\n */\n get scrollHeight(): number | undefined {\n if (this.scrollbarV && this.virtualization && this.rowCount) {\n return this.rowHeightsCache.query(this.rowCount - 1);\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n\n rowHeightsCache: RowHeightCache = new RowHeightCache();\n temp: any[] = [];\n offsetY = 0;\n indexes: any = {};\n columnGroupWidths: any;\n columnGroupWidthsWithoutGroup: any;\n rowTrackingFn: any;\n listener: any;\n rowIndexes: any = new WeakMap<any, string>();\n rowExpansions: any[] = [];\n\n _rows: any[];\n _bodyHeight: any;\n _columns: any[];\n _rowCount: number;\n _offset: number;\n _pageSize: number;\n\n /**\n * Creates an instance of DataTableBodyComponent.\n */\n constructor(private cd: ChangeDetectorRef) {\n // declare fn here so we can get access to the `this` property\n this.rowTrackingFn = (index: number, row: any): any => {\n const idx = this.getRowIndex(row);\n if (this.trackByProp) {\n return row[this.trackByProp];\n } else {\n return idx;\n }\n };\n }\n\n /**\n * Called after the constructor, initializing input properties\n */\n ngOnInit(): void {\n if (this.rowDetail) {\n this.listener = this.rowDetail.toggle.subscribe(({ type, value }: { type: string; value: any }) => {\n if (type === 'row') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n\n if (this.groupHeader) {\n this.listener = this.groupHeader.toggle.subscribe(({ type, value }: { type: string; value: any }) => {\n if (type === 'group') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n }\n\n /**\n * Called once, before the instance is destroyed.\n */\n ngOnDestroy(): void {\n if (this.rowDetail || this.groupHeader) {\n this.listener.unsubscribe();\n }\n }\n\n /**\n * Updates the Y offset given a new offset.\n */\n updateOffsetY(offset?: number): void {\n // scroller is missing on empty table\n if (!this.scroller) {\n return;\n }\n\n if (this.scrollbarV && this.virtualization && offset) {\n // First get the row Index that we need to move to.\n const rowIndex = this.pageSize * offset;\n offset = this.rowHeightsCache.query(rowIndex - 1);\n } else if (this.scrollbarV && !this.virtualization) {\n offset = 0;\n }\n\n this.scroller.setOffset(offset || 0);\n }\n\n /**\n * Body was scrolled, this is mainly useful for\n * when a user is server-side pagination via virtual scroll.\n */\n onBodyScroll(event: any): void {\n const scrollYPos: number = event.scrollYPos;\n const scrollXPos: number = event.scrollXPos;\n\n // if scroll change, trigger update\n // this is mainly used for header cell positions\n if (this.offsetY !== scrollYPos || this.offsetX !== scrollXPos) {\n this.scroll.emit({\n offsetY: scrollYPos,\n offsetX: scrollXPos\n });\n }\n\n this.offsetY = scrollYPos;\n this.offsetX = scrollXPos;\n\n this.updateIndexes();\n this.updatePage(event.direction);\n this.updateRows();\n }\n\n /**\n * Updates the page given a direction.\n */\n updatePage(direction: string): void {\n let offset = this.indexes.first / this.pageSize;\n\n if (direction === 'up') {\n offset = Math.ceil(offset);\n } else if (direction === 'down') {\n offset = Math.floor(offset);\n }\n\n if (direction !== undefined && !isNaN(offset)) {\n this.page.emit({ offset });\n }\n }\n\n /**\n * Updates the rows in the view port\n */\n updateRows(): void {\n const { first, last } = this.indexes;\n let rowIndex = first;\n let idx = 0;\n const temp: any[] = [];\n\n // if grouprowsby has been specified treat row paging\n // parameters as group paging parameters ie if limit 10 has been\n // specified treat it as 10 groups rather than 10 rows\n if (this.groupedRows) {\n let maxRowsPerGroup = 3;\n // if there is only one group set the maximum number of\n // rows per group the same as the total number of rows\n if (this.groupedRows.length === 1) {\n maxRowsPerGroup = this.groupedRows[0].value.length;\n }\n\n while (rowIndex < last && rowIndex < this.groupedRows.length) {\n // Add the groups into this page\n const group = this.groupedRows[rowIndex];\n this.rowIndexes.set(group, rowIndex);\n\n if (group.value) {\n // add indexes for each group item\n group.value.forEach((g: any, i: number) => {\n const _idx = `${rowIndex}-${i}`;\n this.rowIndexes.set(g, _idx);\n });\n }\n temp[idx] = group;\n idx++;\n\n // Group index in this context\n rowIndex++;\n }\n } else {\n while (rowIndex < last && rowIndex < this.rowCount) {\n const row = this.rows[rowIndex];\n\n if (row) {\n // add indexes for each row\n this.rowIndexes.set(row, rowIndex);\n temp[idx] = row;\n }\n\n idx++;\n rowIndex++;\n }\n }\n\n this.temp = temp;\n }\n\n /**\n * Get the row height\n */\n getRowHeight(row: any): number {\n // if its a function return it\n if (typeof this.rowHeight === 'function') {\n return this.rowHeight(row);\n }\n\n return this.rowHeight as number;\n }\n\n /**\n * @param group the group with all rows\n */\n getGroupHeight(group: any): number {\n let rowHeight = 0;\n\n if (group.value) {\n for (let index = 0; index < group.value.length; index++) {\n rowHeight += this.getRowAndDetailHeight(group.value[index]);\n }\n }\n\n return rowHeight;\n }\n\n /**\n * Calculate row height based on the expanded state of the row.\n */\n getRowAndDetailHeight(row: any): number {\n let rowHeight = this.getRowHeight(row);\n const expanded = this.getRowExpanded(row);\n\n // Adding detail row height if its expanded.\n if (expanded) {\n rowHeight += this.getDetailRowHeight(row);\n }\n\n return rowHeight;\n }\n\n /**\n * Get the height of the detail row.\n */\n getDetailRowHeight = (row?: any, index?: any): number => {\n if (!this.rowDetail) {\n return 0;\n }\n const rowHeight = this.rowDetail.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight(row, index) : (rowHeight as number);\n };\n\n /**\n * Calculates the styles for the row so that the rows can be moved in 2D space\n * during virtual scroll inside the DOM. In the below case the Y position is\n * manipulated. As an example, if the height of row 0 is 30 px and row 1 is\n * 100 px then following styles are generated:\n *\n * transform: translate3d(0px, 0px, 0px); -> row0\n * transform: translate3d(0px, 30px, 0px); -> row1\n * transform: translate3d(0px, 130px, 0px); -> row2\n *\n * Row heights have to be calculated based on the row heights cache as we wont\n * be able to determine which row is of what height before hand. In the above\n * case the positionY of the translate3d for row2 would be the sum of all the\n * heights of the rows before it (i.e. row0 and row1).\n *\n * @param rows the row that needs to be placed in the 2D space.\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getRowsStyles(rows: any): any {\n const styles: any = {};\n\n // only add styles for the group if there is a group\n if (this.groupedRows) {\n styles.width = this.columnGroupWidths.total;\n }\n\n if (this.scrollbarV && this.virtualization) {\n let idx = 0;\n\n if (this.groupedRows) {\n // Get the latest row rowindex in a group\n const row = rows[rows.length - 1];\n idx = row ? this.getRowIndex(row) : 0;\n } else {\n idx = this.getRowIndex(rows);\n }\n\n // const pos = idx * rowHeight;\n // The position of this row would be the sum of all row heights\n // until the previous row position.\n const pos = this.rowHeightsCache.query(idx - 1);\n\n translateXY(styles, 0, pos);\n }\n\n return styles;\n }\n\n /**\n * Calculate bottom summary row offset for scrollbar mode.\n * For more information about cache and offset calculation\n * see description for `getRowsStyles` method\n *\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getBottomSummaryRowStyles(): any {\n if (!this.scrollbarV || !this.rows || !this.rows.length) {\n return null;\n }\n\n const styles = { position: 'absolute' };\n const pos = this.rowHeightsCache.query(this.rows.length - 1);\n\n translateXY(styles, 0, pos);\n\n return styles;\n }\n\n /**\n * Hides the loading indicator\n */\n hideIndicator(): void {\n setTimeout(() => (this.loadingIndicator = false), 500);\n }\n\n /**\n * Updates the index of the rows in the viewport\n */\n updateIndexes(): void {\n let first = 0;\n let last = 0;\n\n if (this.scrollbarV) {\n if (this.virtualization) {\n // Calculation of the first and last indexes will be based on where the\n // scrollY position would be at. The last index would be the one\n // that shows up inside the view port the last.\n const height = parseInt(this.bodyHeight, 0);\n first = this.rowHeightsCache.getRowIndex(this.offsetY);\n last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;\n } else {\n // If virtual rows are not needed\n // We render all in one go\n first = 0;\n last = this.rowCount;\n }\n } else {\n // The server is handling paging and will pass an array that begins with the\n // element at a specified offset. first should always be 0 with external paging.\n if (!this.externalPaging) {\n first = Math.max(this.offset * this.pageSize, 0);\n }\n last = Math.min(first + this.pageSize, this.rowCount);\n }\n\n this.indexes = { first, last };\n }\n\n /**\n * Refreshes the full Row Height cache. Should be used\n * when the entire row array state has changed.\n */\n refreshRowHeightCache(): void {\n if (!this.scrollbarV || (this.scrollbarV && !this.virtualization)) {\n return;\n }\n\n // clear the previous row height cache if already present.\n // this is useful during sorts, filters where the state of the\n // rows array is changed.\n this.rowHeightsCache.clearCache();\n\n // Initialize the tree only if there are rows inside the tree.\n if (this.rows && this.rows.length) {\n const rowExpansions = new Set();\n for (const row of this.rows) {\n if (this.getRowExpanded(row)) {\n rowExpansions.add(row);\n }\n }\n\n this.rowHeightsCache.initCache({\n rows: this.rows,\n rowHeight: this.rowHeight,\n detailRowHeight: this.getDetailRowHeight,\n externalVirtual: this.scrollbarV && this.externalPaging,\n rowCount: this.rowCount,\n rowIndexes: this.rowIndexes,\n rowExpansions\n });\n }\n }\n\n /**\n * Gets the index for the view port\n */\n getAdjustedViewPortIndex(): number {\n // Capture the row index of the first row that is visible on the viewport.\n // If the scroll bar is just below the row which is highlighted then make that as the\n // first index.\n const viewPortFirstRowIndex = this.indexes.first;\n\n if (this.scrollbarV && this.virtualization) {\n const offsetScroll = this.rowHeightsCache.query(viewPortFirstRowIndex - 1);\n return offsetScroll <= this.offsetY ? viewPortFirstRowIndex - 1 : viewPortFirstRowIndex;\n }\n\n return viewPortFirstRowIndex;\n }\n\n /**\n * Toggle the Expansion of the row i.e. if the row is expanded then it will\n * collapse and vice versa. Note that the expanded status is stored as\n * a part of the row object itself as we have to preserve the expanded row\n * status in case of sorting and filtering of the row set.\n */\n toggleRowExpansion(row: any): void {\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n const rowExpandedIdx = this.getRowExpandedIdx(row, this.rowExpansions);\n const expanded = rowExpandedIdx > -1;\n\n // If the detailRowHeight is auto --> only in case of non-virtualized scroll\n if (this.scrollbarV && this.virtualization) {\n const detailRowHeight = this.getDetailRowHeight(row) * (expanded ? -1 : 1);\n // const idx = this.rowIndexes.get(row) || 0;\n const idx = this.getRowIndex(row);\n this.rowHeightsCache.update(idx, detailRowHeight);\n }\n\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.rowExpansions.splice(rowExpandedIdx, 1);\n } else {\n this.rowExpansions.push(row);\n }\n\n this.detailToggle.emit({\n rows: [row],\n currentIndex: viewPortFirstRowIndex\n });\n }\n\n /**\n * Expand/Collapse all the rows no matter what their state is.\n */\n toggleAllRows(expanded: boolean): void {\n // clear prev expansions\n this.rowExpansions = [];\n\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n\n if (expanded) {\n for (const row of this.rows) {\n this.rowExpansions.push(row);\n }\n }\n\n if (this.scrollbarV) {\n // Refresh the full row heights cache since every row was affected.\n this.recalcLayout();\n }\n\n // Emit all rows that have been expanded.\n this.detailToggle.emit({\n rows: this.rows,\n currentIndex: viewPortFirstRowIndex\n });\n }\n\n /**\n * Recalculates the table\n */\n recalcLayout(): void {\n this.refreshRowHeightCache();\n this.updateIndexes();\n this.updateRows();\n }\n\n /**\n * Tracks the column\n */\n columnTrackingFn(index: number, column: any): any {\n return column.$$id;\n }\n\n /**\n * Gets the row pinning group styles\n */\n stylesByGroup(group: string) {\n const widths = this.columnGroupWidths;\n const offsetX = this.offsetX;\n\n const styles = {\n width: `${widths[group]}px`\n };\n\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = offsetDiff * -1;\n translateXY(styles, offset, 0);\n }\n\n return styles;\n }\n\n /**\n * Returns if the row was expanded and set default row expansion when row expansion is empty\n */\n getRowExpanded(row: any): boolean {\n if (this.rowExpansions.length === 0 && this.groupExpansionDefault) {\n for (const group of this.groupedRows) {\n this.rowExpansions.push(group);\n }\n }\n\n return this.getRowExpandedIdx(row, this.rowExpansions) > -1;\n }\n\n getRowExpandedIdx(row: any, expanded: any[]): number {\n if (!expanded || !expanded.length) return -1;\n\n const rowId = this.rowIdentity(row);\n return expanded.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n\n /**\n * Gets the row index given a row\n */\n getRowIndex(row: any): number {\n return this.rowIndexes.get(row) || 0;\n }\n\n onTreeAction(row: any) {\n this.treeAction.emit({ row });\n }\n}\n","import {\n Component,\n Output,\n EventEmitter,\n Input,\n HostBinding,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n OnDestroy\n} from '@angular/core';\nimport { columnsByPin, columnGroupWidths, columnsByPinArr } from '../../utils/column';\nimport { SortType } from '../../types/sort.type';\nimport { SelectionType } from '../../types/selection.type';\nimport { DataTableColumnDirective } from '../columns/column.directive';\nimport { translateXY } from '../../utils/translate';\n\n@Component({\n selector: 'datatable-header',\n template: `\n <div\n role=\"row\"\n orderable\n (reorder)=\"onColumnReordered($event)\"\n (targetChanged)=\"onTargetChanged($event)\"\n [style.width.px]=\"_columnGroupWidths.total\"\n class=\"datatable-header-inner\"\n >\n <div\n *ngFor=\"let colGroup of _columnsByPin; trackBy: trackByGroups\"\n [class]=\"'datatable-row-' + colGroup.type\"\n [ngStyle]=\"_styleByGroup[colGroup.type]\"\n >\n <datatable-header-cell\n role=\"columnheader\"\n *ngFor=\"let column of colGroup.columns; trackBy: columnTrackingFn\"\n resizeable\n [resizeEnabled]=\"column.resizeable\"\n (resize)=\"onColumnResized($event, column)\"\n long-press\n [pressModel]=\"column\"\n [pressEnabled]=\"reorderable && column.draggable\"\n (longPressStart)=\"onLongPressStart($event)\"\n (longPressEnd)=\"onLongPressEnd($event)\"\n draggable\n [dragX]=\"reorderable && column.draggable && column.dragging\"\n [dragY]=\"false\"\n [dragModel]=\"column\"\n [dragEventTarget]=\"dragEventTarget\"\n [headerHeight]=\"headerHeight\"\n [isTarget]=\"column.isTarget\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [targetMarkerContext]=\"column.targetMarkerContext\"\n [column]=\"column\"\n [sortType]=\"sortType\"\n [sorts]=\"sorts\"\n [selectionType]=\"selectionType\"\n [sortAscendingIcon]=\"sortAscendingIcon\"\n [sortDescendingIcon]=\"sortDescendingIcon\"\n [sortUnsetIcon]=\"sortUnsetIcon\"\n [allRowsSelected]=\"allRowsSelected\"\n (sort)=\"onSort($event)\"\n (select)=\"select.emit($event)\"\n (columnContextmenu)=\"columnContextmenu.emit($event)\"\n >\n </datatable-header-cell>\n </div>\n </div>\n `,\n host: {\n class: 'datatable-header'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableHeaderComponent implements OnDestroy {\n @Input() sortAscendingIcon: any;\n @Input() sortDescendingIcon: any;\n @Input() sortUnsetIcon: any;\n @Input() scrollbarH: boolean;\n @Input() dealsWithGroup: boolean;\n @Input() targetMarkerTemplate: any;\n\n targetMarkerContext: any;\n\n @Input() set innerWidth(val: number) {\n this._innerWidth = val;\n setTimeout(() => {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n this.setStylesByGroup();\n }\n });\n }\n\n get innerWidth(): number {\n return this._innerWidth;\n }\n\n @Input() sorts: any[];\n @Input() sortType: SortType;\n @Input() allRowsSelected: boolean;\n @Input() selectionType: SelectionType;\n @Input() reorderable: boolean;\n\n dragEventTarget: any;\n\n @HostBinding('style.height')\n @Input()\n set headerHeight(val: any) {\n if (val !== 'auto') {\n this._headerHeight = `${val}px`;\n } else {\n this._headerHeight = val;\n }\n }\n\n get headerHeight(): any {\n return this._headerHeight;\n }\n\n @Input() set columns(val: any[]) {\n this._columns = val;\n\n const colsByPin = columnsByPin(val);\n this._columnsByPin = columnsByPinArr(val);\n setTimeout(() => {\n this._columnGroupWidths = columnGroupWidths(colsByPin, val);\n this.setStylesByGroup();\n });\n }\n\n get columns(): any[] {\n return this._columns;\n }\n\n @Input()\n set offsetX(val: number) {\n this._offsetX = val;\n this.setStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n\n @Output() sort: EventEmitter<any> = new EventEmitter();\n @Output() reorder: EventEmitter<any> = new EventEmitter();\n @Output() resize: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n @Output() columnContextmenu = new EventEmitter<{ event: MouseEvent; column: any }>(false);\n\n _columnsByPin: any;\n _columnGroupWidths: any = {\n total: 100\n };\n _innerWidth: number;\n _offsetX: number;\n _columns: any[];\n _headerHeight: string;\n _styleByGroup: { [prop: string]: {} } = {\n left: {},\n center: {},\n right: {}\n };\n\n private destroyed = false;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n onLongPressStart({ event, model }: { event: any; model: any }) {\n model.dragging = true;\n this.dragEventTarget = event;\n }\n\n onLongPressEnd({ event, model }: { event: any; model: any }) {\n this.dragEventTarget = event;\n\n // delay resetting so sort can be\n // prevented if we were dragging\n setTimeout(() => {\n // datatable component creates copies from columns on reorder\n // set dragging to false on new objects\n const column = this._columns.find(c => c.$$id === model.$$id);\n if (column) {\n column.dragging = false;\n }\n }, 5);\n }\n\n @HostBinding('style.width')\n get headerWidth(): string {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n }\n\n return '100%';\n }\n\n trackByGroups(index: number, colGroup: any): any {\n return colGroup.type;\n }\n\n columnTrackingFn(index: number, column: any): any {\n return column.$$id;\n }\n\n onColumnResized(width: number, column: DataTableColumnDirective): void {\n if (width <= column.minWidth) {\n width = column.minWidth;\n } else if (width >= column.maxWidth) {\n width = column.maxWidth;\n }\n\n this.resize.emit({\n column,\n prevValue: column.width,\n newValue: width\n });\n }\n\n onColumnReordered({ prevIndex, newIndex, model }: any): void {\n const column = this.getColumn(newIndex);\n column.isTarget = false;\n column.targetMarkerContext = undefined;\n this.reorder.emit({\n column: model,\n prevValue: prevIndex,\n newValue: newIndex\n });\n }\n\n onTargetChanged({ prevIndex, newIndex, initialIndex }: any): void {\n if (prevIndex || prevIndex === 0) {\n const oldColumn = this.getColumn(prevIndex);\n oldColumn.isTarget = false;\n oldColumn.targetMarkerContext = undefined;\n }\n if (newIndex || newIndex === 0) {\n const newColumn = this.getColumn(newIndex);\n newColumn.isTarget = true;\n\n if (initialIndex !== newIndex) {\n newColumn.targetMarkerContext = {\n class: 'targetMarker '.concat(initialIndex > newIndex ? 'dragFromRight' : 'dragFromLeft')\n };\n }\n }\n }\n\n getColumn(index: number): any {\n const leftColumnCount = this._columnsByPin[0].columns.length;\n if (index < leftColumnCount) {\n return this._columnsByPin[0].columns[index];\n }\n\n const centerColumnCount = this._columnsByPin[1].columns.length;\n if (index < leftColumnCount + centerColumnCount) {\n return this._columnsByPin[1].columns[index - leftColumnCount];\n }\n\n return this._columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];\n }\n\n onSort({ column, prevValue, newValue }: any): void {\n // if we are dragging don't sort!\n if (column.dragging) {\n return;\n }\n\n const sorts = this.calcNewSorts(column, prevValue, newValue);\n this.sort.emit({\n sorts,\n column,\n prevValue,\n newValue\n });\n }\n\n calcNewSorts(column: any, prevValue: number, newValue: number): any[] {\n let idx = 0;\n\n if (!this.sorts) {\n this.sorts = [];\n }\n\n const sorts = this.sorts.map((s, i) => {\n s = { ...s };\n if (s.prop === column.prop) {\n idx = i;\n }\n return s;\n });\n\n if (newValue === undefined) {\n sorts.splice(idx, 1);\n } else if (prevValue) {\n sorts[idx].dir = newValue;\n } else {\n if (this.sortType === SortType.single) {\n sorts.splice(0, this.sorts.length);\n }\n\n sorts.push({ dir: newValue, prop: column.prop });\n }\n\n return sorts;\n }\n\n setStylesByGroup() {\n this._styleByGroup.left = this.calcStylesByGroup('left');\n this._styleByGroup.center = this.calcStylesByGroup('center');\n this._styleByGroup.right = this.calcStylesByGroup('right');\n if (!this.destroyed) {\n this.cd.detectChanges();\n }\n }\n\n calcStylesByGroup(group: string): any {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n\n const styles = {\n width: `${widths[group]}px`\n };\n\n if (group === 'center') {\n translateXY(styles, offsetX * -1, 0);\n } else if (group === 'right') {\n const totalDiff = widths.total - this.innerWidth;\n const offset = totalDiff * -1;\n translateXY(styles, offset, 0);\n }\n\n return styles;\n }\n}\n","/**\n * Throttle a function\n */\nexport function throttle(func: any, wait: number, options?: any) {\n options = options || {};\n let context: any;\n let args: any;\n let result: any;\n let timeout: any = null;\n let previous = 0;\n\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n\n return function (this: any) {\n const now = +new Date();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n}\n\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nexport function throttleable(duration: number, options?: any) {\n return function innerDecorator(target: any, key: PropertyKey, descriptor: PropertyDescriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n\n return this[key];\n }\n };\n };\n}\n","import { columnsByPin, columnsTotalWidth } from './column';\n\n/**\n * Calculates the Total Flex Grow\n */\nexport function getTotalFlexGrow(columns: any[]) {\n let totalFlexGrow = 0;\n\n for (const c of columns) {\n totalFlexGrow += c.flexGrow || 0;\n }\n\n return totalFlexGrow;\n}\n\n/**\n * Adjusts the column widths.\n * Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js\n */\nexport function adjustColumnWidths(allColumns: any, expectedWidth: any) {\n const columnsWidth = columnsTotalWidth(allColumns);\n const totalFlexGrow = getTotalFlexGrow(allColumns);\n const colsByGroup = columnsByPin(allColumns);\n\n if (columnsWidth !== expectedWidth) {\n scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);\n }\n}\n\n/**\n * Resizes columns based on the flexGrow property, while respecting manually set widths\n */\nfunction scaleColumns(colsByGroup: any, maxWidth: any, totalFlexGrow: any) {\n // calculate total width and flexgrow points for coulumns that can be resized\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n if (!column.canAutoResize) {\n maxWidth -= column.width;\n totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;\n } else {\n column.width = 0;\n }\n }\n }\n\n const hasMinWidth = {};\n let remainingWidth = maxWidth;\n\n // resize columns until no width is left to be distributed\n do {\n const widthPerFlexPoint = remainingWidth / totalFlexGrow;\n remainingWidth = 0;\n\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n // if the column can be resize and it hasn't reached its minimum width yet\n if (column.canAutoResize && !hasMinWidth[column.prop]) {\n const newWidth = column.width + column.flexGrow * widthPerFlexPoint;\n if (column.minWidth !== undefined && newWidth < column.minWidth) {\n remainingWidth += newWidth - column.minWidth;\n column.width = column.minWidth;\n hasMinWidth[column.prop] = true;\n } else {\n column.width = newWidth;\n }\n }\n }\n }\n } while (remainingWidth !== 0);\n}\n\n/**\n * Forces the width of the columns to\n * distribute equally but overflowing when necessary\n *\n * Rules:\n *\n * - If combined withs are less than the total width of the grid,\n * proportion the widths given the min / max / normal widths to fill the width.\n *\n * - If the combined widths, exceed the total width of the grid,\n * use the standard widths.\n *\n * - If a column is resized, it should always use that width\n *\n * - The proportional widths should never fall below min size if specified.\n *\n * - If the grid starts off small but then becomes greater than the size ( + / - )\n * the width should use the original width; not the newly proportioned widths.\n */\nexport function forceFillColumnWidths(\n allColumns: any[],\n expectedWidth: number,\n startIdx: number,\n allowBleed: boolean,\n defaultColWidth: number = 300\n) {\n const columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter(c => {\n return c.canAutoResize !== false;\n });\n\n for (const column of columnsToResize) {\n if (!column.$$oldWidth) {\n column.$$oldWidth = column.width;\n }\n }\n\n let additionWidthPerColumn = 0;\n let exceedsWindow = false;\n let contentWidth = getContentWidth(allColumns, defaultColWidth);\n let remainingWidth = expectedWidth - contentWidth;\n const columnsProcessed: any[] = [];\n const remainingWidthLimit = 1; // when to stop\n\n // This loop takes care of the\n do {\n additionWidthPerColumn = remainingWidth / columnsToResize.length;\n exceedsWindow = contentWidth >= expectedWidth;\n\n for (const column of columnsToResize) {\n if (exceedsWindow && allowBleed) {\n column.width = column.$$oldWidth || column.width || defaultColWidth;\n } else {\n const newSize = (column.width || defaultColWidth) + additionWidthPerColumn;\n\n if (column.minWidth && newSize < column.minWidth) {\n column.width = column.minWidth;\n columnsProcessed.push(column);\n } else if (column.maxWidth && newSize > column.maxWidth) {\n column.width = column.maxWidth;\n columnsProcessed.push(column);\n } else {\n column.width = newSize;\n }\n }\n\n column.width = Math.max(0, column.width);\n }\n\n contentWidth = getContentWidth(allColumns);\n remainingWidth = expectedWidth - contentWidth;\n removeProcessedColumns(columnsToResize, columnsProcessed);\n } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);\n}\n\n/**\n * Remove the processed columns from the current active columns.\n */\nfunction removeProcessedColumns(columnsToResize: any[], columnsProcessed: any[]) {\n for (const column of columnsProcessed) {\n const index = columnsToResize.indexOf(column);\n columnsToResize.splice(index, 1);\n }\n}\n\n/**\n * Gets the width of the columns\n */\nfunction getContentWidth(allColumns: any, defaultColWidth: number = 300): number {\n let contentWidth = 0;\n\n for (const column of allColumns) {\n contentWidth += column.width || defaultColWidth;\n }\n\n return contentWidth;\n}\n","export enum SortDirection {\n asc = 'asc',\n desc = 'desc'\n}\n","import { getterForProp } from './column-prop-getters';\nimport { SortType } from '../types/sort.type';\nimport { SortDirection } from '../types/sort-direction.type';\nimport { SortPropDir } from '../types/sort-prop-dir.type';\n/**\n * Gets the next sort direction\n */\nexport function nextSortDir(sortType: SortType, current: SortDirection): SortDirection | undefined {\n if (sortType === SortType.single) {\n if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else {\n return SortDirection.asc;\n }\n } else {\n if (!current) {\n return SortDirection.asc;\n } else if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else if (current === SortDirection.desc) {\n return undefined;\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n}\n\n/**\n * Adapted from fueld-ui on 6/216\n * https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\n */\nexport function orderByComparator(a: any, b: any): number {\n if (a === null || typeof a === 'undefined') a = 0;\n if (b === null || typeof b === 'undefined') b = 0;\n if (a instanceof Date && b instanceof Date) {\n if (a < b) return -1;\n if (a > b) return 1;\n } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {\n // Convert to string in case of a=0 or b=0\n a = String(a);\n b = String(b);\n // Isn't a number so lowercase the string to properly compare\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n } else {\n // Parse strings as numbers to compare properly\n if (parseFloat(a) < parseFloat(b)) return -1;\n if (parseFloat(a) > parseFloat(b)) return 1;\n }\n\n // equal each other\n return 0;\n}\n\n/**\n * creates a shallow copy of the `rows` input and returns the sorted copy. this function\n * does not sort the `rows` argument in place\n */\nexport function sortRows(rows: any[], columns: any[], dirs: SortPropDir[]): any[] {\n if (!rows) return [];\n if (!dirs || !dirs.length || !columns) return [...rows];\n\n /**\n * record the row ordering of results from prior sort operations (if applicable)\n * this is necessary to guarantee stable sorting behavior\n */\n const rowToIndexMap = new Map<any, number>();\n rows.forEach((row, index) => rowToIndexMap.set(row, index));\n\n const temp = [...rows];\n const cols = columns.reduce((obj, col) => {\n if (col.comparator && typeof col.comparator === 'function') {\n obj[col.prop] = col.comparator;\n }\n return obj;\n }, {});\n\n // cache valueGetter and compareFn so that they\n // do not need to be looked-up in the sort function body\n const cachedDirs = dirs.map(dir => {\n const prop = dir.prop;\n return {\n prop,\n dir: dir.dir,\n valueGetter: getterForProp(prop),\n compareFn: cols[prop] || orderByComparator\n };\n });\n\n return temp.sort(function (rowA: any, rowB: any) {\n for (const cachedDir of cachedDirs) {\n // Get property and valuegetters for column to be sorted\n const { prop, valueGetter } = cachedDir;\n // Get A and B cell values from rows based on properties of the columns\n const propA = valueGetter(rowA, prop);\n const propB = valueGetter(rowB, prop);\n\n // Compare function gets five parameters:\n // Two cell values to be compared as propA and propB\n // Two rows corresponding to the cells as rowA and rowB\n // Direction of the sort for this column as SortDirection\n // Compare can be a standard JS comparison function (a,b) => -1|0|1\n // as additional parameters are silently ignored. The whole row and sort\n // direction enable more complex sort logic.\n const comparison =\n cachedDir.dir !== SortDirection.desc\n ? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir)\n : -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir);\n\n // Don't return 0 yet in case of needing to sort by next property\n if (comparison !== 0) return comparison;\n }\n\n if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB))) return 0;\n\n /**\n * all else being equal, preserve original order of the rows (stable sort)\n */\n return rowToIndexMap.get(rowA) < rowToIndexMap.get(rowB) ? -1 : 1;\n });\n}\n","import {\n Component,\n Input,\n Output,\n ElementRef,\n EventEmitter,\n ViewChild,\n HostListener,\n ContentChildren,\n OnInit,\n QueryList,\n AfterViewInit,\n HostBinding,\n ContentChild,\n DoCheck,\n KeyValueDiffers,\n KeyValueDiffer,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n SkipSelf,\n Optional,\n Inject\n} from '@angular/core';\n\nimport { DatatableGroupHeaderDirective } from './body/body-group-header.directive';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { INgxDatatableConfig } from '../ngx-datatable.module';\nimport { groupRowsByParents, optionalGetterForProp } from '../utils/tree';\nimport { TableColumn } from '../types/table-column.type';\nimport { setColumnDefaults, translateTemplates } from '../utils/column-helper';\nimport { ColumnMode } from '../types/column-mode.type';\nimport { SelectionType } from '../types/selection.type';\nimport { SortType } from '../types/sort.type';\nimport { ContextmenuType } from '../types/contextmenu.type';\nimport { DataTableColumnDirective } from './columns/column.directive';\nimport { DatatableRowDetailDirective } from './row-detail/row-detail.directive';\nimport { DatatableFooterDirective } from './footer/footer.directive';\nimport { DataTableBodyComponent } from './body/body.component';\nimport { DataTableHeaderComponent } from './header/header.component';\nimport { ScrollbarHelper } from '../services/scrollbar-helper.service';\nimport { ColumnChangesService } from '../services/column-changes.service';\nimport { DimensionsHelper } from '../services/dimensions-helper.service';\nimport { throttleable } from '../utils/throttle';\nimport { forceFillColumnWidths, adjustColumnWidths } from '../utils/math';\nimport { sortRows } from '../utils/sort';\n\n@Component({\n selector: 'ngx-datatable',\n templateUrl: './datatable.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./datatable.component.scss'],\n host: {\n class: 'ngx-datatable'\n }\n})\nexport class DatatableComponent implements OnInit, DoCheck, AfterViewInit {\n /**\n * Template for the target marker of drag target columns.\n */\n @Input() targetMarkerTemplate: any;\n\n /**\n * Rows that are displayed in the table.\n */\n @Input() set rows(val: any) {\n this._rows = val;\n\n if (val) {\n this._internalRows = [...val];\n }\n\n // auto sort on new updates\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(\n this._internalRows,\n optionalGetterForProp(this.treeFromRelation),\n optionalGetterForProp(this.treeToRelation)\n );\n\n // recalculate sizes/etc\n this.recalculate();\n\n if (this._rows && this._groupRowsBy) {\n // If a column has been specified in _groupRowsBy created a new array with the data grouped by that row\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n\n this.cd.markForCheck();\n }\n\n /**\n * Gets the rows.\n */\n get rows(): any {\n return this._rows;\n }\n\n /**\n * This attribute allows the user to set the name of the column to group the data with\n */\n @Input() set groupRowsBy(val: string) {\n if (val) {\n this._groupRowsBy = val;\n if (this._rows && this._groupRowsBy) {\n // cretes a new array with the data grouped\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n }\n }\n\n get groupRowsBy() {\n return this._groupRowsBy;\n }\n\n /**\n * This attribute allows the user to set a grouped array in the following format:\n * [\n * {groupid=1} [\n * {id=1 name=\"test1\"},\n * {id=2 name=\"test2\"},\n * {id=3 name=\"test3\"}\n * ]},\n * {groupid=2>[\n * {id=4 name=\"test4\"},\n * {id=5 name=\"test5\"},\n * {id=6 name=\"test6\"}\n * ]}\n * ]\n */\n @Input() groupedRows: any[];\n\n /**\n * Columns to be displayed.\n */\n @Input() set columns(val: TableColumn[]) {\n if (val) {\n this._internalColumns = [...val];\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n }\n\n this._columns = val;\n }\n\n /**\n * Get the columns.\n */\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n /**\n * List of row objects that should be\n * represented as selected in the grid.\n * Default value: `[]`\n */\n @Input() selected: any[] = [];\n\n /**\n * Enable vertical scrollbars\n */\n @Input() scrollbarV: boolean = false;\n\n /**\n * Enable horz scrollbars\n */\n @Input() scrollbarH: boolean = false;\n\n /**\n * The row height; which is necessary\n * to calculate the height for the lazy rendering.\n */\n @Input() rowHeight: number | 'auto' | ((row?: any) => number) = 30;\n\n /**\n * Type of column width distribution formula.\n * Example: flex, force, standard\n */\n @Input() columnMode: ColumnMode | keyof typeof ColumnMode = ColumnMode.standard;\n\n /**\n * The minimum header height in pixels.\n * Pass a falsey for no header\n */\n @Input() headerHeight: number = 30;\n\n /**\n * The minimum footer height in pixels.\n * Pass falsey for no footer\n */\n @Input() footerHeight: number = 0;\n\n /**\n * If the table should use external paging\n * otherwise its assumed that all data is preloaded.\n */\n @Input() externalPaging: boolean = false;\n\n /**\n * If the table should use external sorting or\n * the built-in basic sorting.\n */\n @Input() externalSorting: boolean = false;\n\n /**\n * The page size to be shown.\n * Default value: `undefined`\n */\n @Input() set limit(val: number | undefined) {\n this._limit = val;\n\n // recalculate sizes/etc\n this.recalculate();\n }\n\n /**\n * Gets the limit.\n */\n get limit(): number | undefined {\n return this._limit;\n }\n\n /**\n * The total count of all rows.\n * Default value: `0`\n */\n @Input() set count(val: number) {\n this._count = val;\n\n // recalculate sizes/etc\n this.recalculate();\n }\n\n /**\n * Gets the count.\n */\n get count(): number {\n return this._count;\n }\n\n /**\n * The current offset ( page - 1 ) shown.\n * Default value: `0`\n */\n @Input() set offset(val: number) {\n this._offset = val;\n }\n get offset(): number {\n return Math.max(Math.min(this._offset, Math.ceil(this.rowCount / this.pageSize) - 1), 0);\n }\n\n /**\n * Show the linear loading bar.\n * Default value: `false`\n */\n @Input() loadingIndicator: boolean = false;\n\n /**\n * Type of row selection. Options are:\n *\n * - `single`\n * - `multi`\n * - `checkbox`\n * - `multiClick`\n * - `cell`\n *\n * For no selection pass a `falsey`.\n * Default value: `undefined`\n */\n @Input() selectionType: SelectionType;\n\n /**\n * Enable/Disable ability to re-order columns\n * by dragging them.\n */\n @Input() reorderable: boolean = true;\n\n /**\n * Swap columns on re-order columns or\n * move them.\n */\n @Input() swapColumns: boolean = true;\n\n /**\n * The type of sorting\n */\n @Input() sortType: SortType = SortType.single;\n\n /**\n * Array of sorted columns by property and type.\n * Default value: `[]`\n */\n @Input() sorts: any[] = [];\n\n /**\n * Css class overrides\n */\n @Input() cssClasses: any = {\n sortAscending: 'datatable-icon-up',\n sortDescending: 'datatable-icon-down',\n sortUnset: 'datatable-icon-sort-unset',\n pagerLeftArrow: 'datatable-icon-left',\n pagerRightArrow: 'datatable-icon-right',\n pagerPrevious: 'datatable-icon-prev',\n pagerNext: 'datatable-icon-skip'\n };\n\n /**\n * Message overrides for localization\n *\n * emptyMessage [default] = 'No data to display'\n * totalMessage [default] = 'total'\n * selectedMessage [default] = 'selected'\n */\n @Input() messages: any = {\n // Message to show when array is presented\n // but contains no values\n emptyMessage: 'No data to display',\n\n // Footer total message\n totalMessage: 'total',\n\n // Footer selected message\n selectedMessage: 'selected'\n };\n\n /**\n * Row specific classes.\n * Similar implementation to ngClass.\n *\n * [rowClass]=\"'first second'\"\n * [rowClass]=\"{ 'first': true, 'second': true, 'third': false }\"\n */\n @Input() rowClass: any;\n\n /**\n * A boolean/function you can use to check whether you want\n * to select a particular row based on a criteria. Example:\n *\n * (selection) => {\n * return selection !== 'Ethel Price';\n * }\n */\n @Input() selectCheck: any;\n\n /**\n * A function you can use to check whether you want\n * to show the checkbox for a particular row based on a criteria. Example:\n *\n * (row, column, value) => {\n * return row.name !== 'Ethel Price';\n * }\n */\n @Input() displayCheck: (row: any, column?: any, value?: any) => boolean;\n\n /**\n * A boolean you can use to set the detault behaviour of rows and groups\n * whether they will start expanded or not. If ommited the default is NOT expanded.\n *\n */\n @Input() groupExpansionDefault: boolean = false;\n\n /**\n * Property to which you can use for custom tracking of rows.\n * Example: 'name'\n */\n @Input() trackByProp: string;\n\n /**\n * Property to which you can use for determining select all\n * rows on current page or not.\n *\n * @memberOf DatatableComponent\n */\n @Input() selectAllRowsOnPage = false;\n\n /**\n * A flag for row virtualization on / off\n */\n @Input() virtualization: boolean = true;\n\n /**\n * Tree from relation\n */\n @Input() treeFromRelation: string;\n\n /**\n * Tree to relation\n */\n @Input() treeToRelation: string;\n\n /**\n * A flag for switching summary row on / off\n */\n @Input() summaryRow: boolean = false;\n\n /**\n * A height of summary row\n */\n @Input() summaryHeight: number = 30;\n\n /**\n * A property holds a summary row position: top/bottom\n */\n @Input() summaryPosition: string = 'top';\n\n /**\n * Body was scrolled typically in a `scrollbarV:true` scenario.\n */\n @Output() scroll: EventEmitter<any> = new EventEmitter();\n\n /**\n * A cell or row was focused via keyboard or mouse click.\n */\n @Output() activate: EventEmitter<any> = new EventEmitter();\n\n /**\n * A cell or row was selected.\n */\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n /**\n * Column sort was invoked.\n */\n @Output() sort: EventEmitter<any> = new EventEmitter();\n\n /**\n * The table was paged either triggered by the pager or the body scroll.\n */\n @Output() page: EventEmitter<any> = new EventEmitter();\n\n /**\n * Columns were re-ordered.\n */\n @Output() reorder: EventEmitter<any> = new EventEmitter();\n\n /**\n * Column was resized.\n */\n @Output() resize: EventEmitter<any> = new EventEmitter();\n\n /**\n * The context menu was invoked on the table.\n * type indicates whether the header or the body was clicked.\n * content contains either the column or the row that was clicked.\n */\n @Output() tableContextmenu = new EventEmitter<{ event: MouseEvent; type: ContextmenuType; content: any }>(false);\n\n /**\n * A row was expanded ot collapsed for tree\n */\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n /**\n * CSS class applied if the header height if fixed height.\n */\n @HostBinding('class.fixed-header')\n get isFixedHeader(): boolean {\n const headerHeight: number | string = this.headerHeight;\n return typeof headerHeight === 'string' ? <string>headerHeight !== 'auto' : true;\n }\n\n /**\n * CSS class applied to the root element if\n * the row heights are fixed heights.\n */\n @HostBinding('class.fixed-row')\n get isFixedRow(): boolean {\n return this.rowHeight !== 'auto';\n }\n\n /**\n * CSS class applied to root element if\n * vertical scrolling is enabled.\n */\n @HostBinding('class.scroll-vertical')\n get isVertScroll(): boolean {\n return this.scrollbarV;\n }\n\n /**\n * CSS class applied to root element if\n * virtualization is enabled.\n */\n @HostBinding('class.virtualized')\n get isVirtualized(): boolean {\n return this.virtualization;\n }\n\n /**\n * CSS class applied to the root element\n * if the horziontal scrolling is enabled.\n */\n @HostBinding('class.scroll-horz')\n get isHorScroll(): boolean {\n return this.scrollbarH;\n }\n\n /**\n * CSS class applied to root element is selectable.\n */\n @HostBinding('class.selectable')\n get isSelectable(): boolean {\n return this.selectionType !== undefined;\n }\n\n /**\n * CSS class applied to root is checkbox selection.\n */\n @HostBinding('class.checkbox-selection')\n get isCheckboxSelection(): boolean {\n return this.selectionType === SelectionType.checkbox;\n }\n\n /**\n * CSS class applied to root if cell selection.\n */\n @HostBinding('class.cell-selection')\n get isCellSelection(): boolean {\n return this.selectionType === SelectionType.cell;\n }\n\n /**\n * CSS class applied to root if single select.\n */\n @HostBinding('class.single-selection')\n get isSingleSelection(): boolean {\n return this.selectionType === SelectionType.single;\n }\n\n /**\n * CSS class added to root element if mulit select\n */\n @HostBinding('class.multi-selection')\n get isMultiSelection(): boolean {\n return this.selectionType === SelectionType.multi;\n }\n\n /**\n * CSS class added to root element if mulit click select\n */\n @HostBinding('class.multi-click-selection')\n get isMultiClickSelection(): boolean {\n return this.selectionType === SelectionType.multiClick;\n }\n\n /**\n * Column templates gathered from `ContentChildren`\n * if described in your markup.\n */\n @ContentChildren(DataTableColumnDirective)\n set columnTemplates(val: QueryList<DataTableColumnDirective>) {\n this._columnTemplates = val;\n this.translateColumns(val);\n }\n\n /**\n * Returns the column templates.\n */\n get columnTemplates(): QueryList<DataTableColumnDirective> {\n return this._columnTemplates;\n }\n\n /**\n * Row Detail templates gathered from the ContentChild\n */\n @ContentChild(DatatableRowDetailDirective)\n rowDetail: DatatableRowDetailDirective;\n\n /**\n * Group Header templates gathered from the ContentChild\n */\n @ContentChild(DatatableGroupHeaderDirective)\n groupHeader: DatatableGroupHeaderDirective;\n\n /**\n * Footer template gathered from the ContentChild\n */\n @ContentChild(DatatableFooterDirective)\n footer: DatatableFooterDirective;\n\n /**\n * Reference to the body component for manually\n * invoking functions on the body.\n */\n @ViewChild(DataTableBodyComponent)\n bodyComponent: DataTableBodyComponent;\n\n /**\n * Reference to the header component for manually\n * invoking functions on the header.\n *\n * @memberOf DatatableComponent\n */\n @ViewChild(DataTableHeaderComponent)\n headerComponent: DataTableHeaderComponent;\n\n /**\n * Returns if all rows are selected.\n */\n get allRowsSelected(): boolean {\n let allRowsSelected = this.rows && this.selected && this.selected.length === this.rows.length;\n\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n const indexes = this.bodyComponent.indexes;\n const rowsOnPage = indexes.last - indexes.first;\n allRowsSelected = this.selected.length === rowsOnPage;\n }\n\n return this.selected && this.rows && this.rows.length !== 0 && allRowsSelected;\n }\n\n element: HTMLElement;\n _innerWidth: number;\n pageSize: number;\n bodyHeight: number;\n rowCount: number = 0;\n rowDiffer: KeyValueDiffer<{}, {}>;\n\n _offsetX = new BehaviorSubject(0);\n _limit: number | undefined;\n _count: number = 0;\n _offset: number = 0;\n _rows: any[];\n _groupRowsBy: string;\n _internalRows: any[];\n _internalColumns: TableColumn[];\n _columns: TableColumn[];\n _columnTemplates: QueryList<DataTableColumnDirective>;\n _subscriptions: Subscription[] = [];\n\n constructor(\n @SkipSelf() private scrollbarHelper: ScrollbarHelper,\n @SkipSelf() private dimensionsHelper: DimensionsHelper,\n private cd: ChangeDetectorRef,\n element: ElementRef,\n differs: KeyValueDiffers,\n private columnChangesService: ColumnChangesService,\n @Optional() @Inject('configuration') private configuration: INgxDatatableConfig\n ) {\n // get ref to elm for measuring\n this.element = element.nativeElement;\n this.rowDiffer = differs.find({}).create();\n\n // apply global settings from Module.forRoot\n if (this.configuration && this.configuration.messages) {\n this.messages = { ...this.configuration.messages };\n }\n }\n\n /**\n * Lifecycle hook that is called after data-bound\n * properties of a directive are initialized.\n */\n ngOnInit(): void {\n // need to call this immediatly to size\n // if the table is hidden the visibility\n // listener will invoke this itself upon show\n this.recalculate();\n }\n\n /**\n * Lifecycle hook that is called after a component's\n * view has been fully initialized.\n */\n ngAfterViewInit(): void {\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n\n // this has to be done to prevent the change detection\n // tree from freaking out because we are readjusting\n if (typeof requestAnimationFrame === 'undefined') {\n return;\n }\n\n requestAnimationFrame(() => {\n this.recalculate();\n\n // emit page for virtual server-side kickoff\n if (this.externalPaging && this.scrollbarV) {\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: 0\n });\n }\n });\n }\n\n /**\n * Lifecycle hook that is called after a component's\n * content has been fully initialized.\n */\n ngAfterContentInit() {\n this.columnTemplates.changes.subscribe(v => this.translateColumns(v));\n this.listenForColumnInputChanges();\n }\n\n /**\n * This will be used when displaying or selecting rows.\n * when tracking/comparing them, we'll use the value of this fn,\n *\n * (`fn(x) === fn(y)` instead of `x === y`)\n */\n @Input() rowIdentity: (x: any) => any = (x: any) => {\n if (this._groupRowsBy) {\n // each group in groupedRows are stored as {key, value: [rows]},\n // where key is the groupRowsBy index\n return x.key;\n } else {\n return x;\n }\n };\n\n /**\n * Translates the templates to the column objects\n */\n translateColumns(val: any) {\n if (val) {\n const arr = val.toArray();\n if (arr.length) {\n this._internalColumns = translateTemplates(arr);\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n this.sortInternalRows();\n this.cd.markForCheck();\n }\n }\n }\n\n /**\n * Creates a map with the data grouped by the user choice of grouping index\n *\n * @param originalArray the original array passed via parameter\n * @param groupByIndex the index of the column to group the data by\n */\n groupArrayBy(originalArray: any, groupBy: any) {\n // create a map to hold groups with their corresponding results\n const map = new Map();\n let i: number = 0;\n\n originalArray.forEach((item: any) => {\n const key = item[groupBy];\n if (!map.has(key)) {\n map.set(key, [item]);\n } else {\n map.get(key).push(item);\n }\n i++;\n });\n\n const addGroup = (key: any, value: any) => {\n return { key, value };\n };\n\n // convert map back to a simple array of objects\n return Array.from(map, x => addGroup(x[0], x[1]));\n }\n\n /*\n * Lifecycle hook that is called when Angular dirty checks a directive.\n */\n ngDoCheck(): void {\n if (this.rowDiffer.diff(this.rows)) {\n if (!this.externalSorting) {\n this.sortInternalRows();\n } else {\n this._internalRows = [...this.rows];\n }\n\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(\n this._internalRows,\n optionalGetterForProp(this.treeFromRelation),\n optionalGetterForProp(this.treeToRelation)\n );\n\n this.recalculatePages();\n this.cd.markForCheck();\n }\n }\n\n /**\n * Recalc's the sizes of the grid.\n *\n * Updated automatically on changes to:\n *\n * - Columns\n * - Rows\n * - Paging related\n *\n * Also can be manually invoked or upon window resize.\n */\n recalculate(): void {\n this.recalculateDims();\n this.recalculateColumns();\n this.cd.markForCheck();\n }\n\n /**\n * Window resize handler to update sizes.\n */\n @HostListener('window:resize')\n @throttleable(5)\n onWindowResize(): void {\n this.recalculate();\n }\n\n /**\n * Recalulcates the column widths based on column width\n * distribution mode and scrollbar offsets.\n */\n recalculateColumns(\n columns: any[] = this._internalColumns,\n forceIdx: number = -1,\n allowBleed: boolean = this.scrollbarH\n ): any[] | undefined {\n if (!columns) return undefined;\n\n let width = this._innerWidth;\n if (this.scrollbarV) {\n width = width - this.scrollbarHelper.width;\n }\n\n if (this.columnMode === ColumnMode.force) {\n forceFillColumnWidths(columns, width, forceIdx, allowBleed);\n } else if (this.columnMode === ColumnMode.flex) {\n adjustColumnWidths(columns, width);\n }\n\n return columns;\n }\n\n /**\n * Recalculates the dimensions of the table size.\n * Internally calls the page size and row count calcs too.\n *\n */\n recalculateDims(): void {\n const dims = this.dimensionsHelper.getDimensions(this.element);\n this._innerWidth = Math.floor(dims.width);\n\n if (this.scrollbarV) {\n let height = dims.height;\n if (this.headerHeight) height = height - this.headerHeight;\n if (this.footerHeight) height = height - this.footerHeight;\n this.bodyHeight = height;\n }\n\n this.recalculatePages();\n }\n\n /**\n * Recalculates the pages after a update.\n */\n recalculatePages(): void {\n this.pageSize = this.calcPageSize();\n this.rowCount = this.calcRowCount();\n }\n\n /**\n * Body triggered a page event.\n */\n onBodyPage({ offset }: any): void {\n // Avoid pagination caming from body events like scroll when the table\n // has no virtualization and the external paging is enable.\n // This means, let's the developer handle pagination by my him(her) self\n if (this.externalPaging && !this.virtualization) {\n return;\n }\n\n this.offset = offset;\n\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n }\n\n /**\n * The body triggered a scroll event.\n */\n onBodyScroll(event: MouseEvent): void {\n this._offsetX.next(event.offsetX);\n this.scroll.emit(event);\n this.cd.detectChanges();\n }\n\n /**\n * The footer triggered a page event.\n */\n onFooterPage(event: any) {\n this.offset = event.page - 1;\n this.bodyComponent.updateOffsetY(this.offset);\n\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n }\n\n /**\n * Recalculates the sizes of the page\n */\n calcPageSize(val: any[] = this.rows): number {\n // Keep the page size constant even if the row has been expanded.\n // This is because an expanded row is still considered to be a child of\n // the original row. Hence calculation would use rowHeight only.\n if (this.scrollbarV && this.virtualization) {\n const size = Math.ceil(this.bodyHeight / (this.rowHeight as number));\n return Math.max(size, 0);\n }\n\n // if limit is passed, we are paging\n if (this.limit !== undefined) {\n return this.limit;\n }\n\n // otherwise use row length\n if (val) {\n return val.length;\n }\n\n // other empty :(\n return 0;\n }\n\n /**\n * Calculates the row count.\n */\n calcRowCount(val: any[] = this.rows): number {\n if (!this.externalPaging) {\n if (!val) return 0;\n\n if (this.groupedRows) {\n return this.groupedRows.length;\n } else if (this.treeFromRelation != null && this.treeToRelation != null) {\n return this._internalRows.length;\n } else {\n return val.length;\n }\n }\n\n return this.count;\n }\n\n /**\n * The header triggered a contextmenu event.\n */\n onColumnContextmenu({ event, column }: any): void {\n this.tableContextmenu.emit({ event, type: ContextmenuType.header, content: column });\n }\n\n /**\n * The body triggered a contextmenu event.\n */\n onRowContextmenu({ event, row }: any): void {\n this.tableContextmenu.emit({ event, type: ContextmenuType.body, content: row });\n }\n\n /**\n * The header triggered a column resize event.\n */\n onColumnResize({ column, newValue }: any): void {\n /* Safari/iOS 10.2 workaround */\n if (column === undefined) {\n return;\n }\n\n let idx: number;\n const cols = this._internalColumns.map((c, i) => {\n c = { ...c };\n\n if (c.$$id === column.$$id) {\n idx = i;\n c.width = newValue;\n\n // set this so we can force the column\n // width distribution to be to this value\n c.$$oldWidth = newValue;\n }\n\n return c;\n });\n\n this.recalculateColumns(cols, idx);\n this._internalColumns = cols;\n\n this.resize.emit({\n column,\n newValue\n });\n }\n\n /**\n * The header triggered a column re-order event.\n */\n onColumnReorder({ column, newValue, prevValue }: any): void {\n const cols = this._internalColumns.map(c => {\n return { ...c };\n });\n\n if (this.swapColumns) {\n const prevCol = cols[newValue];\n cols[newValue] = column;\n cols[prevValue] = prevCol;\n } else {\n if (newValue > prevValue) {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i < newValue; i++) {\n cols[i] = cols[i + 1];\n }\n cols[newValue] = movedCol;\n } else {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i > newValue; i--) {\n cols[i] = cols[i - 1];\n }\n cols[newValue] = movedCol;\n }\n }\n\n this._internalColumns = cols;\n\n this.reorder.emit({\n column,\n newValue,\n prevValue\n });\n }\n\n /**\n * The header triggered a column sort event.\n */\n onColumnSort(event: any): void {\n // clean selected rows\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n\n this.sorts = event.sorts;\n\n // this could be optimized better since it will resort\n // the rows again on the 'push' detection...\n if (this.externalSorting === false) {\n // don't use normal setter so we don't resort\n this.sortInternalRows();\n }\n\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(\n this._internalRows,\n optionalGetterForProp(this.treeFromRelation),\n optionalGetterForProp(this.treeToRelation)\n );\n\n // Always go to first page when sorting to see the newly sorted data\n this.offset = 0;\n this.bodyComponent.updateOffsetY(this.offset);\n this.sort.emit(event);\n }\n\n /**\n * Toggle all row selection\n */\n onHeaderSelect(event: any): void {\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n // before we splice, chk if we currently have all selected\n const first = this.bodyComponent.indexes.first;\n const last = this.bodyComponent.indexes.last;\n const allSelected = this.selected.length === last - first;\n\n // remove all existing either way\n this.selected = [];\n\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this._internalRows.slice(first, last));\n }\n } else {\n // before we splice, chk if we currently have all selected\n const allSelected = this.selected.length === this.rows.length;\n // remove all existing either way\n this.selected = [];\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this.rows);\n }\n }\n\n this.select.emit({\n selected: this.selected\n });\n }\n\n /**\n * A row was selected from body\n */\n onBodySelect(event: any): void {\n this.select.emit(event);\n }\n\n /**\n * A row was expanded or collapsed for tree\n */\n onTreeAction(event: any) {\n const row = event.row;\n // TODO: For duplicated items this will not work\n const rowIndex = this._rows.findIndex(r => r[this.treeToRelation] === event.row[this.treeToRelation]);\n this.treeAction.emit({ row, rowIndex });\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n /**\n * listen for changes to input bindings of all DataTableColumnDirective and\n * trigger the columnTemplates.changes observable to emit\n */\n private listenForColumnInputChanges(): void {\n this._subscriptions.push(\n this.columnChangesService.columnInputChanges$.subscribe(() => {\n if (this.columnTemplates) {\n this.columnTemplates.notifyOnChanges();\n }\n })\n );\n }\n\n private sortInternalRows(): void {\n this._internalRows = sortRows(this._internalRows, this._internalColumns, this.sorts);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n HostBinding,\n HostListener,\n ChangeDetectionStrategy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { SortType } from '../../types/sort.type';\nimport { SelectionType } from '../../types/selection.type';\nimport { TableColumn } from '../../types/table-column.type';\nimport { nextSortDir } from '../../utils/sort';\nimport { SortDirection } from '../../types/sort-direction.type';\n\n@Component({\n selector: 'datatable-header-cell',\n template: `\n <div class=\"datatable-header-cell-template-wrap\">\n <ng-template\n *ngIf=\"isTarget\"\n [ngTemplateOutlet]=\"targetMarkerTemplate\"\n [ngTemplateOutletContext]=\"targetMarkerContext\"\n >\n </ng-template>\n <label *ngIf=\"isCheckboxable\" class=\"datatable-checkbox\">\n <input type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"select.emit(!allRowsSelected)\" />\n </label>\n <span *ngIf=\"!column.headerTemplate\" class=\"datatable-header-cell-wrapper\">\n <span class=\"datatable-header-cell-label draggable\" (click)=\"onSort()\" [innerHTML]=\"name\"> </span>\n </span>\n <ng-template\n *ngIf=\"column.headerTemplate\"\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\"\n >\n </ng-template>\n <span (click)=\"onSort()\" [class]=\"sortClass\"> </span>\n </div>\n `,\n host: {\n class: 'datatable-header-cell'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableHeaderCellComponent {\n @Input() sortType: SortType;\n @Input() sortAscendingIcon: string;\n @Input() sortDescendingIcon: string;\n @Input() sortUnsetIcon: string;\n\n @Input() isTarget: boolean;\n @Input() targetMarkerTemplate: any;\n @Input() targetMarkerContext: any;\n\n _allRowsSelected: boolean;\n\n @Input() set allRowsSelected(value) {\n this._allRowsSelected = value;\n this.cellContext.allRowsSelected = value;\n }\n get allRowsSelected() {\n return this._allRowsSelected;\n }\n\n @Input() selectionType: SelectionType;\n\n @Input() set column(column: TableColumn) {\n this._column = column;\n this.cellContext.column = column;\n this.cd.markForCheck();\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @HostBinding('style.height.px')\n @Input()\n headerHeight: number;\n\n @Input() set sorts(val: any[]) {\n this._sorts = val;\n this.sortDir = this.calcSortDir(val);\n this.cellContext.sortDir = this.sortDir;\n this.sortClass = this.calcSortClass(this.sortDir);\n this.cd.markForCheck();\n }\n\n get sorts(): any[] {\n return this._sorts;\n }\n\n @Output() sort: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n @Output() columnContextmenu = new EventEmitter<{ event: MouseEvent; column: any }>(false);\n\n @HostBinding('class')\n get columnCssClasses(): any {\n let cls = 'datatable-header-cell';\n\n if (this.column.sortable) cls += ' sortable';\n if (this.column.resizeable) cls += ' resizeable';\n if (this.column.headerClass) {\n if (typeof this.column.headerClass === 'string') {\n cls += ' ' + this.column.headerClass;\n } else if (typeof this.column.headerClass === 'function') {\n const res = this.column.headerClass({\n column: this.column\n });\n\n if (typeof res === 'string') {\n cls += res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) cls += ` ${k}`;\n }\n }\n }\n }\n\n const sortDir = this.sortDir;\n if (sortDir) {\n cls += ` sort-active sort-${sortDir}`;\n }\n\n return cls;\n }\n\n @HostBinding('attr.title')\n get name(): string {\n // guaranteed to have a value by setColumnDefaults() in column-helper.ts\n return this.column.headerTemplate === undefined ? this.column.name : undefined;\n }\n\n @HostBinding('style.minWidth.px')\n get minWidth(): number {\n return this.column.minWidth;\n }\n\n @HostBinding('style.maxWidth.px')\n get maxWidth(): number {\n return this.column.maxWidth;\n }\n\n @HostBinding('style.width.px')\n get width(): number {\n return this.column.width;\n }\n\n get isCheckboxable(): boolean {\n return this.column.checkboxable && this.column.headerCheckboxable && this.selectionType === SelectionType.checkbox;\n }\n\n sortFn = this.onSort.bind(this);\n sortClass: string;\n sortDir: SortDirection;\n selectFn = this.select.emit.bind(this.select);\n\n cellContext: any;\n\n private _column: TableColumn;\n private _sorts: any[];\n\n constructor(private cd: ChangeDetectorRef) {\n this.cellContext = {\n column: this.column,\n sortDir: this.sortDir,\n sortFn: this.sortFn,\n allRowsSelected: this.allRowsSelected,\n selectFn: this.selectFn\n };\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.columnContextmenu.emit({ event: $event, column: this.column });\n }\n\n ngOnInit() {\n this.sortClass = this.calcSortClass(this.sortDir);\n }\n\n calcSortDir(sorts: any[]): any {\n if (sorts && this.column) {\n const sort = sorts.find((s: any) => {\n return s.prop === this.column.prop;\n });\n\n if (sort) return sort.dir;\n }\n }\n\n onSort(): void {\n if (!this.column.sortable) return;\n\n const newValue = nextSortDir(this.sortType, this.sortDir);\n this.sort.emit({\n column: this.column,\n prevValue: this.sortDir,\n newValue\n });\n }\n\n calcSortClass(sortDir: SortDirection): string {\n if (!this.cellContext.column.sortable) return;\n if (sortDir === SortDirection.asc) {\n return `sort-btn sort-asc ${this.sortAscendingIcon}`;\n } else if (sortDir === SortDirection.desc) {\n return `sort-btn sort-desc ${this.sortDescendingIcon}`;\n } else {\n return `sort-btn ${this.sortUnsetIcon}`;\n }\n }\n}\n","import { Component, Output, EventEmitter, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { DatatableFooterDirective } from './footer.directive';\n@Component({\n selector: 'datatable-footer',\n template: `\n <div\n class=\"datatable-footer-inner\"\n [ngClass]=\"{ 'selected-count': selectedMessage }\"\n [style.height.px]=\"footerHeight\"\n >\n <ng-template\n *ngIf=\"footerTemplate\"\n [ngTemplateOutlet]=\"footerTemplate.template\"\n [ngTemplateOutletContext]=\"{\n rowCount: rowCount,\n pageSize: pageSize,\n selectedCount: selectedCount,\n curPage: curPage,\n offset: offset\n }\"\n >\n </ng-template>\n <div class=\"page-count\" *ngIf=\"!footerTemplate\">\n <span *ngIf=\"selectedMessage\"> {{ selectedCount?.toLocaleString() }} {{ selectedMessage }} / </span>\n {{ rowCount?.toLocaleString() }} {{ totalMessage }}\n </div>\n <datatable-pager\n *ngIf=\"!footerTemplate\"\n [pagerLeftArrowIcon]=\"pagerLeftArrowIcon\"\n [pagerRightArrowIcon]=\"pagerRightArrowIcon\"\n [pagerPreviousIcon]=\"pagerPreviousIcon\"\n [pagerNextIcon]=\"pagerNextIcon\"\n [page]=\"curPage\"\n [size]=\"pageSize\"\n [count]=\"rowCount\"\n [hidden]=\"!isVisible\"\n (change)=\"page.emit($event)\"\n >\n </datatable-pager>\n </div>\n `,\n host: {\n class: 'datatable-footer'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableFooterComponent {\n @Input() footerHeight: number;\n @Input() rowCount: number;\n @Input() pageSize: number;\n @Input() offset: number;\n @Input() pagerLeftArrowIcon: string;\n @Input() pagerRightArrowIcon: string;\n @Input() pagerPreviousIcon: string;\n @Input() pagerNextIcon: string;\n @Input() totalMessage: string;\n @Input() footerTemplate: DatatableFooterDirective;\n\n @Input() selectedCount: number = 0;\n @Input() selectedMessage: string | boolean;\n\n @Output() page: EventEmitter<any> = new EventEmitter();\n\n get isVisible(): boolean {\n return this.rowCount / this.pageSize > 1;\n }\n\n get curPage(): number {\n return this.offset + 1;\n }\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'datatable-pager',\n template: `\n <ul class=\"pager\">\n <li [class.disabled]=\"!canPrevious()\">\n <a role=\"button\" aria-label=\"go to first page\" href=\"javascript:void(0)\" (click)=\"selectPage(1)\">\n <i class=\"{{ pagerPreviousIcon }}\"></i>\n </a>\n </li>\n <li [class.disabled]=\"!canPrevious()\">\n <a role=\"button\" aria-label=\"go to previous page\" href=\"javascript:void(0)\" (click)=\"prevPage()\">\n <i class=\"{{ pagerLeftArrowIcon }}\"></i>\n </a>\n </li>\n <li\n role=\"button\"\n [attr.aria-label]=\"'page ' + pg.number\"\n class=\"pages\"\n *ngFor=\"let pg of pages\"\n [class.active]=\"pg.number === page\"\n >\n <a href=\"javascript:void(0)\" (click)=\"selectPage(pg.number)\">\n {{ pg.text }}\n </a>\n </li>\n <li [class.disabled]=\"!canNext()\">\n <a role=\"button\" aria-label=\"go to next page\" href=\"javascript:void(0)\" (click)=\"nextPage()\">\n <i class=\"{{ pagerRightArrowIcon }}\"></i>\n </a>\n </li>\n <li [class.disabled]=\"!canNext()\">\n <a role=\"button\" aria-label=\"go to last page\" href=\"javascript:void(0)\" (click)=\"selectPage(totalPages)\">\n <i class=\"{{ pagerNextIcon }}\"></i>\n </a>\n </li>\n </ul>\n `,\n host: {\n class: 'datatable-pager'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTablePagerComponent {\n @Input() pagerLeftArrowIcon: string;\n @Input() pagerRightArrowIcon: string;\n @Input() pagerPreviousIcon: string;\n @Input() pagerNextIcon: string;\n\n @Input()\n set size(val: number) {\n this._size = val;\n this.pages = this.calcPages();\n }\n\n get size(): number {\n return this._size;\n }\n\n @Input()\n set count(val: number) {\n this._count = val;\n this.pages = this.calcPages();\n }\n\n get count(): number {\n return this._count;\n }\n\n @Input()\n set page(val: number) {\n this._page = val;\n this.pages = this.calcPages();\n }\n\n get page(): number {\n return this._page;\n }\n\n get totalPages(): number {\n const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size);\n return Math.max(count || 0, 1);\n }\n\n @Output() change: EventEmitter<any> = new EventEmitter();\n\n _count: number = 0;\n _page: number = 1;\n _size: number = 0;\n pages: any;\n\n canPrevious(): boolean {\n return this.page > 1;\n }\n\n canNext(): boolean {\n return this.page < this.totalPages;\n }\n\n prevPage(): void {\n this.selectPage(this.page - 1);\n }\n\n nextPage(): void {\n this.selectPage(this.page + 1);\n }\n\n selectPage(page: number): void {\n if (page > 0 && page <= this.totalPages && page !== this.page) {\n this.page = page;\n\n this.change.emit({\n page\n });\n }\n }\n\n calcPages(page?: number): any[] {\n const pages = [];\n let startPage = 1;\n let endPage = this.totalPages;\n const maxSize = 5;\n const isMaxSized = maxSize < this.totalPages;\n\n page = page || this.page;\n\n if (isMaxSized) {\n startPage = page - Math.floor(maxSize / 2);\n endPage = page + Math.floor(maxSize / 2);\n\n if (startPage < 1) {\n startPage = 1;\n endPage = Math.min(startPage + maxSize - 1, this.totalPages);\n } else if (endPage > this.totalPages) {\n startPage = Math.max(this.totalPages - maxSize + 1, 1);\n endPage = this.totalPages;\n }\n }\n\n for (let num = startPage; num <= endPage; num++) {\n pages.push({\n number: num,\n text: <string>(<any>num)\n });\n }\n\n return pages;\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'datatable-progress',\n template: `\n <div class=\"progress-linear\" role=\"progressbar\">\n <div class=\"container\">\n <div class=\"bar\"></div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ProgressBarComponent {}\n","export enum Keys {\n up = 38,\n down = 40,\n return = 13,\n escape = 27,\n left = 37,\n right = 39\n}\n","import {\n Component,\n Input,\n HostBinding,\n ElementRef,\n Output,\n KeyValueDiffers,\n KeyValueDiffer,\n EventEmitter,\n HostListener,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n DoCheck,\n SkipSelf\n} from '@angular/core';\n\nimport { TreeStatus } from './body-cell.component';\nimport { columnsByPin, columnGroupWidths, columnsByPinArr } from '../../utils/column';\nimport { Keys } from '../../utils/keys';\nimport { ScrollbarHelper } from '../../services/scrollbar-helper.service';\nimport { translateXY } from '../../utils/translate';\n\n@Component({\n selector: 'datatable-body-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n *ngFor=\"let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups\"\n class=\"datatable-row-{{ colGroup.type }} datatable-row-group\"\n [ngStyle]=\"_groupStyles[colGroup.type]\"\n >\n <datatable-body-cell\n role=\"cell\"\n *ngFor=\"let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn\"\n tabindex=\"-1\"\n [row]=\"row\"\n [group]=\"group\"\n [expanded]=\"expanded\"\n [isSelected]=\"isSelected\"\n [rowIndex]=\"rowIndex\"\n [column]=\"column\"\n [rowHeight]=\"rowHeight\"\n [displayCheck]=\"displayCheck\"\n [treeStatus]=\"treeStatus\"\n (activate)=\"onActivate($event, ii)\"\n (treeAction)=\"onTreeAction()\"\n >\n </datatable-body-cell>\n </div>\n `\n})\nexport class DataTableBodyRowComponent implements DoCheck {\n @Input() set columns(val: any[]) {\n this._columns = val;\n this.recalculateColumns(val);\n this.buildStylesByGroup();\n }\n\n get columns(): any[] {\n return this._columns;\n }\n\n @Input() set innerWidth(val: number) {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n }\n\n this._innerWidth = val;\n this.recalculateColumns();\n this.buildStylesByGroup();\n }\n\n get innerWidth(): number {\n return this._innerWidth;\n }\n\n @Input() expanded: boolean;\n @Input() rowClass: any;\n @Input() row: any;\n @Input() group: any;\n @Input() isSelected: boolean;\n @Input() rowIndex: number;\n @Input() displayCheck: any;\n @Input() treeStatus: TreeStatus = 'collapsed';\n\n @Input()\n set offsetX(val: number) {\n this._offsetX = val;\n this.buildStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n\n @HostBinding('class')\n get cssClass() {\n let cls = 'datatable-body-row';\n if (this.isSelected) {\n cls += ' active';\n }\n if (this.rowIndex % 2 !== 0) {\n cls += ' datatable-row-odd';\n }\n if (this.rowIndex % 2 === 0) {\n cls += ' datatable-row-even';\n }\n\n if (this.rowClass) {\n const res = this.rowClass(this.row);\n if (typeof res === 'string') {\n cls += ` ${res}`;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n\n return cls;\n }\n\n @HostBinding('style.height.px')\n @Input()\n rowHeight: number;\n\n @HostBinding('style.width.px')\n get columnsTotalWidths(): string {\n return this._columnGroupWidths.total;\n }\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n _element: any;\n _columnGroupWidths: any;\n _columnsByPin: any;\n _offsetX: number;\n _columns: any[];\n _innerWidth: number;\n _groupStyles: { [prop: string]: {} } = {\n left: {},\n center: {},\n right: {}\n };\n\n private _rowDiffer: KeyValueDiffer<{}, {}>;\n\n constructor(\n private differs: KeyValueDiffers,\n @SkipSelf() private scrollbarHelper: ScrollbarHelper,\n private cd: ChangeDetectorRef,\n element: ElementRef\n ) {\n this._element = element.nativeElement;\n this._rowDiffer = differs.find({}).create();\n }\n\n ngDoCheck(): void {\n if (this._rowDiffer.diff(this.row)) {\n this.cd.markForCheck();\n }\n }\n\n trackByGroups(index: number, colGroup: any): any {\n return colGroup.type;\n }\n\n columnTrackingFn(index: number, column: any): any {\n return column.$$id;\n }\n\n buildStylesByGroup() {\n this._groupStyles.left = this.calcStylesByGroup('left');\n this._groupStyles.center = this.calcStylesByGroup('center');\n this._groupStyles.right = this.calcStylesByGroup('right');\n this.cd.markForCheck();\n }\n\n calcStylesByGroup(group: string) {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n\n const styles = {\n width: `${widths[group]}px`\n };\n\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = (offsetDiff + this.scrollbarHelper.width) * -1;\n translateXY(styles, offset, 0);\n }\n\n return styles;\n }\n\n onActivate(event: any, index: number): void {\n event.cellIndex = index;\n event.rowElement = this._element;\n this.activate.emit(event);\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isTargetRow = event.target === this._element;\n\n const isAction =\n keyCode === Keys.return ||\n keyCode === Keys.down ||\n keyCode === Keys.up ||\n keyCode === Keys.left ||\n keyCode === Keys.right;\n\n if (isAction && isTargetRow) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseenter(event: any): void {\n this.activate.emit({\n type: 'mouseenter',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n\n recalculateColumns(val: any[] = this.columns): void {\n this._columns = val;\n const colsByPin = columnsByPin(this._columns);\n this._columnsByPin = columnsByPinArr(this._columns);\n this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);\n }\n\n onTreeAction() {\n this.treeAction.emit();\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n HostListener,\n DoCheck,\n ChangeDetectionStrategy,\n KeyValueDiffer,\n ChangeDetectorRef,\n KeyValueDiffers\n} from '@angular/core';\n\n@Component({\n selector: 'datatable-row-wrapper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div *ngIf=\"groupHeader && groupHeader.template\" class=\"datatable-group-header\" [ngStyle]=\"getGroupHeaderStyle()\">\n <ng-template\n *ngIf=\"groupHeader && groupHeader.template\"\n [ngTemplateOutlet]=\"groupHeader.template\"\n [ngTemplateOutletContext]=\"groupContext\"\n >\n </ng-template>\n </div>\n <ng-content *ngIf=\"(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template\">\n </ng-content>\n <div\n *ngIf=\"rowDetail && rowDetail.template && expanded\"\n [style.height.px]=\"detailRowHeight\"\n class=\"datatable-row-detail\"\n >\n <ng-template\n *ngIf=\"rowDetail && rowDetail.template\"\n [ngTemplateOutlet]=\"rowDetail.template\"\n [ngTemplateOutletContext]=\"rowContext\"\n >\n </ng-template>\n </div>\n `,\n host: {\n class: 'datatable-row-wrapper'\n }\n})\nexport class DataTableRowWrapperComponent implements DoCheck {\n @Input() innerWidth: number;\n @Input() rowDetail: any;\n @Input() groupHeader: any;\n @Input() offsetX: number;\n @Input() detailRowHeight: any;\n @Input() row: any;\n @Input() groupedRows: any;\n @Output() rowContextmenu = new EventEmitter<{ event: MouseEvent; row: any }>(false);\n\n @Input() set rowIndex(val: number) {\n this._rowIndex = val;\n this.rowContext.rowIndex = val;\n this.groupContext.rowIndex = val;\n this.cd.markForCheck();\n }\n\n get rowIndex(): number {\n return this._rowIndex;\n }\n\n @Input() set expanded(val: boolean) {\n this._expanded = val;\n this.groupContext.expanded = val;\n this.rowContext.expanded = val;\n this.cd.markForCheck();\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n\n groupContext: any;\n rowContext: any;\n\n private rowDiffer: KeyValueDiffer<{}, {}>;\n private _expanded: boolean = false;\n private _rowIndex: number;\n\n constructor(private cd: ChangeDetectorRef, private differs: KeyValueDiffers) {\n this.groupContext = {\n group: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n\n this.rowContext = {\n row: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n\n this.rowDiffer = differs.find({}).create();\n }\n\n ngDoCheck(): void {\n if (this.rowDiffer.diff(this.row)) {\n this.rowContext.row = this.row;\n this.groupContext.group = this.row;\n this.cd.markForCheck();\n }\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.rowContextmenu.emit({ event: $event, row: this.row });\n }\n\n getGroupHeaderStyle(): any {\n const styles = {};\n\n styles['transform'] = 'translate3d(' + this.offsetX + 'px, 0px, 0px)';\n styles['backface-visibility'] = 'hidden';\n styles['width'] = this.innerWidth;\n\n return styles;\n }\n}\n","import {\n Component,\n Input,\n PipeTransform,\n HostBinding,\n ViewChild,\n ChangeDetectorRef,\n Output,\n EventEmitter,\n HostListener,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n DoCheck,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { TableColumn } from '../../types/table-column.type';\nimport { SortDirection } from '../../types/sort-direction.type';\nimport { Keys } from '../../utils/keys';\n\nexport type TreeStatus = 'collapsed' | 'expanded' | 'loading' | 'disabled';\n\n@Component({\n selector: 'datatable-body-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"datatable-body-cell-label\" [style.margin-left.px]=\"calcLeftMargin(column, row)\">\n <label\n *ngIf=\"column.checkboxable && (!displayCheck || displayCheck(row, column, value))\"\n class=\"datatable-checkbox\"\n >\n <input type=\"checkbox\" [checked]=\"isSelected\" (click)=\"onCheckboxChange($event)\" />\n </label>\n <ng-container *ngIf=\"column.isTreeColumn\">\n <button\n *ngIf=\"!column.treeToggleTemplate\"\n class=\"datatable-tree-button\"\n [disabled]=\"treeStatus === 'disabled'\"\n (click)=\"onTreeAction()\"\n >\n <span>\n <i *ngIf=\"treeStatus === 'loading'\" class=\"icon datatable-icon-collapse\"></i>\n <i *ngIf=\"treeStatus === 'collapsed'\" class=\"icon datatable-icon-up\"></i>\n <i *ngIf=\"treeStatus === 'expanded' || treeStatus === 'disabled'\" class=\"icon datatable-icon-down\"></i>\n </span>\n </button>\n <ng-template\n *ngIf=\"column.treeToggleTemplate\"\n [ngTemplateOutlet]=\"column.treeToggleTemplate\"\n [ngTemplateOutletContext]=\"{ cellContext: cellContext }\"\n >\n </ng-template>\n </ng-container>\n\n <span *ngIf=\"!column.cellTemplate\" [title]=\"sanitizedValue\" [innerHTML]=\"value\"> </span>\n <ng-template\n #cellTemplate\n *ngIf=\"column.cellTemplate\"\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"cellContext\"\n >\n </ng-template>\n </div>\n `\n})\nexport class DataTableBodyCellComponent implements DoCheck, OnDestroy {\n @Input() displayCheck: (row: any, column?: TableColumn, value?: any) => boolean;\n\n @Input() set group(group: any) {\n this._group = group;\n this.cellContext.group = group;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get group() {\n return this._group;\n }\n\n @Input() set rowHeight(val: number) {\n this._rowHeight = val;\n this.cellContext.rowHeight = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get rowHeight() {\n return this._rowHeight;\n }\n\n @Input() set isSelected(val: boolean) {\n this._isSelected = val;\n this.cellContext.isSelected = val;\n this.cd.markForCheck();\n }\n\n get isSelected(): boolean {\n return this._isSelected;\n }\n\n @Input() set expanded(val: boolean) {\n this._expanded = val;\n this.cellContext.expanded = val;\n this.cd.markForCheck();\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n\n @Input() set rowIndex(val: number) {\n this._rowIndex = val;\n this.cellContext.rowIndex = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get rowIndex(): number {\n return this._rowIndex;\n }\n\n @Input() set column(column: TableColumn) {\n this._column = column;\n this.cellContext.column = column;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @Input() set row(row: any) {\n this._row = row;\n this.cellContext.row = row;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get row(): any {\n return this._row;\n }\n\n @Input() set sorts(val: any[]) {\n this._sorts = val;\n this.calcSortDir = this.calcSortDir(val);\n }\n\n get sorts(): any[] {\n return this._sorts;\n }\n\n @Input() set treeStatus(status: TreeStatus) {\n if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {\n this._treeStatus = 'collapsed';\n } else {\n this._treeStatus = status;\n }\n this.cellContext.treeStatus = this._treeStatus;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n\n get treeStatus(): TreeStatus {\n return this._treeStatus;\n }\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n\n @Output() treeAction: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('cellTemplate', { read: ViewContainerRef, static: true })\n cellTemplate: ViewContainerRef;\n\n @HostBinding('class')\n get columnCssClasses(): any {\n let cls = 'datatable-body-cell';\n if (this.column.cellClass) {\n if (typeof this.column.cellClass === 'string') {\n cls += ' ' + this.column.cellClass;\n } else if (typeof this.column.cellClass === 'function') {\n const res = this.column.cellClass({\n row: this.row,\n group: this.group,\n column: this.column,\n value: this.value,\n rowHeight: this.rowHeight\n });\n\n if (typeof res === 'string') {\n cls += ' ' + res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n }\n if (!this.sortDir) {\n cls += ' sort-active';\n }\n if (this.isFocused) {\n cls += ' active';\n }\n if (this.sortDir === SortDirection.asc) {\n cls += ' sort-asc';\n }\n if (this.sortDir === SortDirection.desc) {\n cls += ' sort-desc';\n }\n\n return cls;\n }\n\n @HostBinding('style.width.px')\n get width(): number {\n return this.column.width;\n }\n\n @HostBinding('style.minWidth.px')\n get minWidth(): number {\n return this.column.minWidth;\n }\n\n @HostBinding('style.maxWidth.px')\n get maxWidth(): number {\n return this.column.maxWidth;\n }\n\n @HostBinding('style.height')\n get height(): string | number {\n const height = this.rowHeight;\n if (isNaN(height)) {\n return height;\n }\n return height + 'px';\n }\n\n sanitizedValue: any;\n value: any;\n sortDir: SortDirection;\n isFocused = false;\n onCheckboxChangeFn = this.onCheckboxChange.bind(this);\n activateFn = this.activate.emit.bind(this.activate);\n\n cellContext: any;\n\n private _isSelected: boolean;\n private _sorts: any[];\n private _column: TableColumn;\n private _row: any;\n private _group: any;\n private _rowHeight: number;\n private _rowIndex: number;\n private _expanded: boolean;\n private _element: any;\n private _treeStatus: TreeStatus;\n\n constructor(element: ElementRef, private cd: ChangeDetectorRef) {\n this.cellContext = {\n onCheckboxChangeFn: this.onCheckboxChangeFn,\n activateFn: this.activateFn,\n row: this.row,\n group: this.group,\n value: this.value,\n column: this.column,\n rowHeight: this.rowHeight,\n isSelected: this.isSelected,\n rowIndex: this.rowIndex,\n treeStatus: this.treeStatus,\n onTreeAction: this.onTreeAction.bind(this)\n };\n\n this._element = element.nativeElement;\n }\n\n ngDoCheck(): void {\n this.checkValueUpdates();\n }\n\n ngOnDestroy(): void {\n if (this.cellTemplate) {\n this.cellTemplate.clear();\n }\n }\n\n checkValueUpdates(): void {\n let value = '';\n\n if (!this.row || !this.column) {\n value = '';\n } else {\n const val = this.column.$$valueGetter(this.row, this.column.prop);\n const userPipe: PipeTransform = this.column.pipe;\n\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n\n if (this.value !== value) {\n this.value = value;\n this.cellContext.value = value;\n this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;\n this.cd.markForCheck();\n }\n }\n\n @HostListener('focus')\n onFocus(): void {\n this.isFocused = true;\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.isFocused = false;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'click',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n\n @HostListener('dblclick', ['$event'])\n onDblClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'dblclick',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isTargetCell = event.target === this._element;\n\n const isAction =\n keyCode === Keys.return ||\n keyCode === Keys.down ||\n keyCode === Keys.up ||\n keyCode === Keys.left ||\n keyCode === Keys.right;\n\n if (isAction && isTargetCell) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n }\n\n onCheckboxChange(event: any): void {\n this.activate.emit({\n type: 'checkbox',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element,\n treeStatus: 'collapsed'\n });\n }\n\n calcSortDir(sorts: any[]): any {\n if (!sorts) {\n return;\n }\n\n const sort = sorts.find((s: any) => {\n return s.prop === this.column.prop;\n });\n\n if (sort) {\n return sort.dir;\n }\n }\n\n stripHtml(html: string): string {\n if (!html.replace) {\n return html;\n }\n return html.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n\n onTreeAction() {\n this.treeAction.emit(this.row);\n }\n\n calcLeftMargin(column: any, row: any) {\n const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;\n return column.isTreeColumn ? row.level * levelIndent : 0;\n }\n}\n","export function selectRows(selected: any[], row: any, comparefn: any) {\n const selectedIndex = comparefn(row, selected);\n\n if (selectedIndex > -1) {\n selected.splice(selectedIndex, 1);\n } else {\n selected.push(row);\n }\n\n return selected;\n}\n\nexport function selectRowsBetween(\n selected: any[],\n rows: any[],\n index: number,\n prevIndex: number,\n comparefn: any\n): any[] {\n const reverse = index < prevIndex;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n const greater = i >= prevIndex && i <= index;\n const lesser = i <= prevIndex && i >= index;\n\n let range = { start: 0, end: 0 };\n if (reverse) {\n range = {\n start: index,\n end: prevIndex\n };\n } else {\n range = {\n start: prevIndex,\n end: index + 1\n };\n }\n\n if ((reverse && lesser) || (!reverse && greater)) {\n // if in the positive range to be added to `selected`, and\n // not already in the selected array, add it\n if (i >= range.start && i <= range.end) {\n selected.push(row);\n }\n }\n }\n\n return selected;\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { SelectionType } from '../../types/selection.type';\nimport { selectRowsBetween, selectRows } from '../../utils/selection';\nimport { Keys } from '../../utils/keys';\n\nexport interface Model {\n type: string;\n event: MouseEvent | KeyboardEvent;\n row: any;\n rowElement: any;\n cellElement: any;\n cellIndex: number;\n}\n\n@Component({\n selector: 'datatable-selection',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableSelectionComponent {\n @Input() rows: any[];\n @Input() selected: any[];\n @Input() selectEnabled: boolean;\n @Input() selectionType: SelectionType;\n @Input() rowIdentity: any;\n @Input() selectCheck: any;\n\n @Output() activate: EventEmitter<any> = new EventEmitter();\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n prevIndex: number;\n\n selectRow(event: KeyboardEvent | MouseEvent, index: number, row: any): void {\n if (!this.selectEnabled) return;\n\n const chkbox = this.selectionType === SelectionType.checkbox;\n const multi = this.selectionType === SelectionType.multi;\n const multiClick = this.selectionType === SelectionType.multiClick;\n let selected: any[] = [];\n\n if (multi || chkbox || multiClick) {\n if (event.shiftKey) {\n selected = selectRowsBetween([], this.rows, index, this.prevIndex, this.getRowSelectedIdx.bind(this));\n } else if (event.ctrlKey || event.metaKey || multiClick || chkbox) {\n selected = selectRows([...this.selected], row, this.getRowSelectedIdx.bind(this));\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n\n if (typeof this.selectCheck === 'function') {\n selected = selected.filter(this.selectCheck.bind(this));\n }\n\n this.selected.splice(0, this.selected.length);\n this.selected.push(...selected);\n\n this.prevIndex = index;\n\n this.select.emit({\n selected\n });\n }\n\n onActivate(model: Model, index: number): void {\n const { type, event, row } = model;\n const chkbox = this.selectionType === SelectionType.checkbox;\n const select = (!chkbox && (type === 'click' || type === 'dblclick')) || (chkbox && type === 'checkbox');\n\n if (select) {\n this.selectRow(event, index, row);\n } else if (type === 'keydown') {\n if ((<KeyboardEvent>event).keyCode === Keys.return) {\n this.selectRow(event, index, row);\n } else {\n this.onKeyboardFocus(model);\n }\n }\n this.activate.emit(model);\n }\n\n onKeyboardFocus(model: Model): void {\n const { keyCode } = <KeyboardEvent>model.event;\n const shouldFocus = keyCode === Keys.up || keyCode === Keys.down || keyCode === Keys.right || keyCode === Keys.left;\n\n if (shouldFocus) {\n const isCellSelection = this.selectionType === SelectionType.cell;\n\n if (!model.cellElement || !isCellSelection) {\n this.focusRow(model.rowElement, keyCode);\n } else if (isCellSelection) {\n this.focusCell(model.cellElement, model.rowElement, keyCode, model.cellIndex);\n }\n }\n }\n\n focusRow(rowElement: any, keyCode: number): void {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) nextRowElement.focus();\n }\n\n getPrevNextRow(rowElement: any, keyCode: number): any {\n const parentElement = rowElement.parentElement;\n\n if (parentElement) {\n let focusElement: HTMLElement;\n if (keyCode === Keys.up) {\n focusElement = parentElement.previousElementSibling;\n } else if (keyCode === Keys.down) {\n focusElement = parentElement.nextElementSibling;\n }\n\n if (focusElement && focusElement.children.length) {\n return focusElement.children[0];\n }\n }\n }\n\n focusCell(cellElement: any, rowElement: any, keyCode: number, cellIndex: number): void {\n let nextCellElement: HTMLElement;\n\n if (keyCode === Keys.left) {\n nextCellElement = cellElement.previousElementSibling;\n } else if (keyCode === Keys.right) {\n nextCellElement = cellElement.nextElementSibling;\n } else if (keyCode === Keys.up || keyCode === Keys.down) {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) {\n const children = nextRowElement.getElementsByClassName('datatable-body-cell');\n if (children.length) nextCellElement = children[cellIndex];\n }\n }\n\n if (nextCellElement) nextCellElement.focus();\n }\n\n getRowSelected(row: any): boolean {\n return this.getRowSelectedIdx(row, this.selected) > -1;\n }\n\n getRowSelectedIdx(row: any, selected: any[]): number {\n if (!selected || !selected.length) return -1;\n\n const rowId = this.rowIdentity(row);\n return selected.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n}\n","import { Component, Input, OnChanges, PipeTransform, TemplateRef } from '@angular/core';\n\nexport interface ISummaryColumn {\n summaryFunc?: (cells: any[]) => any;\n summaryTemplate?: TemplateRef<any>;\n\n prop: string;\n pipe?: PipeTransform;\n}\n\nfunction defaultSumFunc(cells: any[]): any {\n const cellsWithValues = cells.filter(cell => !!cell);\n\n if (!cellsWithValues.length) {\n return null;\n }\n if (cellsWithValues.some(cell => typeof cell !== 'number')) {\n return null;\n }\n\n return cellsWithValues.reduce((res, cell) => res + cell);\n}\n\nfunction noopSumFunc(cells: any[]): void {\n return null;\n}\n\n@Component({\n selector: 'datatable-summary-row',\n template: `\n <datatable-body-row\n *ngIf=\"summaryRow && _internalColumns\"\n tabindex=\"-1\"\n [innerWidth]=\"innerWidth\"\n [offsetX]=\"offsetX\"\n [columns]=\"_internalColumns\"\n [rowHeight]=\"rowHeight\"\n [row]=\"summaryRow\"\n [rowIndex]=\"-1\"\n >\n </datatable-body-row>\n `,\n host: {\n class: 'datatable-summary-row'\n }\n})\nexport class DataTableSummaryRowComponent implements OnChanges {\n @Input() rows: any[];\n @Input() columns: ISummaryColumn[];\n\n @Input() rowHeight: number;\n @Input() offsetX: number;\n @Input() innerWidth: number;\n\n _internalColumns: ISummaryColumn[];\n summaryRow: any = {};\n\n ngOnChanges() {\n if (!this.columns || !this.rows) {\n return;\n }\n this.updateInternalColumns();\n this.updateValues();\n }\n\n private updateInternalColumns() {\n this._internalColumns = this.columns.map(col => ({\n ...col,\n cellTemplate: col.summaryTemplate\n }));\n }\n\n private updateValues() {\n this.summaryRow = {};\n\n this.columns\n .filter(col => !col.summaryTemplate)\n .forEach(col => {\n const cellsFromSingleColumn = this.rows.map(row => row[col.prop]);\n const sumFunc = this.getSummaryFunction(col);\n\n this.summaryRow[col.prop] = col.pipe\n ? col.pipe.transform(sumFunc(cellsFromSingleColumn))\n : sumFunc(cellsFromSingleColumn);\n });\n }\n\n private getSummaryFunction(column: ISummaryColumn): (a: any[]) => any {\n if (column.summaryFunc === undefined) {\n return defaultSumFunc;\n } else if (column.summaryFunc === null) {\n return noopSumFunc;\n } else {\n return column.summaryFunc;\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollbarHelper } from './services/scrollbar-helper.service';\nimport { DimensionsHelper } from './services/dimensions-helper.service';\nimport { ColumnChangesService } from './services/column-changes.service';\nimport { DataTableFooterTemplateDirective } from './components/footer/footer-template.directive';\nimport { VisibilityDirective } from './directives/visibility.directive';\nimport { DraggableDirective } from './directives/draggable.directive';\nimport { ResizeableDirective } from './directives/resizeable.directive';\nimport { OrderableDirective } from './directives/orderable.directive';\nimport { LongPressDirective } from './directives/long-press.directive';\nimport { ScrollerComponent } from './components/body/scroller.component';\nimport { DatatableComponent } from './components/datatable.component';\nimport { DataTableColumnDirective } from './components/columns/column.directive';\nimport { DataTableHeaderComponent } from './components/header/header.component';\nimport { DataTableHeaderCellComponent } from './components/header/header-cell.component';\nimport { DataTableBodyComponent } from './components/body/body.component';\nimport { DataTableFooterComponent } from './components/footer/footer.component';\nimport { DataTablePagerComponent } from './components/footer/pager.component';\nimport { ProgressBarComponent } from './components/body/progress-bar.component';\nimport { DataTableBodyRowComponent } from './components/body/body-row.component';\nimport { DataTableRowWrapperComponent } from './components/body/body-row-wrapper.component';\nimport { DatatableRowDetailDirective } from './components/row-detail/row-detail.directive';\nimport { DatatableGroupHeaderDirective } from './components/body/body-group-header.directive';\nimport { DatatableRowDetailTemplateDirective } from './components/row-detail/row-detail-template.directive';\nimport { DataTableBodyCellComponent } from './components/body/body-cell.component';\nimport { DataTableSelectionComponent } from './components/body/selection.component';\nimport { DataTableColumnHeaderDirective } from './components/columns/column-header.directive';\nimport { DataTableColumnCellDirective } from './components/columns/column-cell.directive';\nimport { DataTableColumnCellTreeToggle } from './components/columns/tree.directive';\nimport { DatatableFooterDirective } from './components/footer/footer.directive';\nimport { DatatableGroupHeaderTemplateDirective } from './components/body/body-group-header-template.directive';\nimport { DataTableSummaryRowComponent } from './components/body/summary/summary-row.component';\n\n@NgModule({\n imports: [CommonModule],\n providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],\n declarations: [\n DataTableFooterTemplateDirective,\n VisibilityDirective,\n DraggableDirective,\n ResizeableDirective,\n OrderableDirective,\n LongPressDirective,\n ScrollerComponent,\n DatatableComponent,\n DataTableColumnDirective,\n DataTableHeaderComponent,\n DataTableHeaderCellComponent,\n DataTableBodyComponent,\n DataTableFooterComponent,\n DataTablePagerComponent,\n ProgressBarComponent,\n DataTableBodyRowComponent,\n DataTableRowWrapperComponent,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableBodyCellComponent,\n DataTableSelectionComponent,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnCellTreeToggle,\n DatatableFooterDirective,\n DatatableGroupHeaderTemplateDirective,\n DataTableSummaryRowComponent\n ],\n exports: [\n DatatableComponent,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnCellTreeToggle,\n DataTableFooterTemplateDirective,\n DatatableFooterDirective,\n DataTablePagerComponent,\n DatatableGroupHeaderTemplateDirective\n ]\n})\nexport class NgxDatatableModule {\n /**\n * Configure global configuration via INgxDatatableConfig\n * @param configuration\n */\n static forRoot(configuration: INgxDatatableConfig): ModuleWithProviders<NgxDatatableModule> {\n return {\n ngModule: NgxDatatableModule,\n providers: [{ provide: 'configuration', useValue: configuration }]\n };\n }\n}\n\n/**\n * Interface definition for INgxDatatableConfig global configuration\n */\nexport interface INgxDatatableConfig {\n messages: {\n emptyMessage: string; // Message to show when array is presented, but contains no values\n totalMessage: string; // Footer total message\n selectedMessage: string; // Footer selected message\n };\n}\n","export enum ClickType {\n single = 'single',\n double = 'double'\n}\n","if (typeof document !== 'undefined' && !document.elementsFromPoint) {\n document.elementsFromPoint = elementsFromPoint;\n}\n\n/*tslint:disable*/\n/**\n * Polyfill for `elementsFromPoint`\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint\n * https://gist.github.com/iddan/54d5d9e58311b0495a91bf06de661380\n * https://gist.github.com/oslego/7265412\n */\nexport function elementsFromPoint(x: number, y: number) {\n const elements = [];\n const previousPointerEvents = [];\n let current: any; // TODO: window.getComputedStyle should be used with inferred type (Element)\n let i;\n let d;\n\n //if (document === undefined) return elements;\n\n // get all elements via elementFromPoint, and remove them from hit-testing in order\n while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) {\n // push the element and its current style\n elements.push(current);\n previousPointerEvents.push({\n value: current.style.getPropertyValue('pointer-events'),\n priority: current.style.getPropertyPriority('pointer-events')\n });\n\n // add \"pointer-events: none\", to get to the underlying element\n current.style.setProperty('pointer-events', 'none', 'important');\n }\n\n // restore the previous pointer-events values\n for (i = previousPointerEvents.length; (d = previousPointerEvents[--i]); ) {\n elements[i].style.setProperty('pointer-events', d.value ? d.value : '', d.priority);\n }\n\n // return our results\n return elements;\n}\n/*tslint:enable*/\n","/*\n * Public API Surface of ngx-datatable\n */\n\n// components\nexport * from './lib/ngx-datatable.module';\nexport * from './lib/components/datatable.component';\nexport * from './lib/components/header/header.component';\nexport * from './lib/components/header/header-cell.component';\nexport * from './lib/components/body/body.component';\nexport * from './lib/components/body/body-cell.component';\nexport * from './lib/components/body/body-row.component';\nexport * from './lib/components/body/progress-bar.component';\nexport * from './lib/components/body/scroller.component';\nexport * from './lib/components/body/body-row-wrapper.component';\nexport * from './lib/components/body/selection.component';\nexport * from './lib/components/body/body-group-header.directive';\nexport * from './lib/components/body/body-group-header-template.directive';\nexport * from './lib/components/body/summary/summary-row.component';\nexport * from './lib/components/footer/footer.component';\nexport * from './lib/components/footer/pager.component';\nexport * from './lib/components/footer/footer.directive';\nexport * from './lib/components/footer/footer-template.directive';\nexport * from './lib/components/columns/column.directive';\nexport * from './lib/components/columns/column-header.directive';\nexport * from './lib/components/columns/column-cell.directive';\nexport * from './lib/components/columns/tree.directive';\nexport * from './lib/components/row-detail/row-detail.directive';\nexport * from './lib/components/row-detail/row-detail-template.directive';\n\n// directives\nexport * from './lib/directives/draggable.directive';\nexport * from './lib/directives/long-press.directive';\nexport * from './lib/directives/orderable.directive';\nexport * from './lib/directives/resizeable.directive';\nexport * from './lib/directives/visibility.directive';\n\n// services\nexport * from './lib/services/scrollbar-helper.service';\nexport * from './lib/services/dimensions-helper.service';\nexport * from './lib/services/column-changes.service';\n\n// types\nexport * from './lib/types/column-mode.type';\nexport * from './lib/types/sort.type';\nexport * from './lib/types/sort-direction.type';\nexport * from './lib/types/selection.type';\nexport * from './lib/types/click.type';\nexport * from './lib/types/table-column.type';\nexport * from './lib/types/sort-prop-dir.type';\nexport * from './lib/types/contextmenu.type';\n\n// utils\nexport * from './lib/utils/id';\nexport * from './lib/utils/column';\nexport * from './lib/utils/column-prop-getters';\nexport * from './lib/utils/camel-case';\nexport * from './lib/utils/keys';\nexport * from './lib/utils/math';\nexport * from './lib/utils/prefixes';\nexport * from './lib/utils/selection';\nexport * from './lib/utils/translate';\nexport * from './lib/utils/throttle';\nexport * from './lib/utils/sort';\nexport * from './lib/utils/row-height-cache';\nexport * from './lib/utils/column-helper';\nexport * from './lib/utils/elm-from-point';\nexport * from './lib/utils/tree';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Injectable","Inject","DOCUMENT","Subject","Directive","TemplateRef","EventEmitter","ElementRef","NgZone","HostBinding","Output","fromEvent","takeUntil","Input","Renderer2","HostListener","KeyValueDiffers","ContentChildren","Component","ChangeDetectionStrategy","ContentChild","ColumnMode","SelectionType","SortType","ContextmenuType","ChangeDetectorRef","ViewChild","SortDirection","BehaviorSubject","ViewEncapsulation","SkipSelf","Optional","Keys","ViewContainerRef","NgModule","CommonModule","ClickType"],"mappings":"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"}