@omegagrid/grid 0.10.2 → 0.10.4

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 (257) hide show
  1. package/dist/commands/editingCommands.d.ts +4 -0
  2. package/dist/commands/editingCommands.d.ts.map +1 -0
  3. package/dist/commands/editingCommands.js +74 -0
  4. package/dist/commands/editingCommands.js.map +1 -0
  5. package/dist/commands/groupCommands.d.ts +8 -0
  6. package/dist/commands/groupCommands.d.ts.map +1 -0
  7. package/dist/commands/groupCommands.js +7 -0
  8. package/dist/commands/groupCommands.js.map +1 -0
  9. package/dist/commands/index.d.ts +4 -0
  10. package/dist/commands/index.d.ts.map +1 -0
  11. package/dist/commands/index.js +9 -0
  12. package/dist/commands/index.js.map +1 -0
  13. package/dist/commands/navigationCommands.d.ts +5 -0
  14. package/dist/commands/navigationCommands.d.ts.map +1 -0
  15. package/dist/commands/navigationCommands.js +117 -0
  16. package/dist/commands/navigationCommands.js.map +1 -0
  17. package/dist/constants.d.ts +65 -0
  18. package/dist/constants.d.ts.map +1 -0
  19. package/dist/constants.js +8 -0
  20. package/dist/constants.js.map +1 -0
  21. package/dist/editors/baseEditor.d.ts +31 -0
  22. package/dist/editors/baseEditor.d.ts.map +1 -0
  23. package/dist/editors/baseEditor.js +112 -0
  24. package/dist/editors/baseEditor.js.map +1 -0
  25. package/dist/editors/calendarEditor.d.ts +12 -0
  26. package/dist/editors/calendarEditor.d.ts.map +1 -0
  27. package/dist/editors/calendarEditor.js +74 -0
  28. package/dist/editors/calendarEditor.js.map +1 -0
  29. package/dist/editors/checkboxEditor.d.ts +9 -0
  30. package/dist/editors/checkboxEditor.d.ts.map +1 -0
  31. package/dist/editors/checkboxEditor.js +32 -0
  32. package/dist/editors/checkboxEditor.js.map +1 -0
  33. package/dist/editors/dateEditor.d.ts +8 -0
  34. package/dist/editors/dateEditor.d.ts.map +1 -0
  35. package/dist/editors/dateEditor.js +37 -0
  36. package/dist/editors/dateEditor.js.map +1 -0
  37. package/dist/editors/dropdownEditor.d.ts +26 -0
  38. package/dist/editors/dropdownEditor.d.ts.map +1 -0
  39. package/dist/editors/dropdownEditor.js +142 -0
  40. package/dist/editors/dropdownEditor.js.map +1 -0
  41. package/dist/editors/formulaEditor.d.ts +21 -0
  42. package/dist/editors/formulaEditor.d.ts.map +1 -0
  43. package/dist/editors/formulaEditor.js +109 -0
  44. package/dist/editors/formulaEditor.js.map +1 -0
  45. package/dist/editors/index.d.ts +8 -0
  46. package/dist/editors/index.d.ts.map +1 -0
  47. package/dist/editors/index.js +19 -0
  48. package/dist/editors/index.js.map +1 -0
  49. package/dist/editors/numberEditor.d.ts +9 -0
  50. package/dist/editors/numberEditor.d.ts.map +1 -0
  51. package/dist/editors/numberEditor.js +37 -0
  52. package/dist/editors/numberEditor.js.map +1 -0
  53. package/dist/editors/textEditor.d.ts +15 -0
  54. package/dist/editors/textEditor.d.ts.map +1 -0
  55. package/dist/editors/textEditor.js +74 -0
  56. package/dist/editors/textEditor.js.map +1 -0
  57. package/dist/filters/NumberFilter.d.ts +8 -0
  58. package/dist/filters/NumberFilter.d.ts.map +1 -0
  59. package/dist/filters/NumberFilter.js +13 -0
  60. package/dist/filters/NumberFilter.js.map +1 -0
  61. package/dist/filters/baseFilter.d.ts +20 -0
  62. package/dist/filters/baseFilter.d.ts.map +1 -0
  63. package/dist/filters/baseFilter.js +47 -0
  64. package/dist/filters/baseFilter.js.map +1 -0
  65. package/dist/filters/checkboxFilter.d.ts +12 -0
  66. package/dist/filters/checkboxFilter.d.ts.map +1 -0
  67. package/dist/filters/checkboxFilter.js +67 -0
  68. package/dist/filters/checkboxFilter.js.map +1 -0
  69. package/dist/filters/dropdownFilter.d.ts +17 -0
  70. package/dist/filters/dropdownFilter.d.ts.map +1 -0
  71. package/dist/filters/dropdownFilter.js +116 -0
  72. package/dist/filters/dropdownFilter.js.map +1 -0
  73. package/dist/filters/filterFactory.d.ts +4 -0
  74. package/dist/filters/filterFactory.d.ts.map +1 -0
  75. package/dist/filters/filterFactory.js +39 -0
  76. package/dist/filters/filterFactory.js.map +1 -0
  77. package/dist/filters/index.d.ts +5 -0
  78. package/dist/filters/index.d.ts.map +1 -0
  79. package/dist/filters/index.js +5 -0
  80. package/dist/filters/index.js.map +1 -0
  81. package/dist/filters/textFilter.d.ts +17 -0
  82. package/dist/filters/textFilter.d.ts.map +1 -0
  83. package/dist/filters/textFilter.js +89 -0
  84. package/dist/filters/textFilter.js.map +1 -0
  85. package/dist/gridAdapter.d.ts +30 -0
  86. package/dist/gridAdapter.d.ts.map +1 -0
  87. package/dist/gridAdapter.js +11 -0
  88. package/dist/gridAdapter.js.map +1 -0
  89. package/dist/i18n/en-us.d.ts +4 -0
  90. package/dist/i18n/en-us.d.ts.map +1 -0
  91. package/dist/i18n/en-us.js +5 -0
  92. package/dist/i18n/en-us.js.map +1 -0
  93. package/dist/i18n/index.d.ts +5 -0
  94. package/dist/i18n/index.d.ts.map +1 -0
  95. package/dist/i18n/index.js +8 -0
  96. package/dist/i18n/index.js.map +1 -0
  97. package/dist/index.d.ts +7 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +7 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/renderers/ActionRenderer.d.ts +3 -0
  102. package/dist/renderers/ActionRenderer.d.ts.map +1 -0
  103. package/dist/renderers/ActionRenderer.js +68 -0
  104. package/dist/renderers/ActionRenderer.js.map +1 -0
  105. package/dist/renderers/BaseRenderer.d.ts +6 -0
  106. package/dist/renderers/BaseRenderer.d.ts.map +1 -0
  107. package/dist/renderers/BaseRenderer.js +56 -0
  108. package/dist/renderers/BaseRenderer.js.map +1 -0
  109. package/dist/renderers/CheckboxRenderer.d.ts +4 -0
  110. package/dist/renderers/CheckboxRenderer.d.ts.map +1 -0
  111. package/dist/renderers/CheckboxRenderer.js +22 -0
  112. package/dist/renderers/CheckboxRenderer.js.map +1 -0
  113. package/dist/renderers/DateTimeRenderer.d.ts +4 -0
  114. package/dist/renderers/DateTimeRenderer.d.ts.map +1 -0
  115. package/dist/renderers/DateTimeRenderer.js +21 -0
  116. package/dist/renderers/DateTimeRenderer.js.map +1 -0
  117. package/dist/renderers/DropdownRenderer.d.ts +4 -0
  118. package/dist/renderers/DropdownRenderer.d.ts.map +1 -0
  119. package/dist/renderers/DropdownRenderer.js +18 -0
  120. package/dist/renderers/DropdownRenderer.js.map +1 -0
  121. package/dist/renderers/GeneralRenderer.d.ts +4 -0
  122. package/dist/renderers/GeneralRenderer.d.ts.map +1 -0
  123. package/dist/renderers/GeneralRenderer.js +12 -0
  124. package/dist/renderers/GeneralRenderer.js.map +1 -0
  125. package/dist/renderers/HtmlRenderer.d.ts +4 -0
  126. package/dist/renderers/HtmlRenderer.d.ts.map +1 -0
  127. package/dist/renderers/HtmlRenderer.js +6 -0
  128. package/dist/renderers/HtmlRenderer.js.map +1 -0
  129. package/dist/renderers/NumberRenderer.d.ts +4 -0
  130. package/dist/renderers/NumberRenderer.d.ts.map +1 -0
  131. package/dist/renderers/NumberRenderer.js +14 -0
  132. package/dist/renderers/NumberRenderer.js.map +1 -0
  133. package/dist/renderers/SparklineRenderer.d.ts +3 -0
  134. package/dist/renderers/SparklineRenderer.d.ts.map +1 -0
  135. package/dist/renderers/SparklineRenderer.js +8 -0
  136. package/dist/renderers/SparklineRenderer.js.map +1 -0
  137. package/dist/renderers/TextRenderer.d.ts +4 -0
  138. package/dist/renderers/TextRenderer.d.ts.map +1 -0
  139. package/dist/renderers/TextRenderer.js +38 -0
  140. package/dist/renderers/TextRenderer.js.map +1 -0
  141. package/dist/renderers/index.d.ts +12 -0
  142. package/dist/renderers/index.d.ts.map +1 -0
  143. package/dist/renderers/index.js +32 -0
  144. package/dist/renderers/index.js.map +1 -0
  145. package/dist/types.d.ts +10 -0
  146. package/dist/types.d.ts.map +1 -0
  147. package/dist/types.js +2 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/ui/comment.d.ts +59 -0
  150. package/dist/ui/comment.d.ts.map +1 -0
  151. package/dist/ui/comment.js +284 -0
  152. package/dist/ui/comment.js.map +1 -0
  153. package/dist/ui/comment.style.d.ts +2 -0
  154. package/dist/ui/comment.style.d.ts.map +1 -0
  155. package/dist/ui/comment.style.js +108 -0
  156. package/dist/ui/comment.style.js.map +1 -0
  157. package/dist/ui/elementCache.d.ts +15 -0
  158. package/dist/ui/elementCache.d.ts.map +1 -0
  159. package/dist/ui/elementCache.js +57 -0
  160. package/dist/ui/elementCache.js.map +1 -0
  161. package/dist/ui/filterLabel.d.ts +10 -0
  162. package/dist/ui/filterLabel.d.ts.map +1 -0
  163. package/dist/ui/filterLabel.js +76 -0
  164. package/dist/ui/filterLabel.js.map +1 -0
  165. package/dist/ui/formulaInput.d.ts +56 -0
  166. package/dist/ui/formulaInput.d.ts.map +1 -0
  167. package/dist/ui/formulaInput.js +251 -0
  168. package/dist/ui/formulaInput.js.map +1 -0
  169. package/dist/ui/formulaInput.style.d.ts +2 -0
  170. package/dist/ui/formulaInput.style.d.ts.map +1 -0
  171. package/dist/ui/formulaInput.style.js +65 -0
  172. package/dist/ui/formulaInput.style.js.map +1 -0
  173. package/dist/ui/grid.d.ts +91 -0
  174. package/dist/ui/grid.d.ts.map +1 -0
  175. package/dist/ui/grid.editing.d.ts +61 -0
  176. package/dist/ui/grid.editing.d.ts.map +1 -0
  177. package/dist/ui/grid.editing.js +439 -0
  178. package/dist/ui/grid.editing.js.map +1 -0
  179. package/dist/ui/grid.events.d.ts +97 -0
  180. package/dist/ui/grid.events.d.ts.map +1 -0
  181. package/dist/ui/grid.events.js +581 -0
  182. package/dist/ui/grid.events.js.map +1 -0
  183. package/dist/ui/grid.filtering.d.ts +23 -0
  184. package/dist/ui/grid.filtering.d.ts.map +1 -0
  185. package/dist/ui/grid.filtering.js +68 -0
  186. package/dist/ui/grid.filtering.js.map +1 -0
  187. package/dist/ui/grid.js +297 -0
  188. package/dist/ui/grid.js.map +1 -0
  189. package/dist/ui/grid.menu.d.ts +43 -0
  190. package/dist/ui/grid.menu.d.ts.map +1 -0
  191. package/dist/ui/grid.menu.js +168 -0
  192. package/dist/ui/grid.menu.js.map +1 -0
  193. package/dist/ui/grid.objects.d.ts +24 -0
  194. package/dist/ui/grid.objects.d.ts.map +1 -0
  195. package/dist/ui/grid.objects.js +69 -0
  196. package/dist/ui/grid.objects.js.map +1 -0
  197. package/dist/ui/grid.rendering.d.ts +84 -0
  198. package/dist/ui/grid.rendering.d.ts.map +1 -0
  199. package/dist/ui/grid.rendering.js +471 -0
  200. package/dist/ui/grid.rendering.js.map +1 -0
  201. package/dist/ui/grid.selecting.d.ts +99 -0
  202. package/dist/ui/grid.selecting.d.ts.map +1 -0
  203. package/dist/ui/grid.selecting.js +319 -0
  204. package/dist/ui/grid.selecting.js.map +1 -0
  205. package/dist/ui/grid.sorting.d.ts +23 -0
  206. package/dist/ui/grid.sorting.d.ts.map +1 -0
  207. package/dist/ui/grid.sorting.js +47 -0
  208. package/dist/ui/grid.sorting.js.map +1 -0
  209. package/dist/ui/grid.style.d.ts +2 -0
  210. package/dist/ui/grid.style.d.ts.map +1 -0
  211. package/dist/ui/grid.style.js +39 -0
  212. package/dist/ui/grid.style.js.map +1 -0
  213. package/dist/ui/group.d.ts +71 -0
  214. package/dist/ui/group.d.ts.map +1 -0
  215. package/dist/ui/group.js +312 -0
  216. package/dist/ui/group.js.map +1 -0
  217. package/dist/ui/index.d.ts +19 -0
  218. package/dist/ui/index.d.ts.map +1 -0
  219. package/dist/ui/index.js +19 -0
  220. package/dist/ui/index.js.map +1 -0
  221. package/dist/ui/objectHost.d.ts +30 -0
  222. package/dist/ui/objectHost.d.ts.map +1 -0
  223. package/dist/ui/objectHost.js +114 -0
  224. package/dist/ui/objectHost.js.map +1 -0
  225. package/dist/ui/objectHost.style.d.ts +2 -0
  226. package/dist/ui/objectHost.style.d.ts.map +1 -0
  227. package/dist/ui/objectHost.style.js +43 -0
  228. package/dist/ui/objectHost.style.js.map +1 -0
  229. package/dist/ui/selector.d.ts +97 -0
  230. package/dist/ui/selector.d.ts.map +1 -0
  231. package/dist/ui/selector.js +489 -0
  232. package/dist/ui/selector.js.map +1 -0
  233. package/dist/ui/selector.style.d.ts +2 -0
  234. package/dist/ui/selector.style.d.ts.map +1 -0
  235. package/dist/ui/selector.style.js +106 -0
  236. package/dist/ui/selector.style.js.map +1 -0
  237. package/dist/ui/sortingArrow.d.ts +8 -0
  238. package/dist/ui/sortingArrow.d.ts.map +1 -0
  239. package/dist/ui/sortingArrow.js +42 -0
  240. package/dist/ui/sortingArrow.js.map +1 -0
  241. package/dist/ui/sparkline.d.ts +14 -0
  242. package/dist/ui/sparkline.d.ts.map +1 -0
  243. package/dist/ui/sparkline.js +111 -0
  244. package/dist/ui/sparkline.js.map +1 -0
  245. package/dist/ui/table.d.ts +122 -0
  246. package/dist/ui/table.d.ts.map +1 -0
  247. package/dist/ui/table.js +1063 -0
  248. package/dist/ui/table.js.map +1 -0
  249. package/dist/ui/table.styles.d.ts +2 -0
  250. package/dist/ui/table.styles.d.ts.map +1 -0
  251. package/dist/ui/table.styles.js +249 -0
  252. package/dist/ui/table.styles.js.map +1 -0
  253. package/dist/ui/tooltip.d.ts +9 -0
  254. package/dist/ui/tooltip.d.ts.map +1 -0
  255. package/dist/ui/tooltip.js +32 -0
  256. package/dist/ui/tooltip.js.map +1 -0
  257. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from '../constants';\nimport { dom, Expander, LevelExpander, LevelExpandEvent } from \"@omegagrid/core\";\nimport { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport {\n\tGridModel, Merge, Viewport, CellModel, RowModel, ColumnModel, ColumnHeaderModel, encodeRow, styleToCSStyle, CellRange, Style,\n\tCellAddress,\n\tMergeCellState\n} from \"@omegagrid/grid-core\";\nimport { ElementCache } from \"./elementCache\";\nimport { tableStyles } from \"./table.styles\";\nimport { SortingArrow } from \"./sortingArrow\";\nimport { FilterLabel } from \"./filterLabel\";\nimport { Grid } from './grid';\nimport { applyStyle, getCellRenderer } from '../renderers';\n\nexport type TableCell = HTMLTableCellElement & {\n\tc: number,\n\tr: number\n}\n\nexport type TableRow = HTMLTableRowElement & {\n\tr: number,\n\texpander: Expander\n}\n\nexport type TableHeaderCell = TableCell;\nexport type TableRenderOptions = {vertical?: boolean, horizontal?: boolean};\n\nexport class TableEvent extends Event { }\n\n@customElement('og-table')\nexport class Table extends LitElement {\n\n\tstatic styles = [tableStyles];\n\n\tprivate _viewport: Viewport;\n\tprivate _viewportSize: {w: number, h: number};\n\tprivate _freezeLeft: number;\n\tprivate _freezeTop: number;\n\tprivate bCache: ElementCache;\n\tprivate hCache: ElementCache;\n\tpublic hRows: TableRow[];\n\tpublic bRows: TableRow[];\n\tpublic cols: HTMLTableColElement[];\n\n\t// map of model indexes on element indexes\n\tprivate _rowMap = new Map<number, number>();\n\tprivate _colMap = new Map<number, number>();\n\tprivate cornerDiv: HTMLDivElement;\n\n\tgrid: Grid;\n\t\n\t//#region reactive props\n\t@property({type: Object})\n\tmodel: GridModel;\n\n\t@property({type: Boolean, reflect: true})\n\thideOuterBorder = false;\n\n\t@property({type: Number, hasChanged: () => false})\n\trowOffset = 0;\n\n\t@property({type: Number, hasChanged: () => false})\n\tcolOffset = 0;\n\n\t@property({type: Number, reflect: true})\n\tzoom = 1;\n\n\t@property({type: Boolean, reflect: true})\n\tnogrid = false;\n\n\t@property({type: Boolean, reflect: true})\n\trenderAll = false;\n\t//#endregion\n\n\n\t//#region table elements\n\tprivate _thead: HTMLElement;\n\tget thead() {\n\t\tif (this._thead) return this._thead;\n\t\treturn (this._thead = dom.createElement('thead'));\n\t}\n\n\tprivate _tbody: HTMLElement;\n\tget tbody() {\n\t\tif (this._tbody) return this._tbody;\n\t\treturn (this._tbody = dom.createElement('tbody'));\n\t}\n\n\tprivate _colgroup: HTMLElement;\n\tget colgroup() {\n\t\tif (this._colgroup) return this._colgroup;\n\t\treturn (this._colgroup = dom.createElement('colgroup'));\n\t}\n\n\tprivate _table: HTMLTableElement;\n\tget table() {\n\t\tif (this._table) return this._table;\n\t\tthis._table = dom.createElement('table');\n\t\tthis._table.appendChild(this.colgroup);\n\t\tthis._table.appendChild(this.thead);\n\t\tthis._table.appendChild(this.tbody);\n\t\treturn this._table;\n\t}\n\t\n\t//#endregion\n\n\n\t//#region calculated props\n\tget colMap() { return this._colMap }\n\tget rowMap() { return this._rowMap }\n\n\tgetColumnByModelIndex = (c: number) => this.getColumnByGridIndex(this.colMap.get(c));\n\tgetColumnByGridIndex = (c: number) => this.colgroup.children[c + this.rowHeaderCount] as HTMLTableColElement;\n\tgetRowByModelIndex = (r: number) => this.bRows[this.rowMap.get(r)];\n\tgetRowByGridIndex = (r: number) => this.bRows[r];\n\tgetCellByGridIndex = (c: number, r: number) => this.bRows[r].children[c + this.rowHeaderCount] as TableCell;\n\tgetCellByModelIndex = (c: number, r: number) => this.getRowByModelIndex(r)?.children[this.colMap.get(c) + this.rowHeaderCount] as TableCell;\n\tgetCellByCellModel = (m: CellModel) => this.getCellByModelIndex(m.c, m.r);\n\tresetFreezeLeft = () : void => this._freezeLeft = null;\n\n\tget freezeLeft() {\n\t\tif (this._freezeLeft == null) {\n\t\t\tconst freezeLeft = this.model.options.freezeLeft;\n\t\t\tif (freezeLeft >= this.model.columns.length) {\n\t\t\t\tthis._freezeLeft = 0;\n\t\t\t} else if (this.offsetWidth > 0) {\n\t\t\t\tlet w = 0;\n\t\t\t\tfor (let c = 0; c < freezeLeft; c++) {\n\t\t\t\t\tw += this.model.columns[c].width;\n\t\t\t\t}\n\t\t\t\tthis._freezeLeft = w < this.offsetWidth / 2 ? freezeLeft : 0;\n\t\t\t} else {\n\t\t\t\tthis._freezeLeft = freezeLeft;\n\t\t\t}\n\t\t}\n\t\treturn this._freezeLeft;\n\t}\n\n\tget freezeTop() {\n\t\tif (this._freezeTop == null) {\n\t\t\tthis._freezeTop = this.model.options.freezeTop;\n\t\t}\n\t\treturn this._freezeTop;\n\t}\n\n\t_highlightedColHeaderCells: TableHeaderCell[] = [];\n\t_highlightedRowHeaderCells: TableHeaderCell[] = [];\n\n\tpreviewZoom(zoom: number) {\n\t\tdom.zoomElement(this.table, zoom);\n\t}\n\n\thighlightColHeaderCells(columns: number[]) {\n\t\tif (!this.model.options.colLetters) return;\n\t\tthis._highlightedColHeaderCells.forEach(cell => cell.className = 'hlabel');\n\t\tthis._highlightedColHeaderCells = [];\n\t\tconst offset = this.rowHeaderCount;\n\t\tcolumns.forEach(c => {\n\t\t\tconst cell = this.hRows[this.model.hasColumnTreeEnabled ? 1 : 0].children[this.colMap.get(c) + offset] as TableHeaderCell;\n\t\t\tif (cell) {\n\t\t\t\tthis._highlightedColHeaderCells.push(cell);\n\t\t\t\tcell.className = 'hlabel selected';\n\t\t\t}\n\t\t});\n\t}\n\n\thighlightRowHeaderCells(rows: number[]) {\n\t\tif (!this.model.options.rowNumbers) return;\n\t\tif (this.model.rows.length == 0) return;\n\t\tthis._highlightedRowHeaderCells.forEach(cell => cell.className = 'vlabel');\n\t\tthis._highlightedRowHeaderCells = [];\n\t\trows.forEach(r => {\n\t\t\tconst cell = this.getRowByModelIndex(r)?.children[this.model.hasRowTreeEnabled ? 1 : 0] as TableHeaderCell;\n\t\t\tif (cell) {\n\t\t\t\tthis._highlightedRowHeaderCells.push(cell);\n\t\t\t\tcell.className = 'vlabel selected';\n\t\t\t}\n\t\t});\n\t}\n\n\tget columnHeaderCount() : number {\n\t\treturn this.model.headerCount \n\t\t\t+ (this.model.hasColumnTreeEnabled ? 1 : 0) \n\t\t\t+ (this.model.hasFilter ? 1 : 0)\n\t\t\t+ (this.model.options.colLetters ? 1 : 0);\n\t}\n\n\tget rowHeaderCount() { return (this.model.hasRowTreeEnabled ? 1 : 0) + (this.model.options.rowNumbers ? 1 : 0) }\n\n\tget renderRowCount() { \n\t\treturn this.renderAll \n\t\t\t? this.model.visibleRows.length \n\t\t\t: Math.round(Math.min(this.clientHeight / constants.MIN_ROW_HEIGHT, this.model.rows.length));\n\t}\n\n\tget renderColCount() { \n\t\treturn this.renderAll \n\t\t\t? this.model.visibleColumns.length + this.rowHeaderCount\n\t\t\t: Math.round(Math.min((this.clientWidth / constants.MIN_COL_WIDTH) || 5, this.model.columns.length + this.rowHeaderCount));\n\t}\n\n\tget totalHeaderHeight() : number {\n\t\tlet h = 0, r = 0;\n\n\t\tif (this.model.hasColumnTreeEnabled) {\n\t\t\th += this.treeHeaderHeight;\n\t\t\t++r;\n\t\t}\n\n\t\tif (this.model.options.colLetters) {\n\t\t\th += (this.thead.children[r] as HTMLElement).offsetHeight || this.model.options.rowHeight\n\t\t\t++r;\n\t\t}\n\n\t\tfor (let i = 0; i < this.model.headerCount; i++) {\n\t\t\th += (this.thead.children[r + i] as HTMLElement).offsetHeight || this.model.options.rowHeight;\n\t\t}\n\n\t\tif (this.model.hasFilter) h += this.model.options.rowHeight;\n\t\treturn h;\n\t}\n\n\tget treeHeaderWidth() { return this.model.hasRowTreeEnabled ? this.model.maxRowLevel * 15 + 20 : 0 }\n\tget treeHeaderHeight() {\n\t\treturn this.model.hasColumnTree ? this.model.maxColumnLevel * 15 + 20 : 0\n\t}\n\n\tget totalHeaderWidth() : number {\n\t\tlet w = 0;\n\t\tif (this.model.options.rowNumbers) w += constants.ROW_HEADER_WIDTH;\n\t\tw += this.treeHeaderWidth;\n\t\treturn w;\n\t}\n\n\tget viewportSize() : {w: number, h: number} {\n\t\tif (!this._viewportSize) {\n\t\t\tthis._viewportSize = this.renderAll ? {w: Infinity, h: Infinity} : {\n\t\t\t\tw: (this.clientWidth - this.totalHeaderWidth - constants.SLIDER_SIZE) / this.zoom,\n\t\t\t\th: (this.clientHeight - this.totalHeaderHeight - constants.SLIDER_SIZE) / this.zoom\n\t\t\t};\n\t\t}\n\t\treturn this._viewportSize;\n\t}\n\n\tget viewport() : Viewport {\n\t\tif (!this._viewport) {\n\t\t\tthis._viewport = this.model.getViewport(\n\t\t\t\t{c: this.colOffset, r: this.rowOffset}, \n\t\t\t\tthis.viewportSize, {\n\t\t\t\t\tt: this.model.options.freezeTop, \n\t\t\t\t\tl: this.freezeLeft, \n\t\t\t\t\tb: this.model.options.freezeBottom, \n\t\t\t\t\tr: this.model.options.freezeRight\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn this._viewport;\n\t}\n\n\tget viewportRange() : CellRange {\n\t\tif (this.viewport.columns.length == 0 || this.viewport.rows.length == 0) return null;\n\t\treturn new CellRange(\n\t\t\tthis.viewport.columns[0].index, \n\t\t\tthis.viewport.rows[0].index, \n\t\t\tthis.viewport.columns[this.viewport.columns.length - 1].index, \n\t\t\tthis.viewport.rows[this.viewport.rows.length - 1].index\n\t\t);\n\t}\n\t//#endregion\n\n\tfindColumnIndexByOffset(offset: number) : number {\n\t\tlet w = 0;\n\t\tconst columns = this.colgroup.children;\n\t\tfor (let c = 0; c < columns.length; c++) {\n\t\t\tconst col = columns[c] as HTMLTableColElement;\n\t\t\tw += col.offsetWidth;\n\t\t\tif (w >= offset) return c;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tfindRowByOffset(offset: number) : TableRow {\n\t\tconst rows = (offset > this.thead.offsetHeight ? this.tbody : this.thead).children;\n\t\tif (offset > this.thead.offsetHeight) offset -= this.thead.offsetHeight;\n\t\tlet h = 0;\n\t\tfor (let r = 0; r < rows.length; r++) {\n\t\t\tconst row = rows[r] as TableRow;\n\t\t\th += row.offsetHeight;\n\t\t\tif (h >= offset) return row;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfindTableCellByOffset(x: number, y: number) : TableCell {\n\t\tx = x / this.zoom;\n\t\ty = y / this.zoom;\n\t\t\n\t\tconst row = this.findRowByOffset(y);\n\t\tconst column = this.findColumnIndexByOffset(x); // ?? this.colgroup.children.length - 1;\n\t\tconst cell = row && column > -1 ? row.children[column] as TableCell : null;\n\t\treturn cell && !dom.isHidden(cell) ? cell : null;\n\t}\n\n\t/**\n\t * Returns the nearest visible cell to the given offset and exact cell if availible\n\t * @param x \n\t * @param y \n\t * @returns \n\t */\n\tfindNearestTableCellByOffset(x: number, y: number) : [TableCell, TableCell?] {\n\t\tx = x / this.zoom;\n\t\ty = y / this.zoom;\n\t\tlet row: TableRow, c: number;\n\t\tconst exactRow = this.findRowByOffset(y);\n\t\tconst excactColumnIndex = this.findColumnIndexByOffset(x);\n\n\t\tif (y < 0) row = this.tbody.children[0] as TableRow;\n\t\telse if (y > this.tbody.offsetHeight + this.thead.offsetHeight)\n\t\t\trow = this.tbody.children[this.viewport.rows.length - 1] as TableRow;\n\t\telse row = exactRow;\n\t\t\n\t\tif (x < 0) c = this.rowHeaderCount;\n\t\telse if (x >= this.tbody.offsetWidth) c = this.viewport.columns.length + this.rowHeaderCount - 1;\n\t\telse c = excactColumnIndex\n\n\t\tlet cell = row && c > -1 ? row.children[c] as TableCell : null;\n\t\t// find nearest visible cell\n\t\twhile (cell && dom.isHidden(cell)) cell = cell.previousElementSibling as TableCell;\n\n\t\tconst exactCell = exactRow && excactColumnIndex > -1 ? exactRow.children[excactColumnIndex] as TableCell : null;\n\t\treturn [cell, exactCell && !dom.isHidden(exactCell) ? exactCell : null];\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.grid = dom.findParent(this, 'og-grid');\n\t}\n\n\trender = () => html`\n\t\t<style>\n\t\t\ttable {\n\t\t\t\tfont-size: ${this.model?.options.fontSize || constants.FONT_SIZE}px;\n\t\t\t}\n\n\t\t\ttable tr {\n\t\t\t\tline-height: ${(this.model?.options.rowHeight || 22) - 1}px;\n\t\t\t}\n\t\t</style>\n\n\t\t${this.table}\n\t`;\n\n\twillUpdate() {\n\t\tthis._viewport = null;\n\t\tthis._viewportSize = null;\n\t\tif (this.model) {\n\t\t\tthis.clearHeaderCache();\n\t\t\tthis.clearBodyCache();\n\t\t}\n\t}\n\t\n\tupdated() {\n\t\tif (this.model) {\n\t\t\tthis.createColumns();\n\t\t\tthis.createHeaderRows();\n\t\t\tthis.createBodyRows();\n\t\t\tthis.renderCells();\n\t\t}\n\t}\n\t\n\tclearHeaderCache = () => {\n\t\tthis.resetFreezeLeft();\n\t\tthis.hCache = new ElementCache(this.model.columns.length, this.columnHeaderCount);\n\t\tthis.hCache.disabled = !this.model.options.cellCache;\n\t}\n\n\tclearBodyCache = () => {\n\t\tthis.bCache = new ElementCache(this.model.columns.length, this.model.rows.length);\n\t\tthis.bCache.disabled = !this.model.options.cellCache;\n\t}\n\n\trefresh() {\n\t\tthis.clearHeaderCache();\n\t\tthis.clearBodyCache();\n\t\tthis.requestUpdate();\n\t}\n\t\n\tcreateColumns() {\n\t\tthis._freezeLeft = null;\n\t\tconst colCount = this.renderColCount;\n\t\tif (!this.cols || this.cols.length != colCount) {\n\t\t\tthis.cols = new Array(colCount);\n\t\t\tfor (let c = 0; c < colCount; c++) {\n\t\t\t\tthis.cols[c] = dom.createElement('col');\n\t\t\t\tthis.cols.forEach(() => this.colgroup.appendChild(this.cols[c]));\n\t\t\t}\n\t\t}\n\t}\n\n\tcreateHeaderRows() {\n\t\tconst rowCount = this.columnHeaderCount\n\t\tconst colCount = this.renderColCount;\n\t\tdom.empty(this.thead);\n\n\t\tif (!this.hRows || this.hRows.length != rowCount || !this.hRows[0] || this.hRows[0].children.length != colCount) {\n\t\t\tthis.hRows = new Array(rowCount);\n\t\t\tfor (let r = 0; r < rowCount; r++) {\n\t\t\t\tthis.hRows[r] = dom.createElement('tr');\n\t\t\t\tfor (let c = 0; c < colCount; c++) {\n\t\t\t\t\tthis.hRows[r].appendChild(dom.createElement('th'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdom.empty(this.thead);\n\t\tthis.hRows.forEach(row => this.thead.appendChild(row));\n\t}\n\n\tcreateBodyRows() {\n\t\tconst rowCount = this.renderRowCount;\n\t\tconst colCount = this.renderColCount;\n\t\tconst offset = this.rowHeaderCount;\n\t\t\n\t\tif (!this.bRows || this.bRows.length == 0 || this.bRows.length != rowCount || this.bRows[0].children.length != colCount) {\n\t\t\tif (rowCount == 0 && this.grid.options.emptyPlaceholder) {\n\t\t\t\tthis.bRows = [dom.createElement('tr')];\n\t\t\t\tthis.bRows[0].appendChild(dom.createElement('td'));\n\t\t\t} else {\n\t\t\t\tthis.bRows = new Array(rowCount);\n\t\t\t\tfor (let r = 0; r < rowCount; r++) {\n\t\t\t\t\tthis.bRows[r] = dom.createElement('tr');\n\t\t\t\t\t\n\t\t\t\t\tfor (let c = 0; c < offset; c++) {\n\t\t\t\t\t\tthis.bRows[r].appendChild(dom.createElement('th'));\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor (let c = offset; c < colCount; c++) {\n\t\t\t\t\t\tthis.bRows[r].appendChild(dom.createElement('td'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tdom.empty(this.tbody);\n\t\tthis.bRows.forEach(row => this.tbody.appendChild(row));\n\t}\n\n\trenderCells(update: TableRenderOptions = {vertical: true, horizontal: true}) {\n\t\tif (this.table && (update.vertical || update.horizontal)) {\n\t\t\tthis._viewport = null;\n\t\t\t// this.tbody.remove();\n\t\t\t\n\t\t\tif (update.horizontal) this.renderHeader();\n\t\t\tif (this.model.rows.length > 0) {\n\t\t\t\tthis.renderBody();\n\t\t\t\tif (update.vertical) this.renderRowTree();\n\t\t\t\t// this.table.appendChild(this.tbody);\n\t\t\t} else if (this.model.options.emptyPlaceholder) {\n\t\t\t\tthis.renderEmptyBody();\n\t\t\t\tthis.table.appendChild(this.tbody);\n\t\t\t}\n\n\t\t\tthis.dispatchEvent(new TableEvent('rendercells'));\n\t\t}\n\t}\n\n\trenderEmptyBody() {\n\t\tconst cell = this.bRows[0].children[0] as TableCell;\n\t\tcell.innerHTML = 'no data';\n\t\tcell.className = 'empty-placeholder';\n\t\tcell.colSpan = this.viewport.columns.length + this.rowHeaderCount;\n\t}\n\n\t//#region render header rows\n\trenderHeader() {\n\t\tlet column: ColumnModel;\n\t\tthis.colMap.clear();\n\t\tconst offset = this.rowHeaderCount;\n\t\tconst viewport = this.viewport;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tdom.setSize(this.colgroup.children[0] as HTMLElement, {w: this.treeHeaderWidth}, true);\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tdom.setSize(this.colgroup.children[offset - 1] as HTMLElement, {w: constants.ROW_HEADER_WIDTH}, true);\n\t\t}\n\n\t\tfor (let c = 0; c < viewport.columns.length; c++) {\n\t\t\tcolumn = viewport.columns[c];\n\n\t\t\tif (this.model.autofitColumns.has(column.index)) {\n\t\t\t\tthis.grid.rendering.autofitColumn(column.index, false, false);\n\t\t\t\tthis.model.autofitColumns.delete(column.index); // use autofit only once for performance reasons\n\t\t\t}\n\n\t\t\tthis.colMap.set(column.index, c);\n\t\t\tdom.setSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t\tdom.setMinSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t\tdom.setMaxSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t}\n\t\t\n\t\tlet r = 0;\n\t\tif (this.model.hasColumnTreeEnabled) {\n\t\t\tthis.renderHeaderRowTree(this.hRows[r], r);\n\t\t\t++r;\n\t\t}\n\t\t\n\t\tif (this.model.options.colLetters) {\n\t\t\tdom.setSize(this.hRows[r], {h: this.model.options.rowHeight});\n\t\t\tthis.renderHeaderRowLetters(this.hRows[r], r);\n\t\t\t++r;\n\t\t}\n\t\t\n\t\tfor (let i = 0; i < this.model.headerCount; i++) {\n\t\t\tthis.renderHeaderRowLabels(this.hRows[r + i], r + i, i);\n\t\t}\n\n\t\tr += this.model.headerCount;\n\t\t\n\t\tif (this.model.hasFilter) {\n\t\t\tdom.setSize(this.hRows[r], {h: this.model.options.rowHeight});\n\t\t\tthis.renderHeaderRowFilters(this.hRows[r], r);\n\t\t}\n\t}\n\n\trenderHeaderRowLetters(tr: HTMLTableRowElement, index: number) {\n\t\tlet cell: TableHeaderCell;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\t\tconst r = index - this.columnHeaderCount;\n\t\tlet offset = 0; //this.rowHeaderCount;\n\n\t\tdom.setSize(tr, {h: this.model.options.rowHeight});\n\n\t\tif ((this.model.hasRowTree || this.model.options.rowNumbers) && !this.model.hasColumnTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableCell;\n\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\tcell.rowSpan = this.columnHeaderCount;\n\n\t\t\tconst c = offset - this.rowHeaderCount;\n\t\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\t\tif (!cornerCell || (r == cornerCell.r && c == cornerCell.c)) {\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\n\t\t\toffset++;\n\t\t}\n\n\t\tfor (let i = offset; i < this.rowHeaderCount; i++) {\n\t\t\tdom.hideCell(tr.children[i] as TableCell);\n\t\t\toffset++;\n\t\t}\n\t\t\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableHeaderCell;\n\t\t\tcell.className = 'hlabel';\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tcell.innerHTML = viewport.columns[c2].address;\n\t\t\t\tcell.c = viewport.columns[c2].index;\n\t\t\t\tdom.showCell(cell);\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowTree(tr: HTMLTableRowElement, index: number) {\n\t\tif (!this.model.hasColumnTreeEnabled) return;\n\n\t\tlet cell: TableCell;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst r = index - this.columnHeaderCount;\n\t\tconst viewport = this.viewport;\n\t\tconst rowNumbers = this.model.options.rowNumbers;\n\t\tconst rowTree = this.model.hasRowTreeEnabled;\n\n\t\tdom.setSize(tr, {h: this.treeHeaderHeight});\n\n\t\tcell = tr.children[offset] as TableCell;\n\t\tif (!cell) return;\n\t\tcell.rowSpan = rowNumbers || rowTree ? this.columnHeaderCount : 1;\n\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\n\t\tconst c = offset - this.rowHeaderCount;\n\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\tlet cornerCellColumn = null;\n\t\tif ((!cornerCell && (rowNumbers || rowTree)) || (cornerCell && r == cornerCell.r && c == cornerCell.c)) {\n\t\t\tcornerCellColumn = c;\n\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t}\n\n\t\tif (rowNumbers || rowTree) {\n\t\t\t++offset;\n\t\t\t// if (rowTree) {\n\t\t\t// \tcell = tr.children[offset] as TableCell;\n\t\t\t// \tcell.innerHTML = '';\n\t\t\t// \tdom.hideCell(cell);\n\t\t\t// \t++offset;\n\t\t\t// }\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableCell;\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tif (cornerCellColumn != c) {\n\t\t\t\t\tcell.innerHTML = '';\n\t\t\t\t\tcell.className = 'htree';\n\t\t\t\t\tthis.renderHeaderRowTreeCell(tr, index, viewport.columns[c2], cell);\n\t\t\t\t}\n\t\t\t\tdom.showCell(cell);\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowTreeCell(tr: HTMLTableRowElement, rIndex: number, column: ColumnModel, th: HTMLTableCellElement) {\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {expander: Expander, expanderLine: HTMLDivElement};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t\n\t\t\tconst colWidth = column.width + 1;\n\t\t\tconst treeRowHeight = this.treeHeaderHeight / this.model.maxColumnLevel;\n\n\t\t\tif (column.hasChildren) {\n\t\t\t\tconst expander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleColumn(column.index));\n\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.appendChild(expander);\n\t\t\t\t\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tl: colWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tt: column.level * treeRowHeight + treeRowHeight / 2 - constants.EXPANDER_SIZE / 2\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tdiv.expanderLine = this.createExpanderLine('h');\n\t\t\t\tdiv.appendChild(div.expanderLine);\n\n\t\t\t\tdom.setPosition(div.expanderLine, {\n\t\t\t\t\tl: this.model.options.columnTree.reversed ? 0 : (colWidth / 2),\n\t\t\t\t\tt: column.level * treeRowHeight + treeRowHeight / 2\n\t\t\t\t});\n\n\t\t\t\tdom.setSize(div.expanderLine, {\n\t\t\t\t\th: treeRowHeight / 2,\n\t\t\t\t\tw: colWidth / 2 + 1\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (column.hasParent) {\n\t\t\t\tlet parent = column as ColumnModel;\n\t\t\t\twhile (parent.hasParent) {\n\t\t\t\t\tparent = parent.parent as ColumnModel;\n\t\t\t\t\tconst line = this.createExpanderLine('h');\n\t\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\t\tdom.setSize(line, {\n\t\t\t\t\t\th: treeRowHeight / 2,\n\t\t\t\t\t\tw: colWidth - 1\n\t\t\t\t\t});\n\n\t\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\t\tl: 0,\n\t\t\t\t\t\tt: parent.level * treeRowHeight + treeRowHeight / 2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (div.expander) div.expander.state = column.collapsed ? 'closed' : 'open';\n\t\tth.appendChild(div);\n\t}\n\n\tcreateExpanderLine(direction: string) {\n\t\tconst expanderLine = dom.createElement<HTMLDivElement>('div');\n\t\texpanderLine.className = `${direction}tree-line`;\n\t\treturn expanderLine;\n\t}\n\n\trenderHeaderRowLabels(tr: HTMLTableRowElement, rIndex: number, hIndex: number) {\n\t\tlet colModel: ColumnModel;\n\t\tlet cell: TableHeaderCell;\n\t\tlet header: ColumnHeaderModel;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\t\tconst r = rIndex - this.columnHeaderCount;\n\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\tlet rowHeight: number;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.hasColumnTreeEnabled || this.model.options.colLetters || hIndex > 0) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\t\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.hasRowTreeEnabled || this.model.options.colLetters || this.model.hasColumnTreeEnabled || hIndex > 0) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableHeaderCell;\n\t\t\tcell.className = 'hlabel';\n\t\t\tcell.innerHTML = '';\n\t\t\t\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tcolModel = viewport.columns[c2];\n\t\t\t\theader = colModel.header[hIndex];\n\t\t\t\tif (header.height) rowHeight = Math.max(header.height, rowHeight || 0);\n\n\t\t\t\tcell.colSpan = 1;\n\t\t\t\tcell.rowSpan = 1;\n\t\t\t\tcell.c = colModel.index;\n\t\t\t\tcell.r = hIndex;\n\n\t\t\t\tif (header?.hidden) {\n\t\t\t\t\tif (c2 == this.freezeLeft) {\n\t\t\t\t\t\tlet prevModel = colModel.prevVisible;\n\t\t\t\t\t\tlet c3 = 0;\n\t\t\t\t\t\twhile (prevModel && prevModel.header[hIndex]?.hidden) {\n\t\t\t\t\t\t\tprevModel = prevModel.prevVisible;\n\t\t\t\t\t\t\t++c3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (prevModel && prevModel.header[hIndex].cs) {\n\t\t\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\t\t\tcell.colSpan = prevModel.header[hIndex].cs - c3 - 1;\n\t\t\t\t\t\t\tcell.rowSpan = prevModel.header[hIndex].rs || 1;\n\t\t\t\t\t\t\tthis.renderHeaderRowLabelCell(cell, prevModel, rIndex, hIndex);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (colModel.header && colModel.header[hIndex]) {\n\t\t\t\t\t\tconst cs = colModel.header[hIndex].cs || 1;\n\t\t\t\t\t\tcell.colSpan = cs > 1 ? colModel.calculateRealColspan(cs) : 1;\n\t\t\t\t\t\tcell.rowSpan = colModel.header[hIndex].rs || 1;\n\t\t\t\t\t}\n\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\tthis.renderHeaderRowLabelCell(cell, colModel, rIndex, hIndex);\n\n\t\t\t\t\tif (cornerCell && cornerCell.r == r && cornerCell.c == colModel.index) {\n\t\t\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\n\t\tdom.setSize(tr, {h: rowHeight ?? this.model.options.rowHeight});\n\t}\n\n\trenderHeaderRowLabelCell(th: TableHeaderCell, column: ColumnModel, rIndex: number, hIndex: number) {\n\t\t// TODO: move rendering logic to HeaderRenderer\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {\n\t\t\tsortingArrow?: SortingArrow,\n\t\t\texpander?: Expander,\n\t\t};\n\t\tconst h = column.header[hIndex];\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tif (!h) div.innerHTML = '';\n\t\t\telse if (h.html) div.innerHTML = h.label ?? \"\";\n\t\t\telse div.innerText = h.label ?? \"\";\n\n\t\t\tif (h && h._style != null) {\n\t\t\t\tapplyStyle(div, styleToCSStyle(this.model.styles.get(h._style)));\n\t\t\t}\n\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t}\n\n\t\tif (\n\t\t\tthis.model.options.columnHeaderTreeButtons \n\t\t\t&& column.hasChildren \n\t\t\t&& hIndex == column.level\n\t\t) {\n\t\t\tlet expander = div.expander;\n\t\t\tif (!expander) {\n\t\t\t\texpander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleColumn(column.index));\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.prepend(expander);\n\t\t\t\tdom.setPosition(expander, {l: 4, t: 4});\n\t\t\t}\n\t\t\texpander.state = column.collapsed ? 'closed' : 'open';\n\t\t}\n\n\t\tif (column.sorting && hIndex == column.header.length - 1) {\n\t\t\tth.className += ' sort';\n\t\t\tif (!div.sortingArrow) {\n\t\t\t\tdiv.sortingArrow = new SortingArrow();\t\t\t\t\t\n\t\t\t\tdiv.appendChild(div.sortingArrow);\n\t\t\t\tdom.setPosition(div.sortingArrow, {t: 0, r: 5});\n\t\t\t}\n\t\t\tdiv.sortingArrow.sortSettings = this.model.sorting.get(column.index);\n\t\t}\n\n\t\tif (column.hasHeaderTooltip(hIndex)) {\n\t\t\t// if (!(options && options.export)) {\n\t\t\tconst corner = dom.createElement<HTMLDivElement>('div');\n\t\t\tcorner.className = 'crn';\n\t\t\tdiv.appendChild(corner);\n\t\t\tdiv.classList.add('tt');\n\t\t\t// }\n\t\t}\n\n\t\tth.appendChild(div);\n\t}\n\n\trenderHeaderRowFilters(tr: HTMLTableRowElement, index: number) {\n\t\tlet cell: TableHeaderCell;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.columnHeaderCount > 1) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.colSpan = this.model.columnHeaderCount;\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\t\n\t\t\tif (\n\t\t\t\tthis.model.hasRowTreeEnabled || this.model.options.colLetters \n\t\t\t\t|| this.model.hasColumnTreeEnabled || this.model.headerCount > 0\n\t\t\t) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableCell;\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tdom.showCell(cell);\n\t\t\t\tconst column = viewport.columns[c2];\n\t\t\t\tif (column.hasFilter) this.renderHeaderRowFilterCell(tr, index, column, cell);\n\t\t\t\telse cell.innerHTML = '';\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowFilterCell(tr: HTMLTableRowElement, rIndex: number, column: ColumnModel, th: TableHeaderCell) {\n\t\tth.innerHTML = '';\n\t\tth.className = 'filter';\n\t\tth.c = column.index;\n\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {filter: FilterLabel};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tdiv.filter = dom.createElement<FilterLabel>('og-filter-label');\n\t\t\tdiv.appendChild(div.filter);\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t}\n\t\t\n\t\tconst term = this.grid.filtering.filter.get(column.index)?.term;\n\t\tdiv.filter.value = Array.isArray(term) ? term.map(item => item.value ?? item.key).join(', ') : term;\n\t\tth.appendChild(div);\n\t}\n\n\trenderHeaderRowCornerCell(th: TableCell) {\n\t\tthis.cornerDiv = dom.createElement('div');\n\t\tconst treeColWidth = Math.max(\n\t\t\t(this.treeHeaderWidth || (constants.EXPANDER_SIZE + 2)) / (this.model.maxRowLevel + 1),\n\t\t\tconstants.EXPANDER_SIZE + 2\n\t\t);\n\t\t\n\t\tif (this.model.hasRowTree) {\n\t\t\tfor (let l = 0; l <= this.model.maxRowLevel; l++) {\n\t\t\t\tconst expander = new LevelExpander();\n\t\t\t\texpander.level = l;\n\t\t\t\tthis.cornerDiv.appendChild(expander);\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tl: l * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tb: 3\n\t\t\t\t});\n\t\t\t\texpander.addEventListener('mousedown', e => e.stopPropagation());\n\t\t\t\texpander.addEventListener('toggle', (e: LevelExpandEvent) => {\n\t\t\t\t\tthis.model.columns.filter(col => col.levelButtons).forEach(col => this.bCache.deleteColumn(col.index));\n\t\t\t\t\tthis.grid.rendering.setRowExpandLevel(e.level);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.model.hasColumnTree) {\n\t\t\tconst treeRowHeight = (this.model.hasColumnTree ? this.treeHeaderHeight : th.clientHeight) / (this.model.maxColumnLevel + 1);\n\t\t\tconst vertical = (this.model.maxColumnLevel * 15 + 20) <= th.clientHeight;\n\t\t\tfor (let l = 0; l <= this.model.maxColumnLevel; l++) {\n\t\t\t\tconst expander = new LevelExpander();\n\t\t\t\texpander.level = l;\n\t\t\t\tthis.cornerDiv.appendChild(expander);\n\t\t\t\tdom.setPosition(expander, vertical ? {\n\t\t\t\t\tt: l * treeRowHeight + treeRowHeight / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tr: 3\n\t\t\t\t} : {\n\t\t\t\t\tr: l * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tb: 3\n\t\t\t\t});\n\t\t\t\texpander.addEventListener('mousedown', e => e.stopPropagation());\n\t\t\t\texpander.addEventListener('toggle', (e: LevelExpandEvent) => {\n\t\t\t\t\tthis.grid.rendering.setColumnExpandLevel(e.level);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tdom.empty(th);\n\t\tth.appendChild(this.cornerDiv);\n\t}\n\t//#endregion\n\n\n\tcellRenderSchedules = new WeakMap<TableCell, number>();\n\n\n\t//#region render body rows\n\trenderBody() {\n\t\tlet row: HTMLTableRowElement;\n\t\tlet cell: TableCell;\n\t\tlet rowModel: RowModel;\n\t\tlet rIndex: number;\n\t\tlet cIndex: number;\n\t\tlet colModel: ColumnModel;\n\t\tlet cellModel: CellModel;\n\t\tlet a1: CellAddress;\n\t\tlet mergeState: MergeCellState;\n\t\t\n\t\tconst freezeLeft = this.freezeLeft || 0;\n\t\t// const freezeTop = this.freezeTop || 0;\n\t\tconst offset = this.rowHeaderCount;\n\t\tconst merges = this.model.merges;\n\t\tconst rowNumbers = this.model.options.rowNumbers;\n\t\tconst viewport = this.viewport;\n\t\tconst viewportRange = this.viewportRange;\n\n\t\tif (!viewportRange) return;\n\n\t\tconst mainRange = new CellRange(\n\t\t\tthis.colOffset + freezeLeft, \n\t\t\tthis.rowOffset, // + freezeTop, \n\t\t\tviewportRange.c2, \n\t\t\tviewportRange.r2\n\t\t);\n\n\t\tthis.rowMap.clear();\n\n\t\tfor (let r = 0; r < this.bRows.length; r++) {\n\t\t\trow = this.bRows[r];\n\t\t\tif (r < viewport.rows.length) {\n\t\t\t\trowModel = viewport.rows[r];\n\t\t\t\trIndex = rowModel.index;\n\n\t\t\t\tif (this.model.autofitRows.has(rIndex)) {\n\t\t\t\t\tthis.grid.rendering.autofitRow(rIndex, false, false);\n\t\t\t\t\tthis.model.autofitRows.delete(rIndex); // use autofit only once for performance reasons\n\t\t\t\t}\n\n\t\t\t\tdom.setSize(row, {h: rowModel.height});\n\t\t\t\t\n\t\t\t\tif (rowModel.height < this.model.options.rowHeight) {\n\t\t\t\t\tdom.setLineHeight(row, rowModel.height);\n\t\t\t\t}\n\n\t\t\t\tthis.rowMap.set(rIndex, r);\n\n\t\t\t\tif (rowNumbers) {\n\t\t\t\t\tcell = row.children[offset - 1] as TableCell;\n\t\t\t\t\tcell.className = 'vlabel';\n\t\t\t\t\tcell.r = rIndex;\n\t\t\t\t\tcell.c = -1;\n\t\t\t\t\tcell.innerHTML = `<div>${encodeRow(rIndex)}</div>`;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (let c = offset; c < row.children.length; c++) {\n\t\t\t\t\tcell = row.children[c] as TableCell;\n\t\t\t\t\tif (c - offset < viewport.columns.length) {\n\t\t\t\t\t\tcolModel = viewport.columns[c - offset];\n\t\t\t\t\t\tcIndex = colModel.index;\n\n\t\t\t\t\t\tcell.r = rIndex;\n\t\t\t\t\t\tcell.c = cIndex;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcellModel = rowModel.cell(cIndex);\n\t\t\t\t\t\ta1 = cellModel.address;\n\t\t\t\t\t\tmergeState = merges.getMergeState(a1);\n\t\t\t\t\t\tif (mergeState == MergeCellState.HIDDEN) {\n\t\t\t\t\t\t\tconst merge = merges.hiddenCells.get(cellModel.address);\n\t\t\t\t\t\t\tconst inter = mainRange.intersect(new CellRange(merge.c, merge.r, merge.c + merge.cs - 1, merge.r + merge.rs - 1));\n\n\t\t\t\t\t\t\tif (inter && cellModel.c == inter.c1 && cellModel.r == inter.r1) {\n\t\t\t\t\t\t\t\t// top left cell of the merged range\n\t\t\t\t\t\t\t\tcellModel = this.model.rows[merge.r].cell(merge.c);\n\t\t\t\t\t\t\t\tcell.colSpan = inter.size.columns;\n\t\t\t\t\t\t\t\tcell.rowSpan = inter.size.rows;\n\t\t\t\t\t\t\t\tcell.c = cellModel.c;\n\t\t\t\t\t\t\t\tcell.r = cellModel.r;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (mergeState == MergeCellState.MERGED) {\n\t\t\t\t\t\t\tconst merge = cellModel.merge;\n\t\t\t\t\t\t\tcell.colSpan = merge.cs;\n\t\t\t\t\t\t\tcell.rowSpan = merge.rs;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcell.colSpan = 1;\n\t\t\t\t\t\t\tcell.rowSpan = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\t\tthis.renderBodyCell(cellModel, cell);\n\t\t\t\t\t\t// this.scheduleRenderBodyCell(cellModel, cell);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.style.display = 'table-row';\n\t\t\t\trow.className = rowModel.filterState > 1 ? `filtered` : '';\n\t\t\t} else {\n\t\t\t\trow.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tscheduleRenderBodyCell(cellModel: CellModel, cell: TableCell) {\n\t\tif (this.cellRenderSchedules.has(cell)) {\n\t\t\twindow.clearTimeout(this.cellRenderSchedules.get(cell));\n\t\t\tthis.cellRenderSchedules.delete(cell);\n\t\t}\n\t\tthis.cellRenderSchedules.set(cell, window.setTimeout(() => this.renderBodyCell(cellModel, cell)));\n\t}\n\n\tfixCellBorders(cell: TableCell, style: Style) {\n\t\tif (style.bottom?.style == 'none') {\n\t\t\tcell.style.borderBottomColor = 'transparent';\n\t\t}\n\t\tif (style.top?.style == 'none') {\n\t\t\tcell.style.borderTop = 'transparent';\n\t\t}\n\n\t\tif (style.right?.style == 'none') {\n\t\t\tcell.style.borderRight = 'transparent';\n\t\t}\n\t\tif (style.left?.style == 'none') {\n\t\t\tcell.style.borderLeft = 'transparent';\n\t\t}\n\t}\n\n\trenderBodyCell(cellModel: CellModel, cell?: TableCell) {\n\t\tconst force = !cell;\n\t\tcell = cell || this.getCellByCellModel(cellModel);\n\t\tif (cell) {\n\t\t\tlet div = (force ? null : this.bCache.get(cellModel.c, cellModel.r)) as HTMLDivElement;\n\t\t\tif (!div) {\n\t\t\t\tdiv = dom.createElement('div');\n\t\t\t\tgetCellRenderer(cellModel).call(this, div, cellModel);\n\t\t\t\tthis.bCache.set(cellModel.c, cellModel.r, div);\n\t\t\t}\n\n\t\t\tif (this.renderAll) {\n\t\t\t\t// do this only when rendering all cells for performance reasons, good for exports to raw html\n\t\t\t\tconst s = cellModel.composedStyle;\n\t\t\t\tif (s) this.fixCellBorders(cell, s);\n\t\t\t}\n\n\t\t\tdom.empty(cell);\n\t\t\tcell.appendChild(div);\n\t\t} else {\n\t\t\tthis.bCache.delete(cellModel.c, cellModel.r);\n\t\t}\n\t}\n\n\tmergeBodyCells(mergedCells: Merge[]) {\n\t\tlet cell: TableCell;\n\t\tconst skipSet = new Set<TableCell>();\n\t\tfor (const m of mergedCells) {\n\t\t\tcell = this.bRows[m.r].cells[m.c] as TableCell;\n\t\t\tif (!cell || skipSet.has(cell)) continue;\n\t\t\tfor (let r = m.r; r < m.r + m.rs; r++) {\n\t\t\t\tfor (let c = m.c; c < m.c + m.cs; c++) {\n\t\t\t\t\tcell = this.bRows[r].cells[c] as TableCell;\n\t\t\t\t\tif (!cell) continue;\n\t\t\t\t\tif (r == m.r && c == m.c) {\n\t\t\t\t\t\tcell.colSpan = m.cs;\n\t\t\t\t\t\tcell.rowSpan = m.rs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskipSet.add(cell);\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t}\n\t\n\trenderRowTree() {\n\t\tif (!this.model.hasRowTreeEnabled) return;\n\t\tlet cell: TableCell;\n\t\tconst viewport = this.viewport;\n\t\tconst cIndex = -this.rowHeaderCount;\n\t\tfor (let r = 0; r < this.bRows.length; r++) {\n\t\t\tcell = this.bRows[r].children[0] as TableCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (r < viewport.rows.length) {\n\t\t\t\tcell.className = 'vtree';\n\t\t\t\tthis.renderRowTreeCell(cIndex, viewport.rows[r], cell )\n\t\t\t}\n\t\t}\n\t}\n\n\trenderRowTreeCell(cIndex: number, row: RowModel, th: HTMLTableCellElement) {\n\t\tlet div = this.bCache.get(cIndex, row.index) as HTMLDivElement & {expander: Expander};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tthis.bCache.set(cIndex, row.index, div);\n\t\t\n\t\t\tconst rowHeight = row.height + 1;\n\t\t\tconst treeColWidth = this.treeHeaderWidth / this.model.maxRowLevel;\n\n\t\t\tif (row.hasChildren) {\n\t\t\t\tconst expander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleRow(row.index));\n\t\t\t\t(th.parentElement as TableRow).expander = expander;\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.appendChild(expander);\n\t\t\t\t\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tt: rowHeight / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tl: row.level * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tconst line = this.createExpanderLine('v');\n\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\tt: this.model.options.rowTree.reversed ? 0 : (rowHeight / 2),\n\t\t\t\t\tl: row.level * treeColWidth + treeColWidth / 2\n\t\t\t\t});\n\n\t\t\t\tdom.setSize(line, {\n\t\t\t\t\tw: treeColWidth / 2,\n\t\t\t\t\th: rowHeight / 2 + 1\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (row.hasParent) {\n\t\t\t\tlet parent = row as RowModel;\n\t\t\t\twhile (parent.hasParent) {\n\t\t\t\t\tparent = parent.parent as RowModel;\n\t\t\t\t\tconst line = this.createExpanderLine('v');\n\t\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\t\tdom.setSize(line, {\n\t\t\t\t\t\tw: treeColWidth / 2,\n\t\t\t\t\t\th: rowHeight + 2\n\t\t\t\t\t});\n\n\t\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\t\tt: -1,\n\t\t\t\t\t\tl: parent.level * treeColWidth + treeColWidth / 2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (div.expander) div.expander.state = row.collapsed ? 'closed' : 'open';\n\t\tth.appendChild(div);\n\t}\n\t//#endregion\n\n}"]}
