@omegagrid/grid 0.10.2 → 0.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +107 -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,168 @@
1
+ import { RowModel } from "@omegagrid/grid-core";
2
+ import { msg } from "@omegagrid/localize";
3
+ import { GridEvent } from "./grid.events";
4
+ import { html } from "lit";
5
+ export class GridMenuEvent extends GridEvent {
6
+ constructor(type, args) {
7
+ super(`menu.${type}`, args);
8
+ }
9
+ }
10
+ export class GridMenus {
11
+ get model() { return this.grid.model; }
12
+ get selection() { return this.grid.selection; }
13
+ get selector() { return this.grid.selector; }
14
+ get events() { return this.grid.events; }
15
+ get table() { return this.grid.table; }
16
+ get contextMenu() { return this.grid.contextMenu; }
17
+ constructor(grid) {
18
+ this.grid = grid;
19
+ this._onContextMenuClick = (e) => {
20
+ const grid = this.grid;
21
+ switch (this.currentMenuItems[e.index].key) {
22
+ case 'insertColumn':
23
+ grid.editing.insertColumns({ index: this.currentColumn.index, count: 1 });
24
+ break;
25
+ case 'insertColumnAfter':
26
+ grid.editing.insertColumns({ index: this.currentColumn.index, count: 1, after: true });
27
+ break;
28
+ case 'deleteColumn':
29
+ grid.editing.deleteColumns({ index: this.currentColumn.index, count: 1 });
30
+ break;
31
+ case 'insertRow':
32
+ grid.editing.insertRows({ index: this.currentRow.index, count: 1 });
33
+ break;
34
+ case 'insertRowAfter':
35
+ grid.editing.insertRows({ index: this.currentRow.index, count: 1, after: true });
36
+ break;
37
+ case 'deleteRow':
38
+ grid.editing.deleteRows({ index: this.currentRow.index, count: 1 });
39
+ break;
40
+ case 'comment':
41
+ this.grid.editing.openComments(this.currentCell);
42
+ break;
43
+ }
44
+ this.grid.dispatchEvent(new GridMenuEvent('click', {
45
+ grid: this.grid,
46
+ cell: this.currentCell,
47
+ row: this.currentRow,
48
+ column: this.currentColumn,
49
+ item: this.currentMenuItems[e.index]
50
+ }));
51
+ };
52
+ this._onOutlineLevelChange = (e, element) => {
53
+ const level = e.target.value;
54
+ if (element instanceof RowModel) {
55
+ this.model.getRowIterator(this.grid.selection.range).forEach(row => row.level = level);
56
+ this.model.rebuildRowTree();
57
+ }
58
+ else {
59
+ this.model.getColumnIterator(this.grid.selection.range).forEach(col => col.level = level);
60
+ this.model.rebuildColumnTree();
61
+ }
62
+ this.grid.rendering.render(true);
63
+ };
64
+ this.renderOutlineMenuItem = (element) => {
65
+ return html `
66
+ <div
67
+ style="display: flex; flex-direction: row; align-items: center;"
68
+ @mousedown="${(e) => e.stopPropagation()}"
69
+ @mouseup="${(e) => e.stopPropagation()}">
70
+ <og-numericinput buttons
71
+ min="0"
72
+ max="9"
73
+ value="${element.level}"
74
+ style="margin-right: 2px; text-align: center"
75
+ @change="${(e) => this._onOutlineLevelChange(e, element)}">
76
+ </og-numericinput>
77
+ </div>
78
+ `;
79
+ };
80
+ }
81
+ init() {
82
+ this.contextMenu.addEventListener('select', this._onContextMenuClick);
83
+ }
84
+ openMenu(position) {
85
+ if (this.currentMenuItems.length > 0) {
86
+ this.contextMenu.items = this.currentMenuItems;
87
+ this.contextMenu.openAt(position.x, position.y);
88
+ }
89
+ }
90
+ openColumnMenu(column, position) {
91
+ const opts = this.grid.options;
92
+ const customMenu = opts.menus?.column;
93
+ let items = [];
94
+ this.currentColumn = column;
95
+ if (!customMenu?.replace) {
96
+ if (opts.editable && opts.editing.colInsertion) {
97
+ items.push({ key: 'insertColumn', value: 'Insert column', icon: 'plus' });
98
+ items.push({ key: 'insertColumnAfter', value: 'Insert column (after)', icon: 'plus' });
99
+ }
100
+ if (opts.editable && opts.editing.colDeletion) {
101
+ items.push({ key: 'deleteColumn', value: 'Delete column', icon: 'minus' });
102
+ }
103
+ if (opts.editable && opts.editing.colOutline) {
104
+ items.push({ key: 'colLevel', icon: 'list-tree', renderer: () => this.renderOutlineMenuItem(column) });
105
+ }
106
+ }
107
+ if (customMenu) {
108
+ if (items.length > 0)
109
+ items[items.length - 1].divider = true;
110
+ items = [
111
+ ...items,
112
+ ...customMenu.items.filter(item => !item.hidden || !item.hidden(column))
113
+ ];
114
+ }
115
+ this.currentMenuItems = items;
116
+ this.openMenu(position);
117
+ }
118
+ openRowMenu(row, position) {
119
+ const opts = this.grid.options;
120
+ const customMenu = opts.menus?.row;
121
+ let items = [];
122
+ this.currentRow = row;
123
+ if (!customMenu?.replace) {
124
+ if (opts.editable && opts.editing.rowInsertion) {
125
+ items.push({ key: 'insertRow', value: 'Insert row', icon: 'plus' });
126
+ items.push({ key: 'insertRowAfter', value: 'Insert row (after)', icon: 'plus' });
127
+ }
128
+ if (opts.editable && opts.editing.rowDeletion) {
129
+ items.push({ key: 'deleteRow', value: 'Delete row', icon: 'minus' });
130
+ }
131
+ if (opts.editable && opts.editing.rowOutline) {
132
+ items.push({ key: 'rowLevel', icon: 'list-tree', renderer: () => this.renderOutlineMenuItem(row) });
133
+ }
134
+ }
135
+ if (customMenu) {
136
+ if (items.length > 0)
137
+ items[items.length - 1].divider = true;
138
+ items = [
139
+ ...items,
140
+ ...customMenu.items.filter(item => !item.hidden || !item.hidden(row))
141
+ ];
142
+ }
143
+ this.currentMenuItems = items;
144
+ this.openMenu(position);
145
+ }
146
+ openCellMenu(cell, position) {
147
+ const opts = this.grid.options;
148
+ const customMenu = opts.menus?.cell;
149
+ let items = [];
150
+ this.currentCell = cell;
151
+ if (!customMenu?.replace) {
152
+ if (cell.commentable) {
153
+ items.push({ key: 'comment', value: msg('Comment'), icon: 'comment' });
154
+ }
155
+ }
156
+ if (customMenu) {
157
+ if (items.length > 0)
158
+ items[items.length - 1].divider = true;
159
+ items = [
160
+ ...items,
161
+ ...customMenu.items.filter(item => !item.hidden || !item.hidden(cell))
162
+ ];
163
+ }
164
+ this.currentMenuItems = items;
165
+ this.openMenu(position);
166
+ }
167
+ }
168
+ //# sourceMappingURL=grid.menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.menu.js","sourceRoot":"","sources":["../../src/ui/grid.menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { ListSelectEvent, MenuItem, NumericInput } from \"@omegagrid/core\";\nimport { CellModel, ColumnModel, RowModel } from \"@omegagrid/grid-core\";\nimport { Grid } from \"./grid\";\nimport { msg } from \"@omegagrid/localize\";\nimport { GridEvent } from \"./grid.events\";\nimport { html } from \"lit\";\n\nexport class GridMenuEvent extends GridEvent {\n\n\treadonly item: MenuItem;\n\n\tconstructor(type: string, args?: Partial<GridMenuEvent>) {\n\t\tsuper(`menu.${type}`, args);\n\t}\n\n}\n\nexport class GridMenus {\n\n\tget model() { return this.grid.model }\n\tget selection() { return this.grid.selection }\n\tget selector() { return this.grid.selector }\n\tget events() { return this.grid.events }\n\tget table() { return this.grid.table }\n\tget contextMenu() { return this.grid.contextMenu }\n\n\tprivate currentMenuItems: MenuItem[];\n\tprivate currentColumn: ColumnModel;\n\tprivate currentRow: RowModel;\n\tprivate currentCell: CellModel;\n\n\tconstructor(readonly grid: Grid) { }\n\n\t_onContextMenuClick = (e: ListSelectEvent) => {\n\t\tconst grid = this.grid;\n\t\tswitch (this.currentMenuItems[e.index].key) {\n\t\t\tcase 'insertColumn':\n\t\t\t\tgrid.editing.insertColumns({index: this.currentColumn.index, count: 1});\n\t\t\t\tbreak;\n\t\t\tcase 'insertColumnAfter':\n\t\t\t\tgrid.editing.insertColumns({index: this.currentColumn.index, count: 1, after: true});\n\t\t\t\tbreak;\n\t\t\tcase 'deleteColumn':\n\t\t\t\tgrid.editing.deleteColumns({index: this.currentColumn.index, count: 1});\n\t\t\t\tbreak;\n\t\t\tcase 'insertRow':\n\t\t\t\tgrid.editing.insertRows({index: this.currentRow.index, count: 1});\n\t\t\t\tbreak;\n\t\t\tcase 'insertRowAfter':\n\t\t\t\tgrid.editing.insertRows({index: this.currentRow.index, count: 1, after: true});\n\t\t\t\tbreak;\n\t\t\tcase 'deleteRow':\n\t\t\t\tgrid.editing.deleteRows({index: this.currentRow.index, count: 1});\n\t\t\t\tbreak;\n\t\t\tcase 'comment':\n\t\t\t\tthis.grid.editing.openComments(this.currentCell);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.grid.dispatchEvent(new GridMenuEvent('click', {\n\t\t\tgrid: this.grid,\n\t\t\tcell: this.currentCell,\n\t\t\trow: this.currentRow,\n\t\t\tcolumn: this.currentColumn,\n\t\t\titem: this.currentMenuItems[e.index]\n\t\t}));\n\t}\n\n\tinit() {\n\t\tthis.contextMenu.addEventListener('select', this._onContextMenuClick);\n\t}\n\n\t_onOutlineLevelChange = (e: Event, element: RowModel|ColumnModel) => {\n\t\tconst level = (e.target as NumericInput).value;\n\n\t\tif (element instanceof RowModel) {\n\t\t\tthis.model.getRowIterator(this.grid.selection.range).forEach(row => row.level = level);\n\t\t\tthis.model.rebuildRowTree();\n\t\t} else {\n\t\t\tthis.model.getColumnIterator(this.grid.selection.range).forEach(col => col.level = level);\n\t\t\tthis.model.rebuildColumnTree();\n\t\t}\n\t\t\n\t\tthis.grid.rendering.render(true);\n\t}\n\n\trenderOutlineMenuItem = (element: RowModel|ColumnModel) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tstyle=\"display: flex; flex-direction: row; align-items: center;\"\n\t\t\t\t@mousedown=\"${(e: Event) => e.stopPropagation()}\"\n\t\t\t\t@mouseup=\"${(e: Event) => e.stopPropagation()}\">\n\t\t\t\t<og-numericinput buttons\n\t\t\t\t\tmin=\"0\"\n\t\t\t\t\tmax=\"9\"\n\t\t\t\t\tvalue=\"${element.level}\"\n\t\t\t\t\tstyle=\"margin-right: 2px; text-align: center\"\n\t\t\t\t\t@change=\"${(e: Event) => this._onOutlineLevelChange(e, element)}\">\n\t\t\t\t</og-numericinput>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\topenMenu(position: {x: number, y: number}) {\n\t\tif (this.currentMenuItems.length > 0) {\n\t\t\tthis.contextMenu.items = this.currentMenuItems;\n\t\t\tthis.contextMenu.openAt(position.x, position.y);\n\t\t}\n\t}\n\n\topenColumnMenu(column: ColumnModel, position: {x: number, y: number}) {\n\t\tconst opts = this.grid.options;\n\t\tconst customMenu = opts.menus?.column;\n\t\tlet items: MenuItem[] = [];\n\n\t\tthis.currentColumn = column;\n\n\t\tif (!customMenu?.replace) {\n\t\t\tif (opts.editable && opts.editing.colInsertion) {\n\t\t\t\titems.push({key: 'insertColumn', value: 'Insert column', icon: 'plus'});\n\t\t\t\titems.push({key: 'insertColumnAfter', value: 'Insert column (after)', icon: 'plus'});\n\t\t\t}\n\t\t\t\n\t\t\tif (opts.editable && opts.editing.colDeletion) {\n\t\t\t\titems.push({key: 'deleteColumn', value: 'Delete column', icon: 'minus'});\n\t\t\t}\n\n\t\t\tif (opts.editable && opts.editing.colOutline) {\n\t\t\t\titems.push({key: 'colLevel', icon: 'list-tree', renderer: () => this.renderOutlineMenuItem(column)});\n\t\t\t}\n\t\t}\n\n\t\tif (customMenu) {\n\t\t\tif (items.length > 0) items[items.length - 1].divider = true;\n\t\t\titems = [\n\t\t\t\t...items,\n\t\t\t\t...customMenu.items.filter(item => !item.hidden || !item.hidden(column))\n\t\t\t];\n\t\t}\n\n\t\tthis.currentMenuItems = items;\n\t\tthis.openMenu(position);\n\t}\n\n\topenRowMenu(row: RowModel, position: {x: number, y: number}) {\n\t\tconst opts = this.grid.options;\n\t\tconst customMenu = opts.menus?.row;\n\t\tlet items: MenuItem[] = [];\n\n\t\tthis.currentRow = row;\n\t\t\n\t\tif (!customMenu?.replace) {\n\t\t\tif (opts.editable && opts.editing.rowInsertion) {\n\t\t\t\titems.push({key: 'insertRow', value: 'Insert row', icon: 'plus'});\n\t\t\t\titems.push({key: 'insertRowAfter', value: 'Insert row (after)', icon: 'plus'});\n\t\t\t}\n\t\t\t\n\t\t\tif (opts.editable && opts.editing.rowDeletion) {\n\t\t\t\titems.push({key: 'deleteRow', value: 'Delete row', icon: 'minus'});\n\t\t\t}\n\n\t\t\tif (opts.editable && opts.editing.rowOutline) {\n\t\t\t\titems.push({key: 'rowLevel', icon: 'list-tree', renderer: () => this.renderOutlineMenuItem(row)});\n\t\t\t}\n\t\t}\n\n\t\tif (customMenu) {\n\t\t\tif (items.length > 0) items[items.length - 1].divider = true;\n\t\t\titems = [\n\t\t\t\t...items,\n\t\t\t\t...customMenu.items.filter(item => !item.hidden || !item.hidden(row))\n\t\t\t];\n\t\t}\n\n\t\tthis.currentMenuItems = items;\n\t\tthis.openMenu(position);\n\t}\n\n\topenCellMenu(cell: CellModel, position: {x: number, y: number}) {\n\t\tconst opts = this.grid.options;\n\t\tconst customMenu = opts.menus?.cell;\n\t\tlet items: MenuItem[] = [];\n\n\t\tthis.currentCell = cell;\n\n\t\tif (!customMenu?.replace) {\n\t\t\tif (cell.commentable) {\n\t\t\t\titems.push({key: 'comment', value: msg('Comment'), icon: 'comment'});\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (customMenu) {\n\t\t\tif (items.length > 0) items[items.length - 1].divider = true;\n\t\t\titems = [\n\t\t\t\t...items,\n\t\t\t\t...customMenu.items.filter(item => !item.hidden || !item.hidden(cell))\n\t\t\t];\n\t\t}\n\n\t\tthis.currentMenuItems = items;\n\t\tthis.openMenu(position);\n\t}\n\n}"]}
@@ -0,0 +1,24 @@
1
+ import { ComponentFactory } from "@omegagrid/core";
2
+ import { Grid } from "./grid";
3
+ import { ObjectHost } from "./objectHost";
4
+ import { ObjectModel } from "@omegagrid/grid-core";
5
+ export type CreateObjectOptions = {
6
+ model: ObjectModel;
7
+ createComponent: ComponentFactory;
8
+ };
9
+ export declare class GridObjects {
10
+ readonly grid: Grid;
11
+ get model(): import("@omegagrid/grid-core").GridModel;
12
+ private _maxZIndex;
13
+ private _hosts;
14
+ get hosts(): Set<ObjectHost>;
15
+ private _activeObject;
16
+ get activeObject(): ObjectHost;
17
+ constructor(grid: Grid);
18
+ bringToFront(host: ObjectHost): void;
19
+ _onHostMouseDown: (host: ObjectHost, e: MouseEvent) => void;
20
+ add(options: CreateObjectOptions): ObjectHost;
21
+ delete(_host?: ObjectHost): void;
22
+ updatePostions(): void;
23
+ }
24
+ //# sourceMappingURL=grid.objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.objects.d.ts","sourceRoot":"","sources":["../../src/ui/grid.objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAO,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAe,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,eAAe,EAAE,gBAAgB,CAAC;CAClC,CAAA;AAID,qBAAa,WAAW;IAUX,QAAQ,CAAC,IAAI,EAAE,IAAI;IAR/B,IAAI,KAAK,6CAA6B;IAEtC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAyB;IACvC,IAAI,KAAK,oBAAyB;IAClC,OAAO,CAAC,aAAa,CAAa;IAClC,IAAI,YAAY,eAAgC;gBAE3B,IAAI,EAAE,IAAI;IAM/B,YAAY,CAAC,IAAI,EAAE,UAAU;IAQ7B,gBAAgB,GAAI,MAAM,UAAU,EAAE,GAAG,UAAU,UAkBlD;IAED,GAAG,CAAC,OAAO,EAAE,mBAAmB;IAehC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU;IAKzB,cAAc;CAId"}
@@ -0,0 +1,69 @@
1
+ import { dom } from "@omegagrid/core";
2
+ import { ObjectEvent } from "./objectHost";
3
+ const MIN_Z_INDEX = 1000;
4
+ export class GridObjects {
5
+ get model() { return this.grid.model; }
6
+ get hosts() { return this._hosts; }
7
+ get activeObject() { return this._activeObject; }
8
+ constructor(grid) {
9
+ this.grid = grid;
10
+ this._maxZIndex = MIN_Z_INDEX - 1;
11
+ this._hosts = new Set();
12
+ this._onHostMouseDown = (host, e) => {
13
+ if (host.active)
14
+ return e.stopImmediatePropagation();
15
+ this.hosts.forEach((_, h) => {
16
+ if (h == host) {
17
+ h.active = true;
18
+ this._activeObject = h;
19
+ this.bringToFront(h);
20
+ setTimeout(() => document.addEventListener('mousedown', () => {
21
+ if (!host.active)
22
+ return;
23
+ host.active = false;
24
+ host.dispatchEvent(new ObjectEvent('deactivate', { host: host, object: host.model, grid: this.grid }));
25
+ }, { once: true }), 100);
26
+ }
27
+ else if (h.active) {
28
+ h.active = false;
29
+ h.dispatchEvent(new ObjectEvent('deactivate', { host: h, object: h.model, grid: this.grid }));
30
+ }
31
+ });
32
+ host.dispatchEvent(new ObjectEvent('activate', { host: host, object: host.model, grid: this.grid }));
33
+ };
34
+ grid.addEventListener('grid.object.deactivate', (e) => {
35
+ if (e.host == this._activeObject)
36
+ this._activeObject = null;
37
+ });
38
+ }
39
+ bringToFront(host) {
40
+ const zIndex = host.model.zIndex;
41
+ if (zIndex == this._maxZIndex)
42
+ return;
43
+ this._maxZIndex++;
44
+ this.hosts.add(host);
45
+ dom.setZIndex(host, this._maxZIndex);
46
+ }
47
+ add(options) {
48
+ const host = dom.createElement('og-object-host');
49
+ host.grid = this.grid;
50
+ host.model = options.model;
51
+ host.createComponent = options.createComponent;
52
+ host.addEventListener('mousedown', (e) => this._onHostMouseDown(host, e));
53
+ const zIndex = options.model.zIndex || (this._maxZIndex + 1);
54
+ this._maxZIndex = Math.max(this._maxZIndex, zIndex);
55
+ dom.setZIndex(host, zIndex);
56
+ this.hosts.add(host);
57
+ host.updatePosition();
58
+ this.grid.shadowRoot.appendChild(host);
59
+ return host;
60
+ }
61
+ delete(_host) {
62
+ // host = host || this.activeObject;
63
+ // console.log('delete', host);
64
+ }
65
+ updatePostions() {
66
+ this.hosts.forEach((_, host) => host.updatePosition());
67
+ }
68
+ }
69
+ //# sourceMappingURL=grid.objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.objects.js","sourceRoot":"","sources":["../../src/ui/grid.objects.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentFactory, dom } from \"@omegagrid/core\";\nimport { Grid } from \"./grid\";\nimport { ObjectEvent, ObjectHost } from \"./objectHost\";\nimport { ObjectModel } from \"@omegagrid/grid-core\";\n\nexport type CreateObjectOptions = {\n\tmodel: ObjectModel;\n\tcreateComponent: ComponentFactory;\n}\n\nconst MIN_Z_INDEX = 1000;\n\nexport class GridObjects {\n\n\tget model() { return this.grid.model }\n\n\tprivate _maxZIndex = MIN_Z_INDEX - 1;\n\tprivate _hosts = new Set<ObjectHost>();\n\tget hosts() { return this._hosts }\n\tprivate _activeObject: ObjectHost;\n\tget activeObject() { return this._activeObject }\n\n\tconstructor(readonly grid: Grid) {\n\t\tgrid.addEventListener('grid.object.deactivate', (e: ObjectEvent) => {\n\t\t\tif (e.host == this._activeObject) this._activeObject = null;\n\t\t});\n\t}\n\n\tbringToFront(host: ObjectHost) {\n\t\tconst zIndex = host.model.zIndex;\n\t\tif (zIndex == this._maxZIndex) return;\n\t\tthis._maxZIndex++;\n\t\tthis.hosts.add(host);\n\t\tdom.setZIndex(host, this._maxZIndex);\n\t}\n\n\t_onHostMouseDown = (host: ObjectHost, e: MouseEvent) => {\n\t\tif (host.active) return e.stopImmediatePropagation();\n\t\tthis.hosts.forEach((_, h) => {\n\t\t\tif (h == host) {\n\t\t\t\th.active = true;\n\t\t\t\tthis._activeObject = h;\n\t\t\t\tthis.bringToFront(h);\n\t\t\t\tsetTimeout(() => document.addEventListener('mousedown', () => {\n\t\t\t\t\tif (!host.active) return;\n\t\t\t\t\thost.active = false;\n\t\t\t\t\thost.dispatchEvent(new ObjectEvent('deactivate', {host: host, object: host.model, grid: this.grid}));\n\t\t\t\t}, {once: true}), 100);\n\t\t\t} else if (h.active) {\n\t\t\t\th.active = false;\n\t\t\t\th.dispatchEvent(new ObjectEvent('deactivate', {host: h, object: h.model, grid: this.grid}));\n\t\t\t}\n\t\t});\n\t\thost.dispatchEvent(new ObjectEvent('activate', {host: host, object: host.model, grid: this.grid}));\n\t}\n\n\tadd(options: CreateObjectOptions) {\n\t\tconst host = dom.createElement<ObjectHost>('og-object-host');\n\t\thost.grid = this.grid;\n\t\thost.model = options.model;\n\t\thost.createComponent = options.createComponent;\n\t\thost.addEventListener('mousedown', (e: MouseEvent) => this._onHostMouseDown(host, e));\n\t\tconst zIndex = options.model.zIndex || (this._maxZIndex + 1);\n\t\tthis._maxZIndex = Math.max(this._maxZIndex, zIndex);\n\t\tdom.setZIndex(host, zIndex);\n\t\tthis.hosts.add(host);\n\t\thost.updatePosition();\n\t\tthis.grid.shadowRoot.appendChild(host);\n\t\treturn host;\n\t}\n\n\tdelete(_host?: ObjectHost) {\n\t\t// host = host || this.activeObject;\n\t\t// console.log('delete', host);\n\t}\n\n\tupdatePostions() {\n\t\tthis.hosts.forEach((_, host) => host.updatePosition());\n\t}\n\n}"]}
@@ -0,0 +1,84 @@
1
+ import { Direction } from "@omegagrid/core";
2
+ import { CellModel, ColumnModel, RowModel, CellRange, RangeAddress } from "@omegagrid/grid-core";
3
+ import { Grid } from "./grid";
4
+ import { Table, TableRenderOptions } from "./table";
5
+ import { RequestFilters } from "../gridAdapter";
6
+ export type RefreshOptions = {
7
+ vertical?: boolean;
8
+ horizontal?: boolean;
9
+ rerenderTable?: boolean;
10
+ };
11
+ export declare class GridRendering {
12
+ readonly grid: Grid;
13
+ requireVerticalUpdate: boolean;
14
+ requireHorizontalUpdate: boolean;
15
+ touchStartX: Touch;
16
+ touchStartY: Touch;
17
+ resizing: boolean;
18
+ currentResizedColumn: ColumnModel;
19
+ currentResizedColumnWidth: number;
20
+ currentResizedRow: RowModel;
21
+ currentResizedRowHeight: number;
22
+ private _vScrolling;
23
+ get vScrolling(): boolean;
24
+ private _hScrolling;
25
+ get hScrolling(): boolean;
26
+ get model(): import("@omegagrid/grid-core").GridModel;
27
+ get selection(): import("@omegagrid/grid-core").SelectionModel;
28
+ get table(): Table;
29
+ constructor(grid: Grid);
30
+ readonly debounceRenderCells: {
31
+ (this: unknown, ...args: [update?: TableRenderOptions] & any[]): Promise<void>;
32
+ cancel: (reason?: any) => void;
33
+ };
34
+ readonly debounceCalculateViewport: {
35
+ (this: unknown, ...args: [recalculate?: boolean] & any[]): Promise<void>;
36
+ cancel: (reason?: any) => void;
37
+ };
38
+ isLastRowInViewport(): boolean;
39
+ renderCells(update?: TableRenderOptions): void;
40
+ renderAll(rerenderTable?: boolean): void;
41
+ render(rerenderTable?: boolean): Promise<void>;
42
+ updateRange(range: CellRange, recalculate?: boolean): void;
43
+ updateCell(cell: CellModel, recalculate?: boolean): void;
44
+ updateSpilledCells(cell: CellModel): void;
45
+ updateCells(cells: Iterable<CellModel>, recalculate?: boolean): void;
46
+ updateHeaders(): void;
47
+ calculateViewport(recalculate?: boolean): void;
48
+ updateSliders(): void;
49
+ isVerticalScrollingEnabled(): boolean;
50
+ isHorizontalScrollingEnabled(): boolean;
51
+ updateSliderVisibility(): void;
52
+ hideSliders(): void;
53
+ scrollVerticalByPixels(pixels: number): void;
54
+ scrollHorizontalByPixels(pixels: number): void;
55
+ updateCellSelectionRange(): void;
56
+ getAdapterRequestFilters(): RequestFilters;
57
+ toggleRow(index: number, dispatchEvent?: boolean): Promise<void>;
58
+ toggleColumn(index: number, dispatchEvent?: boolean): void;
59
+ setRowExpandLevel(level: number): void;
60
+ setColumnExpandLevel(level: number): void;
61
+ exportHTML(): Promise<string>;
62
+ autoscrollDirection: Direction;
63
+ autoscrollTimer: number;
64
+ autoscrollValue: number;
65
+ stopAutoscroll(): void;
66
+ startAutoscroll(): void;
67
+ autoscroll(moousePosition: {
68
+ x: number;
69
+ y: number;
70
+ }): void;
71
+ load(requestFilters?: RequestFilters): Promise<void>;
72
+ loadNextPage(parentIndex?: number, forceLoad?: boolean): Promise<void>;
73
+ get totalSize(): {
74
+ width: number;
75
+ height: number;
76
+ };
77
+ private autofitDiv;
78
+ autofitColumn(c: number | ColumnModel, visibleValuesOnly?: boolean, rerender?: boolean): void;
79
+ autofitColumns(visibleValuesOnly?: boolean): void;
80
+ autofitRow(r: number | RowModel, visibleValuesOnly?: boolean, rerender?: boolean): void;
81
+ autofitRows(visibleValuesOnly?: boolean): void;
82
+ scrollTo(r: number | RangeAddress, c?: number): void;
83
+ }
84
+ //# sourceMappingURL=grid.rendering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.rendering.d.ts","sourceRoot":"","sources":["../../src/ui/grid.rendering.ts"],"names":[],"mappings":"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"}