@guiexpert/table 0.0.2 → 1.0.2

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 +10 -20
  7. package/project.json +47 -0
  8. package/{index.d.ts → src/index.ts} +72 -20
  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 -9
  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/index-and-px.ts +9 -0
  43. package/src/lib/table/data/common/size.if.ts +4 -0
  44. package/src/lib/table/data/common/size.ts +9 -0
  45. package/src/lib/table/data/common/sizes.ts +35 -0
  46. package/src/lib/table/data/common/sort-item.ts +11 -0
  47. package/src/lib/table/data/common/tree-row-if.ts +11 -0
  48. package/src/lib/table/data/common/tree-row.ts +16 -0
  49. package/src/lib/table/data/common/value-label.if.ts +6 -0
  50. package/src/lib/table/data/common/value-label.ts +13 -0
  51. package/src/lib/table/data/div-scope.type.ts +5 -0
  52. package/src/lib/table/data/event/mouse-target-data.ts +45 -0
  53. package/src/lib/table/data/geo-data.ts +13 -0
  54. package/src/lib/table/data/options/auto-restore-options.if.ts +21 -0
  55. package/src/lib/table/data/options/auto-restore-options.ts +50 -0
  56. package/src/lib/table/data/options/default-row-heights.if.ts +5 -0
  57. package/src/lib/table/data/options/default-row-heights.ts +10 -0
  58. package/src/lib/table/data/options/icon.if.ts +7 -0
  59. package/src/lib/table/data/options/icon.ts +10 -0
  60. package/{lib/table/data/options/sorted-options.if.d.ts → src/lib/table/data/options/sorted-options.if.ts} +6 -3
  61. package/src/lib/table/data/options/sorted-options.ts +15 -0
  62. package/src/lib/table/data/options/table-options.if.ts +54 -0
  63. package/src/lib/table/data/options/table-options.ts +66 -0
  64. package/src/lib/table/data/options/tree-options.if.ts +10 -0
  65. package/src/lib/table/data/options/tree-options.ts +32 -0
  66. package/src/lib/table/data/table-model-and-options.if.ts +8 -0
  67. package/src/lib/table/data/table-model-and-options.ts +13 -0
  68. package/src/lib/table/data/tablemodel/area-ident.type.ts +18 -0
  69. package/src/lib/table/data/tablemodel/areamodel/abstract-area-model.ts +183 -0
  70. package/src/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.ts +59 -0
  71. package/src/lib/table/data/tablemodel/areamodel/area-model-cell-groups.ts +210 -0
  72. package/src/lib/table/data/tablemodel/areamodel/area-model-hidden.ts +120 -0
  73. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.ts +23 -0
  74. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array.ts +105 -0
  75. package/src/lib/table/data/tablemodel/areamodel/area-model-tree.ts +215 -0
  76. package/src/lib/table/data/tablemodel/areamodel/area-model.if.ts +186 -0
  77. package/src/lib/table/data/tablemodel/areamodel/area-model.ts +110 -0
  78. package/src/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.ts +61 -0
  79. package/src/lib/table/data/tablemodel/areamodel/has-default-row-height-if.ts +3 -0
  80. package/src/lib/table/data/tablemodel/cellgroup/cell-group-ext.ts +167 -0
  81. package/src/lib/table/data/tablemodel/cellgroup/cell-group.if.ts +12 -0
  82. package/src/lib/table/data/tablemodel/cellgroup/cell-group.ts +18 -0
  83. package/src/lib/table/data/tablemodel/cellgroup/cellgroup-factory.ts +148 -0
  84. package/src/lib/table/data/tablemodel/column/column-def.if.ts +28 -0
  85. package/src/lib/table/data/tablemodel/column/column-def.ts +104 -0
  86. package/src/lib/table/data/tablemodel/padding.ts +9 -0
  87. package/src/lib/table/data/tablemodel/table-model.if.ts +90 -0
  88. package/src/lib/table/data/tablemodel/table-model.ts +352 -0
  89. package/src/lib/table/ele-scope.ts +283 -0
  90. package/src/lib/table/event-adapter.ts +28 -0
  91. package/src/lib/table/event-listener.if.ts +19 -0
  92. package/src/lib/table/factory/table-factory.ts +378 -0
  93. package/src/lib/table/factory/tree-factory.ts +51 -0
  94. package/src/lib/table/focus/focus-model.if.ts +14 -0
  95. package/src/lib/table/focus/focus-model.ts +48 -0
  96. package/{lib/table/focus/focus.type.d.ts → src/lib/table/focus/focus.type.ts} +3 -0
  97. package/src/lib/table/input-handler.ts +34 -0
  98. package/src/lib/table/mouse-handler.ts +236 -0
  99. package/src/lib/table/render-scope.ts +936 -0
  100. package/src/lib/table/renderer/cell-group-ext-cell-renderer.ts +27 -0
  101. package/{lib/table/renderer/cell-render.if.d.ts → src/lib/table/renderer/cell-render.if.ts} +10 -1
  102. package/src/lib/table/renderer/checkbox-boolean-property-cell-renderer.ts +63 -0
  103. package/src/lib/table/renderer/checkbox-cell-renderer.ts +39 -0
  104. package/src/lib/table/renderer/date-to-int-date-cell-renderer.ts +39 -0
  105. package/src/lib/table/renderer/date-to-iso-cell-renderer.ts +25 -0
  106. package/src/lib/table/renderer/date-to-locale-date-cell-renderer.ts +24 -0
  107. package/src/lib/table/renderer/date-to-tec-cell-renderer.ts +28 -0
  108. package/{lib/table/renderer/edit/edit-cell-renderer.type.d.ts → src/lib/table/renderer/edit/edit-cell-renderer.type.ts} +1 -0
  109. package/src/lib/table/renderer/edit/edit-input-pipe-for-number.ts +6 -0
  110. package/src/lib/table/renderer/edit/edit-input-pipe.if.ts +7 -0
  111. package/src/lib/table/renderer/edit/input-cell-renderer.ts +41 -0
  112. package/src/lib/table/renderer/edit/select-cell-renderer.ts +60 -0
  113. package/src/lib/table/renderer/male-female-to-icon-cell-renderer.ts +26 -0
  114. package/src/lib/table/renderer/number-cell-renderer.ts +38 -0
  115. package/src/lib/table/renderer/progress-bar-cell-renderer.ts +60 -0
  116. package/src/lib/table/renderer/renderer.ts +11 -0
  117. package/src/lib/table/renderer/star-rating-cell-renderer.ts +45 -0
  118. package/src/lib/table/renderer/true-false-cell-renderer.ts +28 -0
  119. package/src/lib/table/selection/selection-model.if.ts +20 -0
  120. package/src/lib/table/selection/selection-model.ts +109 -0
  121. package/src/lib/table/selection/selection-service.ts +120 -0
  122. package/{lib/table/selection/selection.type.d.ts → src/lib/table/selection/selection.type.ts} +3 -0
  123. package/src/lib/table/service/abstract-store-state.service.ts +105 -0
  124. package/src/lib/table/service/convenience-dom.service.ts +548 -0
  125. package/src/lib/table/service/data/collapsed-expanded.data.ts +11 -0
  126. package/src/lib/table/service/data/html-style.type.ts +1 -0
  127. package/src/lib/table/service/dom-service.if.ts +16 -0
  128. package/src/lib/table/service/ge-filter.service.ts +123 -0
  129. package/src/lib/table/service/simple-dom-service.ts +46 -0
  130. package/src/lib/table/service/sorter.service.ts +30 -0
  131. package/src/lib/table/service/store-state-collapsed-expand.service.ts +76 -0
  132. package/src/lib/table/service/store-state-scroll-pos.service.ts +40 -0
  133. package/src/lib/table/service/store-state-sorting.service.ts +41 -0
  134. package/src/lib/table/service/tree-row.service.ts +31 -0
  135. package/src/lib/table/table-api.ts +61 -0
  136. package/src/lib/table/table-scope.ts +433 -0
  137. package/src/test-setup.ts +1 -0
  138. package/tsconfig.json +22 -0
  139. package/tsconfig.lib.json +19 -0
  140. package/tsconfig.lib.prod.json +7 -0
  141. package/tsconfig.spec.json +20 -0
  142. package/esm2020/guiexpert-table.mjs +0 -5
  143. package/esm2020/index.mjs +0 -108
  144. package/esm2020/lib/table/action/action-id.type.mjs +0 -20
  145. package/esm2020/lib/table/action/on-action-triggered.if.mjs +0 -2
  146. package/esm2020/lib/table/action/osx-shortcut-actionId-mapping.mjs +0 -17
  147. package/esm2020/lib/table/action/shortcut-actionid-mapping.type.mjs +0 -2
  148. package/esm2020/lib/table/action/shortcut.service.mjs +0 -105
  149. package/esm2020/lib/table/action/windows-shortcut-actionId-mapping.mjs +0 -15
  150. package/esm2020/lib/table/checkbox/checkbox-model.if.mjs +0 -2
  151. package/esm2020/lib/table/checkbox/checkbox-model.mjs +0 -52
  152. package/esm2020/lib/table/checkbox/tree-checkbox-model.mjs +0 -106
  153. package/esm2020/lib/table/data/common/aligns.mjs +0 -19
  154. package/esm2020/lib/table/data/common/area-map-factory.mjs +0 -7
  155. package/esm2020/lib/table/data/common/area-map.mjs +0 -8
  156. package/esm2020/lib/table/data/common/area-map.type.mjs +0 -2
  157. package/esm2020/lib/table/data/common/args-adjust-columns-to-row-parent-params.mjs +0 -2
  158. package/esm2020/lib/table/data/common/args-render-cell-div.mjs +0 -2
  159. package/esm2020/lib/table/data/common/boolean-function.mjs +0 -3
  160. package/esm2020/lib/table/data/common/cell-range.mjs +0 -27
  161. package/esm2020/lib/table/data/common/checkbox-column.mjs +0 -15
  162. package/esm2020/lib/table/data/common/checked-type.mjs +0 -2
  163. package/esm2020/lib/table/data/common/event/ge-cell-indices.mjs +0 -7
  164. package/esm2020/lib/table/data/common/event/ge-key-event.mjs +0 -7
  165. package/esm2020/lib/table/data/common/event/ge-model-change-event.mjs +0 -10
  166. package/esm2020/lib/table/data/common/event/ge-mouse-event.mjs +0 -19
  167. package/esm2020/lib/table/data/common/filter-function.mjs +0 -2
  168. package/esm2020/lib/table/data/common/get-t.mjs +0 -2
  169. package/esm2020/lib/table/data/common/index-and-px.mjs +0 -7
  170. package/esm2020/lib/table/data/common/size.if.mjs +0 -2
  171. package/esm2020/lib/table/data/common/size.mjs +0 -7
  172. package/esm2020/lib/table/data/common/sizes.mjs +0 -33
  173. package/esm2020/lib/table/data/common/sort-item.mjs +0 -7
  174. package/esm2020/lib/table/data/common/sort-state.type.mjs +0 -2
  175. package/esm2020/lib/table/data/common/tree-arrow.type.mjs +0 -2
  176. package/esm2020/lib/table/data/common/tree-row-if.mjs +0 -2
  177. package/esm2020/lib/table/data/common/tree-row.mjs +0 -12
  178. package/esm2020/lib/table/data/common/value-label.if.mjs +0 -2
  179. package/esm2020/lib/table/data/common/value-label.mjs +0 -7
  180. package/esm2020/lib/table/data/div-scope.type.mjs +0 -2
  181. package/esm2020/lib/table/data/geo-data.mjs +0 -10
  182. package/esm2020/lib/table/data/options/auto-restore-options.if.mjs +0 -2
  183. package/esm2020/lib/table/data/options/auto-restore-options.mjs +0 -42
  184. package/esm2020/lib/table/data/options/default-row-heights.if.mjs +0 -2
  185. package/esm2020/lib/table/data/options/default-row-heights.mjs +0 -8
  186. package/esm2020/lib/table/data/options/icon.if.mjs +0 -2
  187. package/esm2020/lib/table/data/options/icon.mjs +0 -8
  188. package/esm2020/lib/table/data/options/sorted-options.if.mjs +0 -2
  189. package/esm2020/lib/table/data/options/sorted-options.mjs +0 -9
  190. package/esm2020/lib/table/data/options/table-options.if.mjs +0 -2
  191. package/esm2020/lib/table/data/options/table-options.mjs +0 -37
  192. package/esm2020/lib/table/data/options/tree-options.if.mjs +0 -2
  193. package/esm2020/lib/table/data/options/tree-options.mjs +0 -10
  194. package/esm2020/lib/table/data/side-ident.type.mjs +0 -2
  195. package/esm2020/lib/table/data/tablemodel/area-ident.type.mjs +0 -10
  196. package/esm2020/lib/table/data/tablemodel/areamodel/abstract-area-model.mjs +0 -108
  197. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-array-array.mjs +0 -34
  198. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-hidden.mjs +0 -80
  199. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.mjs +0 -11
  200. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array.mjs +0 -79
  201. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-tree.mjs +0 -166
  202. package/esm2020/lib/table/data/tablemodel/areamodel/area-model.if.mjs +0 -2
  203. package/esm2020/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.mjs +0 -48
  204. package/esm2020/lib/table/data/tablemodel/column/column-def.if.mjs +0 -2
  205. package/esm2020/lib/table/data/tablemodel/column/column-def.mjs +0 -32
  206. package/esm2020/lib/table/data/tablemodel/padding.mjs +0 -9
  207. package/esm2020/lib/table/data/tablemodel/table-model.if.mjs +0 -2
  208. package/esm2020/lib/table/data/tablemodel/table-model.mjs +0 -268
  209. package/esm2020/lib/table/ele-scope.mjs +0 -173
  210. package/esm2020/lib/table/event-adapter.mjs +0 -17
  211. package/esm2020/lib/table/event-listener.if.mjs +0 -2
  212. package/esm2020/lib/table/focus/focus-model.if.mjs +0 -2
  213. package/esm2020/lib/table/focus/focus-model.mjs +0 -22
  214. package/esm2020/lib/table/focus/focus.type.mjs +0 -2
  215. package/esm2020/lib/table/input-handler.mjs +0 -24
  216. package/esm2020/lib/table/mouse-handler.mjs +0 -191
  217. package/esm2020/lib/table/render-scope.mjs +0 -595
  218. package/esm2020/lib/table/renderer/cell-render.if.mjs +0 -2
  219. package/esm2020/lib/table/renderer/checkbox-cell-renderer.mjs +0 -22
  220. package/esm2020/lib/table/renderer/date-to-int-date-cell-renderer.mjs +0 -21
  221. package/esm2020/lib/table/renderer/date-to-iso-cell-renderer.mjs +0 -9
  222. package/esm2020/lib/table/renderer/date-to-locale-date-cell-renderer.mjs +0 -9
  223. package/esm2020/lib/table/renderer/date-to-tec-cell-renderer.mjs +0 -12
  224. package/esm2020/lib/table/renderer/edit/edit-cell-renderer.type.mjs +0 -2
  225. package/esm2020/lib/table/renderer/edit/input-cell-renderer.mjs +0 -23
  226. package/esm2020/lib/table/renderer/edit/select-cell-renderer.mjs +0 -35
  227. package/esm2020/lib/table/renderer/male-female-to-icon-cell-renderer.mjs +0 -12
  228. package/esm2020/lib/table/renderer/number-cell-renderer.mjs +0 -19
  229. package/esm2020/lib/table/renderer/renderer-cleanup-fn.type.mjs +0 -2
  230. package/esm2020/lib/table/renderer/renderer.mjs +0 -7
  231. package/esm2020/lib/table/renderer/true-false-cell-renderer.mjs +0 -15
  232. package/esm2020/lib/table/selection/selection-model.if.mjs +0 -2
  233. package/esm2020/lib/table/selection/selection-model.mjs +0 -97
  234. package/esm2020/lib/table/selection/selection-service.mjs +0 -97
  235. package/esm2020/lib/table/selection/selection.type.mjs +0 -2
  236. package/esm2020/lib/table/service/abstract-store-state.service.mjs +0 -49
  237. package/esm2020/lib/table/service/convenience-dom.service.mjs +0 -394
  238. package/esm2020/lib/table/service/data/collapsed-expanded.data.mjs +0 -9
  239. package/esm2020/lib/table/service/data/html-style.type.mjs +0 -2
  240. package/esm2020/lib/table/service/dom-service.if.mjs +0 -2
  241. package/esm2020/lib/table/service/ge-filter.service.mjs +0 -98
  242. package/esm2020/lib/table/service/simple-dom-service.mjs +0 -34
  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 -124
  250. package/esm2020/lib/table/table-scope.mjs +0 -313
  251. package/lib/table/action/action-id.type.d.ts +0 -2
  252. package/lib/table/action/osx-shortcut-actionId-mapping.d.ts +0 -6
  253. package/lib/table/action/shortcut-actionid-mapping.type.d.ts +0 -4
  254. package/lib/table/action/shortcut.service.d.ts +0 -17
  255. package/lib/table/action/windows-shortcut-actionId-mapping.d.ts +0 -6
  256. package/lib/table/checkbox/checkbox-model.d.ts +0 -12
  257. package/lib/table/checkbox/checkbox-model.if.d.ts +0 -9
  258. package/lib/table/checkbox/tree-checkbox-model.d.ts +0 -17
  259. package/lib/table/data/common/aligns.d.ts +0 -24
  260. package/lib/table/data/common/area-map-factory.d.ts +0 -5
  261. package/lib/table/data/common/area-map.d.ts +0 -7
  262. package/lib/table/data/common/area-map.type.d.ts +0 -5
  263. package/lib/table/data/common/args-render-cell-div.d.ts +0 -13
  264. package/lib/table/data/common/boolean-function.d.ts +0 -3
  265. package/lib/table/data/common/cell-range.d.ts +0 -17
  266. package/lib/table/data/common/checkbox-column.d.ts +0 -13
  267. package/lib/table/data/common/checked-type.d.ts +0 -1
  268. package/lib/table/data/common/event/ge-cell-indices.d.ts +0 -5
  269. package/lib/table/data/common/event/ge-key-event.d.ts +0 -5
  270. package/lib/table/data/common/event/ge-model-change-event.d.ts +0 -6
  271. package/lib/table/data/common/event/ge-mouse-event.d.ts +0 -17
  272. package/lib/table/data/common/index-and-px.d.ts +0 -5
  273. package/lib/table/data/common/size.d.ts +0 -6
  274. package/lib/table/data/common/size.if.d.ts +0 -4
  275. package/lib/table/data/common/sizes.d.ts +0 -32
  276. package/lib/table/data/common/sort-item.d.ts +0 -6
  277. package/lib/table/data/common/tree-row-if.d.ts +0 -10
  278. package/lib/table/data/common/tree-row.d.ts +0 -11
  279. package/lib/table/data/common/value-label.d.ts +0 -6
  280. package/lib/table/data/common/value-label.if.d.ts +0 -4
  281. package/lib/table/data/div-scope.type.d.ts +0 -7
  282. package/lib/table/data/geo-data.d.ts +0 -8
  283. package/lib/table/data/options/auto-restore-options.d.ts +0 -11
  284. package/lib/table/data/options/auto-restore-options.if.d.ts +0 -16
  285. package/lib/table/data/options/default-row-heights.d.ts +0 -7
  286. package/lib/table/data/options/default-row-heights.if.d.ts +0 -5
  287. package/lib/table/data/options/icon.d.ts +0 -7
  288. package/lib/table/data/options/icon.if.d.ts +0 -5
  289. package/lib/table/data/options/sorted-options.d.ts +0 -8
  290. package/lib/table/data/options/table-options.d.ts +0 -35
  291. package/lib/table/data/options/table-options.if.d.ts +0 -36
  292. package/lib/table/data/options/tree-options.d.ts +0 -9
  293. package/lib/table/data/options/tree-options.if.d.ts +0 -7
  294. package/lib/table/data/tablemodel/area-ident.type.d.ts +0 -2
  295. package/lib/table/data/tablemodel/areamodel/abstract-area-model.d.ts +0 -43
  296. package/lib/table/data/tablemodel/areamodel/area-model-array-array.d.ts +0 -18
  297. package/lib/table/data/tablemodel/areamodel/area-model-hidden.d.ts +0 -37
  298. package/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +0 -10
  299. package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +0 -27
  300. package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +0 -39
  301. package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +0 -146
  302. package/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +0 -12
  303. package/lib/table/data/tablemodel/column/column-def.d.ts +0 -46
  304. package/lib/table/data/tablemodel/column/column-def.if.d.ts +0 -22
  305. package/lib/table/data/tablemodel/padding.d.ts +0 -7
  306. package/lib/table/data/tablemodel/table-model.d.ts +0 -61
  307. package/lib/table/data/tablemodel/table-model.if.d.ts +0 -35
  308. package/lib/table/ele-scope.d.ts +0 -37
  309. package/lib/table/event-adapter.d.ts +0 -12
  310. package/lib/table/event-listener.if.d.ts +0 -11
  311. package/lib/table/focus/focus-model.d.ts +0 -12
  312. package/lib/table/focus/focus-model.if.d.ts +0 -6
  313. package/lib/table/input-handler.d.ts +0 -6
  314. package/lib/table/mouse-handler.d.ts +0 -25
  315. package/lib/table/render-scope.d.ts +0 -82
  316. package/lib/table/renderer/checkbox-cell-renderer.d.ts +0 -8
  317. package/lib/table/renderer/date-to-int-date-cell-renderer.d.ts +0 -9
  318. package/lib/table/renderer/date-to-iso-cell-renderer.d.ts +0 -8
  319. package/lib/table/renderer/date-to-locale-date-cell-renderer.d.ts +0 -8
  320. package/lib/table/renderer/date-to-tec-cell-renderer.d.ts +0 -8
  321. package/lib/table/renderer/edit/input-cell-renderer.d.ts +0 -8
  322. package/lib/table/renderer/edit/select-cell-renderer.d.ts +0 -12
  323. package/lib/table/renderer/male-female-to-icon-cell-renderer.d.ts +0 -8
  324. package/lib/table/renderer/number-cell-renderer.d.ts +0 -11
  325. package/lib/table/renderer/renderer.d.ts +0 -5
  326. package/lib/table/renderer/true-false-cell-renderer.d.ts +0 -8
  327. package/lib/table/selection/selection-model.d.ts +0 -21
  328. package/lib/table/selection/selection-model.if.d.ts +0 -11
  329. package/lib/table/selection/selection-service.d.ts +0 -17
  330. package/lib/table/service/abstract-store-state.service.d.ts +0 -10
  331. package/lib/table/service/convenience-dom.service.d.ts +0 -46
  332. package/lib/table/service/data/collapsed-expanded.data.d.ts +0 -7
  333. package/lib/table/service/data/html-style.type.d.ts +0 -3
  334. package/lib/table/service/dom-service.if.d.ts +0 -9
  335. package/lib/table/service/ge-filter.service.d.ts +0 -5
  336. package/lib/table/service/simple-dom-service.d.ts +0 -10
  337. package/lib/table/service/sorter.service.d.ts +0 -3
  338. package/lib/table/service/store-state-collapsed-expand.service.d.ts +0 -15
  339. package/lib/table/service/store-state-scroll-pos.service.d.ts +0 -10
  340. package/lib/table/service/store-state-sorting.service.d.ts +0 -11
  341. package/lib/table/service/tree-row.service.d.ts +0 -5
  342. package/lib/table/table-api.d.ts +0 -16
  343. package/lib/table/table-model-factory.d.ts +0 -60
  344. package/lib/table/table-scope.d.ts +0 -56
  345. /package/{lib/table/data/common/filter-function.d.ts → src/lib/table/data/common/filter-function.ts} +0 -0
  346. /package/{lib/table/data/common/get-t.d.ts → src/lib/table/data/common/get-t.ts} +0 -0
  347. /package/{lib/table/data/common/sort-state.type.d.ts → src/lib/table/data/common/sort-state.type.ts} +0 -0
  348. /package/{lib/table/data/common/tree-arrow.type.d.ts → src/lib/table/data/common/tree-arrow.type.ts} +0 -0
  349. /package/{lib/table/data/side-ident.type.d.ts → src/lib/table/data/side-ident.type.ts} +0 -0
  350. /package/{lib/table/renderer/renderer-cleanup-fn.type.d.ts → src/lib/table/renderer/renderer-cleanup-fn.type.ts} +0 -0