@@ -0,0 +1,2 @@
1
+ export declare const tableStyles: import("lit").CSSResult;
2
+ //# sourceMappingURL=table.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.styles.d.ts","sourceRoot":"","sources":["../../src/ui/table.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,yBAqPvB,CAAC"}
@@ -0,0 +1,249 @@
1
+ import { css } from 'lit';
2
+ import constants from '../constants';
3
+ export const tableStyles = css `
4
+ * {
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ :host {
9
+ display: block;
10
+ width: 100%;
11
+ height: 100%;
12
+ overflow: hidden;
13
+ position: relative;
14
+ }
15
+
16
+ table {
17
+ font-family: var(--og-font-family);
18
+ border-collapse: collapse;
19
+ position: relative;
20
+ transform-origin: 0% 0% 0px;
21
+ }
22
+
23
+ a {
24
+ color: inherit;
25
+ }
26
+
27
+ table tr:first-child th {
28
+ border-top: var(--og-cell-border);
29
+ }
30
+
31
+ table tr>td:first-child, table tr>th:first-child {
32
+ border-left: var(--og-cell-border);
33
+ }
34
+
35
+ :host([hideOuterBorder]) table tr:first-child th {
36
+ border-top: none;
37
+ }
38
+
39
+ :host([hideOuterBorder]) table tr>td:first-child, :host([hideOuterBorder]) table tr>th:first-child {
40
+ border-left: none;
41
+ }
42
+
43
+ thead {
44
+ overflow: visible;
45
+ }
46
+
47
+ tr {
48
+ overflow: visible;
49
+ }
50
+
51
+ tr.filtered>td>div {
52
+ opacity: 0.5;
53
+ }
54
+
55
+ td {
56
+ color: var(--og-text-color);
57
+ background: var(--og-cell-background);
58
+ border: var(--og-cell-border);
59
+ empty-cells: show;
60
+ vertical-align: top;
61
+ overflow: visible;
62
+ outline-width: 0;
63
+ cursor: cell;
64
+ padding: 0;
65
+ position: relative;
66
+ }
67
+
68
+ th {
69
+ color: var(--og-text-color);
70
+ background: var(--og-hcell-background);
71
+ border-top-width: 0;
72
+ border-left-width: 0;
73
+ border-right: var(--og-cell-border);
74
+ border-bottom: var(--og-cell-border);
75
+ empty-cells: show;
76
+ padding: 0 0px;
77
+ vertical-align: middle;
78
+ overflow: hidden;
79
+ outline-width: 0;
80
+ cursor: default;
81
+ font-weight: normal;
82
+ text-align: center;
83
+ position: relative;
84
+ }
85
+
86
+ th.vlabel {
87
+ overflow: hidden;
88
+ position: relative;
89
+ }
90
+
91
+ th.hlabel {
92
+ overflow: visible;
93
+ }
94
+
95
+ th.vlabel>div {
96
+ justify-content: center;
97
+ }
98
+
99
+ table.nogrid td {
100
+ border-color: var(--og-cell-background);
101
+ }
102
+
103
+ td>div, th>div {
104
+ position: absolute;
105
+ inset: -1px;
106
+ border: 1.5px solid transparent;
107
+ padding: 0 4px;
108
+ background-clip: padding-box;
109
+ }
110
+
111
+ td>div, th>div {
112
+ overflow: hidden;
113
+ white-space: nowrap;
114
+ }
115
+
116
+ div.actions {
117
+ display: flex;
118
+ flex-direction: row;
119
+ align-items: center;
120
+ height: 100%;
121
+ gap: 4px;
122
+ }
123
+
124
+ div.actions>og-button, div.actions>og-dropdown-menu {
125
+ width: 16px;
126
+ height: 16px;
127
+ }
128
+
129
+ th>div {
130
+ text-align: center;
131
+ line-height: ${constants.ROW_HEIGHT}px;
132
+ }
133
+
134
+ th.sort {
135
+ cursor: pointer;
136
+ color: var(--og-accent-color);
137
+ }
138
+
139
+ th.sort .num {
140
+ font-size: 8px;
141
+ }
142
+
143
+ th.sort:hover {
144
+ color: var(--og-accent-color-1);
145
+ }
146
+
147
+ th.filter {
148
+ overflow: visible;
149
+ }
150
+
151
+ th.filter>div {
152
+ padding: 0;
153
+ }
154
+
155
+ th.filter og-filter-label {
156
+ width: 100%;
157
+ }
158
+
159
+ th.selected {
160
+ background-color: var(--og-accent-color-alpha-30);
161
+ }
162
+
163
+ th.filter>div:before {
164
+ content: "";
165
+ display: block;
166
+ height: auto;
167
+ }
168
+
169
+ tr.filtered>td>div {
170
+ opacity: 0.5;
171
+ }
172
+
173
+ .htree, .vtree {
174
+ overflow: visible;
175
+ padding: 0;
176
+ }
177
+
178
+ .htree>div, .vtree>div {
179
+ overflow: visible;
180
+ padding: 0;
181
+ border: none;
182
+ }
183
+
184
+ .vtree {
185
+ border-bottom-color: var(--og-hcell-background);
186
+ }
187
+
188
+ .htree {
189
+ border-right-color: var(--og-hcell-background);
190
+ }
191
+
192
+ .vtree-line {
193
+ border-left: 1px solid var(--og-expander-color);
194
+ }
195
+
196
+ .htree-line {
197
+ border-top: 1px solid var(--og-expander-color);
198
+ }
199
+
200
+ tr.row-frozen+tr td>div, tr.row-frozen+tr th>div {
201
+ box-shadow: inset 0px 4px 3px -2px var(--og-frozen-border-color);
202
+ }
203
+
204
+ tr.row-frozen+tr td.col-frozen+td>div {
205
+ box-shadow: inset 4px 4px 3px -2px var(--og-frozen-border-color);
206
+ }
207
+
208
+ td.col-frozen+td>div, th.col-frozen+th>div {
209
+ box-shadow: inset 4px 0px 3px -2px var(--og-frozen-border-color);
210
+ }
211
+
212
+ td.empty-placeholder {
213
+ text-align: center;
214
+ }
215
+
216
+ .triangle-down {
217
+ width: 0;
218
+ height: 0;
219
+ border-left: 4px solid transparent;
220
+ border-right: 4px solid transparent;
221
+ border-top: 4px solid var(--og-accent-color);
222
+ }
223
+
224
+ .crn {
225
+ position: absolute;
226
+ top: 0;
227
+ right: 0;
228
+ width: 0;
229
+ height: 0;
230
+ border-left: 5px solid transparent;
231
+ }
232
+
233
+ .clc .crn {
234
+ border-top: 5px solid #0066ff;
235
+ }
236
+
237
+ .cmt .crn {
238
+ border-top: 5px solid var(--og-colortype-yellow-background-color);
239
+ }
240
+
241
+ .tt .crn {
242
+ border-top: 5px solid var(--og-colortype-yellow-background-color);
243
+ }
244
+
245
+ .clc {
246
+ cursor: pointer;
247
+ }
248
+ `;
249
+ //# sourceMappingURL=table.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.styles.js","sourceRoot":"","sources":["../../src/ui/table.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgIb,SAAS,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqHpC,CAAC","sourcesContent":["import { css } from 'lit';\nimport constants from '../constants';\n\nexport const tableStyles = css`\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: hidden;\n\t\tposition: relative;\n\t}\n\n\ttable {\n\t\tfont-family: var(--og-font-family);\n\t\tborder-collapse: collapse;\n\t\tposition: relative;\n\t\ttransform-origin: 0% 0% 0px;\n\t}\n\n\ta {\n\t\tcolor: inherit;\n\t}\n\n\ttable tr:first-child th {\n\t\tborder-top: var(--og-cell-border);\n\t}\n\n\ttable tr>td:first-child, table tr>th:first-child {\n\t\tborder-left: var(--og-cell-border);\n\t}\n\n\t:host([hideOuterBorder]) table tr:first-child th {\n\t\tborder-top: none;\n\t}\n\n\t:host([hideOuterBorder]) table tr>td:first-child, :host([hideOuterBorder]) table tr>th:first-child {\n\t\tborder-left: none;\n\t}\n\n\tthead {\n\t\toverflow: visible;\n\t}\n\t\n\ttr {\n\t\toverflow: visible;\n\t}\n\n\ttr.filtered>td>div {\n\t\topacity: 0.5;\n\t}\n\n\ttd {\n\t\tcolor: var(--og-text-color);\n\t\tbackground: var(--og-cell-background);\n\t\tborder: var(--og-cell-border);\n\t\tempty-cells: show;\n\t\tvertical-align: top;\n\t\toverflow: visible;\n\t\toutline-width: 0;\n\t\tcursor: cell;\n\t\tpadding: 0;\n\t\tposition: relative;\n\t}\n\n\tth {\n\t\tcolor: var(--og-text-color);\n\t\tbackground: var(--og-hcell-background);\n\t\tborder-top-width: 0;\n\t\tborder-left-width: 0;\n\t\tborder-right: var(--og-cell-border);\n\t\tborder-bottom: var(--og-cell-border);\n\t\tempty-cells: show;\n\t\tpadding: 0 0px;\n\t\tvertical-align: middle;\n\t\toverflow: hidden;\n\t\toutline-width: 0;\n\t\tcursor: default;\n\t\tfont-weight: normal;\n\t\ttext-align: center;\n\t\tposition: relative;\n\t}\n\n\tth.vlabel {\n\t\toverflow: hidden;\n\t\tposition: relative;\n\t}\n\n\tth.hlabel {\n\t\toverflow: visible;\n\t}\n\n\tth.vlabel>div {\n\t\tjustify-content: center;\n\t}\n\n\ttable.nogrid td {\n\t\tborder-color: var(--og-cell-background);\n\t}\n\n\ttd>div, th>div {\n\t\tposition: absolute;\n\t\tinset: -1px;\n\t\tborder: 1.5px solid transparent;\n\t\tpadding: 0 4px;\n\t\tbackground-clip: padding-box;\n\t}\n\n\ttd>div, th>div {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\tdiv.actions {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\theight: 100%;\n\t\tgap: 4px;\n\t}\n\t\n\tdiv.actions>og-button, div.actions>og-dropdown-menu {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n\n\tth>div {\n\t\ttext-align: center;\n\t\tline-height: ${constants.ROW_HEIGHT}px;\n\t}\n\n\tth.sort {\n\t\tcursor: pointer;\n\t\tcolor: var(--og-accent-color);\n\t}\n\n\tth.sort .num {\n\t\tfont-size: 8px;\n\t}\n\n\tth.sort:hover {\n\t\tcolor: var(--og-accent-color-1);\n\t}\n\n\tth.filter {\n\t\toverflow: visible;\n\t}\n\n\tth.filter>div {\n\t\tpadding: 0;\n\t}\n\n\tth.filter og-filter-label {\n\t\twidth: 100%;\n\t}\n\n\tth.selected {\n\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t}\n\t\n\tth.filter>div:before {\n\t\tcontent: \"\";\n\t\tdisplay: block;\n\t\theight: auto;\n\t}\n\n\ttr.filtered>td>div {\n\t\topacity: 0.5;\n\t}\n\n\t.htree, .vtree {\n\t\toverflow: visible;\n\t\tpadding: 0;\n\t}\n\n\t.htree>div, .vtree>div {\n\t\toverflow: visible;\n\t\tpadding: 0;\n\t\tborder: none;\n\t}\n\n\t.vtree {\n\t\tborder-bottom-color: var(--og-hcell-background);\n\t}\n\n\t.htree {\n\t\tborder-right-color: var(--og-hcell-background);\n\t}\n\n\t.vtree-line {\n\t\tborder-left: 1px solid var(--og-expander-color);\n\t}\n\n\t.htree-line {\n\t\tborder-top: 1px solid var(--og-expander-color);\n\t}\n\n\ttr.row-frozen+tr td>div, tr.row-frozen+tr th>div {\n\t\tbox-shadow: inset 0px 4px 3px -2px var(--og-frozen-border-color);\n\t}\n\n\ttr.row-frozen+tr td.col-frozen+td>div {\n\t\tbox-shadow: inset 4px 4px 3px -2px var(--og-frozen-border-color);\n\t}\n\t\n\ttd.col-frozen+td>div, th.col-frozen+th>div {\n\t\tbox-shadow: inset 4px 0px 3px -2px var(--og-frozen-border-color);\t\n\t}\n\n\ttd.empty-placeholder {\n\t\ttext-align: center;\n\t}\n\n\t.triangle-down {\n\t\twidth: 0; \n\t\theight: 0; \n\t\tborder-left: 4px solid transparent;\n\t\tborder-right: 4px solid transparent;\n\t\tborder-top: 4px solid var(--og-accent-color);\n\t}\n\n\t.crn {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tborder-left: 5px solid transparent;\n\t}\n\n\t.clc .crn {\n\t\tborder-top: 5px solid #0066ff;\n\t}\n\n\t.cmt .crn {\n\t\tborder-top: 5px solid var(--og-colortype-yellow-background-color);\n\t}\n\n\t.tt .crn {\n\t\tborder-top: 5px solid var(--og-colortype-yellow-background-color);\n\t}\n\n\t.clc {\n\t\tcursor: pointer;\n\t}\n`;"]}
@@ -0,0 +1,9 @@
1
+ import { Tooltip as CoreTooltip, TooltipPosition } from '@omegagrid/core';
2
+ import { CellModel, ColumnHeaderModel } from '@omegagrid/grid-core';
3
+ export declare class GridTooltip extends CoreTooltip {
4
+ static styles: import("lit").CSSResult[];
5
+ constructor();
6
+ connectedCallback(): void;
7
+ attachToCell(td: HTMLElement, cell: CellModel | ColumnHeaderModel, position?: TooltipPosition): void;
8
+ }
9
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/ui/tooltip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,qBACa,WAAY,SAAQ,WAAW;IAE3C,MAAM,CAAC,MAAM,4BAIV;;IAMH,iBAAiB;IAIjB,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAC,iBAAiB,EAAE,QAAQ,GAAE,eAAyB;CAMpG"}
@@ -0,0 +1,32 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement } from 'lit/decorators.js';
8
+ import { Tooltip as CoreTooltip } from '@omegagrid/core';
9
+ import { css } from 'lit';
10
+ let GridTooltip = class GridTooltip extends CoreTooltip {
11
+ constructor() {
12
+ super();
13
+ }
14
+ connectedCallback() {
15
+ super.connectedCallback();
16
+ }
17
+ attachToCell(td, cell, position = 'right') {
18
+ this.content = cell.tooltip;
19
+ // TODO: add support for custom tooltip renderer and other tooltip options
20
+ this.attachTo(td, position);
21
+ }
22
+ };
23
+ GridTooltip.styles = [...CoreTooltip.styles, css `
24
+ :host {
25
+ max-width: 250px;
26
+ }
27
+ `];
28
+ GridTooltip = __decorate([
29
+ customElement('og-grid-tooltip')
30
+ ], GridTooltip);
31
+ export { GridTooltip };
32
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/ui/tooltip.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAGnB,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IAQ3C;QACC,KAAK,EAAE,CAAC;IACT,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY,CAAC,EAAe,EAAE,IAAiC,EAAE,WAA4B,OAAO;QACnG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;QACtC,0EAA0E;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;;AAlBM,kBAAM,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAA;;;;EAI1C,CAAC,AAJW,CAIV;AANS,WAAW;IADvB,aAAa,CAAC,iBAAiB,CAAC;GACpB,WAAW,CAsBvB","sourcesContent":["import { customElement } from 'lit/decorators.js';\nimport { Tooltip as CoreTooltip, TooltipPosition } from '@omegagrid/core';\nimport { CellModel, ColumnHeaderModel } from '@omegagrid/grid-core';\nimport { css } from 'lit';\n\n@customElement('og-grid-tooltip')\nexport class GridTooltip extends CoreTooltip {\n\n\tstatic styles = [...CoreTooltip.styles, css`\n\t\t:host {\n\t\t\tmax-width: 250px;\n\t\t}\t\n\t`];\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t}\n\n\tattachToCell(td: HTMLElement, cell: CellModel|ColumnHeaderModel, position: TooltipPosition = 'right') {\n\t\tthis.content = cell.tooltip as string;\n\t\t// TODO: add support for custom tooltip renderer and other tooltip options\n\t\tthis.attachTo(td, position);\n\t}\n\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/grid",
3
- "version": "0.10.2",
3
+ "version": "0.10.4",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Universal datagrid component",
6
6
  "main": "./dist/index.js",
@@ -35,12 +35,12 @@
35
35
  "_prepublish": "yarn test && yarn lint"
36
36
  },
37
37
  "dependencies": {
38
- "@omegagrid/commands": "^0.10.2",
39
- "@omegagrid/core": "^0.10.2",
40
- "@omegagrid/grid-core": "^0.10.2",
41
- "@omegagrid/localize": "^0.10.2",
42
- "@omegagrid/tabs": "^0.10.2",
43
- "@omegagrid/tree": "^0.10.2",
38
+ "@omegagrid/commands": "^0.10.4",
39
+ "@omegagrid/core": "^0.10.4",
40
+ "@omegagrid/grid-core": "^0.10.4",
41
+ "@omegagrid/localize": "^0.10.4",
42
+ "@omegagrid/tabs": "^0.10.4",
43
+ "@omegagrid/tree": "^0.10.4",
44
44
  "@stdlib/stats": "^0.0.13",
45
45
  "date-fns": "^3.2.0",
46
46
  "lit": "^3.1.1",