@progress/kendo-angular-grid 21.4.1-develop.1 → 22.0.0-develop.1

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 (354) hide show
  1. package/column-menu/column-menu-item-base.d.ts +1 -1
  2. package/columns/column-base.d.ts +1 -1
  3. package/common/toolbar-tool-base.directive.d.ts +1 -1
  4. package/editing/toolbar-editing-tool-base.directive.d.ts +1 -1
  5. package/editing-directives/editing-directive-base.d.ts +1 -1
  6. package/editing-directives/row-editing-directive-base.d.ts +1 -1
  7. package/fesm2022/progress-kendo-angular-grid.mjs +666 -666
  8. package/filtering/base-filter-cell.component.d.ts +1 -1
  9. package/filtering/boolean-filter.component.d.ts +1 -1
  10. package/filtering/date-filter.component.d.ts +1 -1
  11. package/filtering/filter-host.directive.d.ts +1 -1
  12. package/filtering/filter-input-wrapper.component.d.ts +1 -1
  13. package/filtering/numeric-filter.component.d.ts +1 -1
  14. package/filtering/operators/filter-operator.base.d.ts +1 -1
  15. package/filtering/string-filter.component.d.ts +1 -1
  16. package/localization/messages.d.ts +1 -1
  17. package/package.json +28 -36
  18. package/schematics/ngAdd/index.js +7 -7
  19. package/selection/selection-default.d.ts +1 -1
  20. package/esm2022/adaptiveness/adaptive-mode.mjs +0 -5
  21. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +0 -1270
  22. package/esm2022/aggregates/aggregate-types.mjs +0 -5
  23. package/esm2022/aggregates/selection-aggregate.service.mjs +0 -200
  24. package/esm2022/aggregates/status-bar-template.directive.mjs +0 -30
  25. package/esm2022/aggregates/status-bar.component.mjs +0 -70
  26. package/esm2022/column-menu/column-chooser-content.component.mjs +0 -318
  27. package/esm2022/column-menu/column-chooser.component.mjs +0 -230
  28. package/esm2022/column-menu/column-list-kb-nav.service.mjs +0 -40
  29. package/esm2022/column-menu/column-list.component.mjs +0 -478
  30. package/esm2022/column-menu/column-locked-change-event.mjs +0 -19
  31. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +0 -89
  32. package/esm2022/column-menu/column-menu-autosize.component.mjs +0 -97
  33. package/esm2022/column-menu/column-menu-chooser.component.mjs +0 -151
  34. package/esm2022/column-menu/column-menu-container.component.mjs +0 -67
  35. package/esm2022/column-menu/column-menu-expandable-item.interface.mjs +0 -5
  36. package/esm2022/column-menu/column-menu-filter.component.mjs +0 -152
  37. package/esm2022/column-menu/column-menu-item-base.mjs +0 -44
  38. package/esm2022/column-menu/column-menu-item-content-template.directive.mjs +0 -45
  39. package/esm2022/column-menu/column-menu-item.component.mjs +0 -514
  40. package/esm2022/column-menu/column-menu-item.directive.mjs +0 -164
  41. package/esm2022/column-menu/column-menu-lock.component.mjs +0 -118
  42. package/esm2022/column-menu/column-menu-position.component.mjs +0 -196
  43. package/esm2022/column-menu/column-menu-settings.interface.mjs +0 -5
  44. package/esm2022/column-menu/column-menu-sort.component.mjs +0 -119
  45. package/esm2022/column-menu/column-menu-stick.component.mjs +0 -120
  46. package/esm2022/column-menu/column-menu-template.directive.mjs +0 -47
  47. package/esm2022/column-menu/column-menu.component.mjs +0 -839
  48. package/esm2022/column-menu/column-menu.service.mjs +0 -71
  49. package/esm2022/column-menu/column-sticky-change-event.mjs +0 -19
  50. package/esm2022/column-menu/column-visibility-change-event.mjs +0 -19
  51. package/esm2022/column-menu/utils.mjs +0 -52
  52. package/esm2022/column-resizing/column-handle.directive.mjs +0 -499
  53. package/esm2022/column-resizing/column-resize.interface.mjs +0 -5
  54. package/esm2022/column-resizing/column-resizing.service.mjs +0 -214
  55. package/esm2022/column-resizing/table.directive.mjs +0 -141
  56. package/esm2022/columns/cell-rowspan.mjs +0 -5
  57. package/esm2022/columns/checkbox-column.component.mjs +0 -106
  58. package/esm2022/columns/column-base.mjs +0 -432
  59. package/esm2022/columns/column-common.mjs +0 -73
  60. package/esm2022/columns/column-group.component.mjs +0 -135
  61. package/esm2022/columns/column-list.mjs +0 -94
  62. package/esm2022/columns/column.component.mjs +0 -198
  63. package/esm2022/columns/columns-container.mjs +0 -101
  64. package/esm2022/columns/command-column.component.mjs +0 -80
  65. package/esm2022/columns/reorder-column.component.mjs +0 -114
  66. package/esm2022/columns/sort-settings.mjs +0 -18
  67. package/esm2022/columns/span-column.component.mjs +0 -195
  68. package/esm2022/common/adaptiveness.service.mjs +0 -72
  69. package/esm2022/common/cell-click-event-args.interface.mjs +0 -5
  70. package/esm2022/common/clipboard-types.mjs +0 -5
  71. package/esm2022/common/clipboard.directive.mjs +0 -197
  72. package/esm2022/common/clipboard.service.mjs +0 -221
  73. package/esm2022/common/column-info.service.mjs +0 -92
  74. package/esm2022/common/create-form-group.mjs +0 -5
  75. package/esm2022/common/data-layout-mode.mjs +0 -5
  76. package/esm2022/common/default-track-by.mjs +0 -13
  77. package/esm2022/common/dom-events.service.mjs +0 -27
  78. package/esm2022/common/error-messages.mjs +0 -64
  79. package/esm2022/common/event-emitter.mjs +0 -39
  80. package/esm2022/common/fetch-data-callback.mjs +0 -5
  81. package/esm2022/common/field-datatype.mjs +0 -5
  82. package/esm2022/common/filter-descriptor-differ.mjs +0 -69
  83. package/esm2022/common/filter-operator.interface.mjs +0 -5
  84. package/esm2022/common/grid-col-size.mjs +0 -5
  85. package/esm2022/common/id.service.mjs +0 -59
  86. package/esm2022/common/pager-settings.mjs +0 -20
  87. package/esm2022/common/preventable-event.mjs +0 -24
  88. package/esm2022/common/provider.service.mjs +0 -42
  89. package/esm2022/common/remove-confirmation.mjs +0 -5
  90. package/esm2022/common/resizable-settings.mjs +0 -9
  91. package/esm2022/common/single-popup.service.mjs +0 -158
  92. package/esm2022/common/size-options.mjs +0 -5
  93. package/esm2022/common/sort.service.mjs +0 -14
  94. package/esm2022/common/toolbar-tool-base.directive.mjs +0 -85
  95. package/esm2022/constants.mjs +0 -16
  96. package/esm2022/data/change-event-args.interface.mjs +0 -5
  97. package/esm2022/data/change-notification.service.mjs +0 -30
  98. package/esm2022/data/data-item.interface.mjs +0 -5
  99. package/esm2022/data/data-mapping.service.mjs +0 -136
  100. package/esm2022/data/data.collection.mjs +0 -87
  101. package/esm2022/data/data.iterators.mjs +0 -221
  102. package/esm2022/data/grid-item.interface.mjs +0 -5
  103. package/esm2022/data/group-footer-item.interface.mjs +0 -5
  104. package/esm2022/data/group-item.interface.mjs +0 -5
  105. package/esm2022/databinding.directive.mjs +0 -233
  106. package/esm2022/directives.mjs +0 -504
  107. package/esm2022/dragdrop/column-reorder-config.mjs +0 -5
  108. package/esm2022/dragdrop/column-reorder-event.mjs +0 -31
  109. package/esm2022/dragdrop/column-reorder.service.mjs +0 -20
  110. package/esm2022/dragdrop/common.mjs +0 -69
  111. package/esm2022/dragdrop/context-types.mjs +0 -5
  112. package/esm2022/dragdrop/drag-and-drop.service.mjs +0 -65
  113. package/esm2022/dragdrop/drag-hint.service.mjs +0 -137
  114. package/esm2022/dragdrop/draggable-column.directive.mjs +0 -137
  115. package/esm2022/dragdrop/drop-cue.service.mjs +0 -46
  116. package/esm2022/dragdrop/drop-target.directive.mjs +0 -71
  117. package/esm2022/editing/add-command-tool.directive.mjs +0 -59
  118. package/esm2022/editing/add-command.directive.mjs +0 -93
  119. package/esm2022/editing/add-event-args.interface.mjs +0 -5
  120. package/esm2022/editing/cancel-command-tool.directive.mjs +0 -64
  121. package/esm2022/editing/cancel-command.directive.mjs +0 -127
  122. package/esm2022/editing/cancel-event-args.interface.mjs +0 -5
  123. package/esm2022/editing/cell-close-event.mjs +0 -38
  124. package/esm2022/editing/edit-command-tool.directive.mjs +0 -60
  125. package/esm2022/editing/edit-command.directive.mjs +0 -124
  126. package/esm2022/editing/edit-event-args.interface.mjs +0 -5
  127. package/esm2022/editing/edit-row-options.interface.mjs +0 -5
  128. package/esm2022/editing/edit-template.directive.mjs +0 -43
  129. package/esm2022/editing/edit.service.mjs +0 -182
  130. package/esm2022/editing/form/dialog-form.component.mjs +0 -102
  131. package/esm2022/editing/form/form-formfield.component.mjs +0 -188
  132. package/esm2022/editing/form/form.component.mjs +0 -169
  133. package/esm2022/editing/form/index.mjs +0 -8
  134. package/esm2022/editing/form/models.mjs +0 -5
  135. package/esm2022/editing/local-data-changes.service.mjs +0 -18
  136. package/esm2022/editing/remove-command-tool.directive.mjs +0 -61
  137. package/esm2022/editing/remove-command.directive.mjs +0 -123
  138. package/esm2022/editing/remove-event-args.interface.mjs +0 -5
  139. package/esm2022/editing/save-command-tool.directive.mjs +0 -65
  140. package/esm2022/editing/save-command.directive.mjs +0 -126
  141. package/esm2022/editing/save-event-args.interface.mjs +0 -5
  142. package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +0 -99
  143. package/esm2022/editing-directives/create-form-group-args.interface.mjs +0 -5
  144. package/esm2022/editing-directives/edit-service.interface.mjs +0 -5
  145. package/esm2022/editing-directives/editing-directive-base.mjs +0 -167
  146. package/esm2022/editing-directives/external-editing.directive.mjs +0 -151
  147. package/esm2022/editing-directives/in-cell-editing.directive.mjs +0 -97
  148. package/esm2022/editing-directives/local-edit.service.mjs +0 -64
  149. package/esm2022/editing-directives/local-row-edit.service.mjs +0 -13
  150. package/esm2022/editing-directives/reactive-editing.directive.mjs +0 -60
  151. package/esm2022/editing-directives/row-editing-directive-base.mjs +0 -53
  152. package/esm2022/editing-directives/template-editing.directive.mjs +0 -72
  153. package/esm2022/editing-directives/utils.mjs +0 -18
  154. package/esm2022/excel/excel-command-tool.directive.mjs +0 -58
  155. package/esm2022/excel/excel-command.directive.mjs +0 -98
  156. package/esm2022/excel/excel-export-event.mjs +0 -18
  157. package/esm2022/excel/excel.component.mjs +0 -223
  158. package/esm2022/excel/excel.module.mjs +0 -45
  159. package/esm2022/excel/excel.service.mjs +0 -29
  160. package/esm2022/filtering/base-filter-cell.component.mjs +0 -174
  161. package/esm2022/filtering/boolean-filter.component.mjs +0 -83
  162. package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +0 -114
  163. package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +0 -113
  164. package/esm2022/filtering/cell/date-filter-cell.component.mjs +0 -141
  165. package/esm2022/filtering/cell/filter-cell-component.factory.mjs +0 -19
  166. package/esm2022/filtering/cell/filter-cell-host.directive.mjs +0 -33
  167. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +0 -242
  168. package/esm2022/filtering/cell/filter-cell-template.directive.mjs +0 -46
  169. package/esm2022/filtering/cell/filter-cell-wrapper.component.mjs +0 -74
  170. package/esm2022/filtering/cell/filter-cell.component.mjs +0 -91
  171. package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +0 -155
  172. package/esm2022/filtering/cell/string-filter-cell.component.mjs +0 -127
  173. package/esm2022/filtering/date-filter.component.mjs +0 -172
  174. package/esm2022/filtering/filter-component.interface.mjs +0 -5
  175. package/esm2022/filtering/filter-host.directive.mjs +0 -58
  176. package/esm2022/filtering/filter-input-wrapper.component.mjs +0 -119
  177. package/esm2022/filtering/filter-input.directive.mjs +0 -123
  178. package/esm2022/filtering/filter-row.component.mjs +0 -131
  179. package/esm2022/filtering/filter.service.mjs +0 -44
  180. package/esm2022/filtering/filterable.mjs +0 -16
  181. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +0 -167
  182. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +0 -179
  183. package/esm2022/filtering/menu/date-filter-menu.component.mjs +0 -212
  184. package/esm2022/filtering/menu/filter-menu-component.factory.mjs +0 -19
  185. package/esm2022/filtering/menu/filter-menu-container.component.mjs +0 -418
  186. package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.mjs +0 -44
  187. package/esm2022/filtering/menu/filter-menu-host.directive.mjs +0 -46
  188. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +0 -158
  189. package/esm2022/filtering/menu/filter-menu-template.directive.mjs +0 -48
  190. package/esm2022/filtering/menu/filter-menu.component.mjs +0 -221
  191. package/esm2022/filtering/menu/filter-radio-button.directive.mjs +0 -34
  192. package/esm2022/filtering/menu/menu-tabbing.service.mjs +0 -22
  193. package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +0 -184
  194. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +0 -230
  195. package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +0 -107
  196. package/esm2022/filtering/menu/string-filter-menu.component.mjs +0 -198
  197. package/esm2022/filtering/multicheckbox-filter.component.mjs +0 -324
  198. package/esm2022/filtering/numeric-filter.component.mjs +0 -145
  199. package/esm2022/filtering/operators/after-eq-filter-operator.component.mjs +0 -72
  200. package/esm2022/filtering/operators/after-filter-operator.component.mjs +0 -72
  201. package/esm2022/filtering/operators/before-eq-filter-operator.component.mjs +0 -72
  202. package/esm2022/filtering/operators/before-filter-operator.component.mjs +0 -72
  203. package/esm2022/filtering/operators/contains-filter-operator.component.mjs +0 -63
  204. package/esm2022/filtering/operators/ends-with-filter-operator.component.mjs +0 -63
  205. package/esm2022/filtering/operators/eq-filter-operator.component.mjs +0 -111
  206. package/esm2022/filtering/operators/filter-operator.base.mjs +0 -101
  207. package/esm2022/filtering/operators/gt-filter-operator.component.mjs +0 -63
  208. package/esm2022/filtering/operators/gte-filter-operator.component.mjs +0 -63
  209. package/esm2022/filtering/operators/is-empty-filter-operator.component.mjs +0 -63
  210. package/esm2022/filtering/operators/is-not-empty-filter-operator.component.mjs +0 -63
  211. package/esm2022/filtering/operators/is-not-null-filter-operator.component.mjs +0 -110
  212. package/esm2022/filtering/operators/isnull-filter-operator.component.mjs +0 -110
  213. package/esm2022/filtering/operators/lt-filter-operator.component.mjs +0 -63
  214. package/esm2022/filtering/operators/lte-filter-operator.component.mjs +0 -63
  215. package/esm2022/filtering/operators/neq-filter-operator.component.mjs +0 -110
  216. package/esm2022/filtering/operators/not-contains-filter-operator.component.mjs +0 -63
  217. package/esm2022/filtering/operators/starts-with-filter-operator.component.mjs +0 -63
  218. package/esm2022/filtering/string-filter.component.mjs +0 -90
  219. package/esm2022/grid.component.mjs +0 -4598
  220. package/esm2022/grid.module.mjs +0 -241
  221. package/esm2022/grouping/group-footer-template.directive.mjs +0 -44
  222. package/esm2022/grouping/group-header-column-template.directive.mjs +0 -45
  223. package/esm2022/grouping/group-header-template.directive.mjs +0 -46
  224. package/esm2022/grouping/group-header.component.mjs +0 -351
  225. package/esm2022/grouping/group-info.service.mjs +0 -43
  226. package/esm2022/grouping/group-key.interface.mjs +0 -5
  227. package/esm2022/grouping/group-panel.component.mjs +0 -487
  228. package/esm2022/grouping/group-rows-args.interface.mjs +0 -5
  229. package/esm2022/grouping/group-settings.mjs +0 -5
  230. package/esm2022/grouping/groups.service.mjs +0 -69
  231. package/esm2022/grouping/utils.mjs +0 -14
  232. package/esm2022/highlight/highlight-item.mjs +0 -5
  233. package/esm2022/highlight/highlight.directive.mjs +0 -132
  234. package/esm2022/index.mjs +0 -221
  235. package/esm2022/layout/browser-support.service.mjs +0 -94
  236. package/esm2022/layout/resizable.directive.mjs +0 -83
  237. package/esm2022/layout/resize.service.mjs +0 -29
  238. package/esm2022/layout/responsive.service.mjs +0 -34
  239. package/esm2022/layout/row-sync.mjs +0 -47
  240. package/esm2022/layout/sizing-options.service.mjs +0 -18
  241. package/esm2022/localization/custom-messages.component.mjs +0 -54
  242. package/esm2022/localization/localized-messages.directive.mjs +0 -39
  243. package/esm2022/localization/messages.mjs +0 -895
  244. package/esm2022/navigation/default-focusable-element.mjs +0 -50
  245. package/esm2022/navigation/focus-group.mjs +0 -73
  246. package/esm2022/navigation/focus-root.mjs +0 -50
  247. package/esm2022/navigation/focusable-element.interface.mjs +0 -5
  248. package/esm2022/navigation/focusable.directive.mjs +0 -150
  249. package/esm2022/navigation/grid-focusable-element.mjs +0 -28
  250. package/esm2022/navigation/item-map.mjs +0 -59
  251. package/esm2022/navigation/logical-cell.directive.mjs +0 -224
  252. package/esm2022/navigation/logical-cell.interface.mjs +0 -5
  253. package/esm2022/navigation/logical-row.directive.mjs +0 -131
  254. package/esm2022/navigation/logical-row.interface.mjs +0 -5
  255. package/esm2022/navigation/navigable-settings.mjs +0 -5
  256. package/esm2022/navigation/navigation-cell.interface.mjs +0 -5
  257. package/esm2022/navigation/navigation-change.interface.mjs +0 -5
  258. package/esm2022/navigation/navigation-cursor.mjs +0 -224
  259. package/esm2022/navigation/navigation-metadata.mjs +0 -35
  260. package/esm2022/navigation/navigation-mode.mjs +0 -5
  261. package/esm2022/navigation/navigation-model.mjs +0 -138
  262. package/esm2022/navigation/navigation-row.interface.mjs +0 -5
  263. package/esm2022/navigation/navigation.service.mjs +0 -998
  264. package/esm2022/navigation/toolbar-tool-name.mjs +0 -18
  265. package/esm2022/package-metadata.mjs +0 -16
  266. package/esm2022/pdf/export-element.mjs +0 -135
  267. package/esm2022/pdf/grid-query.mjs +0 -45
  268. package/esm2022/pdf/pdf-command-tool.directive.mjs +0 -60
  269. package/esm2022/pdf/pdf-command.directive.mjs +0 -98
  270. package/esm2022/pdf/pdf-export-event.mjs +0 -16
  271. package/esm2022/pdf/pdf-margin.component.mjs +0 -38
  272. package/esm2022/pdf/pdf-margin.interface.mjs +0 -5
  273. package/esm2022/pdf/pdf-template.directive.mjs +0 -43
  274. package/esm2022/pdf/pdf.component.mjs +0 -331
  275. package/esm2022/pdf/pdf.module.mjs +0 -47
  276. package/esm2022/pdf/pdf.service.mjs +0 -42
  277. package/esm2022/progress-kendo-angular-grid.mjs +0 -8
  278. package/esm2022/rendering/cell-loading.template.directive.mjs +0 -39
  279. package/esm2022/rendering/cell-template.directive.mjs +0 -44
  280. package/esm2022/rendering/cell.component.mjs +0 -717
  281. package/esm2022/rendering/common/cell-context.mjs +0 -13
  282. package/esm2022/rendering/common/col-group.component.mjs +0 -98
  283. package/esm2022/rendering/common/dom-queries.mjs +0 -162
  284. package/esm2022/rendering/common/field-accessor.pipe.mjs +0 -48
  285. package/esm2022/rendering/common/format.pipe.mjs +0 -37
  286. package/esm2022/rendering/common/loading.component.mjs +0 -60
  287. package/esm2022/rendering/common/row-args.mjs +0 -5
  288. package/esm2022/rendering/common/row-class.mjs +0 -5
  289. package/esm2022/rendering/common/spacer.component.mjs +0 -62
  290. package/esm2022/rendering/constants.mjs +0 -20
  291. package/esm2022/rendering/details/detail-collapse-event.mjs +0 -27
  292. package/esm2022/rendering/details/detail-expand-event.mjs +0 -27
  293. package/esm2022/rendering/details/detail-template.directive.mjs +0 -61
  294. package/esm2022/rendering/details/details.service.mjs +0 -56
  295. package/esm2022/rendering/details-expand.directive.mjs +0 -136
  296. package/esm2022/rendering/footer/footer-template.directive.mjs +0 -48
  297. package/esm2022/rendering/footer/footer.component.mjs +0 -266
  298. package/esm2022/rendering/grid-table.directive.mjs +0 -52
  299. package/esm2022/rendering/groups-expand.directive.mjs +0 -149
  300. package/esm2022/rendering/header/header-template.directive.mjs +0 -45
  301. package/esm2022/rendering/header/header.component.mjs +0 -1055
  302. package/esm2022/rendering/list.component.mjs +0 -1176
  303. package/esm2022/rendering/loading-template.directive.mjs +0 -38
  304. package/esm2022/rendering/no-records-template.directive.mjs +0 -38
  305. package/esm2022/rendering/rowspan.service.mjs +0 -24
  306. package/esm2022/rendering/table-body.component.mjs +0 -1250
  307. package/esm2022/rendering/toolbar/toolbar-focusable.directive.mjs +0 -83
  308. package/esm2022/rendering/toolbar/toolbar-navigation.service.mjs +0 -58
  309. package/esm2022/rendering/toolbar/toolbar-position.mjs +0 -5
  310. package/esm2022/rendering/toolbar/toolbar-template.directive.mjs +0 -55
  311. package/esm2022/rendering/toolbar/toolbar.component.mjs +0 -159
  312. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +0 -272
  313. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-request-response.service.mjs +0 -624
  314. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-tool.directive.mjs +0 -273
  315. package/esm2022/rendering/toolbar/tools/ai-assistant/models.mjs +0 -43
  316. package/esm2022/rendering/toolbar/tools/ai-assistant/utils.mjs +0 -92
  317. package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +0 -238
  318. package/esm2022/rendering/toolbar/tools/filter-command-tool.directive.mjs +0 -219
  319. package/esm2022/rendering/toolbar/tools/filter-tool-wrapper.component.mjs +0 -151
  320. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +0 -223
  321. package/esm2022/rendering/toolbar/tools/group-command-tool.directive.mjs +0 -208
  322. package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +0 -451
  323. package/esm2022/rendering/toolbar/tools/select-all-command-tool.directive.mjs +0 -93
  324. package/esm2022/rendering/toolbar/tools/sort-command-tool.directive.mjs +0 -222
  325. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +0 -245
  326. package/esm2022/row-reordering/drag-handle-template.directive.mjs +0 -44
  327. package/esm2022/row-reordering/drag-hint-template.directive.mjs +0 -42
  328. package/esm2022/row-reordering/row-reorder.service.mjs +0 -280
  329. package/esm2022/row-reordering/types.mjs +0 -5
  330. package/esm2022/row-reordering/utils.mjs +0 -88
  331. package/esm2022/scrolling/content-scroll-event.mjs +0 -5
  332. package/esm2022/scrolling/row-height.service.mjs +0 -55
  333. package/esm2022/scrolling/scroll-bottom-event.mjs +0 -5
  334. package/esm2022/scrolling/scroll-request.service.mjs +0 -24
  335. package/esm2022/scrolling/scroll-sync.service.mjs +0 -80
  336. package/esm2022/scrolling/scroller.service.mjs +0 -254
  337. package/esm2022/scrolling/scrollmode.mjs +0 -5
  338. package/esm2022/scrolling/suspend.service.mjs +0 -17
  339. package/esm2022/selection/cell-selection.service.mjs +0 -349
  340. package/esm2022/selection/marquee.directive.mjs +0 -188
  341. package/esm2022/selection/pair-set.mjs +0 -158
  342. package/esm2022/selection/selectall-checkbox.directive.mjs +0 -143
  343. package/esm2022/selection/selection-checkbox.directive.mjs +0 -132
  344. package/esm2022/selection/selection-default.mjs +0 -208
  345. package/esm2022/selection/selection.directive.mjs +0 -53
  346. package/esm2022/selection/selection.service.mjs +0 -466
  347. package/esm2022/selection/types.mjs +0 -5
  348. package/esm2022/state-management/grid-state.models.mjs +0 -26
  349. package/esm2022/state-management/redo-command-tool.mjs +0 -74
  350. package/esm2022/state-management/undo-command-tool.mjs +0 -74
  351. package/esm2022/state-management/undo-redo.directive.mjs +0 -249
  352. package/esm2022/state-management/undo-redo.service.mjs +0 -21
  353. package/esm2022/state-management/undo-redo.stack.mjs +0 -238
  354. package/esm2022/utils.mjs +0 -216