@@ -0,0 +1,548 @@
1
+ import { DomServiceIf } from "./dom-service.if";
2
+ import { DivScope } from "./../data/div-scope.type";
3
+ import { GeoData } from "./../data/geo-data";
4
+ import { TreeArrowType } from "../data/common/tree-arrow.type";
5
+ import { TreeOptionsIf } from "../data/options/tree-options.if";
6
+ import { TreeOptions } from "../data/options/tree-options";
7
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
8
+ import { IconIf } from "../data/options/icon.if";
9
+ import { TableOptionsIf } from "../data/options/table-options.if";
10
+ import { CheckedType } from "../data/common/checked-type";
11
+ import { SideIdent } from "../data/side-ident.type";
12
+ import { SortState } from "../data/common/sort-state.type";
13
+ import { SortedOptions } from "../data/options/sorted-options";
14
+ import { SortedOptionsIf } from "../data/options/sorted-options.if";
15
+ import { HtmlStyle } from "./data/html-style.type";
16
+
17
+
18
+ export class ConvenienceDomService {
19
+
20
+ constructor(
21
+ public readonly domService: DomServiceIf
22
+ ) {
23
+ }
24
+
25
+
26
+ setStyle(el: any, style: string, value: any): any {
27
+ this.domService.setStyle(el, style, value);
28
+ return el;
29
+ };
30
+
31
+
32
+ applyStyle(ele: HTMLDivElement, style: HtmlStyle): HTMLDivElement {
33
+ for (const key in style) {
34
+ this.domService.setStyle(ele, key, style[key]);
35
+ }
36
+ return ele;
37
+ }
38
+
39
+ applyDisplayNoneStyle(ele: HTMLDivElement): HTMLDivElement {
40
+ this.domService.setStyle(ele, "display", "none");
41
+ return ele;
42
+ }
43
+
44
+ applyDisplayBlockStyle(ele: HTMLDivElement): HTMLDivElement {
45
+ this.domService.setStyle(ele, "display", "block");
46
+ return ele;
47
+ }
48
+
49
+ applyStyleInPx(ele: HTMLDivElement, geoData: GeoData): HTMLDivElement {
50
+ Object.entries(geoData)
51
+ .forEach(([key, value]) => this.domService.setStyle(ele, key, value + "px"));
52
+ return ele;
53
+ }
54
+
55
+ applyStylePosistionRelative(ele: HTMLDivElement): HTMLDivElement {
56
+ this.domService.setStyle(ele, "position", "relative");
57
+ this.domService.setStyle(ele, "overflow", "clip");
58
+ return ele;
59
+ }
60
+
61
+ applyStylePosistionAbsolute(ele: HTMLDivElement): HTMLDivElement {
62
+ this.domService.setStyle(ele, "position", "absolute");
63
+ return ele;
64
+ }
65
+
66
+ applyStyleFullSize(ele: HTMLDivElement): HTMLDivElement {
67
+ this.domService.setStyle(ele, "width", "100%");
68
+ this.domService.setStyle(ele, "height", "100%");
69
+ return ele;
70
+ }
71
+
72
+ applyStyleOverflowAuto(
73
+ overflowX: "scroll" | "auto" = "auto",
74
+ overflowY: "scroll" | "auto" = "auto",
75
+ ele: HTMLDivElement
76
+ ): HTMLDivElement {
77
+ this.domService.setStyle(ele, "overflow-x", overflowX);
78
+ this.domService.setStyle(ele, "overflow-y", overflowY);
79
+ return ele;
80
+ }
81
+
82
+ applyStyleNoPadding(ele: HTMLDivElement): HTMLDivElement {
83
+ this.domService.setStyle(ele, "padding", "0");
84
+ this.domService.setStyle(ele, "margin", "0");
85
+ this.domService.setStyle(ele, "border", "0");
86
+ return ele;
87
+ }
88
+
89
+ appendRelativeChildDiv(parent: HTMLDivElement): DivScope {
90
+ const child =
91
+ this.applyStylePosistionRelative(
92
+ this.applyStyleFullSize(
93
+ this.applyStyleNoPadding(
94
+ this.domService.createElement<HTMLDivElement>("div")
95
+ )
96
+ )
97
+ );
98
+ this.domService.appendChild(parent, child);
99
+ this.applyStylePosistionAbsolute(parent);
100
+ const cache = {};
101
+ return { parent, child, cache };
102
+ }
103
+
104
+ appendText(parent: HTMLDivElement, text: string): HTMLElement {
105
+ const div = this.domService.createText(text);
106
+ this.domService.appendChild(parent, div);
107
+ return div;
108
+ }
109
+
110
+
111
+ addClass(clazz: string, div: HTMLDivElement) {
112
+ if (clazz.includes(" ")) {
113
+ clazz.split(" ").forEach(c => this.domService.addClass(div, c));
114
+ } else {
115
+ this.domService.addClass(div, clazz);
116
+ }
117
+ return div;
118
+ }
119
+
120
+ addClasses(classes: string[] | undefined, div: HTMLDivElement) {
121
+ if (classes) {
122
+ for (const c of classes) {
123
+ this.domService.addClass(div, c);
124
+ }
125
+ }
126
+ return div;
127
+ }
128
+
129
+ setAttribute(div: HTMLDivElement, key: string, value: string) {
130
+ if (key && value) {
131
+ this.domService.setAttribute(div, key, value);
132
+ }
133
+ return div;
134
+ }
135
+
136
+
137
+ createAreaDivWithClass(clazz: string, parent: HTMLDivElement, areaIdent: AreaIdent, sideIdent: SideIdent): HTMLDivElement {
138
+ const div = this.domService.createElement<HTMLDivElement>("div");
139
+ this.addClass(clazz, div);
140
+ this.domService.setAttribute(div, "data-area", areaIdent);
141
+ this.domService.setAttribute(div, "data-side", sideIdent);
142
+ this.domService.appendChild(parent, div);
143
+ return div;
144
+ }
145
+
146
+ createDivWithClass(clazz: string, parent: HTMLDivElement): HTMLDivElement {
147
+ const div = this.domService.createElement<HTMLDivElement>("div");
148
+ this.addClass(clazz, div);
149
+ this.domService.appendChild(parent, div);
150
+ return div;
151
+ }
152
+
153
+
154
+ addRowDiv(
155
+ divScope: DivScope,
156
+ geo: GeoData,
157
+ rowIndex: number = -1,
158
+ areaIdent: AreaIdent,
159
+ sideIdent: SideIdent,
160
+ text: string = ""
161
+ ): HTMLDivElement {
162
+
163
+ const cacheKey = geo.index ?? -1;
164
+ const div = this.getDivOrCreateDiv(cacheKey, divScope);
165
+
166
+ this.domService.addClass(div, "ge-table-row-div");
167
+ this.domService.addClass(div, `ge-table-row-div-${geo.index}`);
168
+ if (areaIdent === "body" && sideIdent === "center") {
169
+ const oddEven = (geo?.index ?? 0) % 2 === 0 ? "even" : "odd";
170
+ this.domService.addClass(div, `ge-table-row-${oddEven}`);
171
+ }
172
+ this.domService.setStyle(div, "display", "clip");
173
+ this.domService.setStyle(div, "position", "absolute");
174
+
175
+ this.domService.setStyle(div, "left", `${geo.left}px`);
176
+ this.domService.setStyle(div, "top", `${geo.top}px`);
177
+ this.domService.setStyle(div, "width", `${geo.width}px`);
178
+ this.domService.setStyle(div, "height", `${geo.height}px`);
179
+ this.domService.setAttribute(div, "data-row-index", `${rowIndex}`);
180
+ this.domService.setAttribute(div, "data-area", `${areaIdent}`);
181
+
182
+ // debugging:
183
+ if (text) {
184
+ const textElement = this.domService.createText(text);
185
+ this.domService.appendChild(div, textElement);
186
+ }
187
+ // -------------
188
+
189
+ this.domService.appendChild(divScope.child, div);
190
+ return div;
191
+ }
192
+
193
+
194
+ addColumnDiv(
195
+ parent: HTMLDivElement,
196
+ geo: GeoData,
197
+ rowIndex: number = -1,
198
+ columnIndex: number = -1,
199
+ areaIdent: AreaIdent,
200
+ sideIdent: SideIdent,
201
+ text: string = "",
202
+ treeArrow?: TreeArrowType,
203
+ tableOptions?: TableOptionsIf,
204
+ checkedType: CheckedType | undefined = undefined,
205
+ sortState?: SortState
206
+ ): HTMLDivElement {
207
+
208
+ const treeOptions = tableOptions?.treeOptions;
209
+ const checkboxWithoutExtraColumn = tableOptions?.showCheckboxWihoutExtraColumn;
210
+
211
+ const div = this.domService.createElement<HTMLDivElement>("div");
212
+ this.domService.addClass(div, "ge-table-col-div");
213
+ this.domService.addClass(div, `ge-table-col-div-${geo.index}`);
214
+ this.domService.setAttribute(div, "data-col-index", `${geo.index}`);
215
+ this.domService.setAttribute(div, "data-row-index", `${rowIndex}`);
216
+ this.domService.setAttribute(div, "data-area", `${areaIdent}`);
217
+ const oddEven = (geo?.index ?? 0) % 2 === 0 ? "even" : "odd";
218
+ if (areaIdent === "body" && sideIdent === "center") {
219
+ this.domService.addClass(div, `ge-table-column-${oddEven}`);
220
+ }
221
+
222
+ this.domService.setStyle(div, "display", "clip");
223
+ this.domService.setStyle(div, "position", "absolute");
224
+ this.domService.setStyle(div, "left", `${geo.left}px`);
225
+ this.domService.setStyle(div, "top", `${geo.top}px`);
226
+ this.domService.setStyle(div, "width", `${geo.width}px`);
227
+ this.domService.setStyle(div, "height", `${geo.height}px`);
228
+
229
+ if (treeArrow && treeArrow !== "none") {
230
+ this.domService.addClass(div, "ge-table-col-tree");
231
+ this.addArrowDiv(div, treeArrow, treeOptions, rowIndex, columnIndex, areaIdent);
232
+ }
233
+ if (checkboxWithoutExtraColumn && columnIndex === 0 && checkedType) {
234
+ this.addCheckboxToDiv(div, checkedType, areaIdent, rowIndex);
235
+ }
236
+ if (text) {
237
+ const firstTreeColumn = (treeArrow !== "none" && columnIndex === 0);
238
+ this.addLabelDiv(div, text, firstTreeColumn, rowIndex, columnIndex, areaIdent);
239
+ }
240
+ if (sortState) {
241
+ this.addSortedIcon(div, sortState, tableOptions?.sortedOptions, columnIndex);
242
+ }
243
+
244
+
245
+ this.domService.appendChild(parent, div);
246
+ return div;
247
+ }
248
+
249
+
250
+ addCheckboxToDiv(
251
+ parent: HTMLDivElement,
252
+ checkedType: CheckedType,
253
+ areaIdent: AreaIdent,
254
+ rowIndex: number): HTMLDivElement {
255
+
256
+ const div = this.domService.createElement<HTMLDivElement>("div");
257
+ const checked = (checkedType === "full") ? "checked" : "";
258
+ div.innerHTML = `
259
+ <input
260
+ type="checkbox"
261
+ data-area="${areaIdent}"
262
+ data-row-index="${rowIndex}"
263
+ data-input-type="checkbox"
264
+ ${checked}
265
+ class="ge-table-row-checkbox"> `;
266
+ this.domService.setStyle(div, "display", "inline");
267
+ this.domService.setStyle(div, "width", "inherit");
268
+ this.domService.setAttribute(div, "data-row-index", `${rowIndex}`);
269
+ this.domService.appendChild(parent, div);
270
+ return div;
271
+ }
272
+
273
+
274
+ addLabelDiv(
275
+ parent: HTMLDivElement,
276
+ text: string = "",
277
+ firstTreeColumn: boolean = false,
278
+ rowIndex: number = -1,
279
+ columnIndex: number = -1,
280
+ areaIdent: AreaIdent = "body"): HTMLDivElement {
281
+
282
+ const div = this.domService.createElement<HTMLDivElement>("div");
283
+ this.domService.addClass(div, "ge-table-label-div");
284
+ // this.domService.setStyle(div, 'display', 'inline');
285
+ this.domService.setStyle(div, "position", "relative");
286
+ this.domService.setStyle(div, "background", "transparent");
287
+ this.domService.setStyle(div, "width", "100%");
288
+ this.domService.setStyle(div, "height", "100%");
289
+ this.domService.setAttribute(div, "data-row-index", `${rowIndex}`);
290
+ this.domService.setAttribute(div, "data-col-index", `${columnIndex}`);
291
+ this.domService.setAttribute(div, "data-area", `${areaIdent}`);
292
+
293
+ if (text) {
294
+ if (firstTreeColumn) {
295
+ const textElement = this.domService.createText(text);
296
+ this.domService.appendChild(div, textElement);
297
+ } else {
298
+ // normal cell:
299
+ const div2 = this.domService.createElement<HTMLDivElement>("div");
300
+ this.domService.appendChild(div, div2);
301
+ const textElement = this.domService.createText(text);
302
+ this.domService.addClass(div2, "ge-table-label");
303
+ this.domService.appendChild(div2, textElement);
304
+ this.domService.setAttribute(div2, "data-row-index", `${rowIndex}`);
305
+ this.domService.setAttribute(div2, "data-col-index", `${columnIndex}`);
306
+ this.domService.setAttribute(div2, "data-area", `${areaIdent}`);
307
+ }
308
+ }
309
+
310
+ this.domService.appendChild(parent, div);
311
+ return div;
312
+ }
313
+
314
+ addSortedIcon(
315
+ parent: HTMLDivElement,
316
+ sorted: SortState = "",
317
+ sortedOptions: SortedOptionsIf = new SortedOptions(),
318
+ columnIndex: number = -1
319
+ ): HTMLDivElement {
320
+
321
+ const div = this.domService.createElement<HTMLDivElement>("div");
322
+ this.domService.addClass(div, "ge-table-sorted-icon-div");
323
+ this.domService.setStyle(div, "position", "absolute");
324
+ this.domService.setStyle(div, "top", "0");
325
+ this.domService.setStyle(div, "right", "0");
326
+ this.domService.setStyle(div, "width", "20px");
327
+ this.domService.setStyle(div, "background", "transparent");
328
+ this.domService.setStyle(div, "cursor", "pointer");
329
+ this.domService.setAttribute(div, "data-col-index", `${columnIndex}`);
330
+ this.domService.setAttribute(div, "data-area", "header");
331
+
332
+ let treeOptionsArrow: IconIf;
333
+ if (sorted === "asc") {
334
+ treeOptionsArrow = sortedOptions.iconAsc;
335
+ } else if (sorted === "desc") {
336
+ treeOptionsArrow = sortedOptions.iconDesc;
337
+ } else {
338
+ treeOptionsArrow = sortedOptions.iconPlaceholder;
339
+ }
340
+ // Text:
341
+ const content = treeOptionsArrow.content;
342
+ const textElement = this.domService.createText(content);
343
+ this.domService.appendChild(div, textElement);
344
+
345
+ // Style:
346
+ if (treeOptionsArrow.style) {
347
+ this.applyStyleString(div, treeOptionsArrow.style);
348
+ }
349
+
350
+ // Classes:
351
+ for (const clazz of treeOptionsArrow.classes) {
352
+ this.domService.addClass(div, clazz);
353
+ }
354
+
355
+ this.domService.appendChild(parent, div);
356
+ return div;
357
+ }
358
+
359
+
360
+ addArrowDiv(
361
+ parent: HTMLDivElement,
362
+ arrow: TreeArrowType = "none",
363
+ treeOptions: TreeOptionsIf = new TreeOptions(),
364
+ rowIndex: number = -1,
365
+ columnIndex: number = -1,
366
+ areaIdent: AreaIdent = "body"
367
+ ): HTMLDivElement {
368
+ const div = this.domService.createElement<HTMLDivElement>("div");
369
+ this.domService.addClass(div, "ge-table-tree-arrow-div");
370
+ this.domService.setStyle(div, "display", "inline-block");
371
+ this.domService.setStyle(div, "position", "");
372
+ this.domService.setStyle(div, "width", "20px");
373
+ this.domService.setStyle(div, "background", "transparent");
374
+ this.domService.setStyle(div, "cursor", "pointer");
375
+ this.domService.setAttribute(div, "data-row-index", `${rowIndex}`);
376
+ this.domService.setAttribute(div, "data-col-index", `${columnIndex}`);
377
+ this.domService.setAttribute(div, "data-area", `${areaIdent}`);
378
+
379
+ let treeOptionsArrow: IconIf;
380
+ if (arrow === "expanded") {
381
+ treeOptionsArrow = treeOptions.arrowExpanded;
382
+ } else if (arrow === "collapsed") {
383
+ treeOptionsArrow = treeOptions.arrowCollapsed;
384
+ } else {
385
+ treeOptionsArrow = treeOptions.arrowPlaceholder;
386
+ }
387
+ // Text:
388
+ const content = treeOptionsArrow.content;
389
+ const textElement = this.domService.createText(content);
390
+ this.domService.appendChild(div, textElement);
391
+
392
+ // Style:
393
+ if (treeOptionsArrow.style) {
394
+ this.applyStyleString(div, treeOptionsArrow.style);
395
+ }
396
+
397
+ // Classes:
398
+ for (const clazz of treeOptionsArrow.classes) {
399
+ this.domService.addClass(div, clazz);
400
+ }
401
+
402
+ this.domService.appendChild(parent, div);
403
+ return div;
404
+ }
405
+
406
+ addColumnBorderDivs(
407
+ tableOptions: TableOptionsIf,
408
+ parent: HTMLDivElement,
409
+ geo: GeoData,
410
+ areaIdent: AreaIdent,
411
+ sideIdent: SideIdent
412
+ ): HTMLDivElement {
413
+ if (tableOptions.verticalBorderVisible) {
414
+ const clazz = `ge-table-${areaIdent}-${sideIdent}-vertical-border`;
415
+ this.addVerticalBorder(geo, parent, clazz);
416
+ }
417
+ if (tableOptions.horizontalBorderVisible) {
418
+ const clazz = `ge-table-${areaIdent}-${sideIdent}-horizontal-border`;
419
+ this.addHorizontalBorder(geo, parent, clazz);
420
+ }
421
+
422
+ return parent;
423
+ }
424
+
425
+
426
+ addHorizontalBorder(
427
+ geo: GeoData,
428
+ parent: HTMLDivElement,
429
+ clazz: string = "ge-table-body-center-horizontal-border"): HTMLDivElement {
430
+ // Border south:
431
+ const div = this.domService.createElement<HTMLDivElement>("div");
432
+ this.domService.addClass(div, clazz);
433
+ this.domService.setStyle(div, "display", "clip");
434
+ this.domService.setStyle(div, "position", "absolute");
435
+ this.domService.setStyle(div, "left", `${geo.left}px`);
436
+ this.domService.setStyle(div, "top", `${(geo.top)}px`);
437
+ this.domService.setStyle(div, "width", `${geo.width}px`);
438
+ this.domService.setStyle(div, "height", `1px`);
439
+ this.domService.appendChild(parent, div);
440
+ return div;
441
+ }
442
+
443
+ addFocusBorderDivs(parent: HTMLDivElement, geo: GeoData, style: HtmlStyle): HTMLDivElement {
444
+ // Border west:
445
+ let div = this.domService.createElement<HTMLDivElement>("div");
446
+ this.domService.addClass(div, "ge-table-focus-border");
447
+ this.domService.setStyle(div, "display", "clip");
448
+ this.domService.setStyle(div, "position", "absolute");
449
+ this.domService.setStyle(div, "left", `${geo.left}px`);
450
+ this.domService.setStyle(div, "top", `${geo.top}px`);
451
+ this.domService.setStyle(div, "width", `1px`);
452
+ this.domService.setStyle(div, "height", `${geo.height}px`);
453
+ this.applyStyle(div, style);
454
+ this.domService.appendChild(parent, div);
455
+
456
+ // Border east:
457
+ div = this.domService.createElement<HTMLDivElement>("div");
458
+ this.domService.addClass(div, "ge-table-focus-border");
459
+ this.domService.setStyle(div, "display", "clip");
460
+ this.domService.setStyle(div, "position", "absolute");
461
+ this.domService.setStyle(div, "left", `${geo.left + geo.width - 1}px`);
462
+ this.domService.setStyle(div, "top", `${geo.top}px`);
463
+ this.domService.setStyle(div, "width", `1px`);
464
+ this.domService.setStyle(div, "height", `${geo.height}px`);
465
+ this.applyStyle(div, style);
466
+ this.domService.appendChild(parent, div);
467
+
468
+ // Border north:
469
+ div = this.domService.createElement<HTMLDivElement>("div");
470
+ this.domService.addClass(div, "ge-table-focus-border");
471
+ this.domService.setStyle(div, "display", "clip");
472
+ this.domService.setStyle(div, "position", "absolute");
473
+ this.domService.setStyle(div, "left", `${geo.left}px`);
474
+ this.domService.setStyle(div, "top", `${(geo.top)}px`);
475
+ this.domService.setStyle(div, "width", `${geo.width}px`);
476
+ this.domService.setStyle(div, "height", `1px`);
477
+ this.applyStyle(div, style);
478
+ this.domService.appendChild(parent, div);
479
+
480
+
481
+ // Border south:
482
+ div = this.domService.createElement<HTMLDivElement>("div");
483
+ this.domService.addClass(div, "ge-table-focus-border");
484
+ this.domService.setStyle(div, "display", "clip");
485
+ this.domService.setStyle(div, "position", "absolute");
486
+ this.domService.setStyle(div, "left", `${geo.left}px`);
487
+ this.domService.setStyle(div, "top", `${(geo.top + geo.height - 1)}px`);
488
+ this.domService.setStyle(div, "width", `${geo.width}px`);
489
+ this.domService.setStyle(div, "height", `1px`);
490
+ this.applyStyle(div, style);
491
+ this.domService.appendChild(parent, div);
492
+
493
+ return parent;
494
+ }
495
+
496
+ addVerticalBorder(
497
+ geo: GeoData,
498
+ parent: HTMLDivElement,
499
+ clazz: string = "ge-table-body-center-vertical-border"
500
+ ): HTMLDivElement {
501
+ // Border east:
502
+ const div = this.domService.createElement<HTMLDivElement>("div");
503
+ this.domService.addClass(div, clazz);
504
+ this.domService.setStyle(div, "display", "clip");
505
+ this.domService.setStyle(div, "position", "absolute");
506
+ this.domService.setStyle(div, "left", `${geo.left}px`);
507
+ this.domService.setStyle(div, "top", `${geo.top}px`);
508
+ this.domService.setStyle(div, "width", `1px`);
509
+ this.domService.setStyle(div, "height", `${geo.height}px`);
510
+ this.domService.appendChild(parent, div);
511
+ return div;
512
+ }
513
+
514
+ addDiv(parent: HTMLDivElement, geo: GeoData, clazz: string = ""): HTMLDivElement {
515
+ const div = this.domService.createElement<HTMLDivElement>("div");
516
+ if (clazz) {
517
+ this.domService.addClass(div, clazz);
518
+ }
519
+ this.domService.setStyle(div, "display", "clip");
520
+ this.domService.setStyle(div, "position", "absolute");
521
+ this.domService.setStyle(div, "left", `${geo.left}px`);
522
+ this.domService.setStyle(div, "top", `${geo.top}px`);
523
+ this.domService.setStyle(div, "width", `${geo.width}px`);
524
+ this.domService.setStyle(div, "height", `${geo.height}px`);
525
+ this.domService.appendChild(parent, div);
526
+ return div;
527
+ }
528
+
529
+ applyStyleString(div: HTMLDivElement, style: string) {
530
+ // transform: rotate(-90deg) translate(-100%, 0); transform-origin: left top; font-size: 1.5em;
531
+ const cmds = style.split(";").map(s => s.trim()).filter(s => s);
532
+ for (const cmd of cmds) {
533
+ const [key, value] = cmd.split(":");
534
+ this.domService.setStyle(div, key.trim(), value.trim());
535
+ }
536
+ }
537
+
538
+ private getDivOrCreateDiv(cacheKey: number, divScope: DivScope): HTMLDivElement {
539
+ let div = divScope.cache[cacheKey];
540
+ if (div) {
541
+ div.innerText = ""; // erst mal leer machen, später col-cache nutzen
542
+ return div;
543
+ }
544
+ div = this.domService.createElement<HTMLDivElement>("div");
545
+ divScope.cache[cacheKey] = div;
546
+ return div;
547
+ }
548
+ }
@@ -0,0 +1,11 @@
1
+ export class CollapsedExpandedData {
2
+
3
+ constructor(
4
+ public mode: "collapsed" | "expanded" = "collapsed",
5
+ public rowIds: Array<string | number> = [],
6
+ public allCollapsed: boolean = false,
7
+ public allExpanded: boolean = false
8
+ ) {
9
+ }
10
+
11
+ }
@@ -0,0 +1 @@
1
+ export type HtmlStyle = { [key: string]: string | number };
@@ -0,0 +1,16 @@
1
+ export interface DomServiceIf {
2
+
3
+ setStyle(el: any, style: string, value: any): any;
4
+
5
+ addClass(div: HTMLElement, clazz: string): HTMLDivElement;
6
+
7
+ createElement<T>(ele: string): T;
8
+
9
+ createText(text: string): HTMLElement;
10
+
11
+ appendText(parent: HTMLDivElement, text: string): HTMLDivElement;
12
+
13
+ appendChild(parent: HTMLElement, child: HTMLElement): void;
14
+
15
+ setAttribute(ele: HTMLElement, key: string, value: string): void;
16
+ }
@@ -0,0 +1,123 @@
1
+ export class GeFilterService {
2
+
3
+
4
+ filterPredict<T>(
5
+ item: T,
6
+ filterString: string,
7
+ toString: (t: T) => string = this.objectToString.bind(this)
8
+ ): boolean {
9
+
10
+ if (!item) {
11
+ return false;
12
+ }
13
+ if (!filterString) {
14
+ return true;
15
+ }
16
+ filterString = filterString.toLowerCase();
17
+
18
+ const prefixMust = "+";
19
+ const prefixNot = "-";
20
+ const arr = filterString.toLowerCase().split(" ").filter(s => s !== prefixMust && s !== prefixNot && s !== "");
21
+
22
+ const ors: string[] = arr
23
+ .filter(f => !f.startsWith(prefixMust) && !f.startsWith(prefixNot));
24
+
25
+ const musts: string[] = arr
26
+ .filter(f => f.startsWith(prefixMust))
27
+ .map(s => s.replace(/\+/g, ""));
28
+
29
+ const nots: string[] = arr
30
+ .filter(f => f.startsWith(prefixNot))
31
+ .map(s => s.replace(/-/g, ""));
32
+
33
+ let or = !ors.length;
34
+ for (let i = 0; i < ors.length; i++) {
35
+ if (or || toString(item).includes(ors[i])) {
36
+ or = true;
37
+ }
38
+ }
39
+ if (!or) {
40
+ return false;
41
+ }
42
+ for (let i = 0; i < musts.length; i++) {
43
+ if (!toString(item).includes(musts[i])) {
44
+ return false;
45
+ }
46
+ }
47
+ for (let i = 0; i < nots.length; i++) {
48
+ if (toString(item).includes(nots[i])) {
49
+ return false;
50
+ }
51
+ }
52
+ return true;
53
+ }
54
+
55
+
56
+ filterRows<T>(
57
+ rows: T[],
58
+ filterString: string,
59
+ toString: (t: T) => string = (t: T) => JSON.stringify(t).toLowerCase()
60
+ ): T[] {
61
+
62
+ if (!rows) {
63
+ return [];
64
+ }
65
+ if (!filterString) {
66
+ return [...rows];
67
+ }
68
+ filterString = filterString.toLowerCase();
69
+
70
+ const prefixMust = "+";
71
+ const prefixNot = "-";
72
+ const arr = filterString.toLowerCase().split(" ").filter(s => s !== prefixMust && s !== prefixNot && s !== "");
73
+
74
+ const ors: string[] = arr
75
+ .filter(f => !f.startsWith(prefixMust) && !f.startsWith(prefixNot));
76
+
77
+ const musts: string[] = arr
78
+ .filter(f => f.startsWith(prefixMust))
79
+ .map(s => s.replace(/\+/g, ""));
80
+
81
+ const nots: string[] = arr
82
+ .filter(f => f.startsWith(prefixNot))
83
+ .map(s => s.replace(/-/g, ""));
84
+
85
+ return rows?.filter(f => {
86
+ let or = !ors.length;
87
+ for (let i = 0; i < ors.length; i++) {
88
+ if (or || toString(f).includes(ors[i])) {
89
+ or = true;
90
+ }
91
+ }
92
+ if (!or) {
93
+ return false;
94
+ }
95
+ for (let i = 0; i < musts.length; i++) {
96
+ if (!toString(f).includes(musts[i])) {
97
+ return false;
98
+ }
99
+ }
100
+ for (let i = 0; i < nots.length; i++) {
101
+ if (toString(f).includes(nots[i])) {
102
+ return false;
103
+ }
104
+ }
105
+ return true;
106
+ });
107
+ }
108
+
109
+ objectToString<T>(o: T): string {
110
+ if (!o) {
111
+ return "";
112
+ }
113
+ const buf: unknown[] = [];
114
+ const keys = Object.keys(o);
115
+ for (let i = 0; i < keys.length; i++) {
116
+ const key = keys[i];
117
+ // @ts-ignore
118
+ buf.push(o[key]);
119
+ }
120
+ return buf.join(" ").toLowerCase();
121
+ }
122
+
123
+ }