@guiexpert/table 1.0.2 → 1.0.5

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 (407) hide show
  1. package/esm2022/guiexpert-table.mjs +5 -0
  2. package/esm2022/index.mjs +140 -0
  3. package/esm2022/lib/table/action/action-id.type.mjs +20 -0
  4. package/esm2022/lib/table/action/on-action-triggered.if.mjs +2 -0
  5. package/esm2022/lib/table/action/osx-shortcut-actionId-mapping.mjs +21 -0
  6. package/esm2022/lib/table/action/shortcut-actionid-mapping.type.mjs +2 -0
  7. package/esm2022/lib/table/action/shortcut.service.mjs +114 -0
  8. package/esm2022/lib/table/action/windows-shortcut-actionId-mapping.mjs +19 -0
  9. package/esm2022/lib/table/checkbox/checkbox-model.if.mjs +2 -0
  10. package/esm2022/lib/table/checkbox/checkbox-model.mjs +50 -0
  11. package/esm2022/lib/table/checkbox/tree-checkbox-model.mjs +107 -0
  12. package/esm2022/lib/table/color/color-rgb.if.mjs +2 -0
  13. package/esm2022/lib/table/color/color-rgb.mjs +11 -0
  14. package/esm2022/lib/table/color/ge-css-color-util.mjs +26 -0
  15. package/esm2022/lib/table/color/three-color-gradient-arg.if.mjs +2 -0
  16. package/esm2022/lib/table/color/three-color-gradient-arg.mjs +17 -0
  17. package/esm2022/lib/table/color/two-color-gradient-arg.if.mjs +2 -0
  18. package/esm2022/lib/table/color/two-color-gradient-arg.mjs +13 -0
  19. package/esm2022/lib/table/css-vars.mjs +238 -0
  20. package/esm2022/lib/table/data/chunk/chunk.data-event.if.mjs +2 -0
  21. package/esm2022/lib/table/data/chunk/chunk.data-event.mjs +12 -0
  22. package/esm2022/lib/table/data/chunk/request-chunk.if.mjs +2 -0
  23. package/esm2022/lib/table/data/chunk/request-chunk.mjs +22 -0
  24. package/esm2022/lib/table/data/common/aligns.mjs +19 -0
  25. package/esm2022/lib/table/data/common/area-map-factory.mjs +7 -0
  26. package/esm2022/lib/table/data/common/area-map.mjs +11 -0
  27. package/esm2022/lib/table/data/common/area-map.type.mjs +2 -0
  28. package/esm2022/lib/table/data/common/args-adjust-columns-to-row-parent-params.mjs +2 -0
  29. package/esm2022/lib/table/data/common/args-render-cell-div.mjs +2 -0
  30. package/esm2022/lib/table/data/common/boolean-function.mjs +3 -0
  31. package/esm2022/lib/table/data/common/cell-range.mjs +36 -0
  32. package/esm2022/lib/table/data/common/checkbox-column-def.mjs +13 -0
  33. package/esm2022/lib/table/data/common/checked-type.mjs +2 -0
  34. package/esm2022/lib/table/data/common/event/ge-cell-indices.mjs +9 -0
  35. package/esm2022/lib/table/data/common/event/ge-key-event.mjs +9 -0
  36. package/esm2022/lib/table/data/common/event/ge-model-change-event.mjs +11 -0
  37. package/esm2022/lib/table/data/common/event/ge-mouse-event.mjs +30 -0
  38. package/esm2022/lib/table/data/common/event/input/table-cell-update-event.if.mjs +2 -0
  39. package/esm2022/lib/table/data/common/event/input/table-cell-update-event.mjs +13 -0
  40. package/esm2022/lib/table/data/common/filter-function.mjs +2 -0
  41. package/esm2022/lib/table/data/common/get-t.mjs +2 -0
  42. package/esm2022/lib/table/data/common/index-and-px.mjs +9 -0
  43. package/esm2022/lib/table/data/common/size.if.mjs +2 -0
  44. package/esm2022/lib/table/data/common/size.mjs +9 -0
  45. package/esm2022/lib/table/data/common/sizes.mjs +33 -0
  46. package/esm2022/lib/table/data/common/sort-item.mjs +9 -0
  47. package/esm2022/lib/table/data/common/sort-state.type.mjs +2 -0
  48. package/esm2022/lib/table/data/common/tree-arrow.type.mjs +2 -0
  49. package/esm2022/lib/table/data/common/tree-row-if.mjs +2 -0
  50. package/esm2022/lib/table/data/common/tree-row.mjs +19 -0
  51. package/esm2022/lib/table/data/common/value-label.if.mjs +2 -0
  52. package/esm2022/lib/table/data/common/value-label.mjs +9 -0
  53. package/esm2022/lib/table/data/div-scope.type.mjs +2 -0
  54. package/esm2022/lib/table/data/event/mouse-target-data.mjs +36 -0
  55. package/esm2022/lib/table/data/geo-data.mjs +15 -0
  56. package/esm2022/lib/table/data/options/auto-restore-options.if.mjs +2 -0
  57. package/esm2022/lib/table/data/options/auto-restore-options.mjs +40 -0
  58. package/esm2022/lib/table/data/options/default-row-heights.if.mjs +2 -0
  59. package/esm2022/lib/table/data/options/default-row-heights.mjs +11 -0
  60. package/esm2022/lib/table/data/options/icon.if.mjs +2 -0
  61. package/esm2022/lib/table/data/options/icon.mjs +11 -0
  62. package/esm2022/lib/table/data/options/sorted-options.if.mjs +2 -0
  63. package/esm2022/lib/table/data/options/sorted-options.mjs +12 -0
  64. package/esm2022/lib/table/data/options/table-options.if.mjs +2 -0
  65. package/esm2022/lib/table/data/options/table-options.mjs +44 -0
  66. package/esm2022/lib/table/data/options/tree-options.if.mjs +2 -0
  67. package/esm2022/lib/table/data/options/tree-options.mjs +14 -0
  68. package/esm2022/lib/table/data/side-ident.type.mjs +2 -0
  69. package/esm2022/lib/table/data/table-model-and-options.if.mjs +2 -0
  70. package/esm2022/lib/table/data/table-model-and-options.mjs +9 -0
  71. package/esm2022/lib/table/data/tablemodel/area-ident.type.mjs +14 -0
  72. package/esm2022/lib/table/data/tablemodel/areamodel/abstract-area-model.mjs +137 -0
  73. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.mjs +47 -0
  74. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-cell-groups.mjs +163 -0
  75. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-hidden.mjs +84 -0
  76. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.mjs +15 -0
  77. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-object-array.mjs +88 -0
  78. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-tree.mjs +181 -0
  79. package/esm2022/lib/table/data/tablemodel/areamodel/area-model.if.mjs +2 -0
  80. package/esm2022/lib/table/data/tablemodel/areamodel/area-model.mjs +76 -0
  81. package/esm2022/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.mjs +51 -0
  82. package/esm2022/lib/table/data/tablemodel/areamodel/has-default-row-height-if.mjs +2 -0
  83. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group-ext.mjs +133 -0
  84. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group.if.mjs +2 -0
  85. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group.mjs +18 -0
  86. package/esm2022/lib/table/data/tablemodel/cellgroup/cellgroup-factory.mjs +110 -0
  87. package/esm2022/lib/table/data/tablemodel/column/column-def.if.mjs +2 -0
  88. package/esm2022/lib/table/data/tablemodel/column/column-def.mjs +52 -0
  89. package/esm2022/lib/table/data/tablemodel/padding.mjs +13 -0
  90. package/esm2022/lib/table/data/tablemodel/table-model.if.mjs +2 -0
  91. package/esm2022/lib/table/data/tablemodel/table-model.mjs +308 -0
  92. package/esm2022/lib/table/ele-scope.mjs +199 -0
  93. package/esm2022/lib/table/event-adapter.mjs +17 -0
  94. package/esm2022/lib/table/event-listener.if.mjs +2 -0
  95. package/esm2022/lib/table/factory/table-factory.mjs +186 -0
  96. package/esm2022/lib/table/factory/tree-factory.mjs +32 -0
  97. package/esm2022/lib/table/focus/focus-model.if.mjs +2 -0
  98. package/esm2022/lib/table/focus/focus-model.mjs +33 -0
  99. package/esm2022/lib/table/focus/focus.type.mjs +2 -0
  100. package/esm2022/lib/table/input-handler.mjs +25 -0
  101. package/esm2022/lib/table/mouse-handler.mjs +196 -0
  102. package/esm2022/lib/table/render-scope.mjs +719 -0
  103. package/esm2022/lib/table/renderer/cell-group-ext-cell-renderer.mjs +8 -0
  104. package/esm2022/lib/table/renderer/cell-render.if.mjs +2 -0
  105. package/esm2022/lib/table/renderer/checkbox-boolean-property-cell-renderer.mjs +47 -0
  106. package/esm2022/lib/table/renderer/checkbox-cell-renderer.mjs +22 -0
  107. package/esm2022/lib/table/renderer/date-to-int-date-cell-renderer.mjs +24 -0
  108. package/esm2022/lib/table/renderer/date-to-iso-cell-renderer.mjs +9 -0
  109. package/esm2022/lib/table/renderer/date-to-locale-date-cell-renderer.mjs +9 -0
  110. package/esm2022/lib/table/renderer/date-to-tec-cell-renderer.mjs +12 -0
  111. package/esm2022/lib/table/renderer/edit/edit-cell-renderer.type.mjs +2 -0
  112. package/esm2022/lib/table/renderer/edit/edit-input-pipe-for-number.mjs +4 -0
  113. package/esm2022/lib/table/renderer/edit/edit-input-pipe.if.mjs +2 -0
  114. package/esm2022/lib/table/renderer/edit/input-cell-renderer.mjs +23 -0
  115. package/esm2022/lib/table/renderer/edit/select-cell-renderer.mjs +36 -0
  116. package/esm2022/lib/table/renderer/male-female-to-icon-cell-renderer.mjs +12 -0
  117. package/esm2022/lib/table/renderer/number-cell-renderer.mjs +21 -0
  118. package/esm2022/lib/table/renderer/progress-bar-cell-renderer.mjs +44 -0
  119. package/esm2022/lib/table/renderer/renderer-cleanup-fn.type.mjs +2 -0
  120. package/esm2022/lib/table/renderer/renderer.mjs +7 -0
  121. package/esm2022/lib/table/renderer/star-rating-cell-renderer.mjs +27 -0
  122. package/esm2022/lib/table/renderer/true-false-cell-renderer.mjs +15 -0
  123. package/esm2022/lib/table/selection/selection-model.if.mjs +2 -0
  124. package/esm2022/lib/table/selection/selection-model.mjs +99 -0
  125. package/esm2022/lib/table/selection/selection-service.mjs +101 -0
  126. package/esm2022/lib/table/selection/selection.type.mjs +2 -0
  127. package/esm2022/lib/table/service/abstract-store-state.service.mjs +50 -0
  128. package/esm2022/lib/table/service/convenience-dom.service.mjs +405 -0
  129. package/esm2022/lib/table/service/data/collapsed-expanded.data.mjs +13 -0
  130. package/esm2022/lib/table/service/data/html-style.type.mjs +2 -0
  131. package/esm2022/lib/table/service/dom-service.if.mjs +2 -0
  132. package/esm2022/lib/table/service/ge-filter.service.mjs +98 -0
  133. package/esm2022/lib/table/service/simple-dom-service.mjs +34 -0
  134. package/esm2022/lib/table/service/sorter.service.mjs +27 -0
  135. package/esm2022/lib/table/service/store-state-collapsed-expand.service.mjs +57 -0
  136. package/esm2022/lib/table/service/store-state-scroll-pos.service.mjs +29 -0
  137. package/esm2022/lib/table/service/store-state-sorting.service.mjs +29 -0
  138. package/esm2022/lib/table/service/tree-row.service.mjs +23 -0
  139. package/esm2022/lib/table/table-api.mjs +42 -0
  140. package/esm2022/lib/table/table-scope.mjs +364 -0
  141. package/{src/index.ts → index.d.ts} +4 -24
  142. package/lib/table/action/action-id.type.d.ts +2 -0
  143. package/{src/lib/table/action/on-action-triggered.if.ts → lib/table/action/on-action-triggered.if.d.ts} +1 -4
  144. package/lib/table/action/osx-shortcut-actionId-mapping.d.ts +6 -0
  145. package/lib/table/action/shortcut-actionid-mapping.type.d.ts +4 -0
  146. package/lib/table/action/shortcut.service.d.ts +18 -0
  147. package/lib/table/action/windows-shortcut-actionId-mapping.d.ts +6 -0
  148. package/lib/table/checkbox/checkbox-model.d.ts +12 -0
  149. package/lib/table/checkbox/checkbox-model.if.d.ts +9 -0
  150. package/lib/table/checkbox/tree-checkbox-model.d.ts +17 -0
  151. package/lib/table/color/color-rgb.d.ts +7 -0
  152. package/lib/table/color/color-rgb.if.d.ts +5 -0
  153. package/lib/table/color/ge-css-color-util.d.ts +7 -0
  154. package/lib/table/color/three-color-gradient-arg.d.ts +11 -0
  155. package/lib/table/color/three-color-gradient-arg.if.d.ts +9 -0
  156. package/lib/table/color/two-color-gradient-arg.d.ts +9 -0
  157. package/lib/table/color/two-color-gradient-arg.if.d.ts +7 -0
  158. package/lib/table/css-vars.d.ts +9 -0
  159. package/lib/table/data/chunk/chunk.data-event.d.ts +9 -0
  160. package/lib/table/data/chunk/chunk.data-event.if.d.ts +4 -0
  161. package/lib/table/data/chunk/request-chunk.d.ts +14 -0
  162. package/lib/table/data/chunk/request-chunk.if.d.ts +9 -0
  163. package/lib/table/data/common/aligns.d.ts +24 -0
  164. package/lib/table/data/common/area-map-factory.d.ts +5 -0
  165. package/lib/table/data/common/area-map.d.ts +7 -0
  166. package/lib/table/data/common/area-map.type.d.ts +5 -0
  167. package/{src/lib/table/data/common/args-adjust-columns-to-row-parent-params.ts → lib/table/data/common/args-adjust-columns-to-row-parent-params.d.ts} +10 -11
  168. package/lib/table/data/common/args-render-cell-div.d.ts +17 -0
  169. package/lib/table/data/common/boolean-function.d.ts +3 -0
  170. package/lib/table/data/common/cell-range.d.ts +19 -0
  171. package/lib/table/data/common/checkbox-column-def.d.ts +13 -0
  172. package/lib/table/data/common/event/ge-cell-indices.d.ts +5 -0
  173. package/lib/table/data/common/event/ge-key-event.d.ts +5 -0
  174. package/lib/table/data/common/event/ge-model-change-event.d.ts +6 -0
  175. package/lib/table/data/common/event/ge-mouse-event.d.ts +17 -0
  176. package/lib/table/data/common/event/input/table-cell-update-event.d.ts +9 -0
  177. package/{src/lib/table/data/common/event/input/table-cell-update-event.if.ts → lib/table/data/common/event/input/table-cell-update-event.if.d.ts} +4 -7
  178. package/lib/table/data/common/index-and-px.d.ts +5 -0
  179. package/lib/table/data/common/size.d.ts +6 -0
  180. package/lib/table/data/common/size.if.d.ts +4 -0
  181. package/lib/table/data/common/sizes.d.ts +32 -0
  182. package/lib/table/data/common/sort-item.d.ts +6 -0
  183. package/lib/table/data/common/tree-row-if.d.ts +10 -0
  184. package/lib/table/data/common/tree-row.d.ts +11 -0
  185. package/lib/table/data/common/value-label.d.ts +6 -0
  186. package/lib/table/data/common/value-label.if.d.ts +4 -0
  187. package/lib/table/data/div-scope.type.d.ts +7 -0
  188. package/lib/table/data/event/mouse-target-data.d.ts +15 -0
  189. package/lib/table/data/geo-data.d.ts +8 -0
  190. package/lib/table/data/options/auto-restore-options.d.ts +11 -0
  191. package/lib/table/data/options/auto-restore-options.if.d.ts +16 -0
  192. package/lib/table/data/options/default-row-heights.d.ts +7 -0
  193. package/lib/table/data/options/default-row-heights.if.d.ts +5 -0
  194. package/lib/table/data/options/icon.d.ts +7 -0
  195. package/lib/table/data/options/icon.if.d.ts +5 -0
  196. package/lib/table/data/options/sorted-options.d.ts +8 -0
  197. package/{src/lib/table/data/options/sorted-options.if.ts → lib/table/data/options/sorted-options.if.d.ts} +3 -6
  198. package/lib/table/data/options/table-options.d.ts +41 -0
  199. package/lib/table/data/options/table-options.if.d.ts +42 -0
  200. package/lib/table/data/options/tree-options.d.ts +9 -0
  201. package/lib/table/data/options/tree-options.if.d.ts +7 -0
  202. package/lib/table/data/table-model-and-options.d.ts +8 -0
  203. package/{src/lib/table/data/table-model-and-options.if.ts → lib/table/data/table-model-and-options.if.d.ts} +2 -4
  204. package/{src/lib/table/data/tablemodel/area-ident.type.ts → lib/table/data/tablemodel/area-ident.type.d.ts} +1 -10
  205. package/lib/table/data/tablemodel/areamodel/abstract-area-model.d.ts +47 -0
  206. package/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.d.ts +19 -0
  207. package/lib/table/data/tablemodel/areamodel/area-model-cell-groups.d.ts +51 -0
  208. package/lib/table/data/tablemodel/areamodel/area-model-hidden.d.ts +41 -0
  209. package/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +10 -0
  210. package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +28 -0
  211. package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +39 -0
  212. package/lib/table/data/tablemodel/areamodel/area-model.d.ts +37 -0
  213. package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +158 -0
  214. package/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +12 -0
  215. package/{src/lib/table/data/tablemodel/areamodel/has-default-row-height-if.ts → lib/table/data/tablemodel/areamodel/has-default-row-height-if.d.ts} +1 -1
  216. package/lib/table/data/tablemodel/cellgroup/cell-group-ext.d.ts +21 -0
  217. package/lib/table/data/tablemodel/cellgroup/cell-group.d.ts +11 -0
  218. package/lib/table/data/tablemodel/cellgroup/cell-group.if.d.ts +9 -0
  219. package/lib/table/data/tablemodel/cellgroup/cellgroup-factory.d.ts +10 -0
  220. package/lib/table/data/tablemodel/column/column-def.d.ts +52 -0
  221. package/lib/table/data/tablemodel/column/column-def.if.d.ts +25 -0
  222. package/lib/table/data/tablemodel/padding.d.ts +7 -0
  223. package/lib/table/data/tablemodel/table-model.d.ts +88 -0
  224. package/lib/table/data/tablemodel/table-model.if.d.ts +56 -0
  225. package/lib/table/ele-scope.d.ts +37 -0
  226. package/lib/table/event-adapter.d.ts +12 -0
  227. package/lib/table/event-listener.if.d.ts +11 -0
  228. package/lib/table/factory/table-factory.d.ts +65 -0
  229. package/lib/table/factory/tree-factory.d.ts +6 -0
  230. package/lib/table/focus/focus-model.d.ts +15 -0
  231. package/lib/table/focus/focus-model.if.d.ts +8 -0
  232. package/{src/lib/table/focus/focus.type.ts → lib/table/focus/focus.type.d.ts} +0 -3
  233. package/lib/table/input-handler.d.ts +6 -0
  234. package/lib/table/mouse-handler.d.ts +25 -0
  235. package/lib/table/render-scope.d.ts +86 -0
  236. package/lib/table/renderer/cell-group-ext-cell-renderer.d.ts +9 -0
  237. package/{src/lib/table/renderer/cell-render.if.ts → lib/table/renderer/cell-render.if.d.ts} +1 -10
  238. package/lib/table/renderer/checkbox-boolean-property-cell-renderer.d.ts +15 -0
  239. package/lib/table/renderer/checkbox-cell-renderer.d.ts +8 -0
  240. package/lib/table/renderer/date-to-int-date-cell-renderer.d.ts +9 -0
  241. package/lib/table/renderer/date-to-iso-cell-renderer.d.ts +8 -0
  242. package/lib/table/renderer/date-to-locale-date-cell-renderer.d.ts +8 -0
  243. package/lib/table/renderer/date-to-tec-cell-renderer.d.ts +8 -0
  244. package/{src/lib/table/renderer/edit/edit-cell-renderer.type.ts → lib/table/renderer/edit/edit-cell-renderer.type.d.ts} +0 -1
  245. package/lib/table/renderer/edit/edit-input-pipe-for-number.d.ts +2 -0
  246. package/lib/table/renderer/edit/edit-input-pipe.if.d.ts +3 -0
  247. package/lib/table/renderer/edit/input-cell-renderer.d.ts +8 -0
  248. package/lib/table/renderer/edit/select-cell-renderer.d.ts +12 -0
  249. package/lib/table/renderer/male-female-to-icon-cell-renderer.d.ts +8 -0
  250. package/lib/table/renderer/number-cell-renderer.d.ts +11 -0
  251. package/lib/table/renderer/progress-bar-cell-renderer.d.ts +15 -0
  252. package/lib/table/renderer/renderer.d.ts +5 -0
  253. package/lib/table/renderer/star-rating-cell-renderer.d.ts +13 -0
  254. package/lib/table/renderer/true-false-cell-renderer.d.ts +8 -0
  255. package/lib/table/selection/selection-model.d.ts +21 -0
  256. package/lib/table/selection/selection-model.if.d.ts +11 -0
  257. package/lib/table/selection/selection-service.d.ts +17 -0
  258. package/{src/lib/table/selection/selection.type.ts → lib/table/selection/selection.type.d.ts} +0 -3
  259. package/lib/table/service/abstract-store-state.service.d.ts +10 -0
  260. package/lib/table/service/convenience-dom.service.d.ts +46 -0
  261. package/lib/table/service/data/collapsed-expanded.data.d.ts +7 -0
  262. package/lib/table/service/data/html-style.type.d.ts +3 -0
  263. package/lib/table/service/dom-service.if.d.ts +9 -0
  264. package/lib/table/service/ge-filter.service.d.ts +5 -0
  265. package/lib/table/service/simple-dom-service.d.ts +10 -0
  266. package/lib/table/service/sorter.service.d.ts +3 -0
  267. package/lib/table/service/store-state-collapsed-expand.service.d.ts +15 -0
  268. package/lib/table/service/store-state-scroll-pos.service.d.ts +10 -0
  269. package/lib/table/service/store-state-sorting.service.d.ts +11 -0
  270. package/lib/table/service/tree-row.service.d.ts +5 -0
  271. package/lib/table/table-api.d.ts +18 -0
  272. package/lib/table/table-scope.d.ts +56 -0
  273. package/package.json +17 -10
  274. package/.eslintrc.json +0 -42
  275. package/LICENSE +0 -35
  276. package/README.md +0 -102
  277. package/jest.config.ts +0 -18
  278. package/ng-package.json +0 -7
  279. package/project.json +0 -47
  280. package/src/lib/table/action/action-id.type.ts +0 -24
  281. package/src/lib/table/action/osx-shortcut-actionId-mapping.ts +0 -29
  282. package/src/lib/table/action/shortcut-actionid-mapping.type.ts +0 -3
  283. package/src/lib/table/action/shortcut.service.ts +0 -134
  284. package/src/lib/table/action/windows-shortcut-actionId-mapping.ts +0 -27
  285. package/src/lib/table/checkbox/checkbox-model.if.ts +0 -16
  286. package/src/lib/table/checkbox/checkbox-model.ts +0 -62
  287. package/src/lib/table/checkbox/tree-checkbox-model.ts +0 -123
  288. package/src/lib/table/color/color-rgb.if.ts +0 -7
  289. package/src/lib/table/color/color-rgb.ts +0 -10
  290. package/src/lib/table/color/ge-css-color-util.ts +0 -43
  291. package/src/lib/table/color/three-color-gradient-arg.if.ts +0 -10
  292. package/src/lib/table/color/three-color-gradient-arg.ts +0 -14
  293. package/src/lib/table/color/two-color-gradient-arg.if.ts +0 -8
  294. package/src/lib/table/color/two-color-gradient-arg.ts +0 -12
  295. package/src/lib/table/css-vars.ts +0 -243
  296. package/src/lib/table/data/common/aligns.ts +0 -19
  297. package/src/lib/table/data/common/area-map-factory.ts +0 -14
  298. package/src/lib/table/data/common/area-map.ts +0 -11
  299. package/src/lib/table/data/common/area-map.type.ts +0 -5
  300. package/src/lib/table/data/common/args-render-cell-div.ts +0 -18
  301. package/src/lib/table/data/common/boolean-function.ts +0 -4
  302. package/src/lib/table/data/common/cell-range.ts +0 -57
  303. package/src/lib/table/data/common/checkbox-column-def.ts +0 -25
  304. package/src/lib/table/data/common/event/ge-cell-indices.ts +0 -9
  305. package/src/lib/table/data/common/event/ge-key-event.ts +0 -10
  306. package/src/lib/table/data/common/event/ge-model-change-event.ts +0 -13
  307. package/src/lib/table/data/common/event/ge-mouse-event.ts +0 -38
  308. package/src/lib/table/data/common/event/input/table-cell-update-event.ts +0 -14
  309. package/src/lib/table/data/common/index-and-px.ts +0 -9
  310. package/src/lib/table/data/common/size.if.ts +0 -4
  311. package/src/lib/table/data/common/size.ts +0 -9
  312. package/src/lib/table/data/common/sizes.ts +0 -35
  313. package/src/lib/table/data/common/sort-item.ts +0 -11
  314. package/src/lib/table/data/common/tree-row-if.ts +0 -11
  315. package/src/lib/table/data/common/tree-row.ts +0 -16
  316. package/src/lib/table/data/common/value-label.if.ts +0 -6
  317. package/src/lib/table/data/common/value-label.ts +0 -13
  318. package/src/lib/table/data/div-scope.type.ts +0 -5
  319. package/src/lib/table/data/event/mouse-target-data.ts +0 -45
  320. package/src/lib/table/data/geo-data.ts +0 -13
  321. package/src/lib/table/data/options/auto-restore-options.if.ts +0 -21
  322. package/src/lib/table/data/options/auto-restore-options.ts +0 -50
  323. package/src/lib/table/data/options/default-row-heights.if.ts +0 -5
  324. package/src/lib/table/data/options/default-row-heights.ts +0 -10
  325. package/src/lib/table/data/options/icon.if.ts +0 -7
  326. package/src/lib/table/data/options/icon.ts +0 -10
  327. package/src/lib/table/data/options/sorted-options.ts +0 -15
  328. package/src/lib/table/data/options/table-options.if.ts +0 -54
  329. package/src/lib/table/data/options/table-options.ts +0 -66
  330. package/src/lib/table/data/options/tree-options.if.ts +0 -10
  331. package/src/lib/table/data/options/tree-options.ts +0 -32
  332. package/src/lib/table/data/table-model-and-options.ts +0 -13
  333. package/src/lib/table/data/tablemodel/areamodel/abstract-area-model.ts +0 -183
  334. package/src/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.ts +0 -59
  335. package/src/lib/table/data/tablemodel/areamodel/area-model-cell-groups.ts +0 -210
  336. package/src/lib/table/data/tablemodel/areamodel/area-model-hidden.ts +0 -120
  337. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.ts +0 -23
  338. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array.ts +0 -105
  339. package/src/lib/table/data/tablemodel/areamodel/area-model-tree.ts +0 -215
  340. package/src/lib/table/data/tablemodel/areamodel/area-model.if.ts +0 -186
  341. package/src/lib/table/data/tablemodel/areamodel/area-model.ts +0 -110
  342. package/src/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.ts +0 -61
  343. package/src/lib/table/data/tablemodel/cellgroup/cell-group-ext.ts +0 -167
  344. package/src/lib/table/data/tablemodel/cellgroup/cell-group.if.ts +0 -12
  345. package/src/lib/table/data/tablemodel/cellgroup/cell-group.ts +0 -18
  346. package/src/lib/table/data/tablemodel/cellgroup/cellgroup-factory.ts +0 -148
  347. package/src/lib/table/data/tablemodel/column/column-def.if.ts +0 -28
  348. package/src/lib/table/data/tablemodel/column/column-def.ts +0 -104
  349. package/src/lib/table/data/tablemodel/padding.ts +0 -9
  350. package/src/lib/table/data/tablemodel/table-model.if.ts +0 -90
  351. package/src/lib/table/data/tablemodel/table-model.ts +0 -352
  352. package/src/lib/table/ele-scope.ts +0 -283
  353. package/src/lib/table/event-adapter.ts +0 -28
  354. package/src/lib/table/event-listener.if.ts +0 -19
  355. package/src/lib/table/factory/table-factory.ts +0 -378
  356. package/src/lib/table/factory/tree-factory.ts +0 -51
  357. package/src/lib/table/focus/focus-model.if.ts +0 -14
  358. package/src/lib/table/focus/focus-model.ts +0 -48
  359. package/src/lib/table/input-handler.ts +0 -34
  360. package/src/lib/table/mouse-handler.ts +0 -236
  361. package/src/lib/table/render-scope.ts +0 -936
  362. package/src/lib/table/renderer/cell-group-ext-cell-renderer.ts +0 -27
  363. package/src/lib/table/renderer/checkbox-boolean-property-cell-renderer.ts +0 -63
  364. package/src/lib/table/renderer/checkbox-cell-renderer.ts +0 -39
  365. package/src/lib/table/renderer/date-to-int-date-cell-renderer.ts +0 -39
  366. package/src/lib/table/renderer/date-to-iso-cell-renderer.ts +0 -25
  367. package/src/lib/table/renderer/date-to-locale-date-cell-renderer.ts +0 -24
  368. package/src/lib/table/renderer/date-to-tec-cell-renderer.ts +0 -28
  369. package/src/lib/table/renderer/edit/edit-input-pipe-for-number.ts +0 -6
  370. package/src/lib/table/renderer/edit/edit-input-pipe.if.ts +0 -7
  371. package/src/lib/table/renderer/edit/input-cell-renderer.ts +0 -41
  372. package/src/lib/table/renderer/edit/select-cell-renderer.ts +0 -60
  373. package/src/lib/table/renderer/male-female-to-icon-cell-renderer.ts +0 -26
  374. package/src/lib/table/renderer/number-cell-renderer.ts +0 -38
  375. package/src/lib/table/renderer/progress-bar-cell-renderer.ts +0 -60
  376. package/src/lib/table/renderer/renderer.ts +0 -11
  377. package/src/lib/table/renderer/star-rating-cell-renderer.ts +0 -45
  378. package/src/lib/table/renderer/true-false-cell-renderer.ts +0 -28
  379. package/src/lib/table/selection/selection-model.if.ts +0 -20
  380. package/src/lib/table/selection/selection-model.ts +0 -109
  381. package/src/lib/table/selection/selection-service.ts +0 -120
  382. package/src/lib/table/service/abstract-store-state.service.ts +0 -105
  383. package/src/lib/table/service/convenience-dom.service.ts +0 -548
  384. package/src/lib/table/service/data/collapsed-expanded.data.ts +0 -11
  385. package/src/lib/table/service/data/html-style.type.ts +0 -1
  386. package/src/lib/table/service/dom-service.if.ts +0 -16
  387. package/src/lib/table/service/ge-filter.service.ts +0 -123
  388. package/src/lib/table/service/simple-dom-service.ts +0 -46
  389. package/src/lib/table/service/sorter.service.ts +0 -30
  390. package/src/lib/table/service/store-state-collapsed-expand.service.ts +0 -76
  391. package/src/lib/table/service/store-state-scroll-pos.service.ts +0 -40
  392. package/src/lib/table/service/store-state-sorting.service.ts +0 -41
  393. package/src/lib/table/service/tree-row.service.ts +0 -31
  394. package/src/lib/table/table-api.ts +0 -61
  395. package/src/lib/table/table-scope.ts +0 -433
  396. package/src/test-setup.ts +0 -1
  397. package/tsconfig.json +0 -22
  398. package/tsconfig.lib.json +0 -19
  399. package/tsconfig.lib.prod.json +0 -7
  400. package/tsconfig.spec.json +0 -20
  401. /package/{src/lib/table/data/common/checked-type.ts → lib/table/data/common/checked-type.d.ts} +0 -0
  402. /package/{src/lib/table/data/common/filter-function.ts → lib/table/data/common/filter-function.d.ts} +0 -0
  403. /package/{src/lib/table/data/common/get-t.ts → lib/table/data/common/get-t.d.ts} +0 -0
  404. /package/{src/lib/table/data/common/sort-state.type.ts → lib/table/data/common/sort-state.type.d.ts} +0 -0
  405. /package/{src/lib/table/data/common/tree-arrow.type.ts → lib/table/data/common/tree-arrow.type.d.ts} +0 -0
  406. /package/{src/lib/table/data/side-ident.type.ts → lib/table/data/side-ident.type.d.ts} +0 -0
  407. /package/{src/lib/table/renderer/renderer-cleanup-fn.type.ts → lib/table/renderer/renderer-cleanup-fn.type.d.ts} +0 -0
