@guiexpert/table 1.1.18 → 1.1.20

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