@guiexpert/table 0.0.1 → 1.0.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 (350) hide show
  1. package/.eslintrc.json +42 -0
  2. package/LICENSE +35 -0
  3. package/README.md +102 -0
  4. package/jest.config.ts +18 -0
  5. package/ng-package.json +7 -0
  6. package/package.json +9 -20
  7. package/project.json +47 -0
  8. package/src/index.ts +156 -0
  9. package/src/lib/table/action/action-id.type.ts +24 -0
  10. package/{lib/table/action/on-action-triggered.if.d.ts → src/lib/table/action/on-action-triggered.if.ts} +4 -1
  11. package/src/lib/table/action/osx-shortcut-actionId-mapping.ts +29 -0
  12. package/src/lib/table/action/shortcut-actionid-mapping.type.ts +3 -0
  13. package/src/lib/table/action/shortcut.service.ts +134 -0
  14. package/src/lib/table/action/windows-shortcut-actionId-mapping.ts +27 -0
  15. package/src/lib/table/checkbox/checkbox-model.if.ts +16 -0
  16. package/src/lib/table/checkbox/checkbox-model.ts +62 -0
  17. package/src/lib/table/checkbox/tree-checkbox-model.ts +123 -0
  18. package/src/lib/table/color/color-rgb.if.ts +7 -0
  19. package/src/lib/table/color/color-rgb.ts +10 -0
  20. package/src/lib/table/color/ge-css-color-util.ts +43 -0
  21. package/src/lib/table/color/three-color-gradient-arg.if.ts +10 -0
  22. package/src/lib/table/color/three-color-gradient-arg.ts +14 -0
  23. package/src/lib/table/color/two-color-gradient-arg.if.ts +8 -0
  24. package/src/lib/table/color/two-color-gradient-arg.ts +12 -0
  25. package/src/lib/table/css-vars.ts +243 -0
  26. package/src/lib/table/data/common/aligns.ts +19 -0
  27. package/src/lib/table/data/common/area-map-factory.ts +14 -0
  28. package/src/lib/table/data/common/area-map.ts +11 -0
  29. package/src/lib/table/data/common/area-map.type.ts +5 -0
  30. package/{lib/table/data/common/args-adjust-columns-to-row-parent-params.d.ts → src/lib/table/data/common/args-adjust-columns-to-row-parent-params.ts} +11 -10
  31. package/src/lib/table/data/common/args-render-cell-div.ts +18 -0
  32. package/src/lib/table/data/common/boolean-function.ts +4 -0
  33. package/src/lib/table/data/common/cell-range.ts +57 -0
  34. package/src/lib/table/data/common/checkbox-column-def.ts +25 -0
  35. package/src/lib/table/data/common/checked-type.ts +1 -0
  36. package/src/lib/table/data/common/event/ge-cell-indices.ts +9 -0
  37. package/src/lib/table/data/common/event/ge-key-event.ts +10 -0
  38. package/src/lib/table/data/common/event/ge-model-change-event.ts +13 -0
  39. package/src/lib/table/data/common/event/ge-mouse-event.ts +38 -0
  40. package/src/lib/table/data/common/event/input/table-cell-update-event.if.ts +10 -0
  41. package/src/lib/table/data/common/event/input/table-cell-update-event.ts +14 -0
  42. package/src/lib/table/data/common/filter-function.ts +1 -0
  43. package/src/lib/table/data/common/get-t.ts +1 -0
  44. package/src/lib/table/data/common/index-and-px.ts +9 -0
  45. package/src/lib/table/data/common/size.if.ts +4 -0
  46. package/src/lib/table/data/common/size.ts +9 -0
  47. package/src/lib/table/data/common/sizes.ts +35 -0
  48. package/src/lib/table/data/common/sort-item.ts +11 -0
  49. package/src/lib/table/data/common/sort-state.type.ts +1 -0
  50. package/src/lib/table/data/common/tree-arrow.type.ts +1 -0
  51. package/src/lib/table/data/common/tree-row-if.ts +11 -0
  52. package/src/lib/table/data/common/tree-row.ts +16 -0
  53. package/src/lib/table/data/common/value-label.if.ts +6 -0
  54. package/src/lib/table/data/common/value-label.ts +13 -0
  55. package/src/lib/table/data/div-scope.type.ts +5 -0
  56. package/src/lib/table/data/event/mouse-target-data.ts +45 -0
  57. package/src/lib/table/data/geo-data.ts +13 -0
  58. package/src/lib/table/data/options/auto-restore-options.if.ts +21 -0
  59. package/src/lib/table/data/options/auto-restore-options.ts +50 -0
  60. package/src/lib/table/data/options/default-row-heights.if.ts +5 -0
  61. package/src/lib/table/data/options/default-row-heights.ts +10 -0
  62. package/src/lib/table/data/options/icon.if.ts +7 -0
  63. package/src/lib/table/data/options/icon.ts +10 -0
  64. package/{lib/table/data/options/sorted-options.if.d.ts → src/lib/table/data/options/sorted-options.if.ts} +6 -3
  65. package/src/lib/table/data/options/sorted-options.ts +15 -0
  66. package/src/lib/table/data/options/table-options.if.ts +54 -0
  67. package/src/lib/table/data/options/table-options.ts +66 -0
  68. package/src/lib/table/data/options/tree-options.if.ts +10 -0
  69. package/src/lib/table/data/options/tree-options.ts +32 -0
  70. package/src/lib/table/data/side-ident.type.ts +1 -0
  71. package/src/lib/table/data/table-model-and-options.if.ts +8 -0
  72. package/src/lib/table/data/table-model-and-options.ts +13 -0
  73. package/src/lib/table/data/tablemodel/area-ident.type.ts +18 -0
  74. package/src/lib/table/data/tablemodel/areamodel/abstract-area-model.ts +183 -0
  75. package/src/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.ts +59 -0
  76. package/src/lib/table/data/tablemodel/areamodel/area-model-cell-groups.ts +210 -0
  77. package/src/lib/table/data/tablemodel/areamodel/area-model-hidden.ts +120 -0
  78. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.ts +23 -0
  79. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array.ts +105 -0
  80. package/src/lib/table/data/tablemodel/areamodel/area-model-tree.ts +215 -0
  81. package/src/lib/table/data/tablemodel/areamodel/area-model.if.ts +186 -0
  82. package/src/lib/table/data/tablemodel/areamodel/area-model.ts +110 -0
  83. package/src/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.ts +61 -0
  84. package/src/lib/table/data/tablemodel/areamodel/has-default-row-height-if.ts +3 -0
  85. package/src/lib/table/data/tablemodel/cellgroup/cell-group-ext.ts +167 -0
  86. package/src/lib/table/data/tablemodel/cellgroup/cell-group.if.ts +12 -0
  87. package/src/lib/table/data/tablemodel/cellgroup/cell-group.ts +18 -0
  88. package/src/lib/table/data/tablemodel/cellgroup/cellgroup-factory.ts +148 -0
  89. package/src/lib/table/data/tablemodel/column/column-def.if.ts +28 -0
  90. package/src/lib/table/data/tablemodel/column/column-def.ts +104 -0
  91. package/src/lib/table/data/tablemodel/padding.ts +9 -0
  92. package/src/lib/table/data/tablemodel/table-model.if.ts +90 -0
  93. package/src/lib/table/data/tablemodel/table-model.ts +352 -0
  94. package/src/lib/table/ele-scope.ts +283 -0
  95. package/src/lib/table/event-adapter.ts +28 -0
  96. package/src/lib/table/event-listener.if.ts +19 -0
  97. package/src/lib/table/factory/table-factory.ts +378 -0
  98. package/src/lib/table/factory/tree-factory.ts +51 -0
  99. package/src/lib/table/focus/focus-model.if.ts +14 -0
  100. package/src/lib/table/focus/focus-model.ts +48 -0
  101. package/src/lib/table/focus/focus.type.ts +4 -0
  102. package/src/lib/table/input-handler.ts +34 -0
  103. package/src/lib/table/mouse-handler.ts +237 -0
  104. package/src/lib/table/render-scope.ts +936 -0
  105. package/src/lib/table/renderer/cell-group-ext-cell-renderer.ts +27 -0
  106. package/{lib/table/renderer/cell-render.if.d.ts → src/lib/table/renderer/cell-render.if.ts} +10 -1
  107. package/src/lib/table/renderer/checkbox-boolean-property-cell-renderer.ts +58 -0
  108. package/src/lib/table/renderer/checkbox-cell-renderer.ts +39 -0
  109. package/src/lib/table/renderer/date-to-int-date-cell-renderer.ts +34 -0
  110. package/src/lib/table/renderer/date-to-iso-cell-renderer.ts +25 -0
  111. package/src/lib/table/renderer/date-to-locale-date-cell-renderer.ts +24 -0
  112. package/src/lib/table/renderer/date-to-tec-cell-renderer.ts +28 -0
  113. package/src/lib/table/renderer/edit/edit-cell-renderer.type.ts +3 -0
  114. package/src/lib/table/renderer/edit/edit-input-pipe-for-number.ts +6 -0
  115. package/src/lib/table/renderer/edit/edit-input-pipe.if.ts +7 -0
  116. package/src/lib/table/renderer/edit/input-cell-renderer.ts +41 -0
  117. package/src/lib/table/renderer/edit/select-cell-renderer.ts +60 -0
  118. package/src/lib/table/renderer/male-female-to-icon-cell-renderer.ts +26 -0
  119. package/src/lib/table/renderer/number-cell-renderer.ts +38 -0
  120. package/src/lib/table/renderer/renderer-cleanup-fn.type.ts +1 -0
  121. package/src/lib/table/renderer/renderer.ts +11 -0
  122. package/src/lib/table/renderer/true-false-cell-renderer.ts +28 -0
  123. package/src/lib/table/selection/selection-model.if.ts +20 -0
  124. package/src/lib/table/selection/selection-model.ts +109 -0
  125. package/src/lib/table/selection/selection-service.ts +120 -0
  126. package/src/lib/table/selection/selection.type.ts +5 -0
  127. package/src/lib/table/service/abstract-store-state.service.ts +105 -0
  128. package/src/lib/table/service/convenience-dom.service.ts +548 -0
  129. package/src/lib/table/service/data/collapsed-expanded.data.ts +11 -0
  130. package/src/lib/table/service/data/html-style.type.ts +1 -0
  131. package/src/lib/table/service/dom-service.if.ts +16 -0
  132. package/src/lib/table/service/ge-filter.service.ts +123 -0
  133. package/src/lib/table/service/simple-dom-service.ts +46 -0
  134. package/src/lib/table/service/sorter.service.ts +30 -0
  135. package/src/lib/table/service/store-state-collapsed-expand.service.ts +76 -0
  136. package/src/lib/table/service/store-state-scroll-pos.service.ts +40 -0
  137. package/src/lib/table/service/store-state-sorting.service.ts +41 -0
  138. package/src/lib/table/service/tree-row.service.ts +31 -0
  139. package/src/lib/table/table-api.ts +61 -0
  140. package/src/lib/table/table-scope.ts +433 -0
  141. package/src/test-setup.ts +1 -0
  142. package/tsconfig.json +22 -0
  143. package/tsconfig.lib.json +19 -0
  144. package/tsconfig.lib.prod.json +7 -0
  145. package/tsconfig.spec.json +20 -0
  146. package/esm2020/guiexpert-table.mjs +0 -5
  147. package/esm2020/index.mjs +0 -102
  148. package/esm2020/lib/table/action/action-id.type.mjs +0 -20
  149. package/esm2020/lib/table/action/on-action-triggered.if.mjs +0 -2
  150. package/esm2020/lib/table/action/osx-shortcut-actionId-mapping.mjs +0 -17
  151. package/esm2020/lib/table/action/shortcut-actionid-mapping.type.mjs +0 -2
  152. package/esm2020/lib/table/action/shortcut.service.mjs +0 -105
  153. package/esm2020/lib/table/action/windows-shortcut-actionId-mapping.mjs +0 -15
  154. package/esm2020/lib/table/checkbox/checkbox-model.if.mjs +0 -2
  155. package/esm2020/lib/table/checkbox/checkbox-model.mjs +0 -52
  156. package/esm2020/lib/table/checkbox/tree-checkbox-model.mjs +0 -106
  157. package/esm2020/lib/table/data/common/aligns.mjs +0 -19
  158. package/esm2020/lib/table/data/common/area-map-factory.mjs +0 -7
  159. package/esm2020/lib/table/data/common/area-map.mjs +0 -8
  160. package/esm2020/lib/table/data/common/area-map.type.mjs +0 -2
  161. package/esm2020/lib/table/data/common/args-adjust-columns-to-row-parent-params.mjs +0 -2
  162. package/esm2020/lib/table/data/common/args-render-cell-div.mjs +0 -2
  163. package/esm2020/lib/table/data/common/boolean-function.mjs +0 -3
  164. package/esm2020/lib/table/data/common/cell-range.mjs +0 -27
  165. package/esm2020/lib/table/data/common/checkbox-column.mjs +0 -15
  166. package/esm2020/lib/table/data/common/checked-type.mjs +0 -2
  167. package/esm2020/lib/table/data/common/event/ge-cell-indices.mjs +0 -7
  168. package/esm2020/lib/table/data/common/event/ge-key-event.mjs +0 -7
  169. package/esm2020/lib/table/data/common/event/ge-model-change-event.mjs +0 -10
  170. package/esm2020/lib/table/data/common/event/ge-mouse-event.mjs +0 -19
  171. package/esm2020/lib/table/data/common/filter-function.mjs +0 -2
  172. package/esm2020/lib/table/data/common/get-t.mjs +0 -2
  173. package/esm2020/lib/table/data/common/index-and-px.mjs +0 -7
  174. package/esm2020/lib/table/data/common/size.if.mjs +0 -2
  175. package/esm2020/lib/table/data/common/size.mjs +0 -7
  176. package/esm2020/lib/table/data/common/sizes.mjs +0 -33
  177. package/esm2020/lib/table/data/common/sort-item.mjs +0 -7
  178. package/esm2020/lib/table/data/common/sort-state.type.mjs +0 -2
  179. package/esm2020/lib/table/data/common/tree-arrow.type.mjs +0 -2
  180. package/esm2020/lib/table/data/common/tree-row-if.mjs +0 -2
  181. package/esm2020/lib/table/data/common/tree-row.mjs +0 -12
  182. package/esm2020/lib/table/data/common/value-label.if.mjs +0 -2
  183. package/esm2020/lib/table/data/common/value-label.mjs +0 -7
  184. package/esm2020/lib/table/data/div-scope.type.mjs +0 -2
  185. package/esm2020/lib/table/data/geo-data.mjs +0 -10
  186. package/esm2020/lib/table/data/options/auto-restore-options.if.mjs +0 -2
  187. package/esm2020/lib/table/data/options/auto-restore-options.mjs +0 -42
  188. package/esm2020/lib/table/data/options/default-row-heights.if.mjs +0 -2
  189. package/esm2020/lib/table/data/options/default-row-heights.mjs +0 -8
  190. package/esm2020/lib/table/data/options/icon.if.mjs +0 -2
  191. package/esm2020/lib/table/data/options/icon.mjs +0 -8
  192. package/esm2020/lib/table/data/options/sorted-options.if.mjs +0 -2
  193. package/esm2020/lib/table/data/options/sorted-options.mjs +0 -9
  194. package/esm2020/lib/table/data/options/table-options.if.mjs +0 -2
  195. package/esm2020/lib/table/data/options/table-options.mjs +0 -38
  196. package/esm2020/lib/table/data/options/tree-options.if.mjs +0 -2
  197. package/esm2020/lib/table/data/options/tree-options.mjs +0 -10
  198. package/esm2020/lib/table/data/side-ident.type.mjs +0 -2
  199. package/esm2020/lib/table/data/tablemodel/area-ident.type.mjs +0 -10
  200. package/esm2020/lib/table/data/tablemodel/areamodel/abstract-area-model.mjs +0 -108
  201. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-array-array.mjs +0 -34
  202. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-hidden.mjs +0 -76
  203. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.mjs +0 -11
  204. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array.mjs +0 -79
  205. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-tree.mjs +0 -166
  206. package/esm2020/lib/table/data/tablemodel/areamodel/area-model.if.mjs +0 -2
  207. package/esm2020/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.mjs +0 -48
  208. package/esm2020/lib/table/data/tablemodel/column/column-def.if.mjs +0 -2
  209. package/esm2020/lib/table/data/tablemodel/column/column-def.mjs +0 -32
  210. package/esm2020/lib/table/data/tablemodel/padding.mjs +0 -9
  211. package/esm2020/lib/table/data/tablemodel/table-model.if.mjs +0 -2
  212. package/esm2020/lib/table/data/tablemodel/table-model.mjs +0 -262
  213. package/esm2020/lib/table/ele-scope.mjs +0 -173
  214. package/esm2020/lib/table/event-listener.if.mjs +0 -2
  215. package/esm2020/lib/table/focus/focus-model.if.mjs +0 -2
  216. package/esm2020/lib/table/focus/focus-model.mjs +0 -22
  217. package/esm2020/lib/table/focus/focus.type.mjs +0 -2
  218. package/esm2020/lib/table/input-handler.mjs +0 -24
  219. package/esm2020/lib/table/mouse-handler.mjs +0 -197
  220. package/esm2020/lib/table/render-scope.mjs +0 -575
  221. package/esm2020/lib/table/renderer/cell-render.if.mjs +0 -2
  222. package/esm2020/lib/table/renderer/checkbox-cell-renderer.mjs +0 -22
  223. package/esm2020/lib/table/renderer/date-to-int-date-cell-renderer.mjs +0 -21
  224. package/esm2020/lib/table/renderer/date-to-iso-cell-renderer.mjs +0 -9
  225. package/esm2020/lib/table/renderer/date-to-locale-date-cell-renderer.mjs +0 -9
  226. package/esm2020/lib/table/renderer/edit/edit-cell-renderer.type.mjs +0 -2
  227. package/esm2020/lib/table/renderer/edit/input-cell-renderer.mjs +0 -23
  228. package/esm2020/lib/table/renderer/edit/select-cell-renderer.mjs +0 -35
  229. package/esm2020/lib/table/renderer/male-female-to-icon-cell-renderer.mjs +0 -12
  230. package/esm2020/lib/table/renderer/number-cell-renderer.mjs +0 -19
  231. package/esm2020/lib/table/renderer/renderer-cleanup-fn.type.mjs +0 -2
  232. package/esm2020/lib/table/renderer/renderer.mjs +0 -7
  233. package/esm2020/lib/table/selection/selection-model.if.mjs +0 -2
  234. package/esm2020/lib/table/selection/selection-model.mjs +0 -97
  235. package/esm2020/lib/table/selection/selection-service.mjs +0 -97
  236. package/esm2020/lib/table/selection/selection.type.mjs +0 -2
  237. package/esm2020/lib/table/service/abstract-store-state.service.mjs +0 -49
  238. package/esm2020/lib/table/service/convenience-dom.service.mjs +0 -386
  239. package/esm2020/lib/table/service/data/collapsed-expanded.data.mjs +0 -9
  240. package/esm2020/lib/table/service/data/html-style.type.mjs +0 -2
  241. package/esm2020/lib/table/service/dom-service.if.mjs +0 -2
  242. package/esm2020/lib/table/service/ge-filter.service.mjs +0 -98
  243. package/esm2020/lib/table/service/sorter.service.mjs +0 -27
  244. package/esm2020/lib/table/service/store-state-collapsed-expand.service.mjs +0 -57
  245. package/esm2020/lib/table/service/store-state-scroll-pos.service.mjs +0 -29
  246. package/esm2020/lib/table/service/store-state-sorting.service.mjs +0 -29
  247. package/esm2020/lib/table/service/tree-row.service.mjs +0 -23
  248. package/esm2020/lib/table/table-api.mjs +0 -38
  249. package/esm2020/lib/table/table-model-factory.mjs +0 -125
  250. package/esm2020/lib/table/table-scope.mjs +0 -307
  251. package/index.d.ts +0 -103
  252. package/lib/table/action/action-id.type.d.ts +0 -2
  253. package/lib/table/action/osx-shortcut-actionId-mapping.d.ts +0 -6
  254. package/lib/table/action/shortcut-actionid-mapping.type.d.ts +0 -4
  255. package/lib/table/action/shortcut.service.d.ts +0 -17
  256. package/lib/table/action/windows-shortcut-actionId-mapping.d.ts +0 -6
  257. package/lib/table/checkbox/checkbox-model.d.ts +0 -12
  258. package/lib/table/checkbox/checkbox-model.if.d.ts +0 -9
  259. package/lib/table/checkbox/tree-checkbox-model.d.ts +0 -17
  260. package/lib/table/data/common/aligns.d.ts +0 -24
  261. package/lib/table/data/common/area-map-factory.d.ts +0 -5
  262. package/lib/table/data/common/area-map.d.ts +0 -7
  263. package/lib/table/data/common/area-map.type.d.ts +0 -5
  264. package/lib/table/data/common/args-render-cell-div.d.ts +0 -13
  265. package/lib/table/data/common/boolean-function.d.ts +0 -3
  266. package/lib/table/data/common/cell-range.d.ts +0 -17
  267. package/lib/table/data/common/checkbox-column.d.ts +0 -13
  268. package/lib/table/data/common/checked-type.d.ts +0 -1
  269. package/lib/table/data/common/event/ge-cell-indices.d.ts +0 -5
  270. package/lib/table/data/common/event/ge-key-event.d.ts +0 -5
  271. package/lib/table/data/common/event/ge-model-change-event.d.ts +0 -6
  272. package/lib/table/data/common/event/ge-mouse-event.d.ts +0 -17
  273. package/lib/table/data/common/filter-function.d.ts +0 -1
  274. package/lib/table/data/common/get-t.d.ts +0 -1
  275. package/lib/table/data/common/index-and-px.d.ts +0 -5
  276. package/lib/table/data/common/size.d.ts +0 -6
  277. package/lib/table/data/common/size.if.d.ts +0 -4
  278. package/lib/table/data/common/sizes.d.ts +0 -32
  279. package/lib/table/data/common/sort-item.d.ts +0 -6
  280. package/lib/table/data/common/sort-state.type.d.ts +0 -1
  281. package/lib/table/data/common/tree-arrow.type.d.ts +0 -1
  282. package/lib/table/data/common/tree-row-if.d.ts +0 -10
  283. package/lib/table/data/common/tree-row.d.ts +0 -11
  284. package/lib/table/data/common/value-label.d.ts +0 -6
  285. package/lib/table/data/common/value-label.if.d.ts +0 -4
  286. package/lib/table/data/div-scope.type.d.ts +0 -7
  287. package/lib/table/data/geo-data.d.ts +0 -8
  288. package/lib/table/data/options/auto-restore-options.d.ts +0 -11
  289. package/lib/table/data/options/auto-restore-options.if.d.ts +0 -13
  290. package/lib/table/data/options/default-row-heights.d.ts +0 -7
  291. package/lib/table/data/options/default-row-heights.if.d.ts +0 -5
  292. package/lib/table/data/options/icon.d.ts +0 -7
  293. package/lib/table/data/options/icon.if.d.ts +0 -5
  294. package/lib/table/data/options/sorted-options.d.ts +0 -8
  295. package/lib/table/data/options/table-options.d.ts +0 -36
  296. package/lib/table/data/options/table-options.if.d.ts +0 -37
  297. package/lib/table/data/options/tree-options.d.ts +0 -9
  298. package/lib/table/data/options/tree-options.if.d.ts +0 -7
  299. package/lib/table/data/side-ident.type.d.ts +0 -1
  300. package/lib/table/data/tablemodel/area-ident.type.d.ts +0 -2
  301. package/lib/table/data/tablemodel/areamodel/abstract-area-model.d.ts +0 -43
  302. package/lib/table/data/tablemodel/areamodel/area-model-array-array.d.ts +0 -18
  303. package/lib/table/data/tablemodel/areamodel/area-model-hidden.d.ts +0 -32
  304. package/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +0 -10
  305. package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +0 -27
  306. package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +0 -39
  307. package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +0 -33
  308. package/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +0 -12
  309. package/lib/table/data/tablemodel/column/column-def.d.ts +0 -46
  310. package/lib/table/data/tablemodel/column/column-def.if.d.ts +0 -22
  311. package/lib/table/data/tablemodel/padding.d.ts +0 -7
  312. package/lib/table/data/tablemodel/table-model.d.ts +0 -60
  313. package/lib/table/data/tablemodel/table-model.if.d.ts +0 -34
  314. package/lib/table/ele-scope.d.ts +0 -37
  315. package/lib/table/event-listener.if.d.ts +0 -11
  316. package/lib/table/focus/focus-model.d.ts +0 -12
  317. package/lib/table/focus/focus-model.if.d.ts +0 -6
  318. package/lib/table/focus/focus.type.d.ts +0 -1
  319. package/lib/table/input-handler.d.ts +0 -6
  320. package/lib/table/mouse-handler.d.ts +0 -27
  321. package/lib/table/render-scope.d.ts +0 -77
  322. package/lib/table/renderer/checkbox-cell-renderer.d.ts +0 -8
  323. package/lib/table/renderer/date-to-int-date-cell-renderer.d.ts +0 -9
  324. package/lib/table/renderer/date-to-iso-cell-renderer.d.ts +0 -8
  325. package/lib/table/renderer/date-to-locale-date-cell-renderer.d.ts +0 -8
  326. package/lib/table/renderer/edit/edit-cell-renderer.type.d.ts +0 -2
  327. package/lib/table/renderer/edit/input-cell-renderer.d.ts +0 -8
  328. package/lib/table/renderer/edit/select-cell-renderer.d.ts +0 -12
  329. package/lib/table/renderer/male-female-to-icon-cell-renderer.d.ts +0 -8
  330. package/lib/table/renderer/number-cell-renderer.d.ts +0 -11
  331. package/lib/table/renderer/renderer-cleanup-fn.type.d.ts +0 -1
  332. package/lib/table/renderer/renderer.d.ts +0 -5
  333. package/lib/table/selection/selection-model.d.ts +0 -21
  334. package/lib/table/selection/selection-model.if.d.ts +0 -11
  335. package/lib/table/selection/selection-service.d.ts +0 -17
  336. package/lib/table/selection/selection.type.d.ts +0 -2
  337. package/lib/table/service/abstract-store-state.service.d.ts +0 -10
  338. package/lib/table/service/convenience-dom.service.d.ts +0 -44
  339. package/lib/table/service/data/collapsed-expanded.data.d.ts +0 -7
  340. package/lib/table/service/data/html-style.type.d.ts +0 -3
  341. package/lib/table/service/dom-service.if.d.ts +0 -9
  342. package/lib/table/service/ge-filter.service.d.ts +0 -5
  343. package/lib/table/service/sorter.service.d.ts +0 -3
  344. package/lib/table/service/store-state-collapsed-expand.service.d.ts +0 -15
  345. package/lib/table/service/store-state-scroll-pos.service.d.ts +0 -10
  346. package/lib/table/service/store-state-sorting.service.d.ts +0 -11
  347. package/lib/table/service/tree-row.service.d.ts +0 -5
  348. package/lib/table/table-api.d.ts +0 -16
  349. package/lib/table/table-model-factory.d.ts +0 -61
  350. package/lib/table/table-scope.d.ts +0 -55
