@revolist/revogrid 4.4.0-next.2 → 4.4.0-next.21

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 (243) hide show
  1. package/custom-element/columnService.js +1 -1
  2. package/custom-element/consts.js +2 -1
  3. package/custom-element/consts.js.map +1 -1
  4. package/custom-element/localScrollService.js +1 -1
  5. package/custom-element/localScrollService.js.map +1 -1
  6. package/custom-element/revo-grid.js +163 -97
  7. package/custom-element/revo-grid.js.map +1 -1
  8. package/custom-element/revogr-clipboard.js +24 -5
  9. package/custom-element/revogr-clipboard.js.map +1 -1
  10. package/custom-element/revogr-edit2.js +12 -6
  11. package/custom-element/revogr-edit2.js.map +1 -1
  12. package/custom-element/revogr-focus2.js +1 -1
  13. package/custom-element/revogr-focus2.js.map +1 -1
  14. package/custom-element/revogr-header2.js +25 -11
  15. package/custom-element/revogr-header2.js.map +1 -1
  16. package/custom-element/revogr-overlay-selection2.js +99 -32
  17. package/custom-element/revogr-overlay-selection2.js.map +1 -1
  18. package/custom-element/revogr-row-headers2.js +1 -2
  19. package/custom-element/revogr-row-headers2.js.map +1 -1
  20. package/custom-element/revogr-viewport-scroll2.js +39 -6
  21. package/custom-element/revogr-viewport-scroll2.js.map +1 -1
  22. package/dist/cjs/{debounce-525dd66c.js → debounce-f50730b6.js} +1 -38
  23. package/dist/cjs/debounce-f50730b6.js.map +1 -0
  24. package/dist/cjs/dispatcher-20520c70.js +21 -0
  25. package/dist/cjs/dispatcher-20520c70.js.map +1 -0
  26. package/dist/cjs/events-030618fc.js +459 -0
  27. package/dist/cjs/events-030618fc.js.map +1 -0
  28. package/dist/cjs/filter.button-6badec7a.js +44 -0
  29. package/dist/cjs/filter.button-6badec7a.js.map +1 -0
  30. package/dist/cjs/{index-aad39b7b.js → index-ee2ef5ae.js} +96 -36
  31. package/dist/cjs/index-ee2ef5ae.js.map +1 -0
  32. package/dist/cjs/index-effc94b9.js +3944 -0
  33. package/dist/cjs/index-effc94b9.js.map +1 -0
  34. package/dist/cjs/isString-3dde8d95.js +38 -0
  35. package/dist/cjs/isString-3dde8d95.js.map +1 -0
  36. package/dist/cjs/keyCodes.utils-d665ebed.js +271 -0
  37. package/dist/cjs/keyCodes.utils-d665ebed.js.map +1 -0
  38. package/dist/cjs/loader.cjs.js +3 -3
  39. package/dist/cjs/loader.cjs.js.map +1 -1
  40. package/dist/cjs/localScrollService-a81823c5.js +403 -0
  41. package/dist/cjs/localScrollService-a81823c5.js.map +1 -0
  42. package/dist/cjs/revo-grid.cjs.entry.js +3858 -0
  43. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
  44. package/dist/cjs/revo-grid.cjs.js +3 -3
  45. package/dist/cjs/revo-grid.cjs.js.map +1 -1
  46. package/dist/cjs/revogr-clipboard.cjs.entry.js +24 -6
  47. package/dist/cjs/revogr-clipboard.cjs.entry.js.map +1 -1
  48. package/dist/cjs/revogr-data_3.cjs.entry.js +1138 -0
  49. package/dist/cjs/revogr-data_3.cjs.entry.js.map +1 -0
  50. package/dist/cjs/revogr-edit_2.cjs.entry.js +325 -0
  51. package/dist/cjs/revogr-edit_2.cjs.entry.js.map +1 -0
  52. package/dist/cjs/revogr-filter-panel.cjs.entry.js +6 -5
  53. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
  54. package/dist/cjs/revogr-focus_5.cjs.entry.js +1231 -0
  55. package/dist/cjs/revogr-focus_5.cjs.entry.js.map +1 -0
  56. package/dist/cjs/{revo-grid_11.cjs.entry.js → viewport.helpers-70ccec8f.js} +13978 -25269
  57. package/dist/cjs/viewport.helpers-70ccec8f.js.map +1 -0
  58. package/dist/collection/collection-manifest.json +1 -1
  59. package/dist/collection/components/clipboard/revogr-clipboard.d.ts +6 -2
  60. package/dist/collection/components/clipboard/revogr-clipboard.js +46 -5
  61. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  62. package/dist/collection/components/header/headerCellRenderer.d.ts +2 -1
  63. package/dist/collection/components/header/headerCellRenderer.js +1 -1
  64. package/dist/collection/components/header/headerCellRenderer.js.map +1 -1
  65. package/dist/collection/components/header/headerRenderer.d.ts +2 -2
  66. package/dist/collection/components/header/headerRenderer.js +1 -1
  67. package/dist/collection/components/header/headerRenderer.js.map +1 -1
  68. package/dist/collection/components/header/revogr-header.d.ts +15 -1
  69. package/dist/collection/components/header/revogr-header.js +34 -8
  70. package/dist/collection/components/header/revogr-header.js.map +1 -1
  71. package/dist/collection/components/overlay/autofill.service.d.ts +7 -3
  72. package/dist/collection/components/overlay/autofill.service.js +32 -12
  73. package/dist/collection/components/overlay/autofill.service.js.map +1 -1
  74. package/dist/collection/components/overlay/clipboard.service.d.ts +1 -1
  75. package/dist/collection/components/overlay/clipboard.service.js +2 -2
  76. package/dist/collection/components/overlay/clipboard.service.js.map +1 -1
  77. package/dist/collection/components/overlay/keyboard.service.js +2 -6
  78. package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
  79. package/dist/collection/components/overlay/revogr-edit.d.ts +8 -0
  80. package/dist/collection/components/overlay/revogr-edit.js +34 -9
  81. package/dist/collection/components/overlay/revogr-edit.js.map +1 -1
  82. package/dist/collection/components/overlay/revogr-overlay-selection.d.ts +32 -10
  83. package/dist/collection/components/overlay/revogr-overlay-selection.js +80 -12
  84. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  85. package/dist/collection/components/overlay/revogr-overlay-style.css +71 -4
  86. package/dist/collection/components/revoGrid/revo-grid.d.ts +15 -4
  87. package/dist/collection/components/revoGrid/revo-grid.js +60 -19
  88. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  89. package/dist/collection/components/revoGrid/viewport.scrolling.service.d.ts +6 -2
  90. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +26 -4
  91. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -1
  92. package/dist/collection/components/revoGrid/viewport.section.d.ts +3 -2
  93. package/dist/collection/components/revoGrid/viewport.section.js +8 -4
  94. package/dist/collection/components/revoGrid/viewport.section.js.map +1 -1
  95. package/dist/collection/components/revoGrid/viewport.service.d.ts +4 -0
  96. package/dist/collection/components/revoGrid/viewport.service.js +15 -3
  97. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
  98. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
  99. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +3 -0
  100. package/dist/collection/components/scroll/revogr-viewport-scroll.d.ts +16 -5
  101. package/dist/collection/components/scroll/revogr-viewport-scroll.js +64 -9
  102. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
  103. package/dist/collection/components/selectionFocus/revogr-focus-style.css +1 -1
  104. package/dist/collection/components.d.ts +110 -6
  105. package/dist/collection/interfaces.d.ts +4 -1
  106. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.d.ts +3 -2
  107. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +2 -2
  108. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
  109. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.d.ts +2 -2
  110. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +1 -1
  111. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
  112. package/dist/collection/plugins/sorting/sorting.plugin.d.ts +21 -13
  113. package/dist/collection/plugins/sorting/sorting.plugin.js +77 -70
  114. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  115. package/dist/collection/serve/controller.js +183 -0
  116. package/dist/collection/services/localScrollService.js +1 -1
  117. package/dist/collection/services/localScrollService.js.map +1 -1
  118. package/dist/collection/services/resizable.directive.d.ts +8 -7
  119. package/dist/collection/services/resizable.directive.js +13 -36
  120. package/dist/collection/services/resizable.directive.js.map +1 -1
  121. package/dist/collection/services/resizable.element.d.ts +4 -0
  122. package/dist/collection/services/resizable.element.js +39 -0
  123. package/dist/collection/services/resizable.element.js.map +1 -0
  124. package/dist/collection/stencil-public-runtime.d.ts +1 -0
  125. package/dist/collection/store/viewPort/viewport.store.js +0 -1
  126. package/dist/collection/store/viewPort/viewport.store.js.map +1 -1
  127. package/dist/collection/utils/consts.d.ts +1 -0
  128. package/dist/collection/utils/consts.js +1 -0
  129. package/dist/collection/utils/consts.js.map +1 -1
  130. package/dist/collection/utils/events.d.ts +2 -1
  131. package/dist/collection/utils/events.js +18 -2
  132. package/dist/collection/utils/events.js.map +1 -1
  133. package/dist/collection/utils/mobile.d.ts +1 -0
  134. package/dist/collection/utils/mobile.js +7 -0
  135. package/dist/collection/utils/mobile.js.map +1 -0
  136. package/dist/esm/{debounce-301fd4d2.js → debounce-820b5a8b.js} +2 -34
  137. package/dist/esm/debounce-820b5a8b.js.map +1 -0
  138. package/dist/esm/dispatcher-9e9c0233.js +19 -0
  139. package/dist/esm/dispatcher-9e9c0233.js.map +1 -0
  140. package/dist/esm/events-31272e5e.js +454 -0
  141. package/dist/esm/events-31272e5e.js.map +1 -0
  142. package/dist/esm/filter.button-21ce90ef.js +38 -0
  143. package/dist/esm/filter.button-21ce90ef.js.map +1 -0
  144. package/dist/esm/{index-5e90b19b.js → index-05947c5f.js} +97 -37
  145. package/dist/esm/index-05947c5f.js.map +1 -0
  146. package/dist/esm/index-728bf6e3.js +3889 -0
  147. package/dist/esm/index-728bf6e3.js.map +1 -0
  148. package/dist/esm/isString-d539060a.js +36 -0
  149. package/dist/esm/isString-d539060a.js.map +1 -0
  150. package/dist/esm/keyCodes.utils-c0064460.js +265 -0
  151. package/dist/esm/keyCodes.utils-c0064460.js.map +1 -0
  152. package/dist/esm/loader.js +4 -4
  153. package/dist/esm/loader.js.map +1 -1
  154. package/dist/esm/localScrollService-884d8952.js +400 -0
  155. package/dist/esm/localScrollService-884d8952.js.map +1 -0
  156. package/dist/esm/revo-grid.entry.js +3854 -0
  157. package/dist/esm/revo-grid.entry.js.map +1 -0
  158. package/dist/esm/revo-grid.js +4 -4
  159. package/dist/esm/revo-grid.js.map +1 -1
  160. package/dist/esm/revogr-clipboard.entry.js +24 -6
  161. package/dist/esm/revogr-clipboard.entry.js.map +1 -1
  162. package/dist/esm/revogr-data_3.entry.js +1132 -0
  163. package/dist/esm/revogr-data_3.entry.js.map +1 -0
  164. package/dist/esm/revogr-edit_2.entry.js +320 -0
  165. package/dist/esm/revogr-edit_2.entry.js.map +1 -0
  166. package/dist/esm/revogr-filter-panel.entry.js +3 -2
  167. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  168. package/dist/esm/revogr-focus_5.entry.js +1223 -0
  169. package/dist/esm/revogr-focus_5.entry.js.map +1 -0
  170. package/dist/esm/{revo-grid_11.entry.js → viewport.helpers-c08e729e.js} +13790 -25093
  171. package/dist/esm/viewport.helpers-c08e729e.js.map +1 -0
  172. package/dist/revo-grid/debounce-820b5a8b.js +5 -0
  173. package/dist/revo-grid/debounce-820b5a8b.js.map +1 -0
  174. package/dist/revo-grid/dispatcher-9e9c0233.js +5 -0
  175. package/dist/revo-grid/dispatcher-9e9c0233.js.map +1 -0
  176. package/dist/revo-grid/events-31272e5e.js +5 -0
  177. package/dist/revo-grid/events-31272e5e.js.map +1 -0
  178. package/dist/revo-grid/filter.button-21ce90ef.js +5 -0
  179. package/dist/revo-grid/filter.button-21ce90ef.js.map +1 -0
  180. package/dist/revo-grid/index-05947c5f.js +6 -0
  181. package/dist/revo-grid/index-05947c5f.js.map +1 -0
  182. package/dist/revo-grid/index-728bf6e3.js +5 -0
  183. package/dist/revo-grid/index-728bf6e3.js.map +1 -0
  184. package/dist/revo-grid/isString-d539060a.js +5 -0
  185. package/dist/revo-grid/isString-d539060a.js.map +1 -0
  186. package/dist/revo-grid/keyCodes.utils-c0064460.js +5 -0
  187. package/dist/revo-grid/keyCodes.utils-c0064460.js.map +1 -0
  188. package/dist/revo-grid/localScrollService-884d8952.js +5 -0
  189. package/dist/revo-grid/localScrollService-884d8952.js.map +1 -0
  190. package/dist/revo-grid/revo-grid.entry.js +5 -0
  191. package/dist/revo-grid/revo-grid.entry.js.map +1 -0
  192. package/dist/revo-grid/revo-grid.esm.js +1 -1
  193. package/dist/revo-grid/revo-grid.esm.js.map +1 -1
  194. package/dist/revo-grid/revogr-clipboard.entry.js +1 -1
  195. package/dist/revo-grid/revogr-clipboard.entry.js.map +1 -1
  196. package/dist/revo-grid/revogr-data_3.entry.js +5 -0
  197. package/dist/revo-grid/revogr-data_3.entry.js.map +1 -0
  198. package/dist/revo-grid/revogr-edit_2.entry.js +5 -0
  199. package/dist/revo-grid/revogr-edit_2.entry.js.map +1 -0
  200. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
  201. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  202. package/dist/revo-grid/revogr-focus_5.entry.js +5 -0
  203. package/dist/revo-grid/revogr-focus_5.entry.js.map +1 -0
  204. package/dist/revo-grid/viewport.helpers-c08e729e.js +5 -0
  205. package/dist/revo-grid/viewport.helpers-c08e729e.js.map +1 -0
  206. package/dist/types/components/clipboard/revogr-clipboard.d.ts +6 -2
  207. package/dist/types/components/header/headerCellRenderer.d.ts +2 -1
  208. package/dist/types/components/header/headerRenderer.d.ts +2 -2
  209. package/dist/types/components/header/revogr-header.d.ts +15 -1
  210. package/dist/types/components/overlay/autofill.service.d.ts +7 -3
  211. package/dist/types/components/overlay/clipboard.service.d.ts +1 -1
  212. package/dist/types/components/overlay/revogr-edit.d.ts +8 -0
  213. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +32 -10
  214. package/dist/types/components/revoGrid/revo-grid.d.ts +15 -4
  215. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +6 -2
  216. package/dist/types/components/revoGrid/viewport.section.d.ts +3 -2
  217. package/dist/types/components/revoGrid/viewport.service.d.ts +4 -0
  218. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +16 -5
  219. package/dist/types/components.d.ts +110 -6
  220. package/dist/types/interfaces.d.ts +4 -1
  221. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +3 -2
  222. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +2 -2
  223. package/dist/types/plugins/sorting/sorting.plugin.d.ts +21 -13
  224. package/dist/types/services/resizable.directive.d.ts +8 -7
  225. package/dist/types/services/resizable.element.d.ts +4 -0
  226. package/dist/types/stencil-public-runtime.d.ts +1 -0
  227. package/dist/types/utils/consts.d.ts +1 -0
  228. package/dist/types/utils/events.d.ts +2 -1
  229. package/dist/types/utils/mobile.d.ts +1 -0
  230. package/package.json +4 -3
  231. package/dist/cjs/debounce-525dd66c.js.map +0 -1
  232. package/dist/cjs/index-aad39b7b.js.map +0 -1
  233. package/dist/cjs/revo-grid_11.cjs.entry.js.map +0 -1
  234. package/dist/esm/debounce-301fd4d2.js.map +0 -1
  235. package/dist/esm/index-5e90b19b.js.map +0 -1
  236. package/dist/esm/revo-grid_11.entry.js.map +0 -1
  237. package/dist/revo-grid/debounce-301fd4d2.js +0 -5
  238. package/dist/revo-grid/debounce-301fd4d2.js.map +0 -1
  239. package/dist/revo-grid/index-5e90b19b.js +0 -6
  240. package/dist/revo-grid/index-5e90b19b.js.map +0 -1
  241. package/dist/revo-grid/revo-grid_11.entry.js +0 -5
  242. package/dist/revo-grid/revo-grid_11.entry.js.map +0 -1
  243. /package/dist/collection/{utilsExternal/generate-data.js → serve/data.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"revo-grid.js","sourceRoot":"","sources":["../../../src/components/revoGrid/revo-grid.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Watch, Element, Listen, Event, EventEmitter, Method, VNode, State, Host } from '@stencil/core';\nimport each from 'lodash/each';\n\nimport ColumnDataProvider, { ColumnCollection } from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport { getVisibleSourceItem } from '../../store/dataSource/data.store';\nimport DimensionProvider, { DimensionConfig } from '../../services/dimension.provider';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { Edition, Selection, RevoGrid, ThemeSpace, RevoPlugin } from '../../interfaces';\nimport ThemeService from '../../themeManager/themeService';\nimport { timeout } from '../../utils';\nimport AutoSize, { AutoSizeColumnConfig } from '../../plugins/autoSizeColumn';\nimport { columnTypes, rowTypes } from '../../store/storeTypes';\nimport FilterPlugin, { ColumnFilterConfig, FilterCollection } from '../../plugins/filter/filter.plugin';\nimport SortingPlugin from '../../plugins/sorting/sorting.plugin';\nimport ExportFilePlugin from '../../plugins/export/export.plugin';\nimport { DataInput } from '../../plugins/export/types';\nimport GroupingRowPlugin from '../../plugins/groupingRow/grouping.row.plugin';\nimport { GroupingOptions } from '../../plugins/groupingRow/grouping.row.types';\nimport { ColumnSource, RowSource } from '../data/columnService';\nimport { RevoViewPort } from './viewport';\nimport ViewportService, { FocusedData } from './viewport.service';\nimport { ViewPortSections } from './viewport.section';\nimport GridScrollingService from './viewport.scrolling.service';\nimport { UUID } from '../../utils/consts';\nimport SelectionStoreConnector from '../../services/selection.store.connector';\nimport { OrdererService } from '../order/orderRenderer';\nimport StretchColumn, { isStretchPlugin } from '../../plugins/stretchPlugin';\nimport { rowDefinitionByType, rowDefinitionRemoveByType } from './grid.helpers';\nimport ColumnPlugin from '../../plugins/moveColumn/columnDragPlugin';\nimport { getFromEvent } from '../../utils/events';\n\n@Component({\n tag: 'revo-grid',\n styleUrl: 'revo-grid-style.scss',\n})\nexport class RevoGridComponent {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n /** Excel like show rgRow indexe per rgRow */\n @Prop() rowHeaders: RevoGrid.RowHeaders | boolean;\n /**\n * Defines how many rows/columns should be rendered outside visible area.\n */\n @Prop() frameSize: number = 1;\n /**\n * Indicates default rgRow size.\n * By default 0, means theme package size will be applied\n */\n @Prop() rowSize: number = 0;\n /** Indicates default column size. */\n @Prop() colSize: number = 100;\n /** When true, user can range selection. */\n @Prop() range: boolean = false;\n /** When true, grid in read only mode. */\n @Prop() readonly: boolean = false;\n /** When true, columns are resizable. */\n @Prop() resize: boolean = false;\n /** When true cell focus appear. */\n @Prop() canFocus: boolean = true;\n /** When true enable clipboard. */\n @Prop() useClipboard: boolean = true;\n /**\n * Columns - defines an array of grid columns.\n * Can be column or grouped column.\n */\n @Prop() columns: (RevoGrid.ColumnRegular | RevoGrid.ColumnGrouping)[] = [];\n /**\n * Source - defines main data source.\n * Can be an Object or 2 dimensional array([][]);\n * Keys/indexes referenced from columns Prop\n */\n @Prop() source: RevoGrid.DataType[] = [];\n /** Pinned top Source: {[T in ColumnProp]: any} - defines pinned top rows data source. */\n @Prop() pinnedTopSource: RevoGrid.DataType[] = [];\n /** Pinned bottom Source: {[T in ColumnProp]: any} - defines pinned bottom rows data source. */\n @Prop() pinnedBottomSource: RevoGrid.DataType[] = [];\n /** Row properies applied */\n @Prop() rowDefinitions: RevoGrid.RowDefinition[] = [];\n\n /** Custom editors register */\n @Prop() editors: Edition.Editors = {};\n\n /**\n * Apply changes typed in editor on editor close except Escape cases\n * If custom editor in use @method getValue required\n * Check interfaces.d.ts @EditorBase for more info\n */\n @Prop() applyOnClose = false;\n\n /**\n * Custom grid plugins\n * Has to be predefined during first grid init\n * Every plugin should be inherited from BasePlugin\n */\n @Prop() plugins: RevoPlugin.PluginClass[];\n\n /** Types\n * Every type represent multiple column properties\n * Types will be merged but can be replaced with column properties\n */\n @Prop() columnTypes: { [name: string]: RevoGrid.ColumnType } = {};\n\n /** Theme name */\n @Prop({ reflect: true, mutable: true }) theme: ThemeSpace.Theme = 'default';\n\n /**\n * Row class property\n * Define this property in rgRow object and this will be mapped as rgRow class\n */\n @Prop({ reflect: true }) rowClass: string = '';\n\n /**\n * Autosize config\n * Enable columns autoSize, for more details check @autoSizeColumn plugin\n * By default disabled, hence operation is not resource efficient\n * true to enable with default params (double header separator click for autosize)\n * or provide config\n */\n @Prop() autoSizeColumn: boolean | AutoSizeColumnConfig = false;\n\n /**\n * Enables filter plugin\n * Can be boolean\n * Can be filter collection\n */\n @Prop() filter: boolean | ColumnFilterConfig = false;\n\n\n /**\n * Apply changes typed in editor on editor close except Escape cases\n * If custom editor in use @method getValue required\n * Check interfaces.d.ts @EditorBase for more info\n */\n @Prop() focusTemplate: RevoGrid.FocusTemplateFunc;\n\n /**\n * Enables column move plugin\n * Can be boolean\n */\n @Prop() canMoveColumns: boolean = false;\n /**\n * Trimmed rows\n * Functionality which allows to hide rows from main data set\n * @trimmedRows are physical rgRow indexes to hide\n */\n @Prop() trimmedRows: Record<number, boolean> = {};\n\n /**\n * Enables export plugin\n * Can be boolean\n * Can be export options\n */\n @Prop() exporting = false;\n\n /**\n * Group models by provided properties\n * Define properties to be groped by\n */\n @Prop() grouping: GroupingOptions;\n\n /**\n * Defines stretch strategy for columns with @StretchColumn plugin\n * if there are more space on the right last column size would be increased\n */\n @Prop() stretch: boolean | string = true;\n\n\n /**\n * Additional data to be passed to plugins\n */\n @Prop() additionalData: any = {};\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n /**\n * contentsizechanged event.\n * Triggered when new content size applied.\n * Not including header size\n * Event is not returning size\n * To get actual size use getContentSize after event triggered\n */\n @Event() contentsizechanged: EventEmitter<RevoGrid.MultiDimensionType>;\n /**\n * Before edit event.\n * Triggered before edit data applied.\n * Use e.preventDefault() to prevent edit data set and use you own.\n * Use e.val = {your value} to replace edit result with your own.\n */\n @Event() beforeedit: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n /**\n * Before range edit event.\n * Triggered before range data applied, when range selection happened.\n * Use e.preventDefault() to prevent edit data set and use you own.\n */\n @Event() beforerangeedit: EventEmitter<Edition.BeforeRangeSaveDataDetails>;\n\n /**\n * After edit.\n * Triggered after data applied or range changed.\n */\n @Event() afteredit: EventEmitter<Edition.BeforeSaveDataDetails | Edition.BeforeRangeSaveDataDetails>;\n\n /**\n * Before autofill.\n * Triggered before autofill applied.\n * Use e.preventDefault() to prevent edit data apply.\n */\n @Event() beforeautofill: EventEmitter<Selection.ChangedRange>;\n\n /**\n * Before range apply.\n * Triggered before range applied.\n * Use e.preventDefault() to prevent range.\n */\n @Event() beforeange: EventEmitter<Selection.ChangedRange>;\n\n /**\n * Triggered after focus render finished.\n * Can be used to access a focus element through @event.target\n */\n @Event() afterfocus: EventEmitter<{ model: any; column: RevoGrid.ColumnRegular; }>;\n\n /**\n * Before rgRow order apply.\n * Use e.preventDefault() to prevent rgRow order change.\n */\n @Event() roworderchanged: EventEmitter<{ from: number; to: number }>;\n\n /**\n * Before source update sorting apply.\n * Use this event if you intended to prevent sorting on data update.\n * Use e.preventDefault() to prevent sorting data change during rows source update.\n */\n @Event() beforesourcesortingapply: EventEmitter;\n\n /**\n * Before sorting apply.\n * Use e.preventDefault() to prevent sorting data change.\n */\n @Event() beforesortingapply: EventEmitter<{\n column: RevoGrid.ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }>;\n /**\n * Before sorting event.\n * Initial sorting triggered, if this event stops no other event called.\n * Use e.preventDefault() to prevent sorting.\n */\n @Event() beforesorting: EventEmitter<{\n column: RevoGrid.ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }>;\n\n /**\n * Row order change started.\n * Use e.preventDefault() to prevent rgRow order change.\n * Use e.text = 'new name' to change item name on start.\n */\n @Event() rowdragstart: EventEmitter<{ pos: RevoGrid.PositionItem; text: string }>;\n\n /**\n * On header click.\n */\n @Event() headerclick: EventEmitter<RevoGrid.ColumnRegular>;\n\n /**\n * Before cell focus changed.\n * Use e.preventDefault() to prevent cell focus change.\n */\n @Event() beforecellfocus: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n /**\n * Before grid focus lost happened.\n * Use e.preventDefault() to prevent cell focus change.\n */\n @Event() beforefocuslost: EventEmitter<FocusedData | null>;\n /**\n * Before data apply.\n * You can override data source here\n */\n @Event() beforesourceset: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /**\n * Before data apply.\n * You can override data source here\n */\n @Event({ eventName: 'before-any-source' }) beforeAnySource: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /** After rows updated */\n @Event() aftersourceset: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /** Before column update */\n @Event() beforecolumnsset: EventEmitter<ColumnCollection>;\n\n /** Before column applied but after column set gathered and viewport updated */\n @Event() beforecolumnapplied: EventEmitter<ColumnCollection>;\n\n /** Column updated */\n @Event() aftercolumnsset: EventEmitter<{\n columns: ColumnCollection;\n order: Record<RevoGrid.ColumnProp, 'asc' | 'desc'>;\n }>;\n\n /**\n * Before filter applied to data source\n * Use e.preventDefault() to prevent cell focus change\n * Update @collection if you wish to change filters\n */\n @Event() beforefilterapply: EventEmitter<{ collection: FilterCollection }>;\n\n /**\n * Before filter trimmed values\n * Use e.preventDefault() to prevent value trimming and filter apply\n * Update @collection if you wish to change filters\n * Update @itemsToFilter if you wish to filter indexes of trimming\n */\n @Event() beforefiltertrimmed: EventEmitter<{ collection: FilterCollection; itemsToFilter: Record<number, boolean> }>;\n\n /**\n * Before trimmed values\n * Use e.preventDefault() to prevent value trimming\n * Update @trimmed if you wish to filter indexes of trimming\n */\n @Event() beforetrimmed: EventEmitter<{ trimmed: Record<number, boolean>; trimmedType: string; type: string }>;\n\n /**\n * Notify trimmed applied\n */\n @Event() aftertrimmed: EventEmitter;\n\n /**\n * Triggered when view port scrolled\n */\n @Event() viewportscroll: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n /**\n * Before export\n * Use e.preventDefault() to prevent export\n * Replace data in Event in case you want to modify it in export\n */\n @Event() beforeexport: EventEmitter<DataInput>;\n\n /**\n * Before edit started\n * Use e.preventDefault() to prevent edit\n */\n @Event() beforeeditstart: EventEmitter<Edition.BeforeSaveDataDetails>;\n /**\n * After column resize\n * Get resized columns\n */\n @Event() aftercolumnresize: EventEmitter<{ [index: number]: RevoGrid.ColumnRegular }>;\n /**\n * Before row definition\n */\n @Event() beforerowdefinition: EventEmitter<{ vals: any; oldVals: any; }>;\n\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n /**\n * Refreshes data viewport.\n * Can be specific part as rgRow or pinned rgRow or 'all' by default.\n */\n @Method() async refresh(type: RevoGrid.DimensionRows | 'all' = 'all') {\n this.dataProvider.refresh(type);\n }\n\n /** Scrolls view port to specified rgRow index */\n @Method() async scrollToRow(coordinate: number = 0) {\n const y = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgRow',\n });\n await this.scrollToCoordinate({ y });\n }\n\n /** Scrolls view port to specified column index */\n @Method() async scrollToColumnIndex(coordinate: number = 0) {\n const x = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgCol',\n });\n await this.scrollToCoordinate({ x });\n }\n\n /** Scrolls view port to specified column prop */\n @Method() async scrollToColumnProp(prop: RevoGrid.ColumnProp) {\n const coordinate = this.columnProvider.getColumnIndexByProp(prop, 'rgCol');\n if (coordinate < 0) {\n // already on the screen\n return;\n }\n const x = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgCol',\n });\n await this.scrollToCoordinate({ x });\n }\n\n /** Update columns */\n @Method() async updateColumns(cols: RevoGrid.ColumnRegular[]) {\n this.columnProvider.updateColumns(cols);\n }\n\n /** Add trimmed by type */\n @Method() async addTrimmed(trimmed: Record<number, boolean>, trimmedType = 'external', type: RevoGrid.DimensionRows = 'rgRow') {\n const event = this.beforetrimmed.emit({\n trimmed,\n trimmedType,\n type,\n });\n if (event.defaultPrevented) {\n return event;\n }\n this.dataProvider.setTrimmed({ [trimmedType]: event.detail.trimmed }, type);\n this.aftertrimmed.emit();\n return event;\n }\n\n /** Scrolls view port to coordinate */\n @Method() async scrollToCoordinate(cell: Partial<Selection.Cell>) {\n this.viewport?.scrollToCell(cell);\n }\n\n /** Bring cell to edit mode */\n @Method() async setCellEdit(rgRow: number, prop: RevoGrid.ColumnProp, rowSource: RevoGrid.DimensionRows = 'rgRow') {\n const rgCol = ColumnDataProvider.getColumnByProp(this.columns, prop);\n if (!rgCol) {\n return;\n }\n await timeout();\n const colGroup = rgCol.pin || 'rgCol';\n this.viewport?.setEdit(rgRow, this.columnProvider.getColumnIndexByProp(prop, colGroup), colGroup, rowSource);\n }\n\n /** Set focus range */\n @Method() async setCellsFocus(\n cellStart: Selection.Cell = { x: 0, y: 0 },\n cellEnd: Selection.Cell = { x: 0, y: 0 },\n colType = 'rgCol',\n rowType = 'rgRow',\n ) {\n this.viewport?.setFocus(colType, rowType, cellStart, cellEnd);\n }\n\n /**\n * Register new virtual node inside of grid\n * Used for additional items creation such as plugin elements\n */\n @Method() async registerVNode(elements: VNode[]) {\n this.extraElements.push(...elements);\n this.extraElements = [...this.extraElements];\n }\n\n /** Get data from source */\n @Method() async getSource(type: RevoGrid.DimensionRows = 'rgRow') {\n return this.dataProvider.stores[type].store.get('source');\n }\n\n /**\n * Get data from visible part of source\n * Trimmed/filtered rows will be excluded\n * @param type - type of source\n */\n @Method() async getVisibleSource(type: RevoGrid.DimensionRows = 'rgRow') {\n return getVisibleSourceItem(this.dataProvider.stores[type].store);\n }\n\n /**\n * Provides access to rows internal store observer\n * Can be used for plugin support\n * @param type - type of source\n */\n @Method() async getSourceStore(type: RevoGrid.DimensionRows = 'rgRow'): Promise<RowSource> {\n return this.dataProvider.stores[type].store;\n }\n /**\n * Provides access to column internal store observer\n * Can be used for plugin support\n * @param type - type of column\n */\n @Method() async getColumnStore(type: RevoGrid.DimensionCols = 'rgCol'): Promise<ColumnSource> {\n return this.columnProvider.stores[type].store;\n }\n\n /**\n * Update column sorting\n * @param column - full column details to update\n * @param index - virtual column index\n * @param order - order to apply\n */\n @Method() async updateColumnSorting(column: RevoGrid.ColumnRegular, index: number, order: 'asc' | 'desc', additive: boolean) {\n return this.columnProvider.updateColumnSorting(column, index, order, additive);\n }\n\n /**\n * Clears column sorting\n */\n @Method() async clearSorting() {\n this.columnProvider.clearSorting();\n }\n\n /**\n * Receive all columns in data source\n */\n @Method() async getColumns(): Promise<RevoGrid.ColumnRegular[]> {\n return this.columnProvider.getColumns();\n }\n\n /**\n * Clear current grid focus\n */\n @Method() async clearFocus() {\n const focused = await this.getFocused();\n const event = this.beforefocuslost.emit(focused);\n if (event.defaultPrevented) {\n return;\n }\n this.selectionStoreConnector.clearAll();\n }\n\n /**\n * Get all active plugins instances\n */\n @Method() async getPlugins(): Promise<RevoPlugin.Plugin[]> {\n return [...this.internalPlugins];\n }\n\n /**\n * Get the currently focused cell.\n */\n @Method() async getFocused(): Promise<FocusedData | null> {\n return this.viewport?.getFocused();\n }\n\n /**\n * Get size of content\n * Including all pinned data\n */\n @Method() async getContentSize(): Promise<Selection.Cell> {\n return this.dimensionProvider?.getFullSize();\n }\n /**\n * Get the currently selected Range.\n */\n @Method() async getSelectedRange(): Promise<Selection.RangeArea|null> {\n return this.viewport?.getSelectedRange();\n }\n\n\n // --------------------------------------------------------------------------\n //\n // Listeners outside scope\n //\n // --------------------------------------------------------------------------\n\n private clickTrackForFocusClear: number | null = null;\n @Listen('touchstart', { target: 'document' })\n @Listen('mousedown', { target: 'document' })\n mousedownHandle(event: MouseEvent & TouchEvent) {\n this.clickTrackForFocusClear = getFromEvent(event, 'screenX') + getFromEvent(event, 'screenY');\n }\n @Listen('touchend', { target: 'document' })\n @Listen('mouseup', { target: 'document' })\n mouseupHandle(event: MouseEvent & TouchEvent) {\n if (event.defaultPrevented) {\n return;\n }\n const target = event.target as HTMLElement | null;\n const pos = getFromEvent(event, 'screenX') + getFromEvent(event, 'screenY');\n // detect if mousemove then do nothing\n if (Math.abs(this.clickTrackForFocusClear - pos) > 10) {\n return;\n }\n\n // check if action finished inside of the document\n // clear data which is outside of grid\n // if event prevented or it is current table don't clear focus\n if (target?.closest(`[${UUID}=\"${this.uuid}\"]`)) {\n return;\n }\n this.clearFocus();\n }\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n /** DRAG AND DROP */\n @Listen('internalRowDragStart') onRowDragStarted(e: CustomEvent<{ pos: RevoGrid.PositionItem; text: string; event: MouseEvent }>) {\n // e.cancelBubble = true;\n const dragStart = this.rowdragstart.emit(e.detail);\n if (dragStart.defaultPrevented) {\n e.preventDefault();\n return;\n }\n this.orderService?.start(this.element, { ...e.detail, ...dragStart.detail });\n }\n\n @Listen('internalRowDragEnd') onRowDragEnd() {\n this.orderService?.end();\n }\n\n @Listen('internalRowDrag') onRowDrag({ detail }: CustomEvent<RevoGrid.PositionItem>) {\n this.orderService?.move(detail);\n }\n\n @Listen('internalRowMouseMove') onRowMouseMove(e: CustomEvent<Selection.Cell>): void {\n // e.cancelBubble = true;\n this.orderService?.moveTip(e.detail);\n }\n\n @Listen('internalCellEdit') async onBeforeEdit(e: CustomEvent<Edition.BeforeSaveDataDetails>) {\n // e.cancelBubble = true;\n const { defaultPrevented, detail } = this.beforeedit.emit(e.detail);\n await timeout();\n // apply data\n if (!defaultPrevented) {\n this.dataProvider.setCellData(detail);\n this.afteredit.emit(detail);\n }\n }\n\n @Listen('internalRangeDataApply') onBeforeRangeEdit(e: CustomEvent<Edition.BeforeRangeSaveDataDetails>) {\n // e.cancelBubble = true;\n const { defaultPrevented, detail } = this.beforerangeedit.emit(e.detail);\n if (defaultPrevented) {\n e.preventDefault();\n return;\n }\n this.afteredit.emit(detail);\n }\n\n @Listen('internalSelectionChanged') onRangeChanged(e: CustomEvent<Selection.ChangedRange>) {\n // e.cancelBubble = true;\n const beforeange = this.beforeange.emit(e.detail);\n if (beforeange.defaultPrevented) {\n e.preventDefault();\n }\n const beforeFill = this.beforeautofill.emit(beforeange.detail);\n if (beforeFill.defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('initialRowDropped') onRowDropped(e: CustomEvent<{ from: number; to: number }>) {\n // e.cancelBubble = true;\n const { defaultPrevented } = this.roworderchanged.emit(e.detail);\n if (defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('initialHeaderClick') onHeaderClick(e: CustomEvent<RevoGrid.InitialHeaderClick>) {\n const { defaultPrevented } = this.headerclick.emit({\n ...e.detail.column,\n originalEvent: e.detail.originalEvent,\n });\n if (defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('beforeFocusCell') onCellFocus(e: CustomEvent<Edition.BeforeSaveDataDetails>) {\n // e.cancelBubble = true;\n const { defaultPrevented } = this.beforecellfocus.emit(e.detail);\n if (!this.canFocus || defaultPrevented) {\n e.preventDefault();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n // for internal plugin usage\n @State() extraElements: VNode[] = [];\n\n uuid: string | null = null;\n columnProvider: ColumnDataProvider;\n dataProvider: DataProvider;\n dimensionProvider: DimensionProvider;\n viewportProvider: ViewportProvider;\n private themeService: ThemeService;\n private viewport: ViewportService | null = null;\n\n private orderService: OrdererService;\n private selectionStoreConnector: SelectionStoreConnector;\n private scrollingService: GridScrollingService;\n\n /**\n * Plugins\n * Define plugins collection\n */\n private internalPlugins: RevoPlugin.Plugin[] = [];\n\n @Element() element: HTMLRevoGridElement;\n\n @Watch('columns') columnChanged(newVal: RevoGrid.ColumnDataSchema[] = []) {\n // clear existing data\n this.dimensionProvider.dropColumns();\n const columnGather = ColumnDataProvider.getColumns(newVal, 0, this.columnTypes);\n this.beforecolumnsset.emit(columnGather);\n for (let type of columnTypes) {\n const items = columnGather.columns[type];\n this.dimensionProvider.setNewColumns(type, items.length, ColumnDataProvider.getSizes(items), type !== 'rgCol');\n }\n this.beforecolumnapplied.emit(columnGather);\n const columns = this.columnProvider.setColumns(columnGather);\n this.aftercolumnsset.emit({\n columns,\n order: this.columnProvider.order,\n });\n }\n\n @Watch('rowSize') rowSizeChanged(s: number) {// clear existing data\n this.dimensionProvider.setSettings({ originItemSize: s }, 'rgRow');\n rowTypes.forEach((t) => {\n this.dimensionProvider.clearSize(\n t,\n this.dataProvider.stores[t].store.get('source').length\n );\n this.dimensionProvider.setCustomSizes(t, {}, true);\n });\n }\n\n @Watch('theme') themeChanged(t: ThemeSpace.Theme) {\n this.themeService.register(t);\n this.dimensionProvider.setSettings({ originItemSize: this.themeService.rowSize }, 'rgRow');\n this.dimensionProvider.setSettings({ originItemSize: this.colSize }, 'rgCol');\n }\n\n @Watch('source')\n @Watch('pinnedBottomSource')\n @Watch('pinnedTopSource')\n dataSourceChanged<T extends RevoGrid.DataType>(\n newVal: T[] = [],\n _: T[]|undefined,\n watchName: string\n ) {\n let type: RevoGrid.DimensionRows = 'rgRow';\n switch (watchName) {\n case 'pinnedBottomSource':\n type = 'rowPinEnd';\n break;\n case 'pinnedTopSource':\n type = 'rowPinStart';\n break;\n case 'source':\n type = 'rgRow';\n /** applied for source only for cross compatability between plugins */\n const beforesourceset = this.beforesourceset.emit({\n type,\n source: newVal,\n });\n newVal = beforesourceset.detail.source as T[];\n break;\n }\n this.dataSourceApply(newVal, type);\n /** applied for source only for cross compatability between plugins */\n if (watchName === 'source') {\n this.aftersourceset.emit({\n type,\n source: newVal,\n });\n }\n }\n\n @Watch('rowDefinitions') rowDefChanged(after: any, before?: any) {\n const { detail: {\n vals: newVal,\n oldVals: oldVal\n }} = this.beforerowdefinition.emit({\n vals: after,\n oldVals: before\n });\n // apply new vals\n const newRows = rowDefinitionByType(newVal);\n // clear current defs\n if (oldVal) {\n const remove = rowDefinitionRemoveByType(oldVal);\n // clear all old data and drop sizes\n each(remove, (_, t: RevoGrid.DimensionRows) => {\n this.dimensionProvider.clearSize(\n t,\n this.dataProvider.stores[t].store.get('source').length\n );\n });\n }\n if (!newVal.length) {\n return;\n }\n each(newRows, (r, k: RevoGrid.DimensionRows) => this.dimensionProvider.setCustomSizes(k, r.sizes || {}));\n }\n\n @Watch('trimmedRows') trimmedRowsChanged(newVal: Record<number, boolean> = {}) {\n this.addTrimmed(newVal);\n }\n /**\n * Grouping\n */\n @Watch('grouping') groupingChanged(newVal: GroupingOptions = {}) {\n let grPlugin: GroupingRowPlugin | undefined;\n for (let p of this.internalPlugins) {\n const isGrouping = (p as unknown) as GroupingRowPlugin;\n if (isGrouping.setGrouping) {\n grPlugin = isGrouping;\n break;\n }\n }\n if (!grPlugin) {\n return;\n }\n grPlugin.setGrouping(newVal || {});\n }\n /**\n * Stretch Plugin Apply\n */\n @Watch('stretch') applyStretch(isStretch: boolean | string) {\n if (isStretch === 'false') {\n isStretch = false;\n }\n let stretch = this.internalPlugins.filter(p => isStretchPlugin(p))[0];\n if ((typeof isStretch === 'boolean' && isStretch) || isStretch === 'true') {\n if (!stretch) {\n this.internalPlugins.push(\n new StretchColumn(this.element, {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n dimensionProvider: this.dimensionProvider,\n }),\n );\n } else if (isStretchPlugin(stretch)) {\n stretch.applyStretch(this.columnProvider.getRawColumns());\n }\n } else if (stretch) {\n const index = this.internalPlugins.indexOf(stretch);\n this.internalPlugins.splice(index, 1);\n }\n }\n\n /** External subscribe */\n @Event() filterconfigchanged: EventEmitter;\n @Watch('filter') applyFilter(cfg: boolean | ColumnFilterConfig) {\n this.filterconfigchanged.emit(cfg);\n }\n\n @Event() rowheaderschanged: EventEmitter;\n @Watch('rowHeaders') rowHeadersChange(rowHeaders?: RevoGrid.RowHeaders | boolean) {\n this.rowheaderschanged.emit(rowHeaders);\n }\n\n private dataSourceApply(source: RevoGrid.DataType[] = [], type: RevoGrid.DimensionRows = 'rgRow') {\n const beforesourceset = this.beforeAnySource.emit({\n type,\n source,\n });\n const newSource = [...beforesourceset.detail.source];\n return this.dataProvider.setData(newSource, type);\n }\n\n connectedCallback() {\n this.viewportProvider = new ViewportProvider();\n this.themeService = new ThemeService({\n rowSize: this.rowSize,\n });\n const dimensionProviderConfig: DimensionConfig = {\n realSizeChanged: (k: RevoGrid.MultiDimensionType) => this.contentsizechanged.emit(k),\n };\n this.dimensionProvider = new DimensionProvider(this.viewportProvider, dimensionProviderConfig);\n this.columnProvider = new ColumnDataProvider();\n this.selectionStoreConnector = new SelectionStoreConnector();\n this.dataProvider = new DataProvider(this.dimensionProvider);\n this.uuid = `${new Date().getTime()}-rvgrid`;\n\n const pluginData = {\n data: this.dataProvider,\n column: this.columnProvider,\n dimension: this.dimensionProvider,\n viewport: this.viewportProvider,\n selection: this.selectionStoreConnector,\n };\n\n if (this.autoSizeColumn) {\n this.internalPlugins.push(\n new AutoSize(\n this.element,\n {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n dimensionProvider: this.dimensionProvider,\n },\n typeof this.autoSizeColumn === 'object' ? this.autoSizeColumn : undefined,\n ),\n );\n }\n if (this.filter) {\n this.internalPlugins.push(new FilterPlugin(this.element, this.uuid, typeof this.filter === 'object' ? this.filter : undefined));\n }\n if (this.exporting) {\n this.internalPlugins.push(new ExportFilePlugin(this.element));\n }\n this.internalPlugins.push(new SortingPlugin(this.element));\n\n this.internalPlugins.push(\n new GroupingRowPlugin(this.element, {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n }),\n );\n if (this.canMoveColumns) {\n this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));\n }\n if (this.plugins) {\n this.plugins.forEach(p => {\n this.internalPlugins.push(\n new p(this.element, pluginData),\n );\n });\n }\n this.applyStretch(this.stretch);\n this.themeChanged(this.theme);\n this.columnChanged(this.columns);\n\n this.dataSourceChanged(this.source, undefined, 'source');\n this.dataSourceChanged(this.pinnedTopSource, undefined, 'pinnedTopSource');\n this.dataSourceChanged(this.pinnedBottomSource, undefined, 'pinnedBottomSource');\n\n this.trimmedRowsChanged(this.trimmedRows);\n this.rowDefChanged(this.rowDefinitions);\n this.groupingChanged(this.grouping);\n\n this.scrollingService = new GridScrollingService((e: RevoGrid.ViewPortScrollEvent) => {\n this.dimensionProvider.setViewPortCoordinate({\n coordinate: e.coordinate,\n type: e.dimension,\n });\n this.viewportscroll.emit(e);\n });\n }\n\n disconnectedCallback() {\n // destroy plugins on element disconnect\n each(this.internalPlugins, p => p.destroy());\n this.internalPlugins = [];\n }\n\n render() {\n const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');\n this.viewport = new ViewportService(\n {\n columnProvider: this.columnProvider,\n dataProvider: this.dataProvider,\n dimensionProvider: this.dimensionProvider,\n viewportProvider: this.viewportProvider,\n uuid: this.uuid,\n scrollingService: this.scrollingService,\n orderService: this.orderService,\n selectionStoreConnector: this.selectionStoreConnector,\n resize: c => this.aftercolumnresize.emit(c),\n },\n contentHeight,\n );\n\n const views: VNode[] = [];\n if (this.rowHeaders && this.viewport.columns.length) {\n const anyView = this.viewport.columns[0];\n views.push(\n <revogr-row-headers\n additionalData={this.additionalData}\n height={contentHeight}\n rowClass={this.rowClass}\n resize={this.resize}\n dataPorts={anyView.dataPorts}\n headerProp={anyView.headerProp}\n uiid={anyView.prop[UUID]}\n rowHeaderColumn={typeof this.rowHeaders === 'object' ? this.rowHeaders : undefined}\n onScrollViewport={({ detail: e }: CustomEvent) => this.scrollingService.onScroll(e, 'headerRow')}\n onElementToScroll={({ detail: e }: CustomEvent) => this.scrollingService.registerElement(e, 'headerRow')}\n />,\n );\n }\n views.push(\n <ViewPortSections\n additionalData={this.additionalData}\n columnFilter={!!this.filter}\n resize={this.resize}\n readonly={this.readonly}\n range={this.range}\n rowClass={this.rowClass}\n editors={this.editors}\n applyEditorChangesOnClose={this.applyOnClose}\n useClipboard={this.useClipboard}\n columns={this.viewport.columns}\n onSelectAll={() => {\n this.selectionStoreConnector.selectAll();\n }}\n onEdit={detail => {\n const event = this.beforeeditstart.emit(detail);\n if (!event.defaultPrevented) {\n this.selectionStoreConnector.setEdit(detail.val);\n }\n }}\n onCancelEdit={() => {\n this.selectionStoreConnector.setEdit(false);\n }}\n registerElement={(e, k) => this.scrollingService.registerElement(e, k)}\n onScroll={(details, k) => this.scrollingService.onScroll(details, k)}\n focusTemplate={this.focusTemplate}\n />,\n );\n return (\n <Host {...{ [`${UUID}`]: this.uuid }}>\n <RevoViewPort\n viewports={this.viewportProvider.stores}\n dimensions={this.dimensionProvider.stores}\n orderRef={e => (this.orderService = e)}\n registerElement={(e, k) => this.scrollingService.registerElement(e, k)}\n nakedClick={() => this.viewport.clearEdit()}\n onScroll={details => this.scrollingService.onScroll(details)}\n >\n {views}\n </RevoViewPort>\n {this.extraElements}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"revo-grid.js","sourceRoot":"","sources":["../../../src/components/revoGrid/revo-grid.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Watch, Element, Listen, Event, EventEmitter, Method, VNode, State, Host } from '@stencil/core';\nimport each from 'lodash/each';\n\nimport ColumnDataProvider, { ColumnCollection } from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport { getVisibleSourceItem } from '../../store/dataSource/data.store';\nimport DimensionProvider, { DimensionConfig } from '../../services/dimension.provider';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { Edition, Selection, RevoGrid, ThemeSpace, RevoPlugin } from '../../interfaces';\nimport ThemeService from '../../themeManager/themeService';\nimport { timeout } from '../../utils';\nimport AutoSize, { AutoSizeColumnConfig } from '../../plugins/autoSizeColumn';\nimport { columnTypes as columnDimensions, rowTypes as rowDimensions } from '../../store/storeTypes';\nimport FilterPlugin, { ColumnFilterConfig, FilterCollection } from '../../plugins/filter/filter.plugin';\nimport SortingPlugin from '../../plugins/sorting/sorting.plugin';\nimport ExportFilePlugin from '../../plugins/export/export.plugin';\nimport { DataInput } from '../../plugins/export/types';\nimport GroupingRowPlugin from '../../plugins/groupingRow/grouping.row.plugin';\nimport { GroupingOptions } from '../../plugins/groupingRow/grouping.row.types';\nimport { ColumnSource, RowSource } from '../data/columnService';\nimport { RevoViewPort } from './viewport';\nimport ViewportService, { FocusedData } from './viewport.service';\nimport { ViewPortSections } from './viewport.section';\nimport GridScrollingService from './viewport.scrolling.service';\nimport { UUID } from '../../utils/consts';\nimport SelectionStoreConnector from '../../services/selection.store.connector';\nimport { OrdererService } from '../order/orderRenderer';\nimport StretchColumn, { isStretchPlugin } from '../../plugins/stretchPlugin';\nimport { rowDefinitionByType, rowDefinitionRemoveByType } from './grid.helpers';\nimport ColumnPlugin from '../../plugins/moveColumn/columnDragPlugin';\nimport { getFromEvent } from '../../utils/events';\n\n@Component({\n tag: 'revo-grid',\n styleUrl: 'revo-grid-style.scss',\n})\nexport class RevoGridComponent {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n /** Excel like show rgRow indexe per rgRow */\n @Prop() rowHeaders: RevoGrid.RowHeaders | boolean;\n /**\n * Defines how many rows/columns should be rendered outside visible area.\n */\n @Prop() frameSize: number = 1;\n /**\n * Indicates default rgRow size.\n * By default 0, means theme package size will be applied\n */\n @Prop() rowSize: number = 0;\n /** Indicates default column size. */\n @Prop() colSize: number = 100;\n /** When true, user can range selection. */\n @Prop() range: boolean = false;\n /** When true, grid in read only mode. */\n @Prop() readonly: boolean = false;\n /** When true, columns are resizable. */\n @Prop() resize: boolean = false;\n /** When true cell focus appear. */\n @Prop() canFocus: boolean = true;\n /** When true enable clipboard. */\n @Prop() useClipboard: boolean = true;\n /**\n * Columns - defines an array of grid columns.\n * Can be column or grouped column.\n */\n @Prop() columns: (RevoGrid.ColumnRegular | RevoGrid.ColumnGrouping)[] = [];\n /**\n * Source - defines main data source.\n * Can be an Object or 2 dimensional array([][]);\n * Keys/indexes referenced from columns Prop\n */\n @Prop() source: RevoGrid.DataType[] = [];\n /** Pinned top Source: {[T in ColumnProp]: any} - defines pinned top rows data source. */\n @Prop() pinnedTopSource: RevoGrid.DataType[] = [];\n /** Pinned bottom Source: {[T in ColumnProp]: any} - defines pinned bottom rows data source. */\n @Prop() pinnedBottomSource: RevoGrid.DataType[] = [];\n /** Row properies applied */\n @Prop() rowDefinitions: RevoGrid.RowDefinition[] = [];\n\n /** Custom editors register */\n @Prop() editors: Edition.Editors = {};\n\n /**\n * Apply changes typed in editor on editor close except Escape cases\n * If custom editor in use @method getValue required\n * Check interfaces.d.ts @EditorBase for more info\n */\n @Prop() applyOnClose = false;\n\n /**\n * Custom grid plugins\n * Has to be predefined during first grid init\n * Every plugin should be inherited from BasePlugin\n */\n @Prop() plugins: RevoPlugin.PluginClass[];\n\n /** Column Types Format\n * Every type represent multiple column properties\n * Types will be merged but can be replaced with column properties\n * Types were made as separate objects to be reusable per multiple columns\n */\n @Prop() columnTypes: { [name: string]: RevoGrid.ColumnType } = {};\n\n /** Theme name */\n @Prop({ reflect: true, mutable: true }) theme: ThemeSpace.Theme = 'default';\n\n /**\n * Row class property\n * Define this property in rgRow object and this will be mapped as rgRow class\n */\n @Prop({ reflect: true }) rowClass: string = '';\n\n /**\n * Autosize config\n * Enable columns autoSize, for more details check @autoSizeColumn plugin\n * By default disabled, hence operation is not resource efficient\n * true to enable with default params (double header separator click for autosize)\n * or provide config\n */\n @Prop() autoSizeColumn: boolean | AutoSizeColumnConfig = false;\n\n /**\n * Enables filter plugin\n * Can be boolean\n * Can be filter collection\n */\n @Prop() filter: boolean | ColumnFilterConfig = false;\n\n\n /**\n * Apply changes typed in editor on editor close except Escape cases\n * If custom editor in use @method getValue required\n * Check interfaces.d.ts @EditorBase for more info\n */\n @Prop() focusTemplate: RevoGrid.FocusTemplateFunc;\n\n /**\n * Enables column move plugin\n * Can be boolean\n */\n @Prop() canMoveColumns: boolean = false;\n /**\n * Trimmed rows\n * Functionality which allows to hide rows from main data set\n * @trimmedRows are physical rgRow indexes to hide\n */\n @Prop() trimmedRows: Record<number, boolean> = {};\n\n /**\n * Enables export plugin\n * Can be boolean\n * Can be export options\n */\n @Prop() exporting = false;\n\n /**\n * Group models by provided properties\n * Define properties to be groped by\n */\n @Prop() grouping: GroupingOptions;\n\n /**\n * Defines stretch strategy for columns with @StretchColumn plugin\n * if there are more space on the right last column size would be increased\n */\n @Prop() stretch: boolean | string = true;\n\n\n /**\n * Additional data to be passed to plugins\n */\n @Prop() additionalData: any = {};\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n /**\n * contentsizechanged event.\n * Triggered when new content size applied.\n * Not including header size\n * Event is not returning size\n * To get actual size use getContentSize after event triggered\n */\n @Event() contentsizechanged: EventEmitter<RevoGrid.MultiDimensionType>;\n /**\n * Before edit event.\n * Triggered before edit data applied.\n * Use e.preventDefault() to prevent edit data set and use you own.\n * Use e.val = {your value} to replace edit result with your own.\n */\n @Event() beforeedit: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n /**\n * Before range edit event.\n * Triggered before range data applied, when range selection happened.\n * Use e.preventDefault() to prevent edit data set and use you own.\n */\n @Event() beforerangeedit: EventEmitter<Edition.BeforeRangeSaveDataDetails>;\n\n /**\n * After edit.\n * Triggered after data applied or range changed.\n */\n @Event() afteredit: EventEmitter<Edition.BeforeSaveDataDetails | Edition.BeforeRangeSaveDataDetails>;\n\n /**\n * Before autofill.\n * Triggered before autofill applied.\n * Use e.preventDefault() to prevent edit data apply.\n */\n @Event() beforeautofill: EventEmitter<Selection.ChangedRange>;\n\n /**\n * Before range apply.\n * Triggered before range applied.\n * Use e.preventDefault() to prevent range.\n */\n @Event() beforeange: EventEmitter<Selection.ChangedRange>;\n\n /**\n * Triggered after focus render finished.\n * Can be used to access a focus element through @event.target\n */\n @Event() afterfocus: EventEmitter<{ model: any; column: RevoGrid.ColumnRegular; }>;\n\n /**\n * Before rgRow order apply.\n * Use e.preventDefault() to prevent rgRow order change.\n */\n @Event() roworderchanged: EventEmitter<{ from: number; to: number }>;\n\n /**\n * Before source update sorting apply.\n * Use this event if you intended to prevent sorting on data update.\n * Use e.preventDefault() to prevent sorting data change during rows source update.\n */\n @Event() beforesourcesortingapply: EventEmitter;\n\n /**\n * Before sorting apply.\n * Use e.preventDefault() to prevent sorting data change.\n */\n @Event() beforesortingapply: EventEmitter<{\n column: RevoGrid.ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }>;\n /**\n * Before sorting event.\n * Initial sorting triggered, if this event stops no other event called.\n * Use e.preventDefault() to prevent sorting.\n */\n @Event() beforesorting: EventEmitter<{\n column: RevoGrid.ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }>;\n\n /**\n * Row order change started.\n * Use e.preventDefault() to prevent rgRow order change.\n * Use e.text = 'new name' to change item name on start.\n */\n @Event() rowdragstart: EventEmitter<{ pos: RevoGrid.PositionItem; text: string }>;\n\n /**\n * On header click.\n */\n @Event() headerclick: EventEmitter<RevoGrid.ColumnRegular>;\n\n /**\n * Before cell focus changed.\n * Use e.preventDefault() to prevent cell focus change.\n */\n @Event() beforecellfocus: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n /**\n * Before grid focus lost happened.\n * Use e.preventDefault() to prevent cell focus change.\n */\n @Event() beforefocuslost: EventEmitter<FocusedData | null>;\n /**\n * Before data apply.\n * You can override data source here\n */\n @Event() beforesourceset: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /**\n * Before data apply.\n * You can override data source here\n */\n @Event({ eventName: 'before-any-source' }) beforeAnySource: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /** After rows updated */\n @Event() aftersourceset: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /**\n * After all rows updated. Use it if you want to track all changes from sources pinned and main\n */\n @Event({ eventName: 'after-any-source' }) afterAnySource: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /** Before column update */\n @Event() beforecolumnsset: EventEmitter<ColumnCollection>;\n\n /** Before column applied but after column set gathered and viewport updated */\n @Event() beforecolumnapplied: EventEmitter<ColumnCollection>;\n\n /** Column updated */\n @Event() aftercolumnsset: EventEmitter<{\n columns: ColumnCollection;\n order: Record<RevoGrid.ColumnProp, 'asc' | 'desc'>;\n }>;\n\n /**\n * Before filter applied to data source\n * Use e.preventDefault() to prevent cell focus change\n * Update @collection if you wish to change filters\n */\n @Event() beforefilterapply: EventEmitter<{ collection: FilterCollection }>;\n\n /**\n * Before filter trimmed values\n * Use e.preventDefault() to prevent value trimming and filter apply\n * Update @collection if you wish to change filters\n * Update @itemsToFilter if you wish to filter indexes of trimming\n */\n @Event() beforefiltertrimmed: EventEmitter<{ collection: FilterCollection; itemsToFilter: Record<number, boolean> }>;\n\n /**\n * Before trimmed values\n * Use e.preventDefault() to prevent value trimming\n * Update @trimmed if you wish to filter indexes of trimming\n */\n @Event() beforetrimmed: EventEmitter<{ trimmed: Record<number, boolean>; trimmedType: string; type: string }>;\n\n /**\n * Notify trimmed applied\n */\n @Event() aftertrimmed: EventEmitter;\n\n /**\n * Triggered when view port scrolled\n */\n @Event() viewportscroll: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n /**\n * Before export\n * Use e.preventDefault() to prevent export\n * Replace data in Event in case you want to modify it in export\n */\n @Event() beforeexport: EventEmitter<DataInput>;\n\n /**\n * Before edit started\n * Use e.preventDefault() to prevent edit\n */\n @Event() beforeeditstart: EventEmitter<Edition.BeforeSaveDataDetails>;\n /**\n * After column resize\n * Get resized columns\n */\n @Event() aftercolumnresize: EventEmitter<{ [index: number]: RevoGrid.ColumnRegular }>;\n /**\n * Before row definition\n */\n @Event() beforerowdefinition: EventEmitter<{ vals: any; oldVals: any; }>;\n\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n /**\n * Refreshes data viewport.\n * Can be specific part as rgRow or pinned rgRow or 'all' by default.\n */\n @Method() async refresh(type: RevoGrid.DimensionRows | 'all' = 'all') {\n this.dataProvider.refresh(type);\n }\n\n /** Scrolls view port to specified rgRow index */\n @Method() async scrollToRow(coordinate: number = 0) {\n const y = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgRow',\n });\n await this.scrollToCoordinate({ y });\n }\n\n /** Scrolls view port to specified column index */\n @Method() async scrollToColumnIndex(coordinate: number = 0) {\n const x = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgCol',\n });\n await this.scrollToCoordinate({ x });\n }\n\n /** Scrolls view port to specified column prop */\n @Method() async scrollToColumnProp(prop: RevoGrid.ColumnProp) {\n const coordinate = this.columnProvider.getColumnIndexByProp(prop, 'rgCol');\n if (coordinate < 0) {\n // already on the screen\n return;\n }\n const x = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgCol',\n });\n await this.scrollToCoordinate({ x });\n }\n\n /** Update columns */\n @Method() async updateColumns(cols: RevoGrid.ColumnRegular[]) {\n this.columnProvider.updateColumns(cols);\n }\n\n /** Add trimmed by type */\n @Method() async addTrimmed(trimmed: Record<number, boolean>, trimmedType = 'external', type: RevoGrid.DimensionRows = 'rgRow') {\n const event = this.beforetrimmed.emit({\n trimmed,\n trimmedType,\n type,\n });\n if (event.defaultPrevented) {\n return event;\n }\n this.dataProvider.setTrimmed({ [trimmedType]: event.detail.trimmed }, type);\n this.aftertrimmed.emit();\n return event;\n }\n\n /** Scrolls view port to coordinate */\n @Method() async scrollToCoordinate(cell: Partial<Selection.Cell>) {\n this.viewport?.scrollToCell(cell);\n }\n\n /** Bring cell to edit mode */\n @Method() async setCellEdit(rgRow: number, prop: RevoGrid.ColumnProp, rowSource: RevoGrid.DimensionRows = 'rgRow') {\n const rgCol = ColumnDataProvider.getColumnByProp(this.columns, prop);\n if (!rgCol) {\n return;\n }\n await timeout();\n const colGroup = rgCol.pin || 'rgCol';\n this.viewport?.setEdit(rgRow, this.columnProvider.getColumnIndexByProp(prop, colGroup), colGroup, rowSource);\n }\n\n /** Set focus range */\n @Method() async setCellsFocus(\n cellStart: Selection.Cell = { x: 0, y: 0 },\n cellEnd: Selection.Cell = { x: 0, y: 0 },\n colType = 'rgCol',\n rowType = 'rgRow',\n ) {\n this.viewport?.setFocus(colType, rowType, cellStart, cellEnd);\n }\n\n /**\n * Register new virtual node inside of grid\n * Used for additional items creation such as plugin elements\n */\n @Method() async registerVNode(elements: VNode[]) {\n this.extraElements.push(...elements);\n this.extraElements = [...this.extraElements];\n }\n\n /** Get data from source */\n @Method() async getSource(type: RevoGrid.DimensionRows = 'rgRow') {\n return this.dataProvider.stores[type].store.get('source');\n }\n\n /**\n * Get data from visible part of source\n * Trimmed/filtered rows will be excluded\n * @param type - type of source\n */\n @Method() async getVisibleSource(type: RevoGrid.DimensionRows = 'rgRow') {\n return getVisibleSourceItem(this.dataProvider.stores[type].store);\n }\n\n /**\n * Provides access to rows internal store observer\n * Can be used for plugin support\n * @param type - type of source\n */\n @Method() async getSourceStore(type: RevoGrid.DimensionRows = 'rgRow'): Promise<RowSource> {\n return this.dataProvider.stores[type].store;\n }\n /**\n * Provides access to column internal store observer\n * Can be used for plugin support\n * @param type - type of column\n */\n @Method() async getColumnStore(type: RevoGrid.DimensionCols = 'rgCol'): Promise<ColumnSource> {\n return this.columnProvider.stores[type].store;\n }\n\n /**\n * Update column sorting\n * @param column - full column details to update\n * @param index - virtual column index\n * @param order - order to apply\n */\n @Method() async updateColumnSorting(column: RevoGrid.ColumnRegular, index: number, order: 'asc' | 'desc', additive: boolean) {\n return this.columnProvider.updateColumnSorting(column, index, order, additive);\n }\n\n /**\n * Clears column sorting\n */\n @Method() async clearSorting() {\n this.columnProvider.clearSorting();\n }\n\n /**\n * Receive all columns in data source\n */\n @Method() async getColumns(): Promise<RevoGrid.ColumnRegular[]> {\n return this.columnProvider.getColumns();\n }\n\n /**\n * Clear current grid focus\n */\n @Method() async clearFocus() {\n const focused = this.viewport?.getFocused();\n const event = this.beforefocuslost.emit(focused);\n if (event.defaultPrevented) {\n return;\n }\n this.selectionStoreConnector.clearAll();\n }\n\n /**\n * Get all active plugins instances\n */\n @Method() async getPlugins(): Promise<RevoPlugin.Plugin[]> {\n return [...this.internalPlugins];\n }\n\n /**\n * Get the currently focused cell.\n */\n @Method() async getFocused(): Promise<FocusedData | null> {\n return this.viewport?.getFocused();\n }\n\n /**\n * Get size of content\n * Including all pinned data\n */\n @Method() async getContentSize(): Promise<Selection.Cell> {\n return this.dimensionProvider?.getFullSize();\n }\n /**\n * Get the currently selected Range.\n */\n @Method() async getSelectedRange(): Promise<Selection.RangeArea|null> {\n return this.viewport?.getSelectedRange();\n }\n\n\n // --------------------------------------------------------------------------\n //\n // Listeners outside scope\n //\n // --------------------------------------------------------------------------\n\n private clickTrackForFocusClear: number | null = null;\n @Listen('touchstart', { target: 'document' })\n @Listen('mousedown', { target: 'document' })\n mousedownHandle(event: MouseEvent | TouchEvent) {\n const screenX = getFromEvent(event, 'screenX');\n const screenY = getFromEvent(event, 'screenY');\n if (screenX === null || screenY === null) {\n return;\n }\n\n this.clickTrackForFocusClear = screenX + screenY;\n }\n @Listen('touchend', { target: 'document' })\n @Listen('mouseup', { target: 'document' })\n mouseupHandle(event: MouseEvent | TouchEvent) {\n const screenX = getFromEvent(event, 'screenX');\n const screenY = getFromEvent(event, 'screenY');\n if (screenX === null || screenY === null) {\n return;\n }\n\n if (event.defaultPrevented) {\n return;\n }\n const target = event.target as HTMLElement | null;\n const pos = screenX + screenY;\n // detect if mousemove then do nothing\n if (Math.abs(this.clickTrackForFocusClear - pos) > 10) {\n return;\n }\n\n // check if action finished inside of the document\n // clear data which is outside of grid\n // if event prevented or it is current table don't clear focus\n if (target?.closest(`[${UUID}=\"${this.uuid}\"]`)) {\n return;\n }\n this.clearFocus();\n }\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n /** DRAG AND DROP */\n @Listen('internalRowDragStart') onRowDragStarted(e: CustomEvent<{ pos: RevoGrid.PositionItem; text: string; event: MouseEvent }>) {\n // e.cancelBubble = true;\n const dragStart = this.rowdragstart.emit(e.detail);\n if (dragStart.defaultPrevented) {\n e.preventDefault();\n return;\n }\n this.orderService?.start(this.element, { ...e.detail, ...dragStart.detail });\n }\n\n @Listen('internalRowDragEnd') onRowDragEnd() {\n this.orderService?.end();\n }\n\n @Listen('internalRowDrag') onRowDrag({ detail }: CustomEvent<RevoGrid.PositionItem>) {\n this.orderService?.move(detail);\n }\n\n @Listen('internalRowMouseMove') onRowMouseMove(e: CustomEvent<Selection.Cell>): void {\n // e.cancelBubble = true;\n this.orderService?.moveTip(e.detail);\n }\n\n @Listen('internalCellEdit') async onBeforeEdit(e: CustomEvent<Edition.BeforeSaveDataDetails>) {\n // e.cancelBubble = true;\n const { defaultPrevented, detail } = this.beforeedit.emit(e.detail);\n await timeout();\n // apply data\n if (!defaultPrevented) {\n this.dataProvider.setCellData(detail);\n this.afteredit.emit(detail);\n }\n }\n\n @Listen('internalRangeDataApply') onBeforeRangeEdit(e: CustomEvent<Edition.BeforeRangeSaveDataDetails>) {\n // e.cancelBubble = true;\n const { defaultPrevented, detail } = this.beforerangeedit.emit(e.detail);\n if (defaultPrevented) {\n e.preventDefault();\n return;\n }\n this.afteredit.emit(detail);\n }\n\n @Listen('internalSelectionChanged') onRangeChanged(e: CustomEvent<Selection.ChangedRange>) {\n // e.cancelBubble = true;\n const beforeange = this.beforeange.emit(e.detail);\n if (beforeange.defaultPrevented) {\n e.preventDefault();\n }\n const beforeFill = this.beforeautofill.emit(beforeange.detail);\n if (beforeFill.defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('initialRowDropped') onRowDropped(e: CustomEvent<{ from: number; to: number }>) {\n // e.cancelBubble = true;\n const { defaultPrevented } = this.roworderchanged.emit(e.detail);\n if (defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('initialHeaderClick') onHeaderClick(e: CustomEvent<RevoGrid.InitialHeaderClick>) {\n const { defaultPrevented } = this.headerclick.emit({\n ...e.detail.column,\n originalEvent: e.detail.originalEvent,\n });\n if (defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('beforeFocusCell') onCellFocus(e: CustomEvent<Edition.BeforeSaveDataDetails>) {\n // e.cancelBubble = true;\n const { defaultPrevented } = this.beforecellfocus.emit(e.detail);\n if (!this.canFocus || defaultPrevented) {\n e.preventDefault();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n // for internal plugin usage\n @State() extraElements: VNode[] = [];\n\n uuid: string | null = null;\n columnProvider: ColumnDataProvider;\n dataProvider: DataProvider;\n dimensionProvider: DimensionProvider;\n viewportProvider: ViewportProvider;\n private themeService: ThemeService;\n private viewport: ViewportService | null = null;\n\n private orderService: OrdererService;\n private selectionStoreConnector: SelectionStoreConnector;\n private scrollingService: GridScrollingService;\n\n /**\n * Plugins\n * Define plugins collection\n */\n private internalPlugins: RevoPlugin.Plugin[] = [];\n\n @Element() element: HTMLRevoGridElement;\n\n /**\n * Column format change will trigger column structure update\n */\n @Watch('columnTypes') columnTypesChanged() {\n this.columnChanged(this.columns);\n }\n @Watch('columns') columnChanged(newVal: RevoGrid.ColumnDataSchema[] = []) {\n // clear existing data\n this.dimensionProvider.dropColumns();\n const columnGather = ColumnDataProvider.getColumns(newVal, 0, this.columnTypes);\n this.beforecolumnsset.emit(columnGather);\n for (let type of columnDimensions) {\n const items = columnGather.columns[type];\n this.dimensionProvider.setNewColumns(type, items.length, ColumnDataProvider.getSizes(items), type !== 'rgCol');\n }\n this.beforecolumnapplied.emit(columnGather);\n const columns = this.columnProvider.setColumns(columnGather);\n this.aftercolumnsset.emit({\n columns,\n order: this.columnProvider.order,\n });\n }\n\n @Watch('rowSize') rowSizeChanged(s: number) {// clear existing data\n this.dimensionProvider.setSettings({ originItemSize: s }, 'rgRow');\n rowDimensions.forEach((t) => {\n this.dimensionProvider.clearSize(\n t,\n this.dataProvider.stores[t].store.get('source').length\n );\n this.dimensionProvider.setCustomSizes(t, {}, true);\n });\n }\n\n @Watch('theme') themeChanged(t: ThemeSpace.Theme) {\n this.themeService.register(t);\n this.dimensionProvider.setSettings({ originItemSize: this.themeService.rowSize }, 'rgRow');\n this.dimensionProvider.setSettings({ originItemSize: this.colSize }, 'rgCol');\n }\n\n @Watch('source')\n @Watch('pinnedBottomSource')\n @Watch('pinnedTopSource')\n dataSourceChanged<T extends RevoGrid.DataType>(\n newVal: T[] = [],\n _: T[]|undefined,\n watchName: string\n ) {\n let type: RevoGrid.DimensionRows = 'rgRow';\n switch (watchName) {\n case 'pinnedBottomSource':\n type = 'rowPinEnd';\n break;\n case 'pinnedTopSource':\n type = 'rowPinStart';\n break;\n case 'source':\n type = 'rgRow';\n /** applied for source only for cross compatability between plugins */\n const beforesourceset = this.beforesourceset.emit({\n type,\n source: newVal,\n });\n newVal = beforesourceset.detail.source as T[];\n break;\n }\n const beforesourceset = this.beforeAnySource.emit({\n type,\n source: newVal,\n });\n const newSource = [...beforesourceset.detail.source];\n this.dataProvider.setData(newSource, type);\n \n /** applied for source only for cross compatability between plugins */\n if (watchName === 'source') {\n this.aftersourceset.emit({\n type,\n source: newVal,\n });\n }\n this.afterAnySource.emit({\n type,\n source: newVal,\n });\n }\n\n @Watch('rowDefinitions') rowDefChanged(after: any, before?: any) {\n const { detail: {\n vals: newVal,\n oldVals: oldVal\n }} = this.beforerowdefinition.emit({\n vals: after,\n oldVals: before\n });\n // apply new vals\n const newRows = rowDefinitionByType(newVal);\n // clear current defs\n if (oldVal) {\n const remove = rowDefinitionRemoveByType(oldVal);\n // clear all old data and drop sizes\n each(remove, (_, t: RevoGrid.DimensionRows) => {\n this.dimensionProvider.clearSize(\n t,\n this.dataProvider.stores[t].store.get('source').length\n );\n });\n }\n if (!newVal.length) {\n return;\n }\n each(newRows, (r, k: RevoGrid.DimensionRows) => this.dimensionProvider.setCustomSizes(k, r.sizes || {}));\n }\n\n @Watch('trimmedRows') trimmedRowsChanged(newVal: Record<number, boolean> = {}) {\n this.addTrimmed(newVal);\n }\n /**\n * Grouping\n */\n @Watch('grouping') groupingChanged(newVal: GroupingOptions = {}) {\n let grPlugin: GroupingRowPlugin | undefined;\n for (let p of this.internalPlugins) {\n const isGrouping = (p as unknown) as GroupingRowPlugin;\n if (isGrouping.setGrouping) {\n grPlugin = isGrouping;\n break;\n }\n }\n if (!grPlugin) {\n return;\n }\n grPlugin.setGrouping(newVal || {});\n }\n /**\n * Stretch Plugin Apply\n */\n @Watch('stretch') applyStretch(isStretch: boolean | string) {\n if (isStretch === 'false') {\n isStretch = false;\n }\n let stretch = this.internalPlugins.filter(p => isStretchPlugin(p))[0];\n if ((typeof isStretch === 'boolean' && isStretch) || isStretch === 'true') {\n if (!stretch) {\n this.internalPlugins.push(\n new StretchColumn(this.element, {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n dimensionProvider: this.dimensionProvider,\n }),\n );\n } else if (isStretchPlugin(stretch)) {\n stretch.applyStretch(this.columnProvider.getRawColumns());\n }\n } else if (stretch) {\n const index = this.internalPlugins.indexOf(stretch);\n this.internalPlugins.splice(index, 1);\n }\n }\n\n /** External subscribe */\n @Event() filterconfigchanged: EventEmitter;\n @Watch('filter') applyFilter(cfg: boolean | ColumnFilterConfig) {\n this.filterconfigchanged.emit(cfg);\n }\n\n @Event() rowheaderschanged: EventEmitter;\n @Watch('rowHeaders') rowHeadersChange(rowHeaders?: RevoGrid.RowHeaders | boolean) {\n this.rowheaderschanged.emit(rowHeaders);\n }\n\n connectedCallback() {\n this.viewportProvider = new ViewportProvider();\n this.themeService = new ThemeService({\n rowSize: this.rowSize,\n });\n const dimensionProviderConfig: DimensionConfig = {\n realSizeChanged: (k: RevoGrid.MultiDimensionType) => this.contentsizechanged.emit(k),\n };\n this.dimensionProvider = new DimensionProvider(this.viewportProvider, dimensionProviderConfig);\n this.columnProvider = new ColumnDataProvider();\n this.selectionStoreConnector = new SelectionStoreConnector();\n this.dataProvider = new DataProvider(this.dimensionProvider);\n this.uuid = `${new Date().getTime()}-rvgrid`;\n\n const pluginData = {\n data: this.dataProvider,\n column: this.columnProvider,\n dimension: this.dimensionProvider,\n viewport: this.viewportProvider,\n selection: this.selectionStoreConnector,\n };\n\n if (this.autoSizeColumn) {\n this.internalPlugins.push(\n new AutoSize(\n this.element,\n {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n dimensionProvider: this.dimensionProvider,\n },\n typeof this.autoSizeColumn === 'object' ? this.autoSizeColumn : undefined,\n ),\n );\n }\n if (this.filter) {\n this.internalPlugins.push(new FilterPlugin(this.element, this.uuid, typeof this.filter === 'object' ? this.filter : undefined));\n }\n if (this.exporting) {\n this.internalPlugins.push(new ExportFilePlugin(this.element));\n }\n this.internalPlugins.push(new SortingPlugin(this.element));\n\n this.internalPlugins.push(\n new GroupingRowPlugin(this.element, {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n }),\n );\n if (this.canMoveColumns) {\n this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));\n }\n if (this.plugins) {\n this.plugins.forEach(p => {\n this.internalPlugins.push(\n new p(this.element, pluginData),\n );\n });\n }\n this.applyStretch(this.stretch);\n this.themeChanged(this.theme);\n this.columnChanged(this.columns);\n\n this.dataSourceChanged(this.source, undefined, 'source');\n this.dataSourceChanged(this.pinnedTopSource, undefined, 'pinnedTopSource');\n this.dataSourceChanged(this.pinnedBottomSource, undefined, 'pinnedBottomSource');\n\n this.trimmedRowsChanged(this.trimmedRows);\n this.rowDefChanged(this.rowDefinitions);\n this.groupingChanged(this.grouping);\n\n this.scrollingService = new GridScrollingService((e: RevoGrid.ViewPortScrollEvent) => {\n this.dimensionProvider.setViewPortCoordinate({\n coordinate: e.coordinate,\n type: e.dimension,\n });\n this.viewportscroll.emit(e);\n });\n }\n\n disconnectedCallback() {\n // destroy plugins on element disconnect\n each(this.internalPlugins, p => p.destroy());\n this.internalPlugins = [];\n }\n\n render() {\n const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');\n this.viewport = new ViewportService(\n {\n columnProvider: this.columnProvider,\n dataProvider: this.dataProvider,\n dimensionProvider: this.dimensionProvider,\n viewportProvider: this.viewportProvider,\n uuid: this.uuid,\n scrollingService: this.scrollingService,\n orderService: this.orderService,\n selectionStoreConnector: this.selectionStoreConnector,\n resize: c => this.aftercolumnresize.emit(c),\n },\n contentHeight,\n );\n\n const views: VNode[] = [];\n if (this.rowHeaders && this.viewport.columns.length) {\n const anyView = this.viewport.columns[0];\n views.push(\n <revogr-row-headers\n additionalData={this.additionalData}\n height={contentHeight}\n rowClass={this.rowClass}\n resize={this.resize}\n dataPorts={anyView.dataPorts}\n headerProp={anyView.headerProp}\n uiid={anyView.prop[UUID]}\n rowHeaderColumn={typeof this.rowHeaders === 'object' ? this.rowHeaders : undefined}\n onScrollViewport={({ detail: e }: CustomEvent) => this.scrollingService.scrollService(e, 'headerRow')}\n onElementToScroll={({ detail: e }: CustomEvent) => this.scrollingService.registerElement(e, 'headerRow')}\n />,\n );\n }\n views.push(\n <ViewPortSections\n additionalData={this.additionalData}\n columnFilter={!!this.filter}\n resize={this.resize}\n readonly={this.readonly}\n range={this.range}\n rowClass={this.rowClass}\n editors={this.editors}\n applyEditorChangesOnClose={this.applyOnClose}\n useClipboard={this.useClipboard}\n columns={this.viewport.columns}\n onSelectAll={() => {\n this.selectionStoreConnector.selectAll();\n }}\n onEdit={detail => {\n const event = this.beforeeditstart.emit(detail);\n if (!event.defaultPrevented) {\n this.selectionStoreConnector.setEdit(detail.val);\n }\n }}\n onCancelEdit={() => {\n this.selectionStoreConnector.setEdit(false);\n }}\n registerElement={(e, k) => this.scrollingService.registerElement(e, k)}\n scrollSection={(details, k) => this.scrollingService.scrollService(details, k)}\n scrollSectionSilent={(details, k) => this.scrollingService.scrollSilentService(details, k)}\n focusTemplate={this.focusTemplate}\n />,\n );\n return (\n <Host {...{ [`${UUID}`]: this.uuid }}>\n <RevoViewPort\n viewports={this.viewportProvider.stores}\n dimensions={this.dimensionProvider.stores}\n orderRef={e => (this.orderService = e)}\n registerElement={(e, k) => this.scrollingService.registerElement(e, k)}\n nakedClick={() => this.viewport.clearEdit()}\n onScroll={details => this.scrollingService.scrollService(details)}\n >\n {views}\n </RevoViewPort>\n {this.extraElements}\n </Host>\n );\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { RevoGrid } from '../../interfaces';
2
2
  export interface ElementScroll {
3
- changeScroll?(e: RevoGrid.ViewPortScrollEvent): Promise<RevoGrid.ViewPortScrollEvent>;
3
+ changeScroll?(e: RevoGrid.ViewPortScrollEvent, silent?: boolean): Promise<RevoGrid.ViewPortScrollEvent>;
4
4
  setScroll(e: RevoGrid.ViewPortScrollEvent): Promise<void>;
5
5
  }
6
6
  export type ElementsScroll = {
@@ -10,7 +10,11 @@ export default class GridScrollingService {
10
10
  private setViewport;
11
11
  private elements;
12
12
  constructor(setViewport: (e: RevoGrid.ViewPortScrollEvent) => void);
13
- onScroll(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): Promise<void>;
13
+ scrollService(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): Promise<void>;
14
+ /**
15
+ * Silent scroll update for mobile devices when we have negative scroll top
16
+ */
17
+ scrollSilentService(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): Promise<void>;
14
18
  private isPinnedColumn;
15
19
  registerElements(els: ElementsScroll): void;
16
20
  /**
@@ -1,37 +1,59 @@
1
1
  /*!
2
2
  * Built by Revolist
3
3
  */
4
+ import { columnTypes } from '../../store/storeTypes';
4
5
  export default class GridScrollingService {
5
6
  constructor(setViewport) {
6
7
  this.setViewport = setViewport;
7
8
  this.elements = {};
8
9
  }
9
- async onScroll(e, key) {
10
+ async scrollService(e, key) {
10
11
  let newEvent;
12
+ let event = e;
11
13
  for (let elKey in this.elements) {
12
14
  if (e.dimension === 'rgCol' && elKey === 'headerRow') {
13
15
  continue;
16
+ // pinned column only
14
17
  }
15
18
  else if (this.isPinnedColumn(key) && e.dimension === 'rgCol') {
16
19
  if (elKey === key || !e.delta) {
17
20
  continue;
18
21
  }
19
22
  for (let el of this.elements[elKey]) {
20
- el.changeScroll && (newEvent = el.changeScroll(e));
23
+ if (el.changeScroll) {
24
+ newEvent = el.changeScroll(e);
25
+ }
21
26
  }
22
27
  }
23
28
  else {
24
29
  for (let el of this.elements[elKey]) {
25
- el.setScroll(e);
30
+ await el.setScroll(e);
26
31
  }
27
32
  }
28
33
  }
29
- let event = e;
30
34
  if (newEvent) {
31
35
  event = await newEvent;
32
36
  }
33
37
  this.setViewport(event);
34
38
  }
39
+ /**
40
+ * Silent scroll update for mobile devices when we have negative scroll top
41
+ */
42
+ async scrollSilentService(e, key) {
43
+ var _a;
44
+ for (let elKey in this.elements) {
45
+ // skip same element update
46
+ if (elKey === key) {
47
+ continue;
48
+ }
49
+ if (columnTypes.includes(key) && (elKey === 'headerRow' || columnTypes.includes(elKey))) {
50
+ for (let el of this.elements[elKey]) {
51
+ await ((_a = el.changeScroll) === null || _a === void 0 ? void 0 : _a.call(el, e, true));
52
+ }
53
+ continue;
54
+ }
55
+ }
56
+ }
35
57
  isPinnedColumn(key) {
36
58
  return ['colPinStart', 'colPinEnd'].indexOf(key) > -1;
37
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"viewport.scrolling.service.js","sourceRoot":"","sources":["../../../src/components/revoGrid/viewport.scrolling.service.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,OAAO,oBAAoB;EAEvC,YAAoB,WAAsD;IAAtD,gBAAW,GAAX,WAAW,CAA2C;IADlE,aAAQ,GAAmB,EAAE,CAAC;EACuC,CAAC;EAE9E,KAAK,CAAC,QAAQ,CAAC,CAA+B,EAAE,GAAuC;IACrF,IAAI,QAA+C,CAAC;IACpD,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;MAC/B,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,KAAK,KAAK,WAAW,EAAE;QACpD,SAAS;OACV;WAAM,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE;QAC9D,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;UAC7B,SAAS;SACV;QACD,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;UACnC,EAAE,CAAC,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD;OACF;WAAM;QACL,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;UACnC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACjB;OACF;KACF;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,EAAE;MACZ,KAAK,GAAG,MAAM,QAAQ,CAAC;KACxB;IACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAC1B,CAAC;EAEO,cAAc,CAAC,GAAuC;IAC5D,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACxD,CAAC;EAED,gBAAgB,CAAC,GAAmB;IAClC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;EACtB,CAAC;EAED;;;;KAIG;EACH,eAAe,CAAC,EAAwB,EAAE,GAAW;IACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;MACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;KACzB;IACD,oBAAoB;IACpB,IAAI,EAAE,EAAE;MACN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7B;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC7B,kBAAkB;MAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC3B;EACH,CAAC;EAED,UAAU;IACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACrB,CAAC;CACF","sourcesContent":["import { RevoGrid } from '../../interfaces';\n\nexport interface ElementScroll {\n changeScroll?(e: RevoGrid.ViewPortScrollEvent): Promise<RevoGrid.ViewPortScrollEvent>;\n setScroll(e: RevoGrid.ViewPortScrollEvent): Promise<void>;\n}\nexport type ElementsScroll = { [key: string]: ElementScroll[] };\nexport default class GridScrollingService {\n private elements: ElementsScroll = {};\n constructor(private setViewport: (e: RevoGrid.ViewPortScrollEvent) => void) {}\n\n async onScroll(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): Promise<void> {\n let newEvent: Promise<RevoGrid.ViewPortScrollEvent>;\n for (let elKey in this.elements) {\n if (e.dimension === 'rgCol' && elKey === 'headerRow') {\n continue;\n } else if (this.isPinnedColumn(key) && e.dimension === 'rgCol') {\n if (elKey === key || !e.delta) {\n continue;\n }\n for (let el of this.elements[elKey]) {\n el.changeScroll && (newEvent = el.changeScroll(e));\n }\n } else {\n for (let el of this.elements[elKey]) {\n el.setScroll(e);\n }\n }\n }\n let event = e;\n if (newEvent) {\n event = await newEvent;\n }\n this.setViewport(event);\n }\n\n private isPinnedColumn(key?: RevoGrid.DimensionColPin | string): key is RevoGrid.DimensionColPin {\n return ['colPinStart', 'colPinEnd'].indexOf(key) > -1;\n }\n\n registerElements(els: ElementsScroll): void {\n this.elements = els;\n }\n\n /**\n * Register new element for farther scroll support\n * @param el - can be null if holder removed\n * @param key - element key\n */\n registerElement(el: ElementScroll | null, key: string): void {\n if (!this.elements[key]) {\n this.elements[key] = [];\n }\n // new element added\n if (el) {\n this.elements[key].push(el);\n } else if (this.elements[key]) {\n // element removed\n delete this.elements[key];\n }\n }\n\n unregister(): void {\n delete this.elements;\n this.elements = {};\n }\n}\n"]}
1
+ {"version":3,"file":"viewport.scrolling.service.js","sourceRoot":"","sources":["../../../src/components/revoGrid/viewport.scrolling.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { RevoGrid } from '../../interfaces';\nimport { columnTypes } from '../../store/storeTypes';\n\nexport interface ElementScroll {\n changeScroll?(e: RevoGrid.ViewPortScrollEvent, silent?: boolean): Promise<RevoGrid.ViewPortScrollEvent>;\n setScroll(e: RevoGrid.ViewPortScrollEvent): Promise<void>;\n}\nexport type ElementsScroll = { [key: string]: ElementScroll[] };\nexport default class GridScrollingService {\n private elements: ElementsScroll = {};\n constructor(private setViewport: (e: RevoGrid.ViewPortScrollEvent) => void) {}\n\n async scrollService(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string) {\n let newEvent: Promise<RevoGrid.ViewPortScrollEvent>;\n let event = e;\n for (let elKey in this.elements) {\n if (e.dimension === 'rgCol' && elKey === 'headerRow') {\n continue;\n // pinned column only\n } else if (this.isPinnedColumn(key) && e.dimension === 'rgCol') {\n if (elKey === key || !e.delta) {\n continue;\n }\n for (let el of this.elements[elKey]) {\n if (el.changeScroll) {\n newEvent = el.changeScroll(e);\n }\n }\n } else {\n for (let el of this.elements[elKey]) {\n await el.setScroll(e);\n }\n }\n }\n if (newEvent) {\n event = await newEvent;\n }\n this.setViewport(event);\n }\n\n /**\n * Silent scroll update for mobile devices when we have negative scroll top \n */\n async scrollSilentService(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string) {\n for (let elKey in this.elements) {\n // skip same element update\n if (elKey === key) {\n continue;\n }\n if (columnTypes.includes(key as RevoGrid.DimensionColPin) && (elKey === 'headerRow' || columnTypes.includes(elKey as RevoGrid.DimensionColPin))) {\n for (let el of this.elements[elKey]) {\n await el.changeScroll?.(e, true);\n }\n continue;\n }\n }\n }\n\n private isPinnedColumn(key?: RevoGrid.DimensionColPin | string): key is RevoGrid.DimensionColPin {\n return ['colPinStart', 'colPinEnd'].indexOf(key) > -1;\n }\n\n registerElements(els: ElementsScroll): void {\n this.elements = els;\n }\n\n /**\n * Register new element for farther scroll support\n * @param el - can be null if holder removed\n * @param key - element key\n */\n registerElement(el: ElementScroll | null, key: string): void {\n if (!this.elements[key]) {\n this.elements[key] = [];\n }\n // new element added\n if (el) {\n this.elements[key].push(el);\n } else if (this.elements[key]) {\n // element removed\n delete this.elements[key];\n }\n }\n\n unregister(): void {\n delete this.elements;\n this.elements = {};\n }\n}\n"]}
@@ -14,7 +14,8 @@ type Props = {
14
14
  columnFilter: boolean;
15
15
  additionalData: any;
16
16
  focusTemplate: RevoGrid.FocusTemplateFunc;
17
- onScroll(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): void;
17
+ scrollSection(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): void;
18
+ scrollSectionSilent(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): void;
18
19
  onCancelEdit(): void;
19
20
  onEdit(edit: Edition.BeforeEdit): void;
20
21
  onSelectAll(): void;
@@ -25,5 +26,5 @@ type Props = {
25
26
  * First we render vertical parts - pinned start, data, pinned end
26
27
  * Per each column we render data collections: headers, pinned top, center data, pinned bottom
27
28
  */
28
- export declare const ViewPortSections: ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, additionalData, onCancelEdit, registerElement, onEdit, onScroll, focusTemplate, onSelectAll, }: Props) => VNode[];
29
+ export declare const ViewPortSections: ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, additionalData, onCancelEdit, registerElement, onEdit, scrollSection, focusTemplate, onSelectAll, scrollSectionSilent, }: Props) => VNode[];
29
30
  export {};
@@ -4,24 +4,28 @@
4
4
  import { h } from '@stencil/core';
5
5
  import { UUID } from '../../utils/consts';
6
6
  import { DATA_SLOT, HEADER_SLOT } from './viewport.helpers';
7
+ import { isMobileDevice } from '../../utils/mobile';
7
8
  /**
8
9
  * All render based on sections
9
10
  * First we render vertical parts - pinned start, data, pinned end
10
11
  * Per each column we render data collections: headers, pinned top, center data, pinned bottom
11
12
  */
12
- export const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, additionalData, onCancelEdit, registerElement, onEdit, onScroll, focusTemplate, onSelectAll, }) => {
13
+ export const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, additionalData, onCancelEdit, registerElement, onEdit, scrollSection, focusTemplate, onSelectAll, scrollSectionSilent, }) => {
14
+ const isMobile = isMobileDevice();
13
15
  const viewPortHtml = [];
14
16
  /** render viewports columns */
15
17
  for (let view of columns) {
16
18
  /** render viewports rows */
17
19
  const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, additionalData, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: resize, columnFilter });
18
- const dataViews = [h("revogr-header", Object.assign({}, headerProperties, { slot: HEADER_SLOT }))];
20
+ const dataViews = [
21
+ h("revogr-header", Object.assign({}, headerProperties, { slot: HEADER_SLOT })),
22
+ ];
19
23
  view.dataPorts.forEach((data, j) => {
20
24
  const key = view.prop.key + (j + 1);
21
- const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { slot: data.slot, selectionStore: data.segmentSelectionStore, onSelectall: () => onSelectAll(), editors: editors, readonly: readonly, range: range, useClipboard: useClipboard, onCancelEdit: () => onCancelEdit(), applyChangesOnClose: applyEditorChangesOnClose, onSetEdit: ({ detail }) => onEdit(detail) }), h("revogr-data", Object.assign({}, data, { [UUID]: data.uuid }, { key: key, readonly: readonly, range: range, rowClass: rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: additionalData, slot: DATA_SLOT })), h("revogr-temp-range", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
25
+ const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { isMobileDevice: isMobile, selectionStore: data.segmentSelectionStore, onSelectall: () => onSelectAll(), editors: editors, readonly: readonly, range: range, useClipboard: useClipboard, onCancelEdit: () => onCancelEdit(), applyChangesOnClose: applyEditorChangesOnClose, onSetEdit: ({ detail }) => onEdit(detail), additionalData: additionalData, slot: data.slot }), h("revogr-data", Object.assign({}, data, { [UUID]: data.uuid }, { key: key, readonly: readonly, range: range, rowClass: rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: additionalData, slot: DATA_SLOT })), h("revogr-temp-range", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
22
26
  dataViews.push(dataView);
23
27
  });
24
- 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));
28
+ viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => registerElement(el, view.prop.key), onScrollViewport: e => scrollSection(e.detail, view.prop.key), onSilentScroll: e => scrollSectionSilent(e.detail, view.prop.key) }), dataViews));
25
29
  }