@@ -1,1250 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { nodesToArray } from './../utils';
6
- import { Component, Input, NgZone, Renderer2, ElementRef, TemplateRef, HostBinding } from '@angular/core';
7
- import { DetailTemplateDirective } from './details/detail-template.directive';
8
- import { GroupsService } from '../grouping/groups.service';
9
- import { ChangeNotificationService } from '../data/change-notification.service';
10
- import { isChanged, isPresent } from '../utils';
11
- import { NoRecordsTemplateDirective } from './no-records-template.directive';
12
- import { EditService } from '../editing/edit.service';
13
- import { columnsSpan, columnsToRender } from "../columns/column-common";
14
- import { closest, closestInScope, findElement, hasClasses, isFocusableWithTabKey, matchesClasses, matchesNodeName } from './common/dom-queries';
15
- import { DomEventsService } from '../common/dom-events.service';
16
- import { SelectionService } from "../selection/selection.service";
17
- import { ColumnInfoService } from "../common/column-info.service";
18
- import { hasFilterRow } from '../filtering/filterable';
19
- import { NavigationService } from '../navigation/navigation.service';
20
- import { isDocumentAvailable, Keys, ResizeSensorComponent, TemplateContextDirective } from '@progress/kendo-angular-common';
21
- import { defaultTrackBy } from '../common/default-track-by';
22
- import { DetailsService } from './details/details.service';
23
- import { NON_DATA_CELL_CLASSES, NON_DATA_ROW_CLASSES, IGNORE_TARGET_CLASSSES, IGNORE_CONTAINER_CLASSES } from './constants';
24
- import { CellSelectionService } from '../selection/cell-selection.service';
25
- import { minusIcon, plusIcon } from '@progress/kendo-svg-icons';
26
- import { ContextService } from '../common/provider.service';
27
- import { ColumnsContainer } from '../columns/columns-container';
28
- import { SpanColumnComponent } from '../columns/span-column.component';
29
- import { IconWrapperComponent } from '@progress/kendo-angular-icons';
30
- import { GroupHeaderComponent } from '../grouping/group-header.component';
31
- import { CellComponent } from './cell.component';
32
- import { LogicalCellDirective } from '../navigation/logical-cell.directive';
33
- import { LogicalRowDirective } from '../navigation/logical-row.directive';
34
- import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';
35
- import * as i0 from "@angular/core";
36
- import * as i1 from "./details/details.service";
37
- import * as i2 from "../grouping/groups.service";
38
- import * as i3 from "../data/change-notification.service";
39
- import * as i4 from "../editing/edit.service";
40
- import * as i5 from "../common/provider.service";
41
- import * as i6 from "../common/dom-events.service";
42
- import * as i7 from "../selection/selection.service";
43
- import * as i8 from "../selection/cell-selection.service";
44
- import * as i9 from "../common/column-info.service";
45
- import * as i10 from "../navigation/navigation.service";
46
- const columnCellIndex = (cell, cells, isStacked) => {
47
- let cellIndex = 0;
48
- for (let idx = 0; idx < cells.length; idx++) {
49
- const isChildCell = cell.parentNode === cells[idx];
50
- const isActualCell = cell === cells[idx];
51
- const matches = isActualCell || (isStacked && isChildCell);
52
- if (matches) {
53
- return cellIndex;
54
- }
55
- if (!hasClasses(cells[idx], 'k-hierarchy-cell k-group-cell')) {
56
- cellIndex++;
57
- }
58
- }
59
- };
60
- /**
61
- * @hidden
62
- */
63
- export class TableBodyComponent {
64
- detailsService;
65
- groupsService;
66
- changeNotification;
67
- editService;
68
- ctx;
69
- ngZone;
70
- renderer;
71
- element;
72
- domEvents;
73
- selectionService;
74
- cellSelectionService;
75
- columnInfoService;
76
- navigationService;
77
- columns = [];
78
- allColumns;
79
- groups = [];
80
- detailTemplate;
81
- noRecordsTemplate;
82
- rowsToRender;
83
- skip = 0;
84
- selectable;
85
- filterable;
86
- noRecordsText;
87
- isLocked = false;
88
- isLoading;
89
- isVirtual;
90
- cellLoadingTemplate;
91
- skipGroupDecoration = false;
92
- lockedColumnsCount = 0;
93
- totalColumnsCount = 0;
94
- virtualColumns;
95
- trackBy = defaultTrackBy;
96
- rowSticky;
97
- totalColumns;
98
- rowClass = () => null;
99
- rowHeight;
100
- detailRowHeight;
101
- hostClass = true;
102
- groupHeaderSlaveCellsCount;
103
- groupHeaderColumns;
104
- clickSubscription;
105
- touchSubscription;
106
- l10nSubscription;
107
- cellKeydownSubscription;
108
- clickTimeout;
109
- minusIcon = minusIcon;
110
- plusIcon = plusIcon;
111
- constructor(detailsService, groupsService, changeNotification, editService, ctx, ngZone, renderer, element, domEvents, selectionService, cellSelectionService, columnInfoService, navigationService) {
112
- this.detailsService = detailsService;
113
- this.groupsService = groupsService;
114
- this.changeNotification = changeNotification;
115
- this.editService = editService;
116
- this.ctx = ctx;
117
- this.ngZone = ngZone;
118
- this.renderer = renderer;
119
- this.element = element;
120
- this.domEvents = domEvents;
121
- this.selectionService = selectionService;
122
- this.cellSelectionService = cellSelectionService;
123
- this.columnInfoService = columnInfoService;
124
- this.navigationService = navigationService;
125
- this.noRecordsText = this.ctx.localization.get('noRecords');
126
- this.cellKeydownSubscription = this.navigationService.cellKeydown.subscribe((args) => this.cellKeydownHandler(args));
127
- this.trackByWrapper = this.trackByWrapper.bind(this);
128
- this.trackByColumns = this.trackByColumns.bind(this);
129
- }
130
- get newDataItem() {
131
- return this.editService.newDataItem;
132
- }
133
- // Number of unlocked columns in the next table, if any
134
- unlockedColumnsCount(item) {
135
- const allColumns = this.allColumns || this.columns;
136
- let allColumnsCount = allColumns.length;
137
- allColumns.forEach(column => {
138
- if (column.isSpanColumn) {
139
- allColumnsCount += column.colspan - 1;
140
- }
141
- });
142
- const contentColumnsCount = this.totalColumnsCount - (this.isStackedMode ? 0 : this.lockedColumnsCount) - allColumnsCount;
143
- const headerFooterColumnsCount = this.totalColumnsCount - (this.isStackedMode ? 0 : this.lockedColumnsCount) - allColumns.length;
144
- return item && item.type === 'data' ? contentColumnsCount : headerFooterColumnsCount;
145
- }
146
- isAriaSelected(item, column) {
147
- return this.cellSelectionService.isCellSelected(item, column) ||
148
- this.isRowSelected(item) ? 'true' : 'false';
149
- }
150
- toggleRow(index, dataItem) {
151
- this.detailsService.toggleRow(index, dataItem);
152
- return false;
153
- }
154
- detailButtonIconName(viewItem) {
155
- return viewItem.isExpanded ? 'minus' : 'plus';
156
- }
157
- detailButtonSvgIcon(viewItem) {
158
- return viewItem.isExpanded ? this.minusIcon : this.plusIcon;
159
- }
160
- detailButtonTitle(viewItem) {
161
- const messageKey = viewItem.isExpanded ? 'detailCollapse' : 'detailExpand';
162
- return this.ctx.localization.get(messageKey);
163
- }
164
- isOdd(item) {
165
- return item.index % 2 !== 0;
166
- }
167
- isSelectable(args) {
168
- const rowSelectable = this.isRowSelectable(args);
169
- const selectionEnabled = this.selectable && this.selectable.enabled !== false;
170
- return selectionEnabled && rowSelectable;
171
- }
172
- isRowSelected(item) {
173
- return this.selectionService.isSelected(item.index);
174
- }
175
- isRowSelectable(args) {
176
- return this.selectionService.settings?.isRowSelectable(args) || this.cellSelectionService.settings?.isRowSelectable(args);
177
- }
178
- trackByWrapper(index, item) {
179
- return this.trackBy(index, item);
180
- }
181
- trackByColumns(index, item) {
182
- return this.virtualColumns ? index : item;
183
- }
184
- ngDoCheck() {
185
- if (this.rowsToRender) {
186
- this.rowsToRender.forEach((item) => {
187
- if (item.type === 'data') {
188
- item.isEditing = this.editService.hasEdited(item.index);
189
- }
190
- });
191
- }
192
- if (this.hasGroupHeaderColumn) {
193
- this.groupHeaderColumns = columnsToRender(this.skipGroupDecoration ? this.columns : this.columns.toArray().slice(1));
194
- }
195
- else {
196
- this.groupHeaderColumns = [];
197
- }
198
- if (this.isLocked) {
199
- this.groupHeaderSlaveCellsCount =
200
- this.hasGroupHeaderColumn ? this.columnsContainer.nonLockedColumnsToRender.length : 1;
201
- }
202
- else {
203
- this.groupHeaderSlaveCellsCount = 0;
204
- }
205
- }
206
- ngAfterViewChecked() {
207
- if (this.rowSticky) {
208
- this.applyStickyRowsStyling();
209
- }
210
- }
211
- ngOnChanges(changes) {
212
- if (isChanged('columns', changes, false)) {
213
- this.changeNotification.notify();
214
- }
215
- }
216
- logicalRowIndex(rowIndex) {
217
- const skip = this.skip + (this.ctx.scroller?.virtualSkip ?? 0);
218
- let pos = rowIndex + skip;
219
- if (this.hasDetailTemplate && !this.isStackedMode) {
220
- pos *= 2;
221
- }
222
- const absoluteRowIndex = this.isStackedMode ? pos : 1 + pos;
223
- const addRowOffset = this.editService.hasNewItem ? 1 : 0;
224
- const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
225
- const headerRowCount = this.columnInfoService.totalLevels + filterRowOffset + addRowOffset;
226
- return absoluteRowIndex + headerRowCount;
227
- }
228
- addRowLogicalIndex() {
229
- return this.columnInfoService.totalLevels + 1 +
230
- (hasFilterRow(this.filterable) ? 1 : 0);
231
- }
232
- logicalColIndex(column) {
233
- if (!isPresent(column.leafIndex)) {
234
- return -1;
235
- }
236
- return column.leafIndex + (this.hasDetailTemplate ? 1 : 0);
237
- }
238
- ngOnInit() {
239
- this.ngZone.runOutsideAngular(() => {
240
- const clickHandler = this.clickHandler.bind(this);
241
- const mousedownSubscription = this.renderer.listen(this.element.nativeElement, 'mousedown', clickHandler);
242
- const mouseupSubscription = this.renderer.listen(this.element.nativeElement, 'mouseup', clickHandler);
243
- const clickSubscription = this.renderer.listen(this.element.nativeElement, 'click', clickHandler);
244
- const contextmenuSubscription = this.renderer.listen(this.element.nativeElement, 'contextmenu', clickHandler);
245
- const touchstartSubscription = this.renderer.listen(this.element.nativeElement, 'touchstart', clickHandler);
246
- const touchendSubscription = this.renderer.listen(this.element.nativeElement, 'touchend', clickHandler);
247
- this.clickSubscription = () => {
248
- mousedownSubscription();
249
- mouseupSubscription();
250
- clickSubscription();
251
- contextmenuSubscription();
252
- };
253
- this.touchSubscription = () => {
254
- touchstartSubscription();
255
- touchendSubscription();
256
- };
257
- });
258
- let originalNoRecordText = this.ctx.localization.get('noRecords');
259
- this.l10nSubscription = this.ctx.localization.changes.subscribe(() => {
260
- if (this.noRecordsText === originalNoRecordText) {
261
- this.noRecordsText = this.ctx.localization.get('noRecords');
262
- originalNoRecordText = this.noRecordsText;
263
- }
264
- });
265
- }
266
- ngOnDestroy() {
267
- if (this.clickSubscription) {
268
- this.clickSubscription();
269
- }
270
- if (this.touchSubscription) {
271
- this.touchSubscription();
272
- }
273
- if (this.l10nSubscription) {
274
- this.l10nSubscription.unsubscribe();
275
- }
276
- this.cellKeydownSubscription.unsubscribe();
277
- clearTimeout(this.clickTimeout);
278
- }
279
- isEditingCell(index, column) {
280
- return this.editService.isEditing() && this.editService.isEditedColumn(index, column);
281
- }
282
- isEditingRow(index) {
283
- return this.editService.isEditing() && this.editService.hasEdited(index);
284
- }
285
- get isStackedMode() {
286
- return this.ctx.grid?.isStacked;
287
- }
288
- get hasGroupHeaderColumn() {
289
- return this.columnsContainer.hasGroupHeaderColumn;
290
- }
291
- get columnsContainer() {
292
- return this.columnInfoService.columnsContainer;
293
- }
294
- get columnsSpan() {
295
- return columnsSpan(this.columns);
296
- }
297
- get allColumnsSpan() {
298
- return columnsSpan(this.allColumns || this.columns);
299
- }
300
- get colSpan() {
301
- return this.columnsSpan + this.groups.length + (this.hasDetailTemplate ? 1 : 0);
302
- }
303
- get footerColumns() {
304
- const colsToRender = Array.from(this.columns).reduce((cols, col) => {
305
- const newCols = (col instanceof SpanColumnComponent) ? Array.from(col.children) : [col];
306
- return [...cols, ...newCols];
307
- }, []);
308
- return colsToRender;
309
- }
310
- addStickyColumnStyles(column) {
311
- const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);
312
- return { ...column.style, ...stickyStyles };
313
- }
314
- resizeHandler() {
315
- this.applyStickyRowsStyling();
316
- }
317
- get hasDetailTemplate() {
318
- return isPresent(this.detailTemplate);
319
- }
320
- clickHandler(eventArg) {
321
- const element = this.element.nativeElement;
322
- const target = this.eventTarget(eventArg);
323
- const selectionEnabled = this.selectable && this.selectable.enabled !== false;
324
- if (eventArg.code === Keys.Space) {
325
- if (!selectionEnabled) {
326
- return;
327
- }
328
- const cellComparer = this.isStackedMode ? closest(target, (el) => hasClasses(el, 'k-grid-stack-cell')) || closest(target, matchesNodeName('td')) : closest(target, matchesNodeName('td'));
329
- const isCellFocused = cellComparer?.classList.contains('k-focus') || cellComparer === document.activeElement;
330
- const isShiftOrCtrlPressed = eventArg.shiftKey || eventArg.ctrlKey || eventArg.metaKey;
331
- if (isCellFocused && !isShiftOrCtrlPressed) {
332
- eventArg.preventDefault();
333
- }
334
- }
335
- let row, body, gridElement;
336
- const currentTarget = target;
337
- const gridTbody = closest(currentTarget, (el) => matchesNodeName('tbody')(el) && el === element);
338
- if (!gridTbody) {
339
- return;
340
- }
341
- let cell = closest(currentTarget, (el) => {
342
- if (!matchesNodeName('td')(el)) {
343
- return false;
344
- }
345
- const parentRow = el.parentElement;
346
- if (!parentRow || !matchesNodeName('tr')(parentRow)) {
347
- return false;
348
- }
349
- return parentRow.parentElement === element;
350
- });
351
- if (cell) {
352
- row = cell.parentElement;
353
- body = element;
354
- gridElement = null;
355
- }
356
- if (cell && !hasClasses(cell, NON_DATA_CELL_CLASSES) &&
357
- !hasClasses(row, NON_DATA_ROW_CLASSES) &&
358
- body === element && !gridElement) {
359
- const isCellTarget = hasClasses(currentTarget, 'k-grid-stack-cell');
360
- if (this.isStackedMode) {
361
- cell = closest(currentTarget, (el) => {
362
- if (!closestInScope(target, matchesClasses('k-grid-stack-row'), cell)) {
363
- return false;
364
- }
365
- const parentRow = isCellTarget ? currentTarget : el.parentElement;
366
- return (parentRow && hasClasses(parentRow, 'k-grid-stack-cell'));
367
- });
368
- if (isCellTarget) {
369
- cell = findElement(currentTarget, (el) => hasClasses(el, 'k-grid-stack-content'));
370
- }
371
- if (cell) {
372
- row = cell.parentElement.parentElement;
373
- }
374
- else {
375
- cell = closest(currentTarget, (el) => {
376
- if (!matchesNodeName('td')(el)) {
377
- return false;
378
- }
379
- const parentRow = el.parentElement;
380
- if (!parentRow || !matchesNodeName('tr')(parentRow)) {
381
- return false;
382
- }
383
- return parentRow.parentElement === element;
384
- });
385
- if (cell) {
386
- row = cell.parentElement;
387
- body = element;
388
- gridElement = null;
389
- }
390
- }
391
- }
392
- if (!cell) {
393
- return;
394
- }
395
- this.editService.preventCellClose();
396
- const focusable = (!isCellTarget && target !== cell) && isFocusableWithTabKey(target, false);
397
- const ignoreContainer = isCellTarget ? true : !closestInScope(target, matchesClasses(IGNORE_CONTAINER_CLASSES), cell);
398
- if (!focusable && !matchesNodeName('label')(target) && !hasClasses(target, IGNORE_TARGET_CLASSSES) && ignoreContainer) {
399
- const args = this.cellClickArgs(cell, row, eventArg);
400
- if (!args) {
401
- return;
402
- }
403
- if (selectionEnabled && !this.isRowSelectable({ index: args.rowIndex, dataItem: args.dataItem })) {
404
- return;
405
- }
406
- if (eventArg.type === 'mousedown' || eventArg.type === 'touchstart') {
407
- this.domEvents.cellMousedown.emit(args);
408
- }
409
- else if (eventArg.type === 'mouseup' || eventArg.type === 'touchend') {
410
- this.domEvents.cellMouseup.emit(args);
411
- }
412
- else {
413
- if (args.isEditedColumn || !this.editService.closeCell(eventArg)) {
414
- if (eventArg.type === 'click') {
415
- this.clickTimeout = setTimeout(() => {
416
- this.emitCellClick(args);
417
- }, 0);
418
- }
419
- else {
420
- this.emitCellClick(args);
421
- }
422
- }
423
- }
424
- }
425
- }
426
- }
427
- emitCellClick(args) {
428
- this.domEvents.cellClick.emit(Object.assign(args, {
429
- isEdited: args.isEditedRow || args.isEditedColumn
430
- }));
431
- }
432
- cellKeydownHandler(args) {
433
- if (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Space || (this.navigationService.tableCellEntered && args.code === Keys.F2)) {
434
- this.clickHandler(args);
435
- }
436
- }
437
- cellClickArgs(cell, row, eventArg) {
438
- const cells = this.isStackedMode ? row.querySelectorAll('.k-grid-stack-cell') : row.cells;
439
- let index = columnCellIndex(cell, cells, this.isStackedMode);
440
- // In stacked mode, clicks on the outer cell should not trigger Grid's cellClick event
441
- let isOuterCellClicked = false;
442
- if (this.isStackedMode && !isPresent(index)) {
443
- const cells = row.cells;
444
- index = columnCellIndex(cell, cells, this.isStackedMode);
445
- isOuterCellClicked = true;
446
- }
447
- if (!isPresent(index)) {
448
- return;
449
- }
450
- const column = this.columns.toArray()[index];
451
- const columnIndex = (this.isStackedMode ? 0 : this.lockedColumnsCount) + index;
452
- let rowIndex = (this.isStackedMode && !isOuterCellClicked ? row.parentElement.parentElement : row).getAttribute('data-kendo-grid-item-index');
453
- rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;
454
- const dataItem = rowIndex === -1 ? this.editService.newDataItem : this.rowsToRender.find(item => +item.index === rowIndex && item.type === 'data')?.data;
455
- const isEditedColumn = this.editService.isEditedColumn(rowIndex, column);
456
- const isEditedRow = this.editService.isEdited(rowIndex);
457
- const type = eventArg.type === 'keydown' ? 'click' : eventArg.type;
458
- return {
459
- column: isOuterCellClicked ? null : column,
460
- columnIndex: columnIndex,
461
- dataItem: dataItem,
462
- isEditedColumn: isEditedColumn,
463
- isEditedRow: isEditedRow,
464
- originalEvent: eventArg,
465
- rowIndex: rowIndex,
466
- type: type
467
- };
468
- }
469
- eventTarget(args) {
470
- if (!isDocumentAvailable()) {
471
- return;
472
- }
473
- if (args.type === 'touchend') {
474
- const touch = args.changedTouches[0];
475
- return document.elementFromPoint(touch.clientX, touch.clientY);
476
- }
477
- return args.target;
478
- }
479
- applyStickyRowsStyling() {
480
- if (!isDocumentAvailable()) {
481
- return;
482
- }
483
- const stickyRows = nodesToArray(this.element.nativeElement.querySelectorAll('.k-grid-row-sticky'));
484
- const length = stickyRows.length;
485
- if (length) {
486
- let accumulatedHeight = 0;
487
- const stickyRowsOffsets = [];
488
- stickyRows.forEach(row => {
489
- const rowHeight = row.getBoundingClientRect().height;
490
- stickyRowsOffsets.push({ accumulatedHeight, rowHeight });
491
- accumulatedHeight += rowHeight;
492
- });
493
- stickyRows.forEach((row, index) => {
494
- this.renderer.setStyle(row, 'top', `${stickyRowsOffsets[index].accumulatedHeight}px`);
495
- this.renderer.setStyle(row, 'bottom', `${accumulatedHeight - stickyRowsOffsets[index].accumulatedHeight - stickyRowsOffsets[index].rowHeight}px`);
496
- });
497
- }
498
- }
499
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableBodyComponent, deps: [{ token: i1.DetailsService }, { token: i2.GroupsService }, { token: i3.ChangeNotificationService }, { token: i4.EditService }, { token: i5.ContextService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i6.DomEventsService }, { token: i7.SelectionService }, { token: i8.CellSelectionService }, { token: i9.ColumnInfoService }, { token: i10.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
500
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableBodyComponent, isStandalone: true, selector: "[kendoGridTableBody]", inputs: { columns: "columns", allColumns: "allColumns", groups: "groups", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", rowsToRender: "rowsToRender", skip: "skip", selectable: "selectable", filterable: "filterable", noRecordsText: "noRecordsText", isLocked: "isLocked", isLoading: "isLoading", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", skipGroupDecoration: "skipGroupDecoration", lockedColumnsCount: "lockedColumnsCount", totalColumnsCount: "totalColumnsCount", virtualColumns: "virtualColumns", trackBy: "trackBy", rowSticky: "rowSticky", totalColumns: "totalColumns", rowClass: "rowClass", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight" }, host: { properties: { "class.k-table-tbody": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
501
- @if (editService.hasNewItem) {
502
- <tr class="k-grid-add-row k-grid-edit-row k-master-row"
503
- [style.height.px]="rowHeight"
504
- kendoGridLogicalRow
505
- [logicalRowIndex]="addRowLogicalIndex()"
506
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
507
- [logicalCellsCount]="columns.length"
508
- [logicalSlaveCellsCount]="unlockedColumnsCount()"
509
- [totalColumns]="totalColumns">
510
- @if (!skipGroupDecoration) {
511
- @for (g of groups; track $index) {
512
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
513
- }
514
- }
515
- @if (detailTemplate?.templateRef && !isStackedMode) {
516
- <td class="k-hierarchy-cell k-table-td"
517
- kendoGridLogicalCell
518
- [logicalRowIndex]="addRowLogicalIndex()"
519
- [logicalColIndex]="0"
520
- aria-selected="false"
521
- >
522
- </td>
523
- }
524
- @if (isStackedMode) {
525
- @for (item of rowsToRender; track trackByWrapper($index, item); let rowIndex = $index) {
526
- <td
527
- class="k-table-td"
528
- kendoGridCell
529
- [rowIndex]="-1"
530
- [columnIndex]="0"
531
- [isNew]="true"
532
- [columns]="allColumns"
533
- [dataItem]="newDataItem"
534
- kendoGridLogicalCell
535
- [logicalRowIndex]="addRowLogicalIndex()"
536
- [logicalColIndex]="0">
537
- </td>
538
- }
539
- } @else {
540
- @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
541
- <td
542
- class="k-table-td"
543
- kendoGridCell
544
- [rowIndex]="-1"
545
- [columnIndex]="lockedColumnsCount + columnIndex"
546
- [isNew]="true"
547
- [column]="column"
548
- [dataItem]="newDataItem"
549
- [class.k-grid-content-sticky]="column.sticky"
550
- [ngClass]="column.cssClass"
551
- [style.left]="column.sticky ? '0' : undefined"
552
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
553
- [attr.colspan]="column.colspan"
554
- [attr.role]="column.tableCellsRole"
555
- kendoGridLogicalCell
556
- [logicalRowIndex]="addRowLogicalIndex()"
557
- [logicalColIndex]="logicalColIndex(column)"
558
- [colSpan]="column.colspan">
559
- </td>
560
- }
561
- }
562
- </tr>
563
- }
564
- @if (!rowsToRender?.length) {
565
- <tr class="k-grid-norecords" role="row">
566
- <td [attr.colspan]="colSpan" class="k-table-td">
567
- @if (noRecordsTemplate?.templateRef) {
568
- <ng-template
569
- [templateContext]="{
570
- templateRef: noRecordsTemplate?.templateRef
571
- }">
572
- </ng-template>
573
- } @else {
574
- {{noRecordsText}}
575
- }
576
- </td>
577
- </tr>
578
- }
579
- @for (item of rowsToRender; track trackByWrapper($index, item); let rowIndex = $index) {
580
- @if (item.type === 'group') {
581
- <tr
582
- [style.height.px]="rowHeight"
583
- kendoGridGroupHeader
584
- [columns]="columns"
585
- [groups]="groups"
586
- [item]="$any(item)"
587
- [hasDetails]="!!detailTemplate?.templateRef"
588
- [skipGroupDecoration]="skipGroupDecoration"
589
- [hasGroupHeaderColumn]="hasGroupHeaderColumn"
590
- [groupHeaderColumns]="groupHeaderColumns"
591
- [rowIndex]="rowIndex + 1"
592
- [totalColumnsCount]="totalColumnsCount"
593
- kendoGridLogicalRow
594
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
595
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
596
- [totalColumns]="totalColumns"
597
- [logicalCellsCount]="columns.length"
598
- [logicalSlaveCellsCount]="groupHeaderSlaveCellsCount">
599
- </tr>
600
- }
601
- @if (item.showDataItem) {
602
- <tr
603
- [style.height.px]="rowHeight"
604
- kendoGridLogicalRow
605
- [dataRowIndex]="$any(item).index"
606
- [dataItem]="item.data"
607
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
608
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
609
- [totalColumns]="totalColumns"
610
- [logicalCellsCount]="columns.length"
611
- [logicalSlaveCellsCount]="unlockedColumnsCount(item)"
612
- class="{{ isOdd(item) ? 'k-table-alt-row' : ''}}"
613
- [class.k-grid-row-sticky]="rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false"
614
- [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
615
- [class.k-master-row]="true"
616
- [class.k-expanded]="item.isExpanded && !isStackedMode"
617
- [class.k-grid-edit-row]="isEditingRow($any(item).index)"
618
- [attr.aria-selected]="(lockedColumnsCount < 1 || isStackedMode) ? isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item) : undefined"
619
- [attr.data-kendo-grid-item-index]="$any(item).index"
620
- [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
621
- [class.k-highlighted]="item.isHighlighted">
622
- @if (!skipGroupDecoration) {
623
- @for (g of groups; track $index) {
624
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
625
- }
626
- }
627
- @if (detailTemplate?.templateRef && !isStackedMode) {
628
- <td class="k-hierarchy-cell k-table-td"
629
- kendoGridLogicalCell
630
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
631
- [logicalColIndex]="0"
632
- [dataRowIndex]="$any(item).index"
633
- [dataItem]="item.data"
634
- [detailExpandCell]="true"
635
- aria-selected="false"
636
- role="gridcell"
637
- [attr.aria-expanded]="item.isExpanded">
638
- @if (detailTemplate.showIf(item.data, $any(item).index)) {
639
- <a
640
- [attr.title]="detailButtonTitle(item)"
641
- [attr.aria-label]="detailButtonTitle(item)"
642
- href="#" tabindex="-1" (click)="toggleRow($any(item).index, item.data)">
643
- <kendo-icon-wrapper
644
- [name]="detailButtonIconName(item)"
645
- [svgIcon]="detailButtonSvgIcon(item)"></kendo-icon-wrapper>
646
- </a>
647
- }
648
- </td>
649
- }
650
- @if (isStackedMode) {
651
- <td kendoGridCell
652
- [rowIndex]="$any(item).index"
653
- [detailTemplate]="detailTemplate"
654
- [item]="item"
655
- [columnIndex]="0"
656
- [attr.data-kendo-grid-column-index]="0"
657
- [columns]="columns"
658
- [dataItem]="item.data"
659
- [isLoading]="isLoading"
660
- [isVirtual]="isVirtual"
661
- [loadingTemplate]="cellLoadingTemplate"
662
- kendoGridLogicalCell
663
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
664
- [logicalColIndex]="0"
665
- [dataRowIndex]="$any(item).index"
666
- [dataItem]="item.data"
667
- [colIndex]="0"
668
- class="k-table-td"
669
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag">
670
- </td>
671
- } @else {
672
- @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
673
- @if (!item.cells?.[lockedColumnsCount + columnIndex]?.skip) {
674
- <td
675
- kendoGridCell
676
- [rowIndex]="$any(item).index"
677
- [columnIndex]="lockedColumnsCount + columnIndex"
678
- [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
679
- [column]="column"
680
- [columns]="allColumns"
681
- [dataItem]="item.data"
682
- [isLoading]="isLoading"
683
- [isVirtual]="isVirtual"
684
- [loadingTemplate]="cellLoadingTemplate"
685
- kendoGridLogicalCell
686
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
687
- [logicalColIndex]="logicalColIndex(column)"
688
- [dataRowIndex]="$any(item).index"
689
- [dataItem]="item.data"
690
- [colIndex]="columnIndex"
691
- [colSpan]="column.colspan"
692
- [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
693
- [attr.role]="column.tableCellsRole"
694
- class="k-table-td"
695
- [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
696
- [class.k-grid-content-sticky]="column.sticky"
697
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
698
- [ngClass]="column.cssClass"
699
- [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
700
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
701
- [attr.colspan]="column.colspan"
702
- [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
703
- [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
704
- </td>
705
- }
706
- }
707
- }
708
- </tr>
709
- }
710
- @if (item.showDetailRow) {
711
- <tr
712
- class="k-detail-row"
713
- [style.height.px]="detailRowHeight"
714
- kendoGridLogicalRow
715
- [dataRowIndex]="$any(item).index"
716
- [dataItem]="item.data"
717
- [logicalRowIndex]="isStackedMode ? logicalRowIndex(rowIndex) : logicalRowIndex(rowIndex) + 1"
718
- [logicalSlaveRow]="false"
719
- [logicalCellsCount]="1">
720
- @if (!isStackedMode) {
721
- @for (g of groups; track $index) {
722
- <td class="k-group-cell k-table-td k-table-group-td"></td>
723
- }
724
- <td class="k-hierarchy-cell k-table-td"></td>
725
- <td class="k-detail-cell k-table-td"
726
- [attr.colspan]="columnsSpan"
727
- kendoGridLogicalCell
728
- [logicalRowIndex]="logicalRowIndex(rowIndex) + 1"
729
- [logicalColIndex]="0"
730
- [dataRowIndex]="$any(item).index"
731
- [dataItem]="item.data"
732
- [colIndex]="0"
733
- [colSpan]="allColumnsSpan + 1"
734
- role="gridcell" aria-selected="false">
735
- <ng-template
736
- [ngTemplateOutlet]="detailTemplate.templateRef"
737
- [ngTemplateOutletContext]="{
738
- dataItem: item.data,
739
- rowIndex: $any(item).index,
740
- $implicit: item.data
741
- }">
742
- </ng-template>
743
- </td>
744
- } @else {
745
- <td class="k-detail-cell k-table-td"
746
- [attr.colspan]="columnsSpan"
747
- kendoGridLogicalCell
748
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
749
- [logicalColIndex]="0"
750
- [dataRowIndex]="$any(item).index"
751
- [dataItem]="item.data"
752
- [colIndex]="0"
753
- [colSpan]="allColumnsSpan + 1"
754
- role="gridcell"
755
- aria-selected="false">
756
- <ng-template
757
- [ngTemplateOutlet]="detailTemplate.templateRef"
758
- [ngTemplateOutletContext]="{
759
- dataItem: item.data,
760
- rowIndex: $any(item).index,
761
- $implicit: item.data
762
- }">
763
- </ng-template>
764
- </td>
765
- }
766
- </tr>
767
- }
768
- @if (item.type === 'footer') {
769
- <tr
770
- class="k-group-footer"
771
- [style.height.px]="rowHeight"
772
- kendoGridLogicalRow
773
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
774
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
775
- [totalColumns]="totalColumns"
776
- [logicalCellsCount]="columns.length"
777
- [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
778
- @if (!skipGroupDecoration) {
779
- @for (g of groups; track $index) {
780
- <td class="k-group-cell k-table-td k-table-group-td"></td>
781
- }
782
- }
783
- @if (detailTemplate?.templateRef && !isStackedMode) {
784
- <td class="k-hierarchy-cell k-table-td"
785
- kendoGridLogicalCell
786
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
787
- [logicalColIndex]="0"
788
- aria-selected="false">
789
- </td>
790
- }
791
-
792
- @if (!isStackedMode) {
793
- @for (column of footerColumns; track virtualColumns ? $index : column; let columnIndex = $index) {
794
- <td kendoGridLogicalCell
795
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
796
- [logicalColIndex]="logicalColIndex(column)"
797
- [attr.data-skip]="skipGroupDecoration"
798
- class="k-table-td">
799
- <ng-template
800
- [templateContext]="{
801
- templateRef: $any(column).groupFooterTemplateRef,
802
- group: $any(item.data),
803
- field: $any(column).field,
804
- column: column,
805
- aggregates: $any(item.data)?.aggregates,
806
- $implicit: $any(item.data)?.aggregates
807
- }">
808
- </ng-template>
809
- </td>
810
- }
811
- } @else {
812
- <td kendoGridLogicalCell
813
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
814
- [logicalColIndex]="hasDetailTemplate ? 1 : 0"
815
- [attr.data-skip]="skipGroupDecoration"
816
- class="k-table-td">
817
- <div class="k-grid-column-template">
818
- @for (col of footerColumns; track $index) {
819
- @if ($any(col).groupFooterTemplateRef) {
820
- <div class="k-column-template-item">
821
- <ng-template
822
- [templateContext]="{
823
- templateRef: $any(col).groupFooterTemplateRef,
824
- group: $any(item.data),
825
- field: $any(col).field,
826
- column: col,
827
- aggregates: $any(item.data)?.aggregates,
828
- $implicit: $any(item.data)?.aggregates
829
- }">
830
- </ng-template>
831
- </div>
832
- }
833
- }
834
- </div>
835
- </td>
836
- }
837
- </tr>
838
- }
839
- }
840
- @if (rowSticky) {
841
- <kendo-resize-sensor (resize)="resizeHandler()"></kendo-resize-sensor>
842
- }
843
- `, isInline: true, dependencies: [{ kind: "directive", type: LogicalRowDirective, selector: "[kendoGridLogicalRow]", inputs: ["logicalRowIndex", "logicalSlaveRow", "logicalCellsCount", "logicalSlaveCellsCount", "dataRowIndex", "dataItem", "totalColumns"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "component", type: CellComponent, selector: "[kendoGridCell]", inputs: ["column", "columns", "columnIndex", "isNew", "isLoading", "isVirtual", "loadingTemplate", "detailTemplate", "item", "rowIndex", "dataItem"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: GroupHeaderComponent, selector: "[kendoGridGroupHeader]", inputs: ["rowIndex", "logicalRowIndex", "item", "skipGroupDecoration", "hasDetails", "totalColumnsCount", "hasGroupHeaderColumn", "groupHeaderColumns", "columns", "groups"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
844
- }
845
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableBodyComponent, decorators: [{
846
- type: Component,
847
- args: [{
848
- selector: '[kendoGridTableBody]',
849
- template: `
850
- @if (editService.hasNewItem) {
851
- <tr class="k-grid-add-row k-grid-edit-row k-master-row"
852
- [style.height.px]="rowHeight"
853
- kendoGridLogicalRow
854
- [logicalRowIndex]="addRowLogicalIndex()"
855
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
856
- [logicalCellsCount]="columns.length"
857
- [logicalSlaveCellsCount]="unlockedColumnsCount()"
858
- [totalColumns]="totalColumns">
859
- @if (!skipGroupDecoration) {
860
- @for (g of groups; track $index) {
861
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
862
- }
863
- }
864
- @if (detailTemplate?.templateRef && !isStackedMode) {
865
- <td class="k-hierarchy-cell k-table-td"
866
- kendoGridLogicalCell
867
- [logicalRowIndex]="addRowLogicalIndex()"
868
- [logicalColIndex]="0"
869
- aria-selected="false"
870
- >
871
- </td>
872
- }
873
- @if (isStackedMode) {
874
- @for (item of rowsToRender; track trackByWrapper($index, item); let rowIndex = $index) {
875
- <td
876
- class="k-table-td"
877
- kendoGridCell
878
- [rowIndex]="-1"
879
- [columnIndex]="0"
880
- [isNew]="true"
881
- [columns]="allColumns"
882
- [dataItem]="newDataItem"
883
- kendoGridLogicalCell
884
- [logicalRowIndex]="addRowLogicalIndex()"
885
- [logicalColIndex]="0">
886
- </td>
887
- }
888
- } @else {
889
- @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
890
- <td
891
- class="k-table-td"
892
- kendoGridCell
893
- [rowIndex]="-1"
894
- [columnIndex]="lockedColumnsCount + columnIndex"
895
- [isNew]="true"
896
- [column]="column"
897
- [dataItem]="newDataItem"
898
- [class.k-grid-content-sticky]="column.sticky"
899
- [ngClass]="column.cssClass"
900
- [style.left]="column.sticky ? '0' : undefined"
901
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
902
- [attr.colspan]="column.colspan"
903
- [attr.role]="column.tableCellsRole"
904
- kendoGridLogicalCell
905
- [logicalRowIndex]="addRowLogicalIndex()"
906
- [logicalColIndex]="logicalColIndex(column)"
907
- [colSpan]="column.colspan">
908
- </td>
909
- }
910
- }
911
- </tr>
912
- }
913
- @if (!rowsToRender?.length) {
914
- <tr class="k-grid-norecords" role="row">
915
- <td [attr.colspan]="colSpan" class="k-table-td">
916
- @if (noRecordsTemplate?.templateRef) {
917
- <ng-template
918
- [templateContext]="{
919
- templateRef: noRecordsTemplate?.templateRef
920
- }">
921
- </ng-template>
922
- } @else {
923
- {{noRecordsText}}
924
- }
925
- </td>
926
- </tr>
927
- }
928
- @for (item of rowsToRender; track trackByWrapper($index, item); let rowIndex = $index) {
929
- @if (item.type === 'group') {
930
- <tr
931
- [style.height.px]="rowHeight"
932
- kendoGridGroupHeader
933
- [columns]="columns"
934
- [groups]="groups"
935
- [item]="$any(item)"
936
- [hasDetails]="!!detailTemplate?.templateRef"
937
- [skipGroupDecoration]="skipGroupDecoration"
938
- [hasGroupHeaderColumn]="hasGroupHeaderColumn"
939
- [groupHeaderColumns]="groupHeaderColumns"
940
- [rowIndex]="rowIndex + 1"
941
- [totalColumnsCount]="totalColumnsCount"
942
- kendoGridLogicalRow
943
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
944
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
945
- [totalColumns]="totalColumns"
946
- [logicalCellsCount]="columns.length"
947
- [logicalSlaveCellsCount]="groupHeaderSlaveCellsCount">
948
- </tr>
949
- }
950
- @if (item.showDataItem) {
951
- <tr
952
- [style.height.px]="rowHeight"
953
- kendoGridLogicalRow
954
- [dataRowIndex]="$any(item).index"
955
- [dataItem]="item.data"
956
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
957
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
958
- [totalColumns]="totalColumns"
959
- [logicalCellsCount]="columns.length"
960
- [logicalSlaveCellsCount]="unlockedColumnsCount(item)"
961
- class="{{ isOdd(item) ? 'k-table-alt-row' : ''}}"
962
- [class.k-grid-row-sticky]="rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false"
963
- [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
964
- [class.k-master-row]="true"
965
- [class.k-expanded]="item.isExpanded && !isStackedMode"
966
- [class.k-grid-edit-row]="isEditingRow($any(item).index)"
967
- [attr.aria-selected]="(lockedColumnsCount < 1 || isStackedMode) ? isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item) : undefined"
968
- [attr.data-kendo-grid-item-index]="$any(item).index"
969
- [class.k-selected]="isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item)"
970
- [class.k-highlighted]="item.isHighlighted">
971
- @if (!skipGroupDecoration) {
972
- @for (g of groups; track $index) {
973
- <td class="k-group-cell k-table-td k-table-group-td" role="presentation"></td>
974
- }
975
- }
976
- @if (detailTemplate?.templateRef && !isStackedMode) {
977
- <td class="k-hierarchy-cell k-table-td"
978
- kendoGridLogicalCell
979
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
980
- [logicalColIndex]="0"
981
- [dataRowIndex]="$any(item).index"
982
- [dataItem]="item.data"
983
- [detailExpandCell]="true"
984
- aria-selected="false"
985
- role="gridcell"
986
- [attr.aria-expanded]="item.isExpanded">
987
- @if (detailTemplate.showIf(item.data, $any(item).index)) {
988
- <a
989
- [attr.title]="detailButtonTitle(item)"
990
- [attr.aria-label]="detailButtonTitle(item)"
991
- href="#" tabindex="-1" (click)="toggleRow($any(item).index, item.data)">
992
- <kendo-icon-wrapper
993
- [name]="detailButtonIconName(item)"
994
- [svgIcon]="detailButtonSvgIcon(item)"></kendo-icon-wrapper>
995
- </a>
996
- }
997
- </td>
998
- }
999
- @if (isStackedMode) {
1000
- <td kendoGridCell
1001
- [rowIndex]="$any(item).index"
1002
- [detailTemplate]="detailTemplate"
1003
- [item]="item"
1004
- [columnIndex]="0"
1005
- [attr.data-kendo-grid-column-index]="0"
1006
- [columns]="columns"
1007
- [dataItem]="item.data"
1008
- [isLoading]="isLoading"
1009
- [isVirtual]="isVirtual"
1010
- [loadingTemplate]="cellLoadingTemplate"
1011
- kendoGridLogicalCell
1012
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
1013
- [logicalColIndex]="0"
1014
- [dataRowIndex]="$any(item).index"
1015
- [dataItem]="item.data"
1016
- [colIndex]="0"
1017
- class="k-table-td"
1018
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag">
1019
- </td>
1020
- } @else {
1021
- @for (column of columns; track virtualColumns ? $index : column; let columnIndex = $index) {
1022
- @if (!item.cells?.[lockedColumnsCount + columnIndex]?.skip) {
1023
- <td
1024
- kendoGridCell
1025
- [rowIndex]="$any(item).index"
1026
- [columnIndex]="lockedColumnsCount + columnIndex"
1027
- [attr.data-kendo-grid-column-index]="lockedColumnsCount + columnIndex"
1028
- [column]="column"
1029
- [columns]="allColumns"
1030
- [dataItem]="item.data"
1031
- [isLoading]="isLoading"
1032
- [isVirtual]="isVirtual"
1033
- [loadingTemplate]="cellLoadingTemplate"
1034
- kendoGridLogicalCell
1035
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
1036
- [logicalColIndex]="logicalColIndex(column)"
1037
- [dataRowIndex]="$any(item).index"
1038
- [dataItem]="item.data"
1039
- [colIndex]="columnIndex"
1040
- [colSpan]="column.colspan"
1041
- [rowSpan]="item.cells[lockedColumnsCount + columnIndex]?.rowspan"
1042
- [attr.role]="column.tableCellsRole"
1043
- class="k-table-td"
1044
- [attr.aria-selected]="lockedColumnsCount < 1 && isSelectable({ dataItem: item.data, index: $any(item).index }) ? isAriaSelected(item, column) : undefined"
1045
- [class.k-grid-content-sticky]="column.sticky"
1046
- [class.k-touch-action-none]="isSelectable({ dataItem: item.data, index: $any(item).index }) && $any(selectable).drag"
1047
- [ngClass]="column.cssClass"
1048
- [class.k-grid-edit-cell]="isEditingCell($any(item).index, column)"
1049
- [ngStyle]="column.sticky ? addStickyColumnStyles(column) : column.style"
1050
- [attr.colspan]="column.colspan"
1051
- [class.k-selected]="isSelectable && cellSelectionService.isCellSelected(item, column)"
1052
- [class.k-highlighted]="item.cells[lockedColumnsCount + columnIndex]?.isHighlighted">
1053
- </td>
1054
- }
1055
- }
1056
- }
1057
- </tr>
1058
- }
1059
- @if (item.showDetailRow) {
1060
- <tr
1061
- class="k-detail-row"
1062
- [style.height.px]="detailRowHeight"
1063
- kendoGridLogicalRow
1064
- [dataRowIndex]="$any(item).index"
1065
- [dataItem]="item.data"
1066
- [logicalRowIndex]="isStackedMode ? logicalRowIndex(rowIndex) : logicalRowIndex(rowIndex) + 1"
1067
- [logicalSlaveRow]="false"
1068
- [logicalCellsCount]="1">
1069
- @if (!isStackedMode) {
1070
- @for (g of groups; track $index) {
1071
- <td class="k-group-cell k-table-td k-table-group-td"></td>
1072
- }
1073
- <td class="k-hierarchy-cell k-table-td"></td>
1074
- <td class="k-detail-cell k-table-td"
1075
- [attr.colspan]="columnsSpan"
1076
- kendoGridLogicalCell
1077
- [logicalRowIndex]="logicalRowIndex(rowIndex) + 1"
1078
- [logicalColIndex]="0"
1079
- [dataRowIndex]="$any(item).index"
1080
- [dataItem]="item.data"
1081
- [colIndex]="0"
1082
- [colSpan]="allColumnsSpan + 1"
1083
- role="gridcell" aria-selected="false">
1084
- <ng-template
1085
- [ngTemplateOutlet]="detailTemplate.templateRef"
1086
- [ngTemplateOutletContext]="{
1087
- dataItem: item.data,
1088
- rowIndex: $any(item).index,
1089
- $implicit: item.data
1090
- }">
1091
- </ng-template>
1092
- </td>
1093
- } @else {
1094
- <td class="k-detail-cell k-table-td"
1095
- [attr.colspan]="columnsSpan"
1096
- kendoGridLogicalCell
1097
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
1098
- [logicalColIndex]="0"
1099
- [dataRowIndex]="$any(item).index"
1100
- [dataItem]="item.data"
1101
- [colIndex]="0"
1102
- [colSpan]="allColumnsSpan + 1"
1103
- role="gridcell"
1104
- aria-selected="false">
1105
- <ng-template
1106
- [ngTemplateOutlet]="detailTemplate.templateRef"
1107
- [ngTemplateOutletContext]="{
1108
- dataItem: item.data,
1109
- rowIndex: $any(item).index,
1110
- $implicit: item.data
1111
- }">
1112
- </ng-template>
1113
- </td>
1114
- }
1115
- </tr>
1116
- }
1117
- @if (item.type === 'footer') {
1118
- <tr
1119
- class="k-group-footer"
1120
- [style.height.px]="rowHeight"
1121
- kendoGridLogicalRow
1122
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
1123
- [logicalSlaveRow]="lockedColumnsCount > 0 && !isStackedMode"
1124
- [totalColumns]="totalColumns"
1125
- [logicalCellsCount]="columns.length"
1126
- [logicalSlaveCellsCount]="unlockedColumnsCount(item)">
1127
- @if (!skipGroupDecoration) {
1128
- @for (g of groups; track $index) {
1129
- <td class="k-group-cell k-table-td k-table-group-td"></td>
1130
- }
1131
- }
1132
- @if (detailTemplate?.templateRef && !isStackedMode) {
1133
- <td class="k-hierarchy-cell k-table-td"
1134
- kendoGridLogicalCell
1135
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
1136
- [logicalColIndex]="0"
1137
- aria-selected="false">
1138
- </td>
1139
- }
1140
-
1141
- @if (!isStackedMode) {
1142
- @for (column of footerColumns; track virtualColumns ? $index : column; let columnIndex = $index) {
1143
- <td kendoGridLogicalCell
1144
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
1145
- [logicalColIndex]="logicalColIndex(column)"
1146
- [attr.data-skip]="skipGroupDecoration"
1147
- class="k-table-td">
1148
- <ng-template
1149
- [templateContext]="{
1150
- templateRef: $any(column).groupFooterTemplateRef,
1151
- group: $any(item.data),
1152
- field: $any(column).field,
1153
- column: column,
1154
- aggregates: $any(item.data)?.aggregates,
1155
- $implicit: $any(item.data)?.aggregates
1156
- }">
1157
- </ng-template>
1158
- </td>
1159
- }
1160
- } @else {
1161
- <td kendoGridLogicalCell
1162
- [logicalRowIndex]="logicalRowIndex(rowIndex)"
1163
- [logicalColIndex]="hasDetailTemplate ? 1 : 0"
1164
- [attr.data-skip]="skipGroupDecoration"
1165
- class="k-table-td">
1166
- <div class="k-grid-column-template">
1167
- @for (col of footerColumns; track $index) {
1168
- @if ($any(col).groupFooterTemplateRef) {
1169
- <div class="k-column-template-item">
1170
- <ng-template
1171
- [templateContext]="{
1172
- templateRef: $any(col).groupFooterTemplateRef,
1173
- group: $any(item.data),
1174
- field: $any(col).field,
1175
- column: col,
1176
- aggregates: $any(item.data)?.aggregates,
1177
- $implicit: $any(item.data)?.aggregates
1178
- }">
1179
- </ng-template>
1180
- </div>
1181
- }
1182
- }
1183
- </div>
1184
- </td>
1185
- }
1186
- </tr>
1187
- }
1188
- }
1189
- @if (rowSticky) {
1190
- <kendo-resize-sensor (resize)="resizeHandler()"></kendo-resize-sensor>
1191
- }
1192
- `,
1193
- standalone: true,
1194
- imports: [
1195
- LogicalRowDirective, LogicalCellDirective, CellComponent, NgClass, NgStyle, TemplateContextDirective,
1196
- GroupHeaderComponent, IconWrapperComponent, NgTemplateOutlet, ResizeSensorComponent
1197
- ]
1198
- }]
1199
- }], ctorParameters: () => [{ type: i1.DetailsService }, { type: i2.GroupsService }, { type: i3.ChangeNotificationService }, { type: i4.EditService }, { type: i5.ContextService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i6.DomEventsService }, { type: i7.SelectionService }, { type: i8.CellSelectionService }, { type: i9.ColumnInfoService }, { type: i10.NavigationService }], propDecorators: { columns: [{
1200
- type: Input
1201
- }], allColumns: [{
1202
- type: Input
1203
- }], groups: [{
1204
- type: Input
1205
- }], detailTemplate: [{
1206
- type: Input
1207
- }], noRecordsTemplate: [{
1208
- type: Input
1209
- }], rowsToRender: [{
1210
- type: Input
1211
- }], skip: [{
1212
- type: Input
1213
- }], selectable: [{
1214
- type: Input
1215
- }], filterable: [{
1216
- type: Input
1217
- }], noRecordsText: [{
1218
- type: Input
1219
- }], isLocked: [{
1220
- type: Input
1221
- }], isLoading: [{
1222
- type: Input
1223
- }], isVirtual: [{
1224
- type: Input
1225
- }], cellLoadingTemplate: [{
1226
- type: Input
1227
- }], skipGroupDecoration: [{
1228
- type: Input
1229
- }], lockedColumnsCount: [{
1230
- type: Input
1231
- }], totalColumnsCount: [{
1232
- type: Input
1233
- }], virtualColumns: [{
1234
- type: Input
1235
- }], trackBy: [{
1236
- type: Input
1237
- }], rowSticky: [{
1238
- type: Input
1239
- }], totalColumns: [{
1240
- type: Input
1241
- }], rowClass: [{
1242
- type: Input
1243
- }], rowHeight: [{
1244
- type: Input
1245
- }], detailRowHeight: [{
1246
- type: Input
1247
- }], hostClass: [{
1248
- type: HostBinding,
1249
- args: ['class.k-table-tbody']
1250
- }] } });