@@ -0,0 +1,283 @@
1
+ import { ConvenienceDomService } from "./service/convenience-dom.service";
2
+ import { DivScope } from "./data/div-scope.type";
3
+ import { TableModelIf } from "./data/tablemodel/table-model.if";
4
+ import { TableOptionsIf } from "./data/options/table-options.if";
5
+ import { GeoData } from "./data/geo-data";
6
+
7
+
8
+ export class EleScope {
9
+
10
+ public scrollViewport: HTMLDivElement;
11
+
12
+ protected contentWrapperDiv: HTMLDivElement; // the big one. height: sum of rows height == tableModel.getContentHeightInPixel()
13
+ protected contentDiv: HTMLDivElement;
14
+
15
+ protected areaHeaderCenter: DivScope;
16
+ protected areaHeaderWest: DivScope;
17
+ protected areaHeaderEast: DivScope;
18
+
19
+ protected areaBodyCenter: DivScope;
20
+ protected areaBodyWest: DivScope;
21
+ protected areaBodyEast: DivScope;
22
+
23
+
24
+ protected areaFooterCenter: DivScope;
25
+ protected areaFooterWest: DivScope;
26
+ protected areaFooterEast: DivScope;
27
+
28
+ protected borderHeaderBottom: HTMLDivElement;
29
+ protected borderFooterTop: HTMLDivElement;
30
+ protected borderFixedWest: HTMLDivElement;
31
+ protected borderFixedEast: HTMLDivElement;
32
+
33
+ protected hoverRow: HTMLDivElement;
34
+ protected hoverColumn: HTMLDivElement;
35
+
36
+ protected scrollTop = 0;
37
+
38
+ protected areaBodyWestGeo: GeoData = new GeoData();
39
+ protected areaBodyCenterGeo: GeoData = new GeoData();
40
+ protected areaBodyEastGeo: GeoData = new GeoData();
41
+
42
+
43
+ constructor(
44
+ readonly hostElement: HTMLDivElement,
45
+ readonly tableModel: TableModelIf,
46
+ protected readonly dom: ConvenienceDomService,
47
+ readonly tableOptions: TableOptionsIf
48
+ ) {
49
+ const hostEle = this.hostElement;
50
+
51
+ hostEle.innerText = ""; // clear
52
+ this.dom.setAttribute(hostEle, "tabindex", "0"); // needed for getting key events
53
+
54
+ this.dom.setStyle(
55
+ this.dom.addClass("ge-table", hostEle)
56
+ , "position", "relative");
57
+
58
+
59
+ this.hoverRow =
60
+ dom.applyStylePosistionAbsolute(
61
+ dom.createDivWithClass("ge-table-hover-row", hostEle));
62
+ this.hoverColumn =
63
+ dom.applyStylePosistionAbsolute(
64
+ dom.createDivWithClass("ge-table-hover-column", hostEle));
65
+
66
+ this.areaHeaderWest = dom.appendRelativeChildDiv(
67
+ dom.applyStylePosistionAbsolute(
68
+ dom.createAreaDivWithClass("ge-table-header ge-table-header-west", hostEle, "header", "west")));
69
+ this.areaHeaderCenter = dom.appendRelativeChildDiv(
70
+ dom.applyStylePosistionAbsolute(
71
+ dom.createAreaDivWithClass("ge-table-header ge-table-header-center", hostEle, "header", "center")));
72
+ this.areaHeaderEast = dom.appendRelativeChildDiv(
73
+ dom.applyStylePosistionAbsolute(
74
+ dom.createAreaDivWithClass("ge-table-header ge-table-header-east", hostEle, "body", "east")));
75
+
76
+ this.areaBodyWest = dom.appendRelativeChildDiv(
77
+ dom.applyStylePosistionAbsolute(
78
+ dom.createAreaDivWithClass("ge-table-body ge-table-body-west", hostEle, "body", "west")));
79
+
80
+ this.areaBodyEast = dom.appendRelativeChildDiv(
81
+ dom.applyStylePosistionAbsolute(
82
+ dom.createAreaDivWithClass("ge-table-body ge-table-body-east", hostEle, "body", "east")));
83
+
84
+ this.areaFooterWest = dom.appendRelativeChildDiv(
85
+ dom.applyStylePosistionAbsolute(
86
+ dom.createAreaDivWithClass("ge-table-footer ge-table-footer-west", hostEle, "footer", "west")));
87
+
88
+ this.areaFooterCenter = dom.appendRelativeChildDiv(
89
+ dom.applyStylePosistionAbsolute(
90
+ dom.createAreaDivWithClass("ge-table-footer ge-table-footer-center", hostEle, "footer", "center")));
91
+
92
+ this.areaFooterEast = dom.appendRelativeChildDiv(
93
+ dom.applyStylePosistionAbsolute(
94
+ dom.createAreaDivWithClass("ge-table-footer ge-table-footer-east", hostEle, "footer", "east")));
95
+
96
+ this.scrollViewport =
97
+ dom.applyStyleOverflowAuto(
98
+ this.tableOptions.overflowX ?? "auto",
99
+ this.tableOptions.overflowY ?? "auto",
100
+ dom.applyStyleNoPadding(
101
+ dom.applyStylePosistionAbsolute(
102
+ dom.createAreaDivWithClass("ge-table-scroll-viewport", hostEle, "body", "center")
103
+ )
104
+ )
105
+ );
106
+
107
+ this.contentWrapperDiv = dom.applyStyleNoPadding(
108
+ dom.applyStylePosistionRelative(
109
+ dom.createDivWithClass("ge-table-scroll-content-wrapper", this.scrollViewport)));
110
+ this.contentDiv = dom.applyStyleNoPadding(
111
+ dom.applyStylePosistionRelative(
112
+ dom.createDivWithClass("ge-table-scroll-content", this.contentWrapperDiv)));
113
+
114
+ this.areaBodyCenter = dom.appendRelativeChildDiv(
115
+ dom.createDivWithClass("ge-table-body-center", this.contentDiv));
116
+
117
+ this.borderHeaderBottom =
118
+ dom.applyStylePosistionAbsolute(
119
+ dom.createDivWithClass("ge-table-header-border", hostEle));
120
+
121
+ this.borderFixedWest =
122
+ dom.applyStylePosistionAbsolute(
123
+ dom.createDivWithClass("ge-table-west-fixed-column-border", hostEle));
124
+
125
+ this.borderFixedEast =
126
+ dom.applyStylePosistionAbsolute(
127
+ dom.createDivWithClass("ge-table-east-fixed-column-border", hostEle));
128
+
129
+ this.borderFooterTop =
130
+ dom.applyStylePosistionAbsolute(
131
+ dom.createDivWithClass("ge-table-footer-border", hostEle));
132
+ }
133
+
134
+
135
+ adjustContainersAndRows() {
136
+ const padding = this.tableModel.getPadding();
137
+ const w = this.hostElement.clientWidth;
138
+ const h = this.hostElement.clientHeight;
139
+ this.dom.applyStyle(this.scrollViewport, {
140
+ width: `${(w - padding.left)}px`,
141
+ height: `${(h - padding.top)}px`,
142
+ top: `${padding.top}px`,
143
+ left: `${padding.left}px`
144
+ });
145
+
146
+ this.scrollTop = this.scrollViewport.scrollTop;
147
+
148
+ // Content:
149
+ this.dom.applyStyle(this.contentDiv, {
150
+ width: `${this.scrollViewport.clientWidth}px`,
151
+ height: `${this.scrollViewport.clientHeight}px`,
152
+ top: `${this.scrollTop}px`,
153
+ left: `${this.scrollViewport.scrollLeft}px`
154
+ });
155
+
156
+ // Body:
157
+ // Body/West:
158
+ this.areaBodyWestGeo.width = padding.left;
159
+ this.areaBodyWestGeo.height = (h - padding.top - padding.bottom);
160
+ this.areaBodyWestGeo.top = padding.top;
161
+ this.areaBodyWestGeo.left = 0;
162
+ this.dom.applyStyleInPx(this.areaBodyWest.parent, this.areaBodyWestGeo);
163
+ if (this.tableOptions.fixedWestSeparatorBorderVisible &&
164
+ this.tableModel.getFixedLeftColumnCount()) {
165
+ this.dom.applyDisplayBlockStyle(
166
+ this.dom.applyStyle(this.borderFixedWest, {
167
+ width: `1px`,
168
+ height: `${this.areaBodyWestGeo.height}px`,
169
+ top: `${this.areaBodyWestGeo.top}px`,
170
+ left: `${this.areaBodyWestGeo.width}px`
171
+ })
172
+ );
173
+ } else {
174
+ this.dom.applyDisplayNoneStyle(this.borderFixedWest);
175
+ }
176
+
177
+ // Body/East:
178
+ this.areaBodyEastGeo.width = padding.right;
179
+ this.areaBodyEastGeo.height = (h - padding.top - padding.bottom);
180
+ this.areaBodyEastGeo.top = padding.top;
181
+ this.areaBodyEastGeo.left = w - padding.right;
182
+ this.dom.applyStyleInPx(this.areaBodyEast.parent, this.areaBodyEastGeo);
183
+
184
+ if (this.tableOptions.fixedEastSeparatorBorderVisible &&
185
+ this.tableModel.getFixedLeftColumnCount()) {
186
+ this.dom.applyDisplayBlockStyle(
187
+ this.dom.applyStyle(this.borderFixedEast, {
188
+ width: `1px`,
189
+ height: `${this.areaBodyEastGeo.height}px`,
190
+ top: `${this.areaBodyEastGeo.top}px`,
191
+ left: `${this.areaBodyEastGeo.left}px`
192
+ }));
193
+ } else {
194
+ this.dom.applyDisplayNoneStyle(this.borderFixedEast);
195
+ }
196
+
197
+ // Body/Center:
198
+ this.areaBodyCenterGeo.width = (w - padding.left - padding.right);
199
+ this.areaBodyCenterGeo.height = (h - padding.top - padding.bottom);
200
+ this.areaBodyCenterGeo.top = 0;
201
+ this.areaBodyCenterGeo.left = 0;
202
+ this.dom.applyStyleInPx(this.areaBodyCenter.parent, this.areaBodyCenterGeo);
203
+
204
+
205
+ // Header:
206
+ this.dom.applyStyle(this.areaHeaderCenter.parent, {
207
+ width: `${w - padding.left - padding.right}px`,
208
+ height: `${padding.top}px`,
209
+ top: "0",
210
+ left: `${padding.left}px`
211
+ });
212
+ this.dom.applyStyle(this.areaHeaderWest.parent, {
213
+ width: `${padding.left}px`,
214
+ height: `${padding.top}px`,
215
+ top: "0",
216
+ left: "0"
217
+ });
218
+ this.dom.applyStyle(this.areaHeaderEast.parent, {
219
+ width: `${padding.right}px`,
220
+ height: `${padding.top}px`,
221
+ top: "0",
222
+ left: `${w - padding.right}px`
223
+ });
224
+ if (this.tableOptions.headerSeparatorBorderVisible &&
225
+ this.tableModel.isHeaderVisibe()) {
226
+ this.dom.applyDisplayBlockStyle(
227
+ this.dom.applyStyle(this.borderHeaderBottom, {
228
+ width: `${w}px`,
229
+ height: "1px",
230
+ top: `${padding.top}px`,
231
+ left: "0px"
232
+ }));
233
+ } else {
234
+ this.dom.applyDisplayNoneStyle(this.borderHeaderBottom);
235
+ }
236
+
237
+ // Footer:
238
+ this.dom.applyStyle(this.areaFooterWest.parent, {
239
+ width: `${padding.left}px`,
240
+ height: `${padding.bottom}px`,
241
+ top: `${h - padding.bottom}px`,
242
+ left: "0"
243
+ });
244
+ this.dom.applyStyle(this.areaFooterCenter.parent, {
245
+ width: `${w - padding.left - padding.right}px`,
246
+ height: `${padding.bottom}px`,
247
+ top: `${h - padding.bottom}px`,
248
+ left: `${padding.left}px`
249
+ });
250
+ this.dom.applyStyle(this.areaFooterEast.parent, {
251
+ width: `${padding.right}px`,
252
+ height: `${padding.bottom}px`,
253
+ top: `${h - padding.bottom}px`,
254
+ left: `${w - padding.right}px`
255
+ });
256
+ if (this.tableOptions.footerSeparatorBorderVisible &&
257
+ this.tableModel.isFooterVisibe()) {
258
+ this.dom.applyDisplayBlockStyle(
259
+ this.dom.applyStyle(this.borderFooterTop, {
260
+ width: `${w}px`,
261
+ height: "1px",
262
+ top: `${h - padding.bottom}px`,
263
+ left: "0px"
264
+ }));
265
+ } else {
266
+ this.dom.applyDisplayNoneStyle(this.borderFooterTop);
267
+ }
268
+
269
+ this.adjustAfterScrolling();
270
+ }
271
+
272
+ adjustAfterScrolling() {
273
+ // must be overwritten
274
+ }
275
+
276
+ protected resetSizeOfWrapperDiv() {
277
+ const w = `${this.tableModel.getContentWidthInPixel()}px`;
278
+ const h = `${this.tableModel.getContentHeightInPixel() + 1}px`; // + 1, we want to see the last horizontal border
279
+ this.dom.setStyle(this.contentWrapperDiv, "width", w);
280
+ this.dom.setStyle(this.contentWrapperDiv, "height", h);
281
+ }
282
+
283
+ }
@@ -0,0 +1,28 @@
1
+ import { GeModelChangeEvent } from "./data/common/event/ge-model-change-event";
2
+ import { GeMouseEvent } from "./data/common/event/ge-mouse-event";
3
+ import { EventListenerIf } from "./event-listener.if";
4
+
5
+ export class EventAdapter implements EventListenerIf {
6
+
7
+ onCheckboxChanged(_evt: any[]): void {
8
+ }
9
+
10
+ onContextmenu(_evt: GeMouseEvent): void {
11
+ }
12
+
13
+ onModelChanged(_evt: GeModelChangeEvent): void {
14
+ }
15
+
16
+ onMouseClicked(_evt: GeMouseEvent): void {
17
+ }
18
+
19
+ onMouseDragging(_evt: GeMouseEvent): void {
20
+ }
21
+
22
+ onMouseDraggingEnd(_evt: GeMouseEvent): void {
23
+ }
24
+
25
+ onMouseMoved(_evt: GeMouseEvent): void {
26
+ }
27
+
28
+ }
@@ -0,0 +1,19 @@
1
+ import { GeMouseEvent } from "./data/common/event/ge-mouse-event";
2
+ import { GeModelChangeEvent } from "./data/common/event/ge-model-change-event";
3
+
4
+ export interface EventListenerIf {
5
+
6
+ onContextmenu(evt: GeMouseEvent): void;
7
+
8
+ onMouseMoved(evt: GeMouseEvent): void;
9
+
10
+ onMouseDraggingEnd(evt: GeMouseEvent): void;
11
+
12
+ onMouseDragging(evt: GeMouseEvent): void;
13
+
14
+ onMouseClicked(evt: GeMouseEvent): void;
15
+
16
+ onCheckboxChanged(evt: any[]): void;
17
+
18
+ onModelChanged(evt: GeModelChangeEvent): void;
19
+ }
@@ -0,0 +1,378 @@
1
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
2
+ import { DefaultRowHeightsIf } from "../data/options/default-row-heights.if";
3
+ import { ColumnDefIf } from "../data/tablemodel/column/column-def.if";
4
+ import { GetT } from "../data/common/get-t";
5
+ import { TableOptionsIf } from "../data/options/table-options.if";
6
+ import { TableModelIf } from "../data/tablemodel/table-model.if";
7
+ import { DefaultRowHeights } from "../data/options/default-row-heights";
8
+ import { ColumnDef } from "../data/tablemodel/column/column-def";
9
+ import { px200 } from "../data/common/sizes";
10
+ import { AreaModelArrayOfArrays } from "../data/tablemodel/areamodel/area-model-array-of-arrays";
11
+ import { AreaModelHidden } from "../data/tablemodel/areamodel/area-model-hidden";
12
+ import { TreeRow } from "../data/common/tree-row";
13
+ import { AreaModelTree } from "../data/tablemodel/areamodel/area-model-tree";
14
+ import { TreeCheckboxModel } from "../checkbox/tree-checkbox-model";
15
+ import { TableModel } from "../data/tablemodel/table-model";
16
+ import { SelectionModelIf } from "../selection/selection-model.if";
17
+ import {
18
+ AreaModelObjectArrayWithColumndefs
19
+ } from "../data/tablemodel/areamodel/area-model-object-array-with-columndefs";
20
+ import { TableOptions } from "../data/options/table-options";
21
+
22
+
23
+ export class TableFactory {
24
+
25
+ public static createTableModel(p: Partial<{
26
+ headerAreaModel: AreaModelIf,
27
+ bodyAreaModel: AreaModelIf,
28
+ footerAreaModel: AreaModelIf,
29
+ fixedLeftColumnCount: number,
30
+ fixedRightColumnCount: number,
31
+ rowCheckboxVisible: boolean,
32
+ defaultRowHeights: DefaultRowHeightsIf,
33
+ columnDefs: ColumnDefIf[],
34
+ columnSizes: number[],
35
+ overridingColumnWidth: number,
36
+ columnCount: number,
37
+ parentSize: number,
38
+ getSelectionModel: GetT<SelectionModelIf>,
39
+ rows: any[],
40
+ properties: string[],
41
+ bodyData: any[][],
42
+ headerData: string[][], // multi-line header
43
+ footerData: string[][], // multi-line footerData
44
+ tableOptions: TableOptionsIf
45
+
46
+ }>): TableModelIf {
47
+
48
+ if (p.defaultRowHeights === undefined) {
49
+ if (p.tableOptions?.defaultRowHeights) {
50
+ p.defaultRowHeights = p.tableOptions.defaultRowHeights;
51
+ } else {
52
+ p.defaultRowHeights = new DefaultRowHeights();
53
+
54
+ if (p.headerAreaModel && "defaultRowHeight" in p.headerAreaModel) {
55
+ const dh = p.headerAreaModel.defaultRowHeight as number;
56
+ if (dh > -1) {
57
+ p.defaultRowHeights.header = dh;
58
+ }
59
+ }
60
+
61
+ if (p.bodyAreaModel && "defaultRowHeight" in p.bodyAreaModel) {
62
+ const dh = p.bodyAreaModel.defaultRowHeight as number;
63
+ if (dh > -1) {
64
+ p.defaultRowHeights.body = dh;
65
+ }
66
+ }
67
+
68
+ if (p.footerAreaModel && "defaultRowHeight" in p.footerAreaModel) {
69
+ const dh = p.footerAreaModel.defaultRowHeight as number;
70
+ if (dh > -1) {
71
+ p.defaultRowHeights.footer = dh;
72
+ }
73
+ }
74
+ }
75
+ }
76
+
77
+ if (p.columnDefs === undefined) {
78
+ if (p.properties?.length) {
79
+ p.columnDefs = p.properties.map(p => new ColumnDef(p, p.toUpperCase(), px200));
80
+ } else if (p.rows?.length) {
81
+ p.columnDefs = Object.keys(p.rows[0]).map(p => new ColumnDef(p, p.toUpperCase(), px200));
82
+ } else {
83
+ p.columnDefs = [];
84
+ }
85
+ }
86
+
87
+ if (p.columnCount === undefined) {
88
+ if (p.columnDefs?.length) {
89
+ p.columnCount = p.columnDefs.length;
90
+ } else if (p.headerData?.length) {
91
+ p.columnCount = p.headerData[0].length;
92
+ } else if (p.columnSizes?.length) {
93
+ p.columnCount = p.columnSizes?.length;
94
+ } else {
95
+ console.warn("Property \"columnCount\" is missing and cannot be derived from other properties.");
96
+ }
97
+ }
98
+
99
+
100
+ if (!p.headerAreaModel) {
101
+ if (p.headerData?.length) {
102
+ p.headerAreaModel = new AreaModelArrayOfArrays<string>(
103
+ "header",
104
+ p.headerData,
105
+ p.defaultRowHeights.header,
106
+ p.columnDefs
107
+ );
108
+ } else if (p.columnDefs?.length) {
109
+ p.headerAreaModel = new AreaModelArrayOfArrays<string>(
110
+ "header",
111
+ [p.columnDefs.map(def => def.headerLabel)],
112
+ p.defaultRowHeights.header,
113
+ p.columnDefs
114
+ );
115
+ } else {
116
+ p.headerAreaModel = new AreaModelHidden("header");
117
+ }
118
+ }
119
+ if (!p.footerAreaModel) {
120
+ if (p.footerData?.length) {
121
+ p.footerAreaModel = new AreaModelArrayOfArrays<string>(
122
+ "footer",
123
+ p.footerData,
124
+ p.defaultRowHeights.footer,
125
+ p.columnDefs
126
+ );
127
+ } else {
128
+ p.footerAreaModel = new AreaModelHidden("footer");
129
+ }
130
+ }
131
+ if (!p.bodyAreaModel) {
132
+ if (p.rows) {
133
+
134
+ if (p.rows?.length && p.rows[0] instanceof TreeRow) {
135
+ // Tree:
136
+ const treeRows = p.rows as TreeRow<any>[];
137
+ p.bodyAreaModel = new AreaModelTree(
138
+ "body",
139
+ treeRows,
140
+ p.defaultRowHeights.body,
141
+ p.columnDefs
142
+ );
143
+ const checkboxExtraColumnVisible = p.columnDefs[0].property === "CheckboxColumn";
144
+ if (checkboxExtraColumnVisible || p.tableOptions?.showCheckboxWihoutExtraColumn) {
145
+ p.bodyAreaModel.rowSelectionModel = new TreeCheckboxModel(treeRows);
146
+ }
147
+ } else {
148
+ p.bodyAreaModel = new AreaModelObjectArrayWithColumndefs<any>(
149
+ "body", p.rows, p.columnDefs, p.defaultRowHeights.body
150
+ );
151
+ }
152
+
153
+ } else if (p.bodyData) {
154
+ p.bodyAreaModel = new AreaModelArrayOfArrays<any>(
155
+ "body", p.bodyData, p.defaultRowHeights.body
156
+ );
157
+ } else {
158
+ p.bodyAreaModel = new AreaModelHidden("body");
159
+ }
160
+ }
161
+
162
+ if (p.fixedLeftColumnCount === undefined) {
163
+ p.fixedLeftColumnCount = 0;
164
+ }
165
+ if (p.fixedRightColumnCount === undefined) {
166
+ p.fixedRightColumnCount = 0;
167
+ }
168
+ if (p.rowCheckboxVisible === undefined) {
169
+ p.rowCheckboxVisible = false;
170
+ }
171
+ if (p.overridingColumnWidth === undefined) {
172
+ p.overridingColumnWidth = -1;
173
+ }
174
+
175
+ if (!p.getSelectionModel && p.tableOptions?.getSelectionModel) {
176
+ p.getSelectionModel = p.tableOptions?.getSelectionModel;
177
+ }
178
+
179
+ // Flat table:
180
+ return new TableModel(
181
+ p.headerAreaModel,
182
+ p.bodyAreaModel,
183
+ p.footerAreaModel,
184
+ p.fixedLeftColumnCount,
185
+ p.fixedRightColumnCount,
186
+ p.rowCheckboxVisible,
187
+ p.defaultRowHeights,
188
+ p.columnDefs,
189
+ p.columnSizes,
190
+ p.overridingColumnWidth,
191
+ p.columnCount,
192
+ p.parentSize,
193
+ p.getSelectionModel
194
+ );
195
+ }
196
+
197
+ static buildByTypedRowsParam<T>(param: {
198
+ rows: T[],
199
+ columnDefs: ColumnDefIf[],
200
+ tableOptions?: TableOptionsIf,
201
+ fixedLeftColumnCount?: number,
202
+ fixedRightColumnCount?: number
203
+ }): TableModelIf {
204
+
205
+ return TableFactory.buildByTypedRows<T>(
206
+ param.rows ?? [],
207
+ param.columnDefs,
208
+ param.tableOptions ?? new TableOptions(),
209
+ param.fixedLeftColumnCount ?? 0,
210
+ param.fixedRightColumnCount ?? 0
211
+ );
212
+ }
213
+
214
+ static buildByTypedRows<T>(
215
+ rows: T[],
216
+ columnDefs: ColumnDefIf[],
217
+ tableOptions: TableOptionsIf = new TableOptions(),
218
+ fixedLeftColumnCount: number = 0,
219
+ fixedRightColumnCount: number = 0
220
+ ): TableModelIf {
221
+
222
+ const defaultRowHeights = tableOptions.defaultRowHeights;
223
+ const checkboxExtraColumnVisible = columnDefs[0].property === "CheckboxColumn";
224
+
225
+ if (rows?.length && rows[0] instanceof TreeRow) {
226
+ // Tree:
227
+ const treeRows = rows as TreeRow<T>[];
228
+ const bodyareaModel = new AreaModelTree(
229
+ "body",
230
+ treeRows,
231
+ defaultRowHeights.body,
232
+ columnDefs
233
+ );
234
+ if (checkboxExtraColumnVisible || tableOptions.showCheckboxWihoutExtraColumn) {
235
+ bodyareaModel.rowSelectionModel = new TreeCheckboxModel(treeRows);
236
+ }
237
+ return TableFactory.createByAreaModelsParam({
238
+ headerAreaModel: new AreaModelArrayOfArrays<string>("header", [columnDefs.map(def => def.headerLabel)], defaultRowHeights.header),
239
+ bodyAreaModel: bodyareaModel,
240
+ footerAreaModel: new AreaModelArrayOfArrays<string>("footer", [], defaultRowHeights.footer),
241
+ columnDefs,
242
+ fixedLeftColumnCount,
243
+ fixedRightColumnCount,
244
+ defaultRowHeights: tableOptions.defaultRowHeights,
245
+ rowCheckboxVisible: false,
246
+ columnSizes: [],
247
+ columnCount: columnDefs.length,
248
+ overridingColumnWidth: -1
249
+ });
250
+ }
251
+
252
+ // Flat table:
253
+ return TableFactory.createByObjectArrayParam({
254
+ rows,
255
+ columnDefs,
256
+ fixedLeftColumnCount,
257
+ fixedRightColumnCount,
258
+ defaultRowHeights: tableOptions.defaultRowHeights
259
+ });
260
+
261
+ }
262
+
263
+ public static createByObjectArrayParam<T>(param: {
264
+ rows: T[],
265
+ header?: string[][],
266
+ footer?: string[][],
267
+ fixedLeftColumnCount?: number,
268
+ fixedRightColumnCount?: number,
269
+ rowCheckboxVisible?: boolean,
270
+ defaultRowHeights?: DefaultRowHeightsIf,
271
+ columnDefs?: ColumnDefIf[],
272
+ columnSizes?: number[]
273
+ }) {
274
+ const rowCheckboxVisible = param.rowCheckboxVisible !== undefined ? param.rowCheckboxVisible : false;
275
+ return TableFactory.createByObjectArray<T>(
276
+ param.rows,
277
+ param.header ?? [],
278
+ param.footer ?? [],
279
+ param.fixedLeftColumnCount ?? 0,
280
+ param.fixedRightColumnCount ?? 0,
281
+ rowCheckboxVisible,
282
+ param.defaultRowHeights ?? new DefaultRowHeights(),
283
+ param.columnDefs ?? [],
284
+ param.columnSizes ?? []
285
+ );
286
+ }
287
+
288
+ public static createByAreaModels(
289
+ headerAreaModel: AreaModelIf = new AreaModelHidden(),
290
+ bodyAreaModel: AreaModelIf,
291
+ footerAreaModel: AreaModelIf = new AreaModelHidden(),
292
+ fixedLeftColumnCount: number = 0,
293
+ fixedRightColumnCount: number = 0,
294
+ rowCheckboxVisible: boolean = false,
295
+ defaultRowHeights: DefaultRowHeightsIf = new DefaultRowHeights(),
296
+ columnDefs: ColumnDefIf[],
297
+ columnSizes: number[] = [],
298
+ overridingColumnWidth: number = -1,
299
+ columnCount: number
300
+ ) {
301
+ return new TableModel(
302
+ headerAreaModel,
303
+ bodyAreaModel,
304
+ footerAreaModel,
305
+ fixedLeftColumnCount,
306
+ fixedRightColumnCount,
307
+ rowCheckboxVisible,
308
+ defaultRowHeights,
309
+ columnDefs,
310
+ columnSizes,
311
+ overridingColumnWidth,
312
+ columnCount
313
+ );
314
+ }
315
+
316
+ public static createByAreaModelsParam(param: {
317
+ headerAreaModel?: AreaModelIf,
318
+ bodyAreaModel: AreaModelIf,
319
+ footerAreaModel?: AreaModelIf,
320
+ fixedLeftColumnCount?: number,
321
+ fixedRightColumnCount?: number,
322
+ rowCheckboxVisible?: boolean,
323
+ defaultRowHeights?: DefaultRowHeightsIf,
324
+ columnDefs?: ColumnDefIf[],
325
+ columnSizes?: number[],
326
+ overridingColumnWidth?: number,
327
+ columnCount?: number
328
+ }) {
329
+ return TableFactory.createByAreaModels(
330
+ param.headerAreaModel ?? new AreaModelHidden(),
331
+ param.bodyAreaModel,
332
+ param.footerAreaModel ?? new AreaModelHidden(),
333
+ param.fixedLeftColumnCount ?? 0,
334
+ param.fixedRightColumnCount ?? 0,
335
+ param.rowCheckboxVisible === undefined ? false : param.rowCheckboxVisible,
336
+ param.defaultRowHeights,
337
+ param.columnDefs ?? [],
338
+ param.columnSizes ?? [],
339
+ param.overridingColumnWidth ?? -1,
340
+ param.columnCount ?? 0
341
+ );
342
+ }
343
+
344
+ public static createByObjectArray<T>(
345
+ rows: T[],
346
+ header: string[][] = [],
347
+ footer: string[][] = [],
348
+ fixedLeftColumnCount: number = 0,
349
+ fixedRightColumnCount: number = 0,
350
+ rowCheckboxVisible: boolean = false,
351
+ defaultRowHeights: DefaultRowHeightsIf = new DefaultRowHeights(),
352
+ columnDefs: ColumnDefIf[],
353
+ columnSizes: number[] = []
354
+ ) {
355
+ let headerAreaModel: AreaModelIf;
356
+ if (header?.length) {
357
+ headerAreaModel = new AreaModelArrayOfArrays<string>("header", header, defaultRowHeights.header, columnDefs);
358
+ } else if (columnDefs?.length) {
359
+ headerAreaModel = new AreaModelArrayOfArrays<string>("header", [columnDefs.map(def => def.headerLabel)], defaultRowHeights.header, columnDefs);
360
+ } else {
361
+ headerAreaModel = new AreaModelHidden();
362
+ }
363
+ const footerAreaModel = footer ? new AreaModelArrayOfArrays<string>("footer", footer, defaultRowHeights.footer, columnDefs) : new AreaModelHidden();
364
+ const bodyAreaModel = new AreaModelObjectArrayWithColumndefs<T>("body", rows, columnDefs, defaultRowHeights.body);
365
+
366
+ return new TableModel(
367
+ headerAreaModel,
368
+ bodyAreaModel,
369
+ footerAreaModel,
370
+ fixedLeftColumnCount,
371
+ fixedRightColumnCount,
372
+ rowCheckboxVisible,
373
+ defaultRowHeights,
374
+ columnDefs,
375
+ columnSizes
376
+ );
377
+ }
378
+ }