@revolist/revogrid 3.2.4 → 3.2.7

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 (213) hide show
  1. package/custom-element/index.js +29217 -0
  2. package/custom-element/resize-observer.js +503 -0
  3. package/dist/cjs/css-shim-9f5bc84d.js +9 -0
  4. package/dist/cjs/debounce-6cea2774.js +578 -0
  5. package/dist/cjs/dom-fcb646f0.js +78 -0
  6. package/dist/{revo-grid/index-8a604c17.js → cjs/index-cb904e00.js} +230 -1445
  7. package/dist/cjs/index.cjs.js +5 -0
  8. package/dist/cjs/loader.cjs.js +38 -0
  9. package/dist/cjs/resize-observer-bf327d6a.js +507 -0
  10. package/dist/cjs/revo-grid.cjs.js +79 -0
  11. package/dist/cjs/revo-grid_11.cjs.entry.js +28301 -0
  12. package/dist/cjs/revogr-clipboard.cjs.entry.js +56 -0
  13. package/dist/cjs/revogr-filter-panel.cjs.entry.js +278 -0
  14. package/dist/collection/collection-manifest.json +25 -0
  15. package/dist/collection/components/button/button.js +7 -0
  16. package/dist/collection/components/clipboard/revogr-clipboard.js +124 -0
  17. package/dist/collection/components/data/cellRenderer.js +27 -0
  18. package/dist/{revo-grid/columnService-91e552ba.js → collection/components/data/columnService.js} +6 -8
  19. package/dist/collection/components/data/revogr-data-style.css +135 -0
  20. package/dist/collection/components/data/revogr-data.js +325 -0
  21. package/dist/collection/components/data/rowRenderer.js +9 -0
  22. package/dist/collection/components/header/headerCellRenderer.js +29 -0
  23. package/dist/collection/components/header/headerRenderer.js +48 -0
  24. package/dist/collection/components/header/revogr-header-style.css +198 -0
  25. package/dist/collection/components/header/revogr-header.js +300 -0
  26. package/dist/collection/components/order/orderRenderer.js +53 -0
  27. package/dist/collection/components/order/revogr-order-editor.js +361 -0
  28. package/dist/collection/components/order/rowOrderService.js +71 -0
  29. package/dist/collection/components/overlay/autofill.service.js +185 -0
  30. package/dist/collection/components/overlay/clipboard.service.js +42 -0
  31. package/dist/collection/components/overlay/editors/edit.utils.js +8 -0
  32. package/dist/collection/components/overlay/editors/text.js +38 -0
  33. package/dist/collection/components/overlay/keyboard.service.js +131 -0
  34. package/dist/collection/components/overlay/revogr-edit-style.css +86 -0
  35. package/dist/collection/components/overlay/revogr-edit.js +162 -0
  36. package/dist/collection/components/overlay/revogr-overlay-selection.js +729 -0
  37. package/dist/collection/components/overlay/revogr-overlay-style.css +98 -0
  38. package/dist/{revo-grid/selection.utils-a9932db6.js → collection/components/overlay/selection.utils.js} +9 -12
  39. package/dist/collection/components/revo-grid/revo-grid-style.css +544 -0
  40. package/dist/collection/components/revo-grid/revo-grid.js +2226 -0
  41. package/dist/collection/components/revo-grid/viewport.helpers.js +14 -0
  42. package/dist/collection/components/revo-grid/viewport.interfaces.js +4 -0
  43. package/dist/collection/components/revo-grid/viewport.js +21 -0
  44. package/dist/collection/components/revo-grid/viewport.resize.service.js +24 -0
  45. package/dist/collection/components/revo-grid/viewport.scrolling.service.js +63 -0
  46. package/dist/collection/components/revo-grid/viewport.section.js +31 -0
  47. package/dist/collection/components/revo-grid/viewport.service.js +212 -0
  48. package/dist/collection/components/rowHeaders/revogr-row-headers.js +213 -0
  49. package/dist/collection/components/rowHeaders/row-header-render.js +4 -0
  50. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +137 -0
  51. package/dist/collection/components/scroll/revogr-viewport-scroll.js +402 -0
  52. package/dist/collection/components/scrollable/revogr-scroll-style.css +104 -0
  53. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +256 -0
  54. package/dist/collection/components/selection-focus/revogr-focus-style.css +77 -0
  55. package/dist/collection/components/selection-focus/revogr-focus.js +106 -0
  56. package/dist/collection/components/selection-temp-range/revogr-temp-range-style.css +98 -0
  57. package/dist/collection/components/selection-temp-range/revogr-temp-range.js +141 -0
  58. package/dist/{revo-grid/app-globals-7e6866ba.js → collection/global/global.js} +2 -8
  59. package/dist/collection/index.js +4 -0
  60. package/dist/collection/plugins/autoSizeColumn.js +233 -0
  61. package/dist/collection/plugins/basePlugin.js +30 -0
  62. package/dist/{revo-grid/dispatcher-891af82e.js → collection/plugins/dispatcher.js} +2 -4
  63. package/dist/collection/plugins/export/csv.js +71 -0
  64. package/dist/collection/plugins/export/export.plugin.js +168 -0
  65. package/dist/collection/plugins/export/types.js +4 -0
  66. package/dist/collection/plugins/filter/conditions/equal.js +20 -0
  67. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +13 -0
  68. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +10 -0
  69. package/dist/collection/plugins/filter/conditions/number/lessThan.js +15 -0
  70. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +10 -0
  71. package/dist/collection/plugins/filter/conditions/set.js +6 -0
  72. package/dist/collection/plugins/filter/conditions/string/beginswith.js +20 -0
  73. package/dist/collection/plugins/filter/conditions/string/contains.js +21 -0
  74. package/dist/{revo-grid/filter.button-74c1cd9c.js → collection/plugins/filter/filter.button.js} +10 -13
  75. package/dist/collection/plugins/filter/filter.plugin.js +259 -0
  76. package/dist/collection/plugins/filter/filter.pop.js +488 -0
  77. package/dist/collection/plugins/filter/filter.service.js +47 -0
  78. package/dist/collection/plugins/filter/filter.style.css +239 -0
  79. package/dist/collection/plugins/filter/filter.types.js +4 -0
  80. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +33 -0
  81. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +39 -0
  82. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +24 -0
  83. package/dist/collection/plugins/groupingRow/grouping.const.js +13 -0
  84. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +79 -0
  85. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +261 -0
  86. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +32 -0
  87. package/dist/collection/plugins/groupingRow/grouping.row.types.js +4 -0
  88. package/dist/collection/plugins/groupingRow/grouping.service.js +158 -0
  89. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +60 -0
  90. package/dist/collection/plugins/moveColumn/columnDragPlugin.js +151 -0
  91. package/dist/collection/plugins/moveColumn/columnOrderHandler.js +63 -0
  92. package/dist/collection/plugins/sorting/sorting.plugin.js +184 -0
  93. package/dist/collection/plugins/sorting/sorting.sign.js +9 -0
  94. package/dist/collection/plugins/stretchPlugin.js +71 -0
  95. package/dist/collection/plugins/trimmed/trimmed.plugin.js +35 -0
  96. package/dist/collection/services/cell.helpers.js +10 -0
  97. package/dist/collection/services/column.data.provider.js +191 -0
  98. package/dist/collection/services/data.provider.js +50 -0
  99. package/dist/collection/services/dimension.provider.js +81 -0
  100. package/dist/{revo-grid/localScrollService-e9b73323.js → collection/services/localScrollService.js} +2 -5
  101. package/dist/collection/services/resizable.directive.js +255 -0
  102. package/dist/collection/services/selection.store.connector.js +216 -0
  103. package/dist/collection/services/viewport.provider.js +17 -0
  104. package/dist/collection/store/dataSource/data.proxy.js +37 -0
  105. package/dist/collection/store/dataSource/data.store.js +130 -0
  106. package/dist/collection/store/dimension/dimension.helpers.js +110 -0
  107. package/dist/collection/store/dimension/dimension.store.js +62 -0
  108. package/dist/collection/store/selection/selection.helpers.js +56 -0
  109. package/dist/collection/store/selection/selection.store.js +71 -0
  110. package/dist/collection/store/selection/selection.store.service.js +38 -0
  111. package/dist/collection/store/storeTypes.js +8 -0
  112. package/dist/{revo-grid/viewport.store-ffaaab6d.js → collection/store/viewPort/viewport.helpers.js} +9 -132
  113. package/dist/collection/store/viewPort/viewport.store.js +124 -0
  114. package/dist/collection/themeManager/theme.compact.js +8 -0
  115. package/dist/collection/themeManager/theme.default.js +8 -0
  116. package/dist/collection/themeManager/theme.material.js +8 -0
  117. package/dist/{revo-grid/themeService-ddaaa364.js → collection/themeManager/themeService.js} +6 -23
  118. package/dist/collection/utils/closestPolifill.js +21 -0
  119. package/dist/collection/utils/consts.js +22 -0
  120. package/dist/collection/utils/generateAlphabetHeader.js +23 -0
  121. package/dist/collection/utils/keyCodes.js +73 -0
  122. package/dist/collection/utils/keyCodes.utils.js +67 -0
  123. package/dist/collection/utils/platform.js +8 -0
  124. package/dist/collection/utils/resizeObserver.js +9 -0
  125. package/dist/collection/utils/store.utils.js +10 -0
  126. package/dist/{revo-grid/utils-2c3b3857.js → collection/utils/utils.js} +8 -10
  127. package/dist/collection/utilsExternal/generate-data.js +132 -0
  128. package/dist/esm/css-shim-e1e1ea5e.js +7 -0
  129. package/dist/esm/debounce-e4e6dd45.js +561 -0
  130. package/dist/esm/dom-21bd1807.js +76 -0
  131. package/dist/esm/index-6f753b3c.js +1817 -0
  132. package/dist/esm/index.js +3 -0
  133. package/dist/esm/loader.js +34 -0
  134. package/dist/esm/polyfills/core-js.js +11 -0
  135. package/dist/esm/polyfills/css-shim.js +1 -0
  136. package/dist/esm/polyfills/dom.js +79 -0
  137. package/dist/esm/polyfills/es5-html-element.js +1 -0
  138. package/dist/esm/polyfills/index.js +34 -0
  139. package/dist/esm/polyfills/system.js +6 -0
  140. package/dist/esm/resize-observer-00c48d78.js +503 -0
  141. package/dist/esm/revo-grid.js +77 -0
  142. package/dist/{revo-grid/lodash-a0ab4cdd.js → esm/revo-grid_11.entry.js} +25351 -14282
  143. package/dist/esm/revogr-clipboard.entry.js +52 -0
  144. package/dist/esm/revogr-filter-panel.entry.js +274 -0
  145. package/dist/esm-es5/css-shim-e1e1ea5e.js +4 -0
  146. package/dist/esm-es5/debounce-e4e6dd45.js +4 -0
  147. package/dist/esm-es5/dom-21bd1807.js +24 -0
  148. package/dist/esm-es5/index-6f753b3c.js +4 -0
  149. package/dist/esm-es5/index.js +3 -0
  150. package/dist/esm-es5/loader.js +4 -0
  151. package/dist/esm-es5/resize-observer-00c48d78.js +4 -0
  152. package/dist/esm-es5/revo-grid.js +4 -0
  153. package/dist/esm-es5/revo-grid_11.entry.js +4 -0
  154. package/dist/esm-es5/revogr-clipboard.entry.js +4 -0
  155. package/dist/esm-es5/revogr-filter-panel.entry.js +4 -0
  156. package/dist/index.cjs.js +1 -0
  157. package/dist/index.js +1 -0
  158. package/dist/revo-grid/css-shim-bcf89cc0.system.js +4 -0
  159. package/dist/revo-grid/css-shim-e1e1ea5e.js +4 -0
  160. package/dist/revo-grid/debounce-5a33c710.system.js +4 -0
  161. package/dist/revo-grid/debounce-726bdadb.js +4 -0
  162. package/dist/revo-grid/dom-21bd1807.js +5 -59
  163. package/dist/revo-grid/dom-726246e2.system.js +24 -0
  164. package/dist/revo-grid/index-f14b41a0.system.js +5 -0
  165. package/dist/revo-grid/index-f30d1de1.js +5 -0
  166. package/dist/revo-grid/index.system.js +4 -0
  167. package/dist/revo-grid/resize-observer-00c48d78.js +1 -500
  168. package/dist/revo-grid/resize-observer-8af0bc0e.system.js +4 -0
  169. package/dist/revo-grid/revo-grid.esm.js +1 -130
  170. package/dist/revo-grid/revo-grid.js +133 -0
  171. package/dist/revo-grid/revo-grid.system.js +4 -0
  172. package/dist/revo-grid/revo-grid_11.entry.js +4 -0
  173. package/dist/revo-grid/revo-grid_11.system.entry.js +4 -0
  174. package/dist/revo-grid/revogr-clipboard.entry.js +1 -49
  175. package/dist/revo-grid/revogr-clipboard.system.entry.js +4 -0
  176. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -274
  177. package/dist/revo-grid/revogr-filter-panel.system.entry.js +4 -0
  178. package/dist/types/components/revo-grid/revo-grid.d.ts +0 -1
  179. package/dist/types/components.d.ts +2 -2
  180. package/loader/cdn.js +3 -1
  181. package/loader/index.cjs.js +3 -1
  182. package/loader/index.d.ts +0 -1
  183. package/loader/index.es2017.js +3 -1
  184. package/loader/index.js +3 -1
  185. package/package.json +1 -1
  186. package/dist/revo-grid/_baseIteratee-af30b221.js +0 -2070
  187. package/dist/revo-grid/consts-ef824e6f.js +0 -46
  188. package/dist/revo-grid/css-shim-5387c708.js +0 -7
  189. package/dist/revo-grid/data.store-3263fff9.js +0 -557
  190. package/dist/revo-grid/debounce-aaa4b4da.js +0 -217
  191. package/dist/revo-grid/dimension.helpers-a7944fc4.js +0 -340
  192. package/dist/revo-grid/each-0378e5a3.js +0 -180
  193. package/dist/revo-grid/identity-c8c7d3d8.js +0 -26
  194. package/dist/revo-grid/isString-a51066b5.js +0 -34
  195. package/dist/revo-grid/isSymbol-e4b5dafe.js +0 -247
  196. package/dist/revo-grid/keyCodes.utils-bd06e3ba.js +0 -299
  197. package/dist/revo-grid/keys-70b7c240.js +0 -561
  198. package/dist/revo-grid/revo-grid.entry.js +0 -3484
  199. package/dist/revo-grid/revogr-data.entry.js +0 -152
  200. package/dist/revo-grid/revogr-edit.entry.js +0 -105
  201. package/dist/revo-grid/revogr-focus.entry.js +0 -41
  202. package/dist/revo-grid/revogr-header.entry.js +0 -560
  203. package/dist/revo-grid/revogr-order-editor.entry.js +0 -175
  204. package/dist/revo-grid/revogr-overlay-selection.entry.js +0 -711
  205. package/dist/revo-grid/revogr-row-headers.entry.js +0 -73
  206. package/dist/revo-grid/revogr-scroll-virtual.entry.js +0 -114
  207. package/dist/revo-grid/revogr-temp-range.entry.js +0 -73
  208. package/dist/revo-grid/revogr-viewport-scroll.entry.js +0 -340
  209. package/dist/revo-grid/selection.store.connector-2b613fd0.js +0 -503
  210. package/dist/revo-grid/shadow-css-602a09db.js +0 -390
  211. package/dist/revo-grid/toInteger-9e6cbfd2.js +0 -107
  212. package/dist/revo-grid/toNumber-913b0b72.js +0 -105
  213. package/dist/revo-grid/viewport.helpers-49d3f031.js +0 -16
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ export const HEADER_SLOT = 'header';
5
+ export const FOOTER_SLOT = 'footer';
6
+ export const CONTENT_SLOT = 'content';
7
+ export const DATA_SLOT = 'data';
8
+ /** Receive last visible in viewport by required type */
9
+ export function getLastCell(data, rowType) {
10
+ return {
11
+ x: data.viewports[data.colType].store.get('realCount'),
12
+ y: data.viewports[rowType].store.get('realCount'),
13
+ };
14
+ }
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ export {};
@@ -0,0 +1,21 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ import { h } from '@stencil/core';
5
+ import OrderRenderer from '../order/orderRenderer';
6
+ export const RevoViewPort = ({ viewports, dimensions, orderRef, nakedClick, registerElement, onScroll }, children) => {
7
+ const viewPortClick = (e, el) => {
8
+ if (el === e.target) {
9
+ nakedClick(e);
10
+ }
11
+ };
12
+ let el;
13
+ return [
14
+ h("div", { class: "main-viewport", ref: e => el = e, onClick: e => viewPortClick(e, el) },
15
+ h("div", { class: "viewports" },
16
+ children,
17
+ h("revogr-scroll-virtual", { class: "vertical", dimension: "rgRow", viewportStore: viewports['rgRow'].store, dimensionStore: dimensions['rgRow'].store, ref: el => registerElement(el, 'rowScroll'), onScrollVirtual: e => onScroll(e.detail) }),
18
+ h(OrderRenderer, { ref: orderRef }))),
19
+ h("revogr-scroll-virtual", { class: "horizontal", dimension: "rgCol", viewportStore: viewports['rgCol'].store, dimensionStore: dimensions['rgCol'].store, ref: el => registerElement(el, 'colScroll'), onScrollVirtual: e => onScroll(e.detail) }),
20
+ ];
21
+ };
@@ -0,0 +1,24 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ import throttle from 'lodash/throttle';
5
+ import { resizeObserver } from '../../utils/resizeObserver';
6
+ export default class GridResizeService {
7
+ constructor(el, events) {
8
+ this.events = events;
9
+ this.resizeObserver = null;
10
+ this.resize = throttle((e, o) => { var _a; return (_a = this.events) === null || _a === void 0 ? void 0 : _a.resize(e, o); }, 10);
11
+ this.init(el);
12
+ }
13
+ async init(el) {
14
+ var _a;
15
+ await resizeObserver();
16
+ this.resizeObserver = new ResizeObserver(this.resize);
17
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(el);
18
+ }
19
+ destroy() {
20
+ var _a;
21
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
22
+ this.resizeObserver = null;
23
+ }
24
+ }
@@ -0,0 +1,63 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ export default class GridScrollingService {
5
+ constructor(setViewport) {
6
+ this.setViewport = setViewport;
7
+ this.elements = {};
8
+ }
9
+ async onScroll(e, key) {
10
+ let newEvent;
11
+ for (let elKey in this.elements) {
12
+ if (this.isPinnedColumn(key) && e.dimension === 'rgCol') {
13
+ if (elKey === key || !e.delta) {
14
+ continue;
15
+ }
16
+ for (let el of this.elements[elKey]) {
17
+ el.changeScroll && (newEvent = el.changeScroll(e));
18
+ }
19
+ }
20
+ else if (e.dimension === 'rgCol' && elKey === 'headerRow') {
21
+ continue;
22
+ }
23
+ else {
24
+ for (let el of this.elements[elKey]) {
25
+ el.setScroll(e);
26
+ }
27
+ }
28
+ }
29
+ let event = e;
30
+ if (newEvent) {
31
+ event = await newEvent;
32
+ }
33
+ this.setViewport(event);
34
+ }
35
+ isPinnedColumn(key) {
36
+ return ['colPinStart', 'colPinEnd'].indexOf(key) > -1;
37
+ }
38
+ registerElements(els) {
39
+ this.elements = els;
40
+ }
41
+ /**
42
+ * Register new element for farther scroll support
43
+ * @param el - can be null if holder removed
44
+ * @param key - element key
45
+ */
46
+ registerElement(el, key) {
47
+ if (!this.elements[key]) {
48
+ this.elements[key] = [];
49
+ }
50
+ // new element added
51
+ if (el) {
52
+ this.elements[key].push(el);
53
+ }
54
+ else if (this.elements[key]) {
55
+ // element removed
56
+ delete this.elements[key];
57
+ }
58
+ }
59
+ unregister() {
60
+ delete this.elements;
61
+ this.elements = {};
62
+ }
63
+ }
@@ -0,0 +1,31 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ import { h } from '@stencil/core';
5
+ import { UUID } from '../../utils/consts';
6
+ import { DATA_SLOT, HEADER_SLOT } from './viewport.helpers';
7
+ /**
8
+ * All render based on sections
9
+ * First we render vertical parts - pinned start, data, pinned end
10
+ * Per each column we render data collections: headers, pinned top, center data, pinned bottom
11
+ */
12
+ export const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, registerElement, onEdit, onScroll }) => {
13
+ const viewPortHtml = [];
14
+ /** render viewports columns */
15
+ for (let view of columns) {
16
+ /** render viewports rows */
17
+ const dataViews = [
18
+ h("revogr-header", Object.assign({ viewportCol: view.viewportCol }, view.headerProp, { selectionStore: view.columnSelectionStore, slot: HEADER_SLOT, columnFilter: columnFilter, canResize: resize })),
19
+ ];
20
+ view.dataPorts.forEach((data, j) => {
21
+ const key = view.prop.key + (j + 1);
22
+ const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { slot: data.slot, selectionStore: data.segmentSelectionStore, editors: editors, readonly: readonly, range: range, useClipboard: useClipboard, onSetEdit: ({ detail }) => onEdit(detail) }),
23
+ h("revogr-data", Object.assign({}, data, { [UUID]: data.uuid }, { key: key, readonly: readonly, range: range, rowClass: rowClass, rowSelectionStore: data.rowSelectionStore, slot: DATA_SLOT })),
24
+ h("revogr-temp-range", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }),
25
+ h("revogr-focus", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
26
+ dataViews.push(dataView);
27
+ });
28
+ viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => registerElement(el, view.prop.key), onScrollViewport: e => onScroll(e.detail, view.prop.key) }), dataViews));
29
+ }
30
+ return viewPortHtml;
31
+ };
@@ -0,0 +1,212 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ import { EMPTY_INDEX } from '../../services/selection.store.connector';
5
+ import { getSourceItem, getVisibleSourceItem } from '../../store/dataSource/data.store';
6
+ import { columnTypes, rowTypes } from '../../store/storeTypes';
7
+ import { UUID } from '../../utils/consts';
8
+ import { CONTENT_SLOT, FOOTER_SLOT, getLastCell, HEADER_SLOT } from './viewport.helpers';
9
+ import { reduce } from 'lodash';
10
+ export default class ViewportService {
11
+ constructor(sv, contentHeight) {
12
+ var _a, _b;
13
+ this.sv = sv;
14
+ this.storesByType = {};
15
+ this.storesXToType = {};
16
+ this.storesYToType = {};
17
+ (_a = this.sv.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeUpdate();
18
+ this.columns = this.getViewportColumnData(contentHeight);
19
+ (_b = this.sv.scrollingService) === null || _b === void 0 ? void 0 : _b.unregister();
20
+ }
21
+ onColumnResize(type, e, store) {
22
+ var _a;
23
+ (_a = this.sv.dimensionProvider) === null || _a === void 0 ? void 0 : _a.setDimensionSize(type, e.detail);
24
+ const changedItems = reduce(e.detail || {}, (r, size, index) => {
25
+ const item = getSourceItem(store, parseInt(index, 10));
26
+ if (item) {
27
+ r[item.prop] = Object.assign(Object.assign({}, item), { size });
28
+ }
29
+ return r;
30
+ }, {});
31
+ this.sv.resize(changedItems);
32
+ }
33
+ /**
34
+ * Transform data from stores and apply it to different components
35
+ */
36
+ getViewportColumnData(contentHeight) {
37
+ const columns = [];
38
+ let x = 0; // we increase x only if column present
39
+ columnTypes.forEach(val => {
40
+ const colStore = this.sv.columnProvider.stores[val].store;
41
+ // only columns that have data show
42
+ if (!colStore.get('items').length) {
43
+ return;
44
+ }
45
+ const column = {
46
+ colType: val,
47
+ position: { x, y: 1 },
48
+ contentHeight,
49
+ fixWidth: val !== 'rgCol',
50
+ uuid: `${this.sv.uuid}-${x}`,
51
+ viewports: this.sv.viewportProvider.stores,
52
+ dimensions: this.sv.dimensionProvider.stores,
53
+ rowStores: this.sv.dataProvider.stores,
54
+ colStore,
55
+ onHeaderresize: e => this.onColumnResize(val, e, colStore)
56
+ };
57
+ if (val === 'rgCol') {
58
+ column.onResizeViewport = (e) => { var _a; return (_a = this.sv.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, { virtualSize: e.detail.size }); };
59
+ }
60
+ const colData = this.gatherColumnData(column);
61
+ const columnSelectionStore = this.registerCol(colData.position.x, val);
62
+ // render per each column data collections vertically
63
+ const dataPorts = this.dataViewPort(column).reduce((r, rgRow) => {
64
+ // register selection store for Segment
65
+ const segmentSelection = this.registerSegment(rgRow.position);
66
+ segmentSelection.setLastCell(rgRow.lastCell);
67
+ // register selection store for Row
68
+ const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);
69
+ const rowDef = Object.assign(Object.assign({}, rgRow), { rowSelectionStore, segmentSelectionStore: segmentSelection.store, ref: (e) => this.sv.selectionStoreConnector.registerSection(e), onSetRange: e => segmentSelection.setRangeArea(e.detail), onSetTempRange: e => segmentSelection.setTempArea(e.detail), onFocusCell: e => {
70
+ segmentSelection.clearFocus();
71
+ this.sv.selectionStoreConnector.focus(segmentSelection, e.detail);
72
+ } });
73
+ r.push(rowDef);
74
+ return r;
75
+ }, []);
76
+ columns.push(Object.assign(Object.assign({}, colData), { columnSelectionStore,
77
+ dataPorts }));
78
+ x++;
79
+ });
80
+ return columns;
81
+ }
82
+ /** register selection store for Segment */
83
+ registerSegment(position) {
84
+ return this.sv.selectionStoreConnector.register(position);
85
+ }
86
+ /** register selection store for Row */
87
+ registerRow(y, type) {
88
+ // link to position
89
+ this.storesByType[type] = y;
90
+ this.storesYToType[y] = type;
91
+ return this.sv.selectionStoreConnector.registerRow(y).store;
92
+ }
93
+ /** register selection store for Column */
94
+ registerCol(x, type) {
95
+ // link to position
96
+ this.storesByType[type] = x;
97
+ this.storesXToType[x] = type;
98
+ return this.sv.selectionStoreConnector.registerColumn(x).store;
99
+ }
100
+ /** Collect Column data */
101
+ gatherColumnData(data) {
102
+ const parent = data.uuid;
103
+ const realSize = data.dimensions[data.colType].store.get('realSize');
104
+ const prop = {
105
+ contentWidth: realSize,
106
+ class: data.colType,
107
+ [`${UUID}`]: data.uuid,
108
+ contentHeight: data.contentHeight,
109
+ key: data.colType,
110
+ onResizeViewport: data.onResizeViewport,
111
+ };
112
+ if (data.fixWidth) {
113
+ prop.style = { minWidth: `${realSize}px` };
114
+ }
115
+ const headerProp = {
116
+ parent,
117
+ colData: getVisibleSourceItem(data.colStore),
118
+ dimensionCol: data.dimensions[data.colType].store,
119
+ groups: data.colStore.get('groups'),
120
+ groupingDepth: data.colStore.get('groupingDepth'),
121
+ onHeaderresize: data.onHeaderresize,
122
+ };
123
+ return {
124
+ prop,
125
+ position: data.position,
126
+ headerProp,
127
+ parent,
128
+ viewportCol: data.viewports[data.colType].store,
129
+ };
130
+ }
131
+ /** Collect Row data */
132
+ dataViewPort(data) {
133
+ const slots = {
134
+ rowPinStart: HEADER_SLOT,
135
+ rgRow: CONTENT_SLOT,
136
+ rowPinEnd: FOOTER_SLOT,
137
+ };
138
+ // y position for selection
139
+ let y = 0;
140
+ return rowTypes.reduce((r, type) => {
141
+ // filter out empty sources, we still need to return source to keep slot working
142
+ const isPresent = data.viewports[type].store.get('realCount') || type === 'rgRow';
143
+ const rgCol = Object.assign(Object.assign({}, data), { position: Object.assign(Object.assign({}, data.position), { y: isPresent ? y : EMPTY_INDEX }) });
144
+ r.push(this.dataPartition(rgCol, type, slots[type], type !== 'rgRow'));
145
+ if (isPresent) {
146
+ y++;
147
+ }
148
+ return r;
149
+ }, []);
150
+ }
151
+ dataPartition(data, type, slot, fixed) {
152
+ return {
153
+ colData: data.colStore,
154
+ viewportCol: data.viewports[data.colType].store,
155
+ viewportRow: data.viewports[type].store,
156
+ lastCell: getLastCell(data, type),
157
+ slot,
158
+ type,
159
+ canDrag: !fixed,
160
+ position: data.position,
161
+ uuid: `${data.uuid}-${data.position.x}-${data.position.y}`,
162
+ dataStore: data.rowStores[type].store,
163
+ dimensionCol: data.dimensions[data.colType].store,
164
+ dimensionRow: data.dimensions[type].store,
165
+ style: fixed ? { height: `${data.dimensions[type].store.get('realSize')}px` } : undefined,
166
+ };
167
+ }
168
+ scrollToCell(cell) {
169
+ for (let key in cell) {
170
+ const coordinate = cell[key];
171
+ this.sv.scrollingService.onScroll({ dimension: key === 'x' ? 'rgCol' : 'rgRow', coordinate });
172
+ }
173
+ }
174
+ /**
175
+ * Clear current grid focus
176
+ */
177
+ clearFocused() {
178
+ this.sv.selectionStoreConnector.clearAll();
179
+ }
180
+ clearEdit() {
181
+ this.sv.selectionStoreConnector.setEdit(false);
182
+ }
183
+ getFocused() {
184
+ const focused = this.sv.selectionStoreConnector.focusedStore;
185
+ if (!focused) {
186
+ return null;
187
+ }
188
+ const colType = this.storesXToType[focused.position.x];
189
+ const column = this.sv.columnProvider.getColumn(focused.cell.x, colType);
190
+ const rowType = this.storesYToType[focused.position.x];
191
+ const model = this.sv.dataProvider.getModel(focused.cell.x, rowType);
192
+ return {
193
+ column,
194
+ model,
195
+ cell: focused.cell,
196
+ colType,
197
+ rowType
198
+ };
199
+ }
200
+ getSelectedRange() {
201
+ return this.sv.selectionStoreConnector.selectedRange;
202
+ }
203
+ setEdit(rowIndex, colIndex, colType, rowType) {
204
+ var _a;
205
+ const stores = this.storesByType;
206
+ const storeCoordinate = {
207
+ x: stores[colType],
208
+ y: stores[rowType],
209
+ };
210
+ (_a = this.sv.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEditByCell(storeCoordinate, { x: colIndex, y: rowIndex });
211
+ }
212
+ }
@@ -0,0 +1,213 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ import { h, Host } from '@stencil/core';
5
+ import { Component, Prop, Event } from '@stencil/core';
6
+ import DataStore from '../../store/dataSource/data.store';
7
+ import ViewportStore from '../../store/viewPort/viewport.store';
8
+ import { UUID } from '../../utils/consts';
9
+ import { RowHeaderRender } from './row-header-render';
10
+ const LETTER_BLOCK_SIZE = 10;
11
+ export class RevogrRowHeaders {
12
+ render() {
13
+ var _a;
14
+ const dataViews = [];
15
+ const viewport = new ViewportStore();
16
+ /** render viewports rows */
17
+ let totalLength = 1;
18
+ for (let data of this.dataPorts) {
19
+ const itemCount = data.dataStore.get('items').length;
20
+ // initiate row data
21
+ const dataStore = new DataStore(data.type);
22
+ dataStore.updateData(data.dataStore.get('source'));
23
+ // initiate column data
24
+ const colData = new DataStore('colPinStart');
25
+ const column = Object.assign({ cellTemplate: RowHeaderRender(totalLength) }, this.rowHeaderColumn);
26
+ colData.updateData([column]);
27
+ const viewData = Object.assign(Object.assign({}, data), { dataStore: dataStore.store, colData: colData.store, viewportCol: viewport.store, readonly: true, range: false });
28
+ dataViews.push(h("revogr-data", Object.assign({}, viewData)));
29
+ totalLength += itemCount;
30
+ }
31
+ const colSize = ((_a = this.rowHeaderColumn) === null || _a === void 0 ? void 0 : _a.size) || (totalLength.toString().length + 1) * LETTER_BLOCK_SIZE;
32
+ viewport.setViewport({
33
+ realCount: 1,
34
+ virtualSize: 0,
35
+ items: [
36
+ {
37
+ size: colSize,
38
+ start: 0,
39
+ end: colSize,
40
+ itemIndex: 0,
41
+ },
42
+ ],
43
+ });
44
+ const parent = `${this.uiid}-rowHeaders`;
45
+ const viewportScroll = {
46
+ [UUID]: parent,
47
+ contentHeight: this.height,
48
+ contentWidth: 0,
49
+ style: { minWidth: `${colSize}px` },
50
+ ref: (el) => this.elementToScroll.emit(el),
51
+ onScrollViewport: (e) => this.scrollViewport.emit(e.detail),
52
+ };
53
+ const viewportHeader = Object.assign(Object.assign({}, this.headerProp), { colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [], viewportCol: viewport.store, canResize: false, parent, slot: 'header' });
54
+ return h(Host, { class: "rowHeaders", key: "rowHeaders" },
55
+ h("revogr-viewport-scroll", Object.assign({}, viewportScroll),
56
+ h("revogr-header", Object.assign({}, viewportHeader)),
57
+ dataViews));
58
+ }
59
+ static get is() { return "revogr-row-headers"; }
60
+ static get properties() { return {
61
+ "height": {
62
+ "type": "number",
63
+ "mutable": false,
64
+ "complexType": {
65
+ "original": "number",
66
+ "resolved": "number",
67
+ "references": {}
68
+ },
69
+ "required": false,
70
+ "optional": false,
71
+ "docs": {
72
+ "tags": [],
73
+ "text": ""
74
+ },
75
+ "attribute": "height",
76
+ "reflect": false
77
+ },
78
+ "dataPorts": {
79
+ "type": "unknown",
80
+ "mutable": false,
81
+ "complexType": {
82
+ "original": "ViewportData[]",
83
+ "resolved": "ViewportData[]",
84
+ "references": {
85
+ "ViewportData": {
86
+ "location": "import",
87
+ "path": "../revo-grid/viewport.interfaces"
88
+ }
89
+ }
90
+ },
91
+ "required": false,
92
+ "optional": false,
93
+ "docs": {
94
+ "tags": [],
95
+ "text": ""
96
+ }
97
+ },
98
+ "headerProp": {
99
+ "type": "unknown",
100
+ "mutable": false,
101
+ "complexType": {
102
+ "original": "Record<string, any>",
103
+ "resolved": "{ [x: string]: any; }",
104
+ "references": {
105
+ "Record": {
106
+ "location": "global"
107
+ }
108
+ }
109
+ },
110
+ "required": false,
111
+ "optional": false,
112
+ "docs": {
113
+ "tags": [],
114
+ "text": ""
115
+ }
116
+ },
117
+ "uiid": {
118
+ "type": "string",
119
+ "mutable": false,
120
+ "complexType": {
121
+ "original": "string",
122
+ "resolved": "string",
123
+ "references": {}
124
+ },
125
+ "required": false,
126
+ "optional": false,
127
+ "docs": {
128
+ "tags": [],
129
+ "text": ""
130
+ },
131
+ "attribute": "uiid",
132
+ "reflect": false
133
+ },
134
+ "resize": {
135
+ "type": "boolean",
136
+ "mutable": false,
137
+ "complexType": {
138
+ "original": "boolean",
139
+ "resolved": "boolean",
140
+ "references": {}
141
+ },
142
+ "required": false,
143
+ "optional": false,
144
+ "docs": {
145
+ "tags": [],
146
+ "text": ""
147
+ },
148
+ "attribute": "resize",
149
+ "reflect": false
150
+ },
151
+ "rowHeaderColumn": {
152
+ "type": "unknown",
153
+ "mutable": false,
154
+ "complexType": {
155
+ "original": "RevoGrid.RowHeaders",
156
+ "resolved": "RowHeaders",
157
+ "references": {
158
+ "RevoGrid": {
159
+ "location": "import",
160
+ "path": "../../interfaces"
161
+ }
162
+ }
163
+ },
164
+ "required": false,
165
+ "optional": false,
166
+ "docs": {
167
+ "tags": [],
168
+ "text": ""
169
+ }
170
+ }
171
+ }; }
172
+ static get events() { return [{
173
+ "method": "scrollViewport",
174
+ "name": "scrollViewport",
175
+ "bubbles": false,
176
+ "cancelable": true,
177
+ "composed": true,
178
+ "docs": {
179
+ "tags": [],
180
+ "text": ""
181
+ },
182
+ "complexType": {
183
+ "original": "RevoGrid.ViewPortScrollEvent",
184
+ "resolved": "{ dimension: DimensionType; coordinate: number; delta?: number; }",
185
+ "references": {
186
+ "RevoGrid": {
187
+ "location": "import",
188
+ "path": "../../interfaces"
189
+ }
190
+ }
191
+ }
192
+ }, {
193
+ "method": "elementToScroll",
194
+ "name": "elementToScroll",
195
+ "bubbles": false,
196
+ "cancelable": true,
197
+ "composed": true,
198
+ "docs": {
199
+ "tags": [],
200
+ "text": ""
201
+ },
202
+ "complexType": {
203
+ "original": "ElementScroll",
204
+ "resolved": "ElementScroll",
205
+ "references": {
206
+ "ElementScroll": {
207
+ "location": "import",
208
+ "path": "../revo-grid/viewport.scrolling.service"
209
+ }
210
+ }
211
+ }
212
+ }]; }
213
+ }
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * Built by Revolist
3
+ */
4
+ export const RowHeaderRender = s => (__, { rowIndex: i }) => s + i;