26
30
  return viewPortHtml;
27
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"viewport.section.js","sourceRoot":"","sources":["../../../src/components/revoGrid/viewport.section.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { Edition, RevoGrid } from '../../interfaces';\nimport { UUID } from '../../utils/consts';\nimport { ElementScroll } from './viewport';\nimport { DATA_SLOT, HEADER_SLOT } from './viewport.helpers';\nimport { ViewportProps } from './viewport.interfaces';\ntype Props = {\n editors: Edition.Editors;\n useClipboard: boolean;\n applyEditorChangesOnClose: boolean;\n readonly: boolean;\n range: boolean;\n rowClass: string;\n resize: boolean;\n columns: ViewportProps[];\n columnFilter: boolean;\n additionalData: any;\n focusTemplate: RevoGrid.FocusTemplateFunc;\n onScroll(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): void;\n onCancelEdit(): void;\n onEdit(edit: Edition.BeforeEdit): void;\n onSelectAll(): void;\n registerElement(el: ElementScroll | null, key: string): void;\n};\n/**\n * All render based on sections\n * First we render vertical parts - pinned start, data, pinned end\n * Per each column we render data collections: headers, pinned top, center data, pinned bottom\n */\nexport const ViewPortSections = ({\n resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, additionalData,\n onCancelEdit, registerElement, onEdit, onScroll, focusTemplate, onSelectAll,\n}: Props) => {\n const viewPortHtml: VNode[] = [];\n /** render viewports columns */\n for (let view of columns) {\n /** render viewports rows */\n const headerProperties = {\n ...view.headerProp,\n type: view.type,\n additionalData,\n viewportCol: view.viewportCol,\n selectionStore: view.columnSelectionStore,\n canResize: resize,\n columnFilter,\n };\n const dataViews: HTMLElement[] = [<revogr-header {...headerProperties} slot={HEADER_SLOT} />];\n view.dataPorts.forEach((data, j) => {\n const key = view.prop.key + (j + 1);\n\n const dataView = (\n <revogr-overlay-selection\n {...data}\n slot={data.slot}\n selectionStore={data.segmentSelectionStore}\n onSelectall={() => onSelectAll()}\n editors={editors}\n readonly={readonly}\n range={range}\n useClipboard={useClipboard}\n onCancelEdit= {() => onCancelEdit()}\n applyChangesOnClose={applyEditorChangesOnClose}\n onSetEdit={({ detail }) => onEdit(detail)}\n >\n <revogr-data\n {...data}\n {...{ [UUID]: data.uuid }}\n key={key}\n readonly={readonly}\n range={range}\n rowClass={rowClass}\n rowSelectionStore={data.rowSelectionStore}\n additionalData={additionalData}\n slot={DATA_SLOT}\n />\n <revogr-temp-range selectionStore={data.segmentSelectionStore} dimensionRow={data.dimensionRow} dimensionCol={data.dimensionCol} />\n <revogr-focus colData={data.colData} dataStore={data.dataStore} focusTemplate={focusTemplate} rowType={data.type} colType={view.type} selectionStore={data.segmentSelectionStore} dimensionRow={data.dimensionRow} dimensionCol={data.dimensionCol} />\n </revogr-overlay-selection>\n );\n dataViews.push(dataView);\n });\n viewPortHtml.push(\n <revogr-viewport-scroll {...view.prop} ref={el => registerElement(el, view.prop.key)} onScrollViewport={e => onScroll(e.detail, view.prop.key)}>\n {dataViews}\n </revogr-viewport-scroll>,\n );\n }\n return viewPortHtml;\n};\n"]}
1
+ {"version":3,"file":"viewport.section.js","sourceRoot":"","sources":["../../../src/components/revoGrid/viewport.section.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { Edition, RevoGrid } from '../../interfaces';\nimport { UUID } from '../../utils/consts';\nimport { ElementScroll } from './viewport';\nimport { DATA_SLOT, HEADER_SLOT } from './viewport.helpers';\nimport { ViewportProps } from './viewport.interfaces';\nimport { isMobileDevice } from '../../utils/mobile';\ntype Props = {\n editors: Edition.Editors;\n useClipboard: boolean;\n applyEditorChangesOnClose: boolean;\n readonly: boolean;\n range: boolean;\n rowClass: string;\n resize: boolean;\n columns: ViewportProps[];\n columnFilter: boolean;\n additionalData: any;\n focusTemplate: RevoGrid.FocusTemplateFunc;\n scrollSection(\n e: RevoGrid.ViewPortScrollEvent,\n key?: RevoGrid.DimensionColPin | string,\n ): void;\n scrollSectionSilent(\n e: RevoGrid.ViewPortScrollEvent,\n key?: RevoGrid.DimensionColPin | string,\n ): void;\n onCancelEdit(): void;\n onEdit(edit: Edition.BeforeEdit): void;\n onSelectAll(): void;\n registerElement(el: ElementScroll | null, key: string): void;\n};\n/**\n * All render based on sections\n * First we render vertical parts - pinned start, data, pinned end\n * Per each column we render data collections: headers, pinned top, center data, pinned bottom\n */\nexport const ViewPortSections = ({\n resize,\n editors,\n rowClass,\n readonly,\n range,\n columns,\n useClipboard,\n columnFilter,\n applyEditorChangesOnClose,\n additionalData,\n onCancelEdit,\n registerElement,\n onEdit,\n scrollSection,\n focusTemplate,\n onSelectAll,\n scrollSectionSilent,\n}: Props) => {\n const isMobile = isMobileDevice();\n const viewPortHtml: VNode[] = [];\n /** render viewports columns */\n for (let view of columns) {\n /** render viewports rows */\n const headerProperties = {\n ...view.headerProp,\n type: view.type,\n additionalData,\n viewportCol: view.viewportCol,\n selectionStore: view.columnSelectionStore,\n canResize: resize,\n columnFilter,\n };\n const dataViews: HTMLElement[] = [\n <revogr-header {...headerProperties} slot={HEADER_SLOT} />,\n ];\n view.dataPorts.forEach((data, j) => {\n const key = view.prop.key + (j + 1);\n\n const dataView = (\n <revogr-overlay-selection\n {...data}\n isMobileDevice={isMobile}\n selectionStore={data.segmentSelectionStore}\n onSelectall={() => onSelectAll()}\n editors={editors}\n readonly={readonly}\n range={range}\n useClipboard={useClipboard}\n onCancelEdit={() => onCancelEdit()}\n applyChangesOnClose={applyEditorChangesOnClose}\n onSetEdit={({ detail }) => onEdit(detail)}\n additionalData={additionalData}\n slot={data.slot}\n >\n <revogr-data\n {...data}\n {...{ [UUID]: data.uuid }}\n key={key}\n readonly={readonly}\n range={range}\n rowClass={rowClass}\n rowSelectionStore={data.rowSelectionStore}\n additionalData={additionalData}\n slot={DATA_SLOT}\n />\n <revogr-temp-range\n selectionStore={data.segmentSelectionStore}\n dimensionRow={data.dimensionRow}\n dimensionCol={data.dimensionCol}\n />\n <revogr-focus\n colData={data.colData}\n dataStore={data.dataStore}\n focusTemplate={focusTemplate}\n rowType={data.type}\n colType={view.type}\n selectionStore={data.segmentSelectionStore}\n dimensionRow={data.dimensionRow}\n dimensionCol={data.dimensionCol}\n />\n </revogr-overlay-selection>\n );\n dataViews.push(dataView);\n });\n viewPortHtml.push(\n <revogr-viewport-scroll\n {...view.prop}\n ref={el => registerElement(el, view.prop.key)}\n onScrollViewport={e => scrollSection(e.detail, view.prop.key)}\n onSilentScroll={e => scrollSectionSilent(e.detail, view.prop.key)}\n >\n {dataViews}\n </revogr-viewport-scroll>,\n );\n }\n return viewPortHtml;\n};\n"]}
@@ -35,6 +35,7 @@ export default class ViewportService {
35
35
  private onColumnResize;
36
36
  /**
37
37
  * Transform data from stores and apply it to different components
38
+ * Handle columns
38
39
  */
39
40
  private getViewportColumnData;
40
41
  /** register selection store for Segment */
@@ -54,6 +55,9 @@ export default class ViewportService {
54
55
  */
55
56
  clearFocused(): void;
56
57
  clearEdit(): void;
58
+ /**
59
+ * Collect focused element data
60
+ */
57
61
  getFocused(): FocusedData | null;
58
62
  getStoreCoordinateByType(colType: RevoGrid.DimensionCols, rowType: RevoGrid.DimensionRows): {
59
63
  x: number;
@@ -30,6 +30,7 @@ export default class ViewportService {
30
30
  }
31
31
  /**
32
32
  * Transform data from stores and apply it to different components
33
+ * Handle columns
33
34
  */
34
35
  getViewportColumnData(contentHeight) {
35
36
  const columns = [];
@@ -64,7 +65,12 @@ export default class ViewportService {
64
65
  segmentSelection.setLastCell(rgRow.lastCell);
65
66
  // register selection store for Row
66
67
  const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);
67
- 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 => {
68
+ const rowDef = Object.assign(Object.assign({}, rgRow), { rowSelectionStore, segmentSelectionStore: segmentSelection.store, ref: (e) => this.sv.selectionStoreConnector.registerSection(e), onSetRange: e => {
69
+ segmentSelection.setRangeArea(e.detail);
70
+ }, onSetTempRange: e => {
71
+ segmentSelection.setTempArea(e.detail);
72
+ }, onFocusCell: e => {
73
+ // todo: multi focus
68
74
  segmentSelection.clearFocus();
69
75
  this.sv.selectionStoreConnector.focus(segmentSelection, e.detail);
70
76
  } });
@@ -110,6 +116,7 @@ export default class ViewportService {
110
116
  dimensionCol: data.dimensions[data.colType].store,
111
117
  groups: data.colStore.get('groups'),
112
118
  groupingDepth: data.colStore.get('groupingDepth'),
119
+ resizeHandler: data.colType === 'colPinEnd' ? ['l'] : undefined,
113
120
  onHeaderresize: data.onHeaderresize,
114
121
  };
115
122
  return {
@@ -161,7 +168,7 @@ export default class ViewportService {
161
168
  scrollToCell(cell) {
162
169
  for (let key in cell) {
163
170
  const coordinate = cell[key];
164
- this.sv.scrollingService.onScroll({ dimension: key === 'x' ? 'rgCol' : 'rgRow', coordinate });
171
+ this.sv.scrollingService.scrollService({ dimension: key === 'x' ? 'rgCol' : 'rgRow', coordinate });
165
172
  }
166
173
  }
167
174
  /**
@@ -173,14 +180,19 @@ export default class ViewportService {
173
180
  clearEdit() {
174
181
  this.sv.selectionStoreConnector.setEdit(false);
175
182
  }
183
+ /**
184
+ * Collect focused element data
185
+ */
176
186
  getFocused() {
177
187
  const focused = this.sv.selectionStoreConnector.focusedStore;
178
188
  if (!focused) {
179
189
  return null;
180
190
  }
191
+ // get column data
181
192
  const colType = this.sv.selectionStoreConnector.storesXToType[focused.position.x];
182
193
  const column = this.sv.columnProvider.getColumn(focused.cell.x, colType);
183
- const rowType = this.sv.selectionStoreConnector.storesYToType[focused.position.x];
194
+ // get row data
195
+ const rowType = this.sv.selectionStoreConnector.storesYToType[focused.position.y];
184
196
  const model = this.sv.dataProvider.getModel(focused.cell.y, rowType);
185
197
  return {
186
198
  column,