@@ -1,936 +0,0 @@
1
- import { EleScope } from "./ele-scope";
2
- import { TableModelIf } from "./data/tablemodel/table-model.if";
3
- import { ConvenienceDomService } from "./service/convenience-dom.service";
4
- import { TableOptionsIf } from "./data/options/table-options.if";
5
- import { CellRange } from "./data/common/cell-range";
6
- import { RendererCleanupFnType } from "./renderer/renderer-cleanup-fn.type";
7
- import { AreaIdent } from "./data/tablemodel/area-ident.type";
8
- import { SideIdent } from "./data/side-ident.type";
9
- import { DivScope } from "./data/div-scope.type";
10
- import { AreaModelIf } from "./data/tablemodel/areamodel/area-model.if";
11
- import { ArgsAdjustColumnsToRowParentParams } from "./data/common/args-adjust-columns-to-row-parent-params";
12
- import { ArgsRenderCellDiv } from "./data/common/args-render-cell-div";
13
- import { TreeArrowType } from "./data/common/tree-arrow.type";
14
- import { TreeRow } from "./data/common/tree-row";
15
- import { StoreStateScrollPosService } from "./service/store-state-scroll-pos.service";
16
- import { GeMouseEvent } from "./data/common/event/ge-mouse-event";
17
- import { AreaModelTree } from "./data/tablemodel/areamodel/area-model-tree";
18
- import { GeoData } from "./data/geo-data";
19
- import { CellRendererIf } from "./renderer/cell-render.if";
20
- import { SelectionModelIf } from "./selection/selection-model.if";
21
- import { GetT } from "./data/common/get-t";
22
- import { FocusModelIf } from "./focus/focus-model.if";
23
- import { ColAndRowspanModel } from "./data/tablemodel/areamodel/col-and-rowspan-model";
24
- import { AreaObjectMapType } from "./data/common/area-map.type";
25
- import { AreaObjectMap } from "./data/common/area-map";
26
- import { TableCellUpdateEventIf } from "./data/common/event/input/table-cell-update-event.if";
27
-
28
-
29
- interface ArgsRenderCell {
30
- areaModel: AreaModelIf;
31
- areaIdent: AreaIdent;
32
- sideIdent: SideIdent;
33
- rowIndex: number;
34
- columnIndex: number;
35
- left: number;
36
- top: number;
37
- width: number;
38
- height: number;
39
- parent: HTMLDivElement;
40
- cellSelected: boolean;
41
- lastRowOfModel: boolean;
42
- gammaRange: boolean;
43
- }
44
-
45
- interface ArgsRenderHeaderCellResizeHandle {
46
- rowIndex: number;
47
- columnIndex: number;
48
- cellLeft: number;
49
- cellTop: number;
50
- cellWidth: number;
51
- cellHeight: number;
52
- parent: HTMLDivElement;
53
- }
54
-
55
- export class RenderScope extends EleScope {
56
-
57
- protected storeScrollPosStateService?: StoreStateScrollPosService;
58
- protected getSelectionModel?: GetT<SelectionModelIf>;
59
- protected getFocusModel?: GetT<FocusModelIf>; // TODO use it!
60
- protected scrollLeft = 0;
61
- protected scrollViewportLeft = 0;
62
- protected scrollFactorY = 0;
63
- protected scrollFactorX = 0;
64
-
65
- protected readonly cleanupFunctions: {
66
- header: (RendererCleanupFnType)[],
67
- body: (RendererCleanupFnType)[],
68
- footer: (RendererCleanupFnType)[],
69
- } = {
70
- header: [],
71
- body: [],
72
- footer: []
73
- };
74
- protected tree = false;
75
- // TODO delete? protected rangeEles: HTMLDivElement[] = [];
76
- protected colAndRowspanModels: AreaObjectMapType<ColAndRowspanModel> = new AreaObjectMap<ColAndRowspanModel>();
77
- protected firstVisibleRowIndex = -1;
78
-
79
- protected draggingTargetColumnIndex = -1;
80
- protected mouseEvent?: GeMouseEvent;
81
- private debounceTimeout?: ReturnType<typeof setTimeout> | null;
82
- private editorRenderer?: CellRendererIf;
83
- private editorRendererColumn?: number;
84
- private editorRendererRow?: number;
85
- private removables: HTMLDivElement[] = [];
86
-
87
- constructor(
88
- hostElement: HTMLDivElement,
89
- tableModel: TableModelIf,
90
- dom: ConvenienceDomService,
91
- tableOptions: TableOptionsIf
92
- ) {
93
- super(hostElement, tableModel, dom, tableOptions);
94
-
95
- if (this.tableModel.getSelectionModel) {
96
- this.getSelectionModel = this.tableModel.getSelectionModel;
97
-
98
- } else if (this.tableOptions?.getSelectionModel) {
99
- this.getSelectionModel = this.tableOptions.getSelectionModel;
100
- }
101
-
102
- if (this.tableOptions?.getFocusModel) {
103
- this.getFocusModel = this.tableOptions.getFocusModel;
104
- }
105
- if (tableModel.getAreaModel("body") instanceof AreaModelTree) {
106
- this.tree = true;
107
- }
108
- const aereaIds: AreaIdent[] = ["header", "body", "footer"];
109
- aereaIds.forEach(
110
- areaIdent => {
111
- this.colAndRowspanModels[areaIdent] = new ColAndRowspanModel(tableModel, tableModel.getAreaModel(areaIdent));
112
- this.colAndRowspanModels[areaIdent]?.init();
113
- }
114
- );
115
- }
116
-
117
- protected editing = false;
118
- isEditing(){
119
- return this.editing;
120
- }
121
-
122
- resetEditorRenderer() {
123
- this.editorRenderer = undefined;
124
- this.editorRendererRow = -1;
125
- this.editorRendererColumn = -1;
126
- this.editing = false;
127
- }
128
-
129
- clearSelection() {
130
- if (this.getSelectionModel) {
131
- const sm = this.getSelectionModel();
132
- sm?.clear();
133
- }
134
- }
135
-
136
- initRenderEditor(rowIdx: number, colIdx: number) {
137
- let rnFn = this.tableModel.getColumnDef(colIdx)?.getEditRenderer;
138
- if (!rnFn) {
139
- rnFn = this.tableOptions.getEditRenderer;
140
- }
141
-
142
- if (rnFn) {
143
- this.editorRenderer = rnFn(rowIdx, colIdx);
144
-
145
- if (this.editorRenderer) {
146
- this.editorRendererRow = rowIdx;
147
- this.editorRendererColumn = colIdx;
148
- this.editing = true;
149
- this.repaint();
150
- // request focus:
151
- const input = document.querySelector("input.ge-table-cell-editor-input") as HTMLInputElement;
152
- if (input) {
153
- input.focus();
154
- }
155
-
156
- } else {
157
- this.resetEditorRenderer();
158
- }
159
- }
160
- }
161
-
162
- repaint() {
163
- this.adjustAfterScrolling();
164
- }
165
-
166
- override adjustAfterScrolling() {
167
- for (const cleaning of this.removables) {
168
- cleaning.remove();
169
- }
170
- this.hideHoverRow();
171
- this.hideHoverColumn();
172
-
173
- this.scrollTop = this.scrollViewport.scrollTop;
174
- this.scrollLeft = this.scrollViewport.scrollLeft;
175
- this.debounce(this.checkForScrollPosSaving.bind(this));
176
-
177
- this.scrollFactorY = this.scrollTop / (this.scrollViewport.scrollHeight - this.scrollViewport.clientHeight);
178
- this.scrollFactorX = this.scrollLeft / (this.scrollViewport.scrollWidth - this.scrollViewport.clientWidth);
179
-
180
- if (isNaN(this.scrollFactorY)) {
181
- this.scrollFactorY = 0;
182
- }
183
- if (isNaN(this.scrollFactorX)) {
184
- this.scrollFactorX = 0;
185
- }
186
-
187
- this.adjustBody();
188
- this.adjustArea("footer");
189
- this.adjustArea("header");
190
-
191
-
192
- if (this.tableOptions.tableTopBorderVisible) {
193
- this.removables.push(this.dom.addHorizontalBorder(
194
- new GeoData(0, this.hostElement.clientWidth, 1, 0),
195
- this.hostElement,
196
- "ge-table-border"));
197
- }
198
- if (this.tableOptions.tableBottomBorderVisible) {
199
- this.removables.push(this.dom.addHorizontalBorder(
200
- new GeoData(0, this.hostElement.clientWidth, 1, this.hostElement.clientHeight - 1),
201
- this.hostElement,
202
- "ge-table-border"));
203
- }
204
- // The border between east and center in header/body/footer (full height):
205
- if (this.tableModel.getFixedLeftColumnCount() > 0) {
206
- this.removables.push(this.dom.addVerticalBorder(
207
- new GeoData(this.areaBodyWest.child.clientWidth, 1, this.hostElement.clientHeight, 0),
208
- this.hostElement,
209
- "ge-table-body-west-vertical-border"));
210
- }
211
- // The border between header and body (full width):
212
- if (this.tableModel.getAreaModel("header")?.getRowCount() > 0) {
213
- this.removables.push(this.dom.addHorizontalBorder(
214
- new GeoData(0, this.hostElement.clientWidth, 1, this.areaHeaderCenter.child.clientHeight),
215
- this.hostElement,
216
- "ge-table-body-west-vertical-border"));
217
- }
218
- }
219
-
220
- checkForScrollPosSaving() {
221
- if (this.storeScrollPosStateService
222
- && this.tableOptions?.autoRestoreOptions?.autoRestoreScrollPosition) {
223
- this.storeScrollPosStateService.updateScrollOffset([this.scrollLeft, this.scrollTop]);
224
- }
225
- }
226
-
227
- updateCells(events: TableCellUpdateEventIf[]) {
228
- events.forEach(evt => this.tableModel
229
- .getAreaModel(evt.area)
230
- .setValue(evt.rowIndex, evt.columnIndex, evt.value)
231
- );
232
- this.repaint();
233
- }
234
-
235
- protected getAreaAndSideIdentByAttr(srcElement: HTMLElement): [AreaIdent | undefined, SideIdent | undefined] {
236
- if (srcElement) {
237
- const dataArea = this.getStringByAttr(srcElement, "data-area");
238
- const dataSide = this.getStringByAttr(srcElement, "data-side");
239
- if (dataSide && dataArea) {
240
- return [dataArea, dataSide] as [AreaIdent, SideIdent];
241
- }
242
- }
243
- return [undefined, undefined];
244
- }
245
-
246
- protected getArea(rowIdent: AreaIdent, sideIdent: SideIdent): DivScope {
247
- if (rowIdent === "header") {
248
- if (sideIdent === "west") return this.areaHeaderWest;
249
- if (sideIdent === "center") return this.areaHeaderCenter;
250
- if (sideIdent === "east") return this.areaHeaderEast;
251
- } else if (rowIdent === "body") {
252
- if (sideIdent === "west") return this.areaBodyWest;
253
- if (sideIdent === "center") return this.areaBodyCenter;
254
- if (sideIdent === "east") return this.areaBodyEast;
255
- } else if (rowIdent === "footer") {
256
- if (sideIdent === "west") return this.areaFooterWest;
257
- if (sideIdent === "center") return this.areaFooterCenter;
258
- if (sideIdent === "east") return this.areaFooterEast;
259
- }
260
- throw Error(`Wrong area identifier: row:${rowIdent}, col:${sideIdent}`);
261
- }
262
-
263
- protected adjustBody() {
264
- const virtualRowDivTopF1 = this.areaBodyCenterGeo.height - this.tableModel.getContentHeightInPixel();
265
- const virtualRowDivTop = this.scrollFactorY * virtualRowDivTopF1;
266
-
267
- this.dom.setStyle(this.contentDiv, "top", `${this.scrollTop}px`);
268
- this.dom.setStyle(this.contentDiv, "left", `${this.scrollViewport.scrollLeft}px`);
269
-
270
- this.adjustArea("body", virtualRowDivTop);
271
- }
272
-
273
- protected getNumberByAttr(srcElement: HTMLElement, key: string): number {
274
- if (srcElement) {
275
- const attr = srcElement.closest("[" + key + "]")?.getAttribute(key);
276
- if (attr) return Number(attr);
277
- }
278
- return -1;
279
- }
280
-
281
- protected getStringByAttr(srcElement: HTMLElement, key: string): string {
282
- if (srcElement) {
283
- const attr = srcElement.closest("[" + key + "]")?.getAttribute(key);
284
- if (attr) return attr;
285
- }
286
- return "";
287
- }
288
-
289
- protected adjustArea(areaIdent: AreaIdent, yStart: number = 0) {
290
- const westArea = this.getArea(areaIdent, "west");
291
- const centerArea = this.getArea(areaIdent, "center");
292
- const eastArea = this.getArea(areaIdent, "east");
293
- const divHeight = centerArea.child.clientHeight;
294
-
295
- westArea.child.innerText = "";
296
- centerArea.child.innerText = "";
297
- eastArea.child.innerText = "";
298
- const left = 0;
299
- const width = this.areaBodyCenterGeo.width;
300
- const padding = this.tableModel.getPadding();
301
- const areaModel = this.tableModel.getAreaModel(areaIdent);
302
- const rowCount = areaModel.getRowCount();
303
-
304
- while (this.cleanupFunctions[areaIdent].length) {
305
- const fn = this.cleanupFunctions[areaIdent].shift();
306
- if (fn) {
307
- fn();
308
- }
309
- }
310
- let y = yStart;
311
-
312
- const columnCount = this.tableModel.getColumnCount();
313
- const fixedRightColumnCount = this.tableModel.getFixedRightColumnCount();
314
- const fixedLeftColumnCount = this.tableModel.getFixedLeftColumnCount();
315
-
316
- for (let index = 0; index < rowCount; index++) {
317
- const top = y;
318
- const lastRowOfModel = index === rowCount - 1;
319
- const height = this.tableModel.getRowHeight(areaIdent, index);
320
-
321
- if (top + height > 0) {
322
- // It's not scrolled out on top:
323
- // Visible!
324
- this.firstVisibleRowIndex = index;
325
-
326
- // center -------------------------------------------
327
- let geo = { left, width, height, top, index };
328
- let rowDiv = this.dom.addRowDiv(centerArea, geo, index, areaIdent, "center");
329
- const centerStartCol = fixedLeftColumnCount;
330
-
331
- this.adjustColumnsToRowParent({
332
- areaIdent,
333
- sideIdent: "center",
334
- areaModel,
335
- geo,
336
- parent: rowDiv,
337
- rowIndex: index,
338
- columnIndexStart: centerStartCol,
339
- columnIndexEnd: columnCount - fixedRightColumnCount - 1,
340
- verticalFixed: false,
341
- lastRowOfModel
342
- });
343
-
344
- // west -------------------------------------------
345
- if (padding.left > 0) {
346
- geo = { left, width: this.areaBodyWestGeo.width, height, top, index };
347
- rowDiv = this.dom.addRowDiv(westArea, geo, index, areaIdent, "west");
348
- this.adjustColumnsToRowParent({
349
- areaIdent,
350
- sideIdent: "west",
351
- areaModel,
352
- geo,
353
- parent: rowDiv,
354
- rowIndex: index,
355
- columnIndexStart: 0,
356
- columnIndexEnd: centerStartCol - 1,
357
- verticalFixed: true,
358
- lastRowOfModel
359
- });
360
- }
361
-
362
- // east -------------------------------------------
363
- if (padding.right > 0) {
364
- geo = { left, width: this.areaBodyEastGeo.width, height, top, index };
365
- rowDiv = this.dom.addRowDiv(eastArea, geo, index, areaIdent, "east");
366
- this.adjustColumnsToRowParent({
367
- areaIdent,
368
- sideIdent: "east",
369
- areaModel,
370
- geo,
371
- parent: rowDiv,
372
- rowIndex: index,
373
- columnIndexStart: columnCount - fixedRightColumnCount,
374
- columnIndexEnd: columnCount - 1,
375
- verticalFixed: true,
376
- lastRowOfModel
377
- });
378
- }
379
-
380
- // "collapse / expand all" event handler action attribute:
381
- if (areaIdent === "header" && this.tree && index === rowCount - 1) {
382
- const div =
383
- this.dom.applyStyle(
384
- this.dom.setAttribute(
385
- this.dom.addDiv(rowDiv, new GeoData(16, 20, 20, 8)),
386
- "data-ge-action", "toggleExpandCollapseAll"
387
- ),
388
- { "cursor": "pointer" }
389
- );
390
- const treeOptionsArrow = this.tableOptions.treeOptions.arrowExpandCollapseAll;
391
- if (treeOptionsArrow) {
392
- const textElement = this.dom.domService.createText(treeOptionsArrow.content);
393
- this.dom.domService.appendChild(div, textElement);
394
- if (treeOptionsArrow.style) {
395
- this.dom.applyStyleString(div, treeOptionsArrow.style);
396
- }
397
- }
398
- }
399
-
400
- }
401
- y = y + height;
402
- // lastVisibleRowIndex = index;
403
- if (y > divHeight) { // + 1000) {
404
- break;
405
- }
406
- } // for
407
-
408
- // We draw the big colspan and rowspan cells at the end.
409
- // This fixes the 'half cutted big cell' problem:
410
- if (this.colAndRowspanModels && this.colAndRowspanModels[areaIdent]) {
411
- // draw col/rowspan cells again:
412
- const ranges = this.colAndRowspanModels[areaIdent]?.getRanges() ?? [];
413
- if (ranges.length) {
414
-
415
- for (const range of ranges) {
416
- let xStart = 0;
417
- let child: HTMLDivElement = centerArea.child;
418
- let sideIdent: SideIdent = "center";
419
- if (range.c1 < fixedLeftColumnCount) {
420
- // West:
421
- child = westArea.child;
422
- sideIdent = "west";
423
- } else if (fixedRightColumnCount > 0 && range.c1 >= columnCount - fixedRightColumnCount) {
424
- // East:
425
- child = eastArea.child;
426
- sideIdent = "east";
427
- } else {
428
- // Center:
429
- const virtualRowDivLeftF1 = this.areaBodyCenterGeo.width - this.tableModel.getContentWidthInPixel();
430
- xStart = (this.scrollFactorX * virtualRowDivLeftF1) - this.areaBodyWestGeo.width;
431
- sideIdent = "center";
432
- }
433
- this.drawBigCell(range, xStart, yStart, areaModel, child, sideIdent);
434
- }
435
- }
436
- }
437
- }
438
-
439
- /**
440
- * Draws big cells (rowspan and or colspan) in body/center
441
- * @param range CellRange
442
- * @param xStart X position in pixel for top left corner
443
- * @param yStart Y position in pixel for top left corner
444
- * @param areaModel AreaModelIf
445
- * @param parentDiv Parent div as HTMLDivElement
446
- * @param sideIdent SideIdent (west,center,east)
447
- * @protected
448
- */
449
- protected drawBigCell(
450
- range: CellRange,
451
- xStart: number,
452
- yStart: number,
453
- areaModel: AreaModelIf,
454
- parentDiv: HTMLDivElement,
455
- sideIdent: SideIdent) {
456
-
457
- const y1 = yStart + this.getRowHeights(0, range.r1 - 1, areaModel).reduce((a, b) => a + b, 0);
458
-
459
- const columnCount = this.tableModel.getColumnCount();
460
- const fixedRightColumnCount = this.tableModel.getFixedRightColumnCount();
461
- let firstColIdx = 0;
462
- if (fixedRightColumnCount > 0 && range.c1 >= columnCount - fixedRightColumnCount) {
463
- // We are on the (fixed) east side, so we have to fix firstColIdx:
464
- firstColIdx = columnCount - fixedRightColumnCount;
465
- }
466
- const x1 = xStart + this.getColumnWidths(firstColIdx, range.c1 - 1).reduce((a, b) => a + b, 0);
467
-
468
- const h = this.getRowHeights(range.r1, range.r2, areaModel).reduce((a, b) => a + b, 0);
469
- const w = this.getColumnWidths(range.c1, range.c2).reduce((a, b) => a + b, 0);
470
-
471
- let cellSelected = false;
472
- const selectionModel = this.getSelectionModel ? this.getSelectionModel() : undefined;
473
- if (selectionModel) {
474
- const count = selectionModel.getSelectionCount(range.r1, range.c1);
475
- cellSelected = count > 0;
476
- }
477
- if (range.gammaRange) {
478
- // TODO render hierarchy cell
479
- console.info('TODO here', range);
480
-
481
- this.renderCell({
482
- areaModel,
483
- areaIdent: areaModel.areaIdent,
484
- sideIdent,
485
- rowIndex: range.r1,
486
- columnIndex: range.c1,
487
- left: x1,
488
- top: y1,
489
- width: w,
490
- height: h,
491
- parent: parentDiv,
492
- cellSelected,
493
- lastRowOfModel: true,
494
- gammaRange:range.gammaRange
495
- });
496
- } else {
497
- this.renderCell({
498
- areaModel,
499
- areaIdent: areaModel.areaIdent,
500
- sideIdent,
501
- rowIndex: range.r1,
502
- columnIndex: range.c1,
503
- left: x1,
504
- top: y1,
505
- width: w,
506
- height: h,
507
- parent: parentDiv,
508
- cellSelected,
509
- lastRowOfModel: true,
510
- gammaRange:range.gammaRange
511
- });
512
- }
513
-
514
- if (areaModel.areaIdent === "header" && this.tableOptions.columnsResizable) {
515
- this.renderHeaderCellResizeHandle({
516
- rowIndex: range.r1,
517
- columnIndex: range.c1,
518
- cellLeft: x1,
519
- cellTop: y1,
520
- cellWidth: w,
521
- cellHeight: h,
522
- parent: parentDiv
523
- });
524
- }
525
- }
526
-
527
-
528
- protected findRowOfImportantRowspanCell(areaModel: AreaModelIf, rowIndex: number, colIndex: number): number {
529
- const maxRowspan = areaModel.getMaxRowspan();
530
- for (let r = rowIndex - 1; r > -1; r--) {
531
- const rowspan = areaModel.getRowspanAt(r, colIndex);
532
- if (rowspan > 1 && r + rowspan + 1 >= rowIndex) {
533
- return r;
534
- }
535
- if (rowIndex - r > maxRowspan) {
536
- return -1;
537
- }
538
- }
539
- return -1;
540
- }
541
-
542
-
543
- protected adjustColumnsToRowParent(
544
- {
545
- areaIdent,
546
- sideIdent,
547
- areaModel,
548
- geo,
549
- parent,
550
- rowIndex,
551
- columnIndexStart,
552
- columnIndexEnd,
553
- verticalFixed = false,
554
- lastRowOfModel = false
555
- }: ArgsAdjustColumnsToRowParentParams
556
- ): void {
557
-
558
- this.scrollViewportLeft = this.scrollViewport.scrollLeft;
559
- let virtualRowDivLeft = 0;
560
- if (!verticalFixed) {
561
- const virtualRowDivLeftF1 = (this.areaBodyCenterGeo.width) - this.tableModel.getContentWidthInPixel();
562
- virtualRowDivLeft = this.scrollFactorX * virtualRowDivLeftF1;
563
- }
564
-
565
- const top = 0;
566
- const renderSelection = !!(areaIdent === "body" && sideIdent);
567
-
568
- let x = virtualRowDivLeft;
569
- for (let index = columnIndexStart; index <= columnIndexEnd; index++) {
570
- const left = x;
571
- const w = this.tableModel.getColumnWidth(index);
572
- if (w > 0 && left + w > 0) {
573
- // Visible! Render cell div:
574
-
575
- // calc height:
576
- let height = geo.height;
577
- const rowspan = areaModel.getRowspanAt(rowIndex, index);
578
- const colspan = areaModel.getColspanAt(rowIndex, index);
579
- // if (areaIdent==='header') {
580
- // console.info(rowIndex+'/'+index, rowspan+'_'+colspan)
581
- // }
582
-
583
- if (rowspan > 1) {
584
- height = this.getRowHeights(rowIndex, rowIndex + rowspan - 1, areaModel).reduce((a, b) => a + b, 0);
585
- }
586
-
587
- let width = w;
588
- if (colspan > 1) {
589
- width = this.getColumnWidths(index, index + colspan - 1).reduce((a, b) => a + b, 0);
590
- }
591
-
592
- let skip = false;
593
- if (this.colAndRowspanModels && this.colAndRowspanModels[areaIdent]) {
594
- if (this.colAndRowspanModels[areaIdent]?.isInRange(rowIndex, index)) {
595
- skip = true; // for the body area we don't want to to render the small single cells
596
- }
597
- }
598
-
599
- if (this.draggingTargetColumnIndex === index
600
- && areaIdent !== "header") {
601
- // For a running drag and drop action:
602
- this.renderDragTargetDiv(parent, left, top, width, height);
603
- const geo1 = { left, top, width, height };
604
- this.dom.addColumnBorderDivs(this.tableOptions, parent, geo1, areaIdent, sideIdent);
605
-
606
- } else {
607
- const cellSelected = this.renderSelectedBackgroundDiv(skip, renderSelection, sideIdent, areaModel, rowIndex, index, parent, left, top, width, height);
608
-
609
- if (!skip) {
610
- this.renderCell({
611
- areaModel,
612
- areaIdent,
613
- sideIdent,
614
- rowIndex,
615
- columnIndex: index,
616
- left,
617
- top,
618
- width,
619
- height,
620
- parent,
621
- cellSelected,
622
- lastRowOfModel,
623
- gammaRange:true
624
- });
625
- }
626
- if (areaIdent === "header" && this.tableOptions.columnsResizable) {
627
- this.renderHeaderCellResizeHandle({
628
- rowIndex: rowIndex,
629
- columnIndex: index,
630
- cellLeft: left,
631
- cellTop: top,
632
- cellWidth: width,
633
- cellHeight: height,
634
- parent: parent
635
- });
636
- }
637
- }
638
- }
639
-
640
- x = x + w;
641
- if (x > this.areaBodyCenterGeo.width) {
642
- break;
643
- }
644
- }
645
- // Right vertical border:
646
- if (this.tableOptions.verticalBorderVisible) {
647
- this.dom.addVerticalBorder(new GeoData(x - 1, 1, geo.height, 0), parent);
648
- }
649
- }
650
-
651
- protected getTreeArrowColumnIndex(): 0 | 1 {
652
- if (this.tableOptions.showCheckboxWihoutExtraColumn) {
653
- return 0;
654
- }
655
- if (this.tableModel.isRowCheckboxVisible()) {
656
- return 1;
657
- }
658
- return 0;
659
- }
660
-
661
- protected addAndRenderCellDiv(
662
- {
663
- areaModel,
664
- areaIdent,
665
- sideIdent,
666
- rowIndex,
667
- index,
668
- left,
669
- width,
670
- height,
671
- top,
672
- parent,
673
- lastRowOfModel
674
- }: ArgsRenderCellDiv): [HTMLDivElement, RendererCleanupFnType | undefined] {
675
-
676
-
677
- const editor = this.editorRenderer && this.editorRendererRow === rowIndex && this.editorRendererColumn === index;
678
- const cellRenderer = (editor) ? this.editorRenderer : areaModel.getCellRenderer(rowIndex, index);
679
- const geo = { left, width, height, top, index };
680
- const rowObject = areaModel.getRowByIndex(rowIndex);
681
- let treeArrow: TreeArrowType = "none";
682
-
683
- const arrowIndexOk = index === this.getTreeArrowColumnIndex();
684
-
685
- if (arrowIndexOk && rowObject instanceof TreeRow) {
686
- const tr = rowObject as TreeRow<any>;
687
- if (tr.children?.length) {
688
- if (tr.expanded) {
689
- treeArrow = "expanded";
690
- } else {
691
- treeArrow = "collapsed";
692
- }
693
- } else {
694
- treeArrow = "hidden";
695
- }
696
- }
697
-
698
- let sortState = undefined;
699
- if (areaIdent === "header") {
700
- const columnDef = this.tableModel.getColumnDef(index);
701
- if (!columnDef?.sortIconVisible || columnDef?.sortIconVisible()) {
702
- sortState = columnDef?.sortState;
703
- }
704
- }
705
-
706
- const val = areaModel.getValueAt(rowIndex, index);
707
- const text = cellRenderer ? "" : `${val}`;
708
- const checkedType = areaModel.isRowChecked(rowIndex);
709
- const cell = this.dom.addColumnDiv(
710
- parent, geo, rowIndex, index, areaIdent, sideIdent,
711
- text, treeArrow, this.tableOptions, checkedType, sortState);
712
-
713
- const tooltip = areaModel.getTooltipAt(rowIndex, index);
714
- if (tooltip) {
715
- this.dom.setAttribute(cell, "title", tooltip);
716
- }
717
-
718
- const columnDef = this.tableModel.getColumnDef(index);
719
- if (columnDef && columnDef.classes[areaIdent]) {
720
- this.dom.addClasses(columnDef.classes[areaIdent], cell);
721
- }
722
-
723
- let fn: RendererCleanupFnType | undefined = undefined;
724
- if (cellRenderer) {
725
- fn = cellRenderer.render(cell, rowIndex, index, areaIdent, areaModel, val, this.dom.domService);
726
- }
727
-
728
- const classes = areaModel.getCustomClassesAt(rowIndex, index);
729
- if (classes.length) {
730
- this.dom.addClasses(classes, cell);
731
- }
732
-
733
- this.dom.addColumnBorderDivs(this.tableOptions, parent, geo, areaIdent, sideIdent);
734
- if (lastRowOfModel) {
735
- this.dom.addHorizontalBorder({ left, width, height, top: top + height }, parent);
736
- }
737
- if (this.getFocusModel && areaIdent === "body") {
738
- const fm = this.getFocusModel();
739
- if (fm?.hasFocus(rowIndex, index)) {
740
- this.dom.addFocusBorderDivs(parent, geo, {});
741
- }
742
- }
743
- if (areaIdent === "header") {
744
- this.dom.setAttribute(cell, "data-ge-action", "drag-column");
745
- }
746
-
747
- const styles = areaModel.getCustomStyleAt(rowIndex, index);
748
- if (styles) {
749
- for (const css in styles) {
750
- this.dom.setStyle(cell, css, styles[css]);
751
- }
752
- }
753
- return [cell, fn];
754
- }
755
-
756
- protected getColumnWidths(startIndex: number, endIndex: number): number[] {
757
- const ret: number[] = [];
758
- for (let i = startIndex; i <= endIndex; i++) {
759
- ret.push(this.tableModel.getColumnWidth(i));
760
- }
761
- return ret;
762
- }
763
-
764
- protected getRowHeights(startIndex: number, endIndex: number, areaModel: AreaModelIf): number[] {
765
- const ret: number[] = [];
766
- for (let i = startIndex; i <= endIndex; i++) {
767
- ret.push(areaModel.getRowHeight(i));
768
- }
769
- return ret;
770
- }
771
-
772
- protected adjustHoverRows(mouseMoveEvent: GeMouseEvent) {
773
- if (this.tableOptions.hoverRowVisible && mouseMoveEvent.rowIndex > -1) {
774
- const width = this.hostElement.clientWidth;
775
- const rowHeight = this.tableModel.getAreaModel("body").getRowHeight(mouseMoveEvent.rowIndex);
776
- const top = mouseMoveEvent.rowTop + this.areaHeaderCenter.parent.clientHeight - this.scrollTop;
777
- this.dom.applyStyle(this.hoverRow, {
778
- "left": "0",
779
- "top": top + "px",
780
- "width": width + "px",
781
- "height": rowHeight + "px",
782
- "display": "block"
783
- });
784
- } else {
785
- this.hideHoverRow();
786
- }
787
- }
788
-
789
- protected hideHoverRow() {
790
- this.dom.applyStyle(this.hoverRow, {
791
- "display": "none"
792
- });
793
- }
794
-
795
- protected adjustHoverColumns(mouseMoveEvent: GeMouseEvent) {
796
- if (this.tableOptions.hoverColumnVisible && mouseMoveEvent.rowIndex > -1) {
797
- const height = this.hostElement.clientHeight;
798
- const width = this.tableModel.getColumnWidth(mouseMoveEvent.columnIndex);
799
- const fixedWest = this.areaBodyWestGeo.width;
800
- const left = mouseMoveEvent.columnLeft + this.tableModel.getPadding().left - this.scrollLeft - fixedWest;
801
- this.dom.applyStyle(this.hoverColumn, {
802
- "left": (left) + "px",
803
- "top": "0px",
804
- "width": width + "px",
805
- "height": height + "px",
806
- "display": "block"
807
- });
808
- } else {
809
- this.hideHoverColumn();
810
- }
811
- }
812
-
813
- protected hideHoverColumn() {
814
- this.dom.applyStyle(this.hoverColumn, {
815
- "display": "none"
816
- });
817
- }
818
-
819
- protected debounce(fn: Function, delay: number = 1000) {
820
- if (this.debounceTimeout) {
821
- clearTimeout(this.debounceTimeout);
822
- }
823
- this.debounceTimeout = setTimeout(fn.bind(this), delay);
824
- }
825
-
826
- private renderDragTargetDiv(parent: HTMLDivElement, left: number, top: number, width: number, height: number): HTMLDivElement {
827
- const div = this.dom.applyStylePosistionAbsolute(
828
- this.dom.createDivWithClass("ge-table-drop-zone", parent)
829
- );
830
- this.dom.setStyle(div, "left", `${left}px`);
831
- this.dom.setStyle(div, "top", `${top}px`);
832
- this.dom.setStyle(div, "width", `${width}px`);
833
- this.dom.setStyle(div, "height", `${height}px`);
834
- return div;
835
- }
836
-
837
-
838
- private renderSelectedBackgroundDiv(
839
- skip: boolean,
840
- renderSelection: boolean,
841
- sideIdent: SideIdent,
842
- areaModel: AreaModelIf,
843
- rowIndex: number,
844
- index: number,
845
- parent: HTMLDivElement,
846
- left: number, top: number, width: number, height: number) {
847
- let cellSelected = false;
848
- if (!skip && renderSelection && areaModel.isSelectable(rowIndex, index)) {
849
- if (this.getSelectionModel) {
850
- const selectionModel = this.getSelectionModel();
851
- if (selectionModel) {
852
- const count = selectionModel.getSelectionCount(rowIndex, index);
853
- cellSelected = count > 0;
854
- for (let i = 0; i < count; i++) {
855
- const div = this.dom.applyStylePosistionAbsolute(
856
- // ge-table-body-west-selected-range
857
- this.dom.createDivWithClass(`ge-table-${areaModel.areaIdent}-${sideIdent}-selected-range`, parent)
858
- );
859
- this.dom.setStyle(div, "left", `${left}px`);
860
- this.dom.setStyle(div, "top", `${top}px`);
861
- this.dom.setStyle(div, "width", `${width}px`);
862
- this.dom.setStyle(div, "height", `${height}px`);
863
- }
864
- }
865
- }
866
- }
867
- return cellSelected;
868
- }
869
-
870
- private renderCell(
871
- {
872
- areaModel,
873
- areaIdent,
874
- sideIdent,
875
- rowIndex,
876
- columnIndex,
877
- left,
878
- top,
879
- width,
880
- height,
881
- parent,
882
- cellSelected,
883
- lastRowOfModel,
884
- gammaRange
885
- }: ArgsRenderCell
886
- ) {
887
- const [div, fn] = this.addAndRenderCellDiv({
888
- areaModel,
889
- areaIdent,
890
- sideIdent,
891
- rowIndex,
892
- index: columnIndex,
893
- left,
894
- width,
895
- height,
896
- top,
897
- parent,
898
- lastRowOfModel,
899
- gammaRange: gammaRange
900
- });
901
- if (cellSelected) {
902
- this.dom.addClass(`ge-table-${areaIdent}-${sideIdent}-selected-range`, div);
903
- }
904
- if (fn) {
905
- this.cleanupFunctions[areaIdent].push(fn);
906
- }
907
- }
908
-
909
-
910
- private renderHeaderCellResizeHandle(
911
- { rowIndex, columnIndex, cellLeft, cellTop, cellWidth, cellHeight, parent }: ArgsRenderHeaderCellResizeHandle
912
- ) {
913
-
914
- const domService = this.dom.domService;
915
- const handleWidth = this.tableOptions.columnResizeHandleWidthInPx ?? 2;
916
-
917
- const div = domService.createElement<HTMLDivElement>("div");
918
- domService.setAttribute(div, "data-col-index", `${columnIndex}`);
919
- domService.setAttribute(div, "data-row-index", `${rowIndex}`);
920
- domService.setAttribute(div, "data-area", "header");
921
- domService.setAttribute(div, "data-ge-action", "resize-column");
922
- // domService.setAttribute(div, 'data-ge-action', 'column-resize');
923
- domService.addClass(div, `ge-table-column-resize-handle`);
924
- domService.setStyle(div, "display", "clip");
925
- domService.setStyle(div, "position", "absolute");
926
- domService.setStyle(div, "cursor", "col-resize");
927
- domService.setStyle(div, "left", `${(cellLeft + cellWidth - handleWidth)}px`);
928
- domService.setStyle(div, "top", `${cellTop}px`);
929
- domService.setStyle(div, "width", `${handleWidth}px`);
930
- domService.setStyle(div, "height", `${cellHeight}px`);
931
- domService.appendChild(parent, div);
932
- }
933
-
934
-
935
- }
936
-