@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":"viewport.service.js","sourceRoot":"","sources":["../../../src/components/revoGrid/viewport.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable, RevoGrid, Selection } from '../../interfaces';\nimport DimensionProvider from '../../services/dimension.provider';\nimport SelectionStoreConnector, { EMPTY_INDEX } from '../../services/selection.store.connector';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { DataSourceState, getSourceItem, getVisibleSourceItem } from '../../store/dataSource/data.store';\nimport { columnTypes, rowTypes } from '../../store/storeTypes';\nimport { UUID } from '../../utils/consts';\nimport { OrdererService } from '../order/orderRenderer';\nimport GridScrollingService from './viewport.scrolling.service';\nimport { CONTENT_SLOT, FOOTER_SLOT, getLastCell, HEADER_SLOT } from './viewport.helpers';\nimport { HeaderProperties, SlotType, ViewportColumn, ViewportData, ViewportProps } from './viewport.interfaces';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport { reduce } from 'lodash';\n\nexport type ResizeDetails = { [index: number]: RevoGrid.ColumnRegular };\ntype Config = {\n columnProvider: ColumnDataProvider;\n dataProvider: DataProvider;\n dimensionProvider: DimensionProvider;\n viewportProvider: ViewportProvider;\n uuid: string | null;\n scrollingService: GridScrollingService;\n orderService: OrdererService;\n selectionStoreConnector: SelectionStoreConnector;\n\n resize(r: ResizeDetails): void;\n};\n\nexport type FocusedData = {\n model: any;\n cell: Selection.Cell;\n colType: RevoGrid.DimensionCols;\n rowType: RevoGrid.DimensionRows;\n column?: RevoGrid.ColumnRegular;\n};\n\nexport default class ViewportService {\n readonly columns: ViewportProps[];\n constructor(private sv: Config, contentHeight: number) {\n this.sv.selectionStoreConnector?.beforeUpdate();\n this.columns = this.getViewportColumnData(contentHeight);\n this.sv.scrollingService?.unregister();\n }\n\n private onColumnResize(\n type: RevoGrid.DimensionCols,\n { detail }: CustomEvent<RevoGrid.ViewSettingSizeProp>,\n store: Observable<DataSourceState<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>>,\n ) {\n this.sv.dimensionProvider?.setCustomSizes(type, detail, true);\n const changedItems = reduce(\n detail || {},\n (r: ResizeDetails, size, i) => {\n const index = parseInt(i, 10);\n const item = getSourceItem(store, index);\n if (item) {\n r[index] = { ...item, size };\n }\n return r;\n },\n {},\n );\n this.sv.resize(changedItems);\n }\n\n /**\n * Transform data from stores and apply it to different components\n */\n private getViewportColumnData(contentHeight: number): ViewportProps[] {\n const columns: ViewportProps[] = [];\n let x = 0; // we increase x only if column present\n columnTypes.forEach(val => {\n const colStore = this.sv.columnProvider.stores[val].store;\n // only columns that have data show\n if (!colStore.get('items').length) {\n return;\n }\n const column: ViewportColumn = {\n colType: val,\n position: { x, y: 1 },\n\n contentHeight,\n fixWidth: val !== 'rgCol',\n uuid: `${this.sv.uuid}-${x}`,\n\n viewports: this.sv.viewportProvider.stores,\n dimensions: this.sv.dimensionProvider.stores,\n rowStores: this.sv.dataProvider.stores,\n\n colStore,\n onHeaderresize: e => this.onColumnResize(val, e, colStore),\n };\n if (val === 'rgCol') {\n column.onResizeViewport = (e: CustomEvent<RevoGrid.ViewPortResizeEvent>) => this.sv.viewportProvider?.setViewport(e.detail.dimension, { virtualSize: e.detail.size });\n }\n const colData = this.gatherColumnData(column);\n const columnSelectionStore = this.registerCol(colData.position.x, val);\n\n // render per each column data collections vertically\n const dataPorts = this.dataViewPort(column).reduce<ViewportData[]>((r, rgRow) => {\n // register selection store for Segment\n const segmentSelection = this.registerSegment(rgRow.position);\n segmentSelection.setLastCell(rgRow.lastCell);\n\n // register selection store for Row\n const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);\n const rowDef: ViewportData = {\n ...rgRow,\n rowSelectionStore,\n segmentSelectionStore: segmentSelection.store,\n ref: (e: Element) => this.sv.selectionStoreConnector.registerSection(e),\n onSetRange: e => segmentSelection.setRangeArea(e.detail),\n onSetTempRange: e => segmentSelection.setTempArea(e.detail),\n onFocusCell: e => {\n segmentSelection.clearFocus();\n this.sv.selectionStoreConnector.focus(segmentSelection, e.detail);\n },\n };\n r.push(rowDef);\n return r;\n }, []);\n columns.push({\n ...colData,\n columnSelectionStore,\n dataPorts,\n });\n x++;\n });\n return columns;\n }\n\n /** register selection store for Segment */\n private registerSegment(position: Selection.Cell) {\n return this.sv.selectionStoreConnector.register(position);\n }\n\n /** register selection store for Row */\n private registerRow(y: number, type: RevoGrid.DimensionRows) {\n return this.sv.selectionStoreConnector.registerRow(y, type).store;\n }\n\n /** register selection store for Column */\n private registerCol(x: number, type: RevoGrid.DimensionCols) {\n return this.sv.selectionStoreConnector.registerColumn(x, type).store;\n }\n\n /** Collect Column data */\n private gatherColumnData(data: ViewportColumn) {\n const parent = data.uuid;\n const realSize = data.dimensions[data.colType].store.get('realSize');\n const prop: Record<string, any> = {\n contentWidth: realSize,\n class: data.colType,\n [`${UUID}`]: data.uuid,\n contentHeight: data.contentHeight,\n key: data.colType,\n onResizeViewport: data.onResizeViewport,\n };\n if (data.fixWidth) {\n prop.style = { minWidth: `${realSize}px` };\n }\n const headerProp: HeaderProperties = {\n parent,\n colData: getVisibleSourceItem(data.colStore),\n dimensionCol: data.dimensions[data.colType].store,\n groups: data.colStore.get('groups'),\n groupingDepth: data.colStore.get('groupingDepth'),\n onHeaderresize: data.onHeaderresize,\n };\n\n return {\n prop,\n type: data.colType,\n position: data.position,\n headerProp,\n parent,\n viewportCol: data.viewports[data.colType].store,\n };\n }\n\n /** Collect Row data */\n private dataViewPort(data: ViewportColumn) {\n const slots: { [key in RevoGrid.DimensionRows]: SlotType } = {\n rowPinStart: HEADER_SLOT,\n rgRow: CONTENT_SLOT,\n rowPinEnd: FOOTER_SLOT,\n };\n\n // y position for selection\n let y = 0;\n return rowTypes.reduce((r, type) => {\n // filter out empty sources, we still need to return source to keep slot working\n const isPresent = data.viewports[type].store.get('realCount') || type === 'rgRow';\n const rgCol = {\n ...data,\n position: { ...data.position, y: isPresent ? y : EMPTY_INDEX },\n };\n r.push(\n this.dataPartition(\n rgCol,\n type,\n slots[type],\n type !== 'rgRow', // is fixed\n ),\n );\n if (isPresent) {\n y++;\n }\n return r;\n }, []);\n }\n\n private dataPartition(data: ViewportColumn, type: RevoGrid.DimensionRows, slot: SlotType, fixed?: boolean) {\n return {\n colData: data.colStore,\n viewportCol: data.viewports[data.colType].store,\n viewportRow: data.viewports[type].store,\n lastCell: getLastCell(data, type),\n slot,\n type,\n canDrag: !fixed,\n position: data.position,\n uuid: `${data.uuid}-${data.position.x}-${data.position.y}`,\n dataStore: data.rowStores[type].store,\n dimensionCol: data.dimensions[data.colType].store,\n dimensionRow: data.dimensions[type].store,\n style: fixed ? { height: `${data.dimensions[type].store.get('realSize')}px` } : undefined,\n };\n }\n\n scrollToCell(cell: Partial<Selection.Cell>) {\n for (let key in cell) {\n const coordinate = cell[key as keyof Selection.Cell];\n this.sv.scrollingService.onScroll({ dimension: key === 'x' ? 'rgCol' : 'rgRow', coordinate });\n }\n }\n\n /**\n * Clear current grid focus\n */\n clearFocused() {\n this.sv.selectionStoreConnector.clearAll();\n }\n\n clearEdit() {\n this.sv.selectionStoreConnector.setEdit(false);\n }\n\n getFocused(): FocusedData | null {\n const focused = this.sv.selectionStoreConnector.focusedStore;\n if (!focused) {\n return null;\n }\n const colType = this.sv.selectionStoreConnector.storesXToType[focused.position.x];\n const column = this.sv.columnProvider.getColumn(focused.cell.x, colType);\n const rowType = this.sv.selectionStoreConnector.storesYToType[focused.position.x];\n const model = this.sv.dataProvider.getModel(focused.cell.y, rowType);\n return {\n column,\n model,\n cell: focused.cell,\n colType,\n rowType,\n };\n }\n\n getStoreCoordinateByType(colType: RevoGrid.DimensionCols, rowType: RevoGrid.DimensionRows) {\n const stores = this.sv.selectionStoreConnector.storesByType;\n const storeCoordinate = {\n x: stores[colType],\n y: stores[rowType],\n };\n return storeCoordinate;\n }\n\n setFocus(colType: string, rowType: string, start: Selection.Cell, end: Selection.Cell) {\n this.sv.selectionStoreConnector?.focusByCell(\n this.getStoreCoordinateByType(\n colType as RevoGrid.DimensionCols,\n rowType as RevoGrid.DimensionRows\n ), start, end);\n }\n\n getSelectedRange(): Selection.RangeArea | null {\n return this.sv.selectionStoreConnector.selectedRange;\n }\n\n setEdit(rowIndex: number, colIndex: number, colType: RevoGrid.DimensionCols, rowType: RevoGrid.DimensionRows) {\n this.sv.selectionStoreConnector?.setEditByCell(this.getStoreCoordinateByType(colType, rowType), { x: colIndex, y: rowIndex });\n }\n}\n"]}
1
+ {"version":3,"file":"viewport.service.js","sourceRoot":"","sources":["../../../src/components/revoGrid/viewport.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable, RevoGrid, Selection } from '../../interfaces';\nimport DimensionProvider from '../../services/dimension.provider';\nimport SelectionStoreConnector, { EMPTY_INDEX } from '../../services/selection.store.connector';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { DataSourceState, getSourceItem, getVisibleSourceItem } from '../../store/dataSource/data.store';\nimport { columnTypes, rowTypes } from '../../store/storeTypes';\nimport { UUID } from '../../utils/consts';\nimport { OrdererService } from '../order/orderRenderer';\nimport GridScrollingService from './viewport.scrolling.service';\nimport { CONTENT_SLOT, FOOTER_SLOT, getLastCell, HEADER_SLOT } from './viewport.helpers';\nimport { HeaderProperties, SlotType, ViewportColumn, ViewportData, ViewportProps } from './viewport.interfaces';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport { reduce } from 'lodash';\n\nexport type ResizeDetails = { [index: number]: RevoGrid.ColumnRegular };\ntype Config = {\n columnProvider: ColumnDataProvider;\n dataProvider: DataProvider;\n dimensionProvider: DimensionProvider;\n viewportProvider: ViewportProvider;\n uuid: string | null;\n scrollingService: GridScrollingService;\n orderService: OrdererService;\n selectionStoreConnector: SelectionStoreConnector;\n\n resize(r: ResizeDetails): void;\n};\n\nexport type FocusedData = {\n model: any;\n cell: Selection.Cell;\n colType: RevoGrid.DimensionCols;\n rowType: RevoGrid.DimensionRows;\n column?: RevoGrid.ColumnRegular;\n};\n\nexport default class ViewportService {\n readonly columns: ViewportProps[];\n constructor(private sv: Config, contentHeight: number) {\n this.sv.selectionStoreConnector?.beforeUpdate();\n this.columns = this.getViewportColumnData(contentHeight);\n this.sv.scrollingService?.unregister();\n }\n\n private onColumnResize(\n type: RevoGrid.DimensionCols,\n { detail }: CustomEvent<RevoGrid.ViewSettingSizeProp>,\n store: Observable<DataSourceState<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>>,\n ) {\n this.sv.dimensionProvider?.setCustomSizes(type, detail, true);\n const changedItems = reduce(\n detail || {},\n (r: ResizeDetails, size, i) => {\n const index = parseInt(i, 10);\n const item = getSourceItem(store, index);\n if (item) {\n r[index] = { ...item, size };\n }\n return r;\n },\n {},\n );\n this.sv.resize(changedItems);\n }\n\n /**\n * Transform data from stores and apply it to different components\n * Handle columns\n */\n private getViewportColumnData(contentHeight: number): ViewportProps[] {\n const columns: ViewportProps[] = [];\n let x = 0; // we increase x only if column present\n columnTypes.forEach(val => {\n const colStore = this.sv.columnProvider.stores[val].store;\n // only columns that have data show\n if (!colStore.get('items').length) {\n return;\n }\n const column: ViewportColumn = {\n colType: val,\n position: { x, y: 1 },\n\n contentHeight,\n fixWidth: val !== 'rgCol',\n uuid: `${this.sv.uuid}-${x}`,\n\n viewports: this.sv.viewportProvider.stores,\n dimensions: this.sv.dimensionProvider.stores,\n rowStores: this.sv.dataProvider.stores,\n\n colStore,\n onHeaderresize: e => this.onColumnResize(val, e, colStore),\n };\n if (val === 'rgCol') {\n column.onResizeViewport = (e: CustomEvent<RevoGrid.ViewPortResizeEvent>) => this.sv.viewportProvider?.setViewport(e.detail.dimension, { virtualSize: e.detail.size });\n }\n const colData = this.gatherColumnData(column);\n const columnSelectionStore = this.registerCol(colData.position.x, val);\n\n // render per each column data collections vertically\n const dataPorts = this.dataViewPort(column).reduce<ViewportData[]>((r, rgRow) => {\n // register selection store for Segment\n const segmentSelection = this.registerSegment(rgRow.position);\n segmentSelection.setLastCell(rgRow.lastCell);\n\n // register selection store for Row\n const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);\n const rowDef: ViewportData = {\n ...rgRow,\n rowSelectionStore,\n segmentSelectionStore: segmentSelection.store,\n ref: (e: Element) => this.sv.selectionStoreConnector.registerSection(e),\n onSetRange: e => {\n segmentSelection.setRangeArea(e.detail);\n },\n onSetTempRange: e => {\n segmentSelection.setTempArea(e.detail);\n },\n onFocusCell: e => {\n // todo: multi focus\n segmentSelection.clearFocus();\n this.sv.selectionStoreConnector.focus(segmentSelection, e.detail);\n },\n };\n r.push(rowDef);\n return r;\n }, []);\n columns.push({\n ...colData,\n columnSelectionStore,\n dataPorts,\n });\n x++;\n });\n return columns;\n }\n\n /** register selection store for Segment */\n private registerSegment(position: Selection.Cell) {\n return this.sv.selectionStoreConnector.register(position);\n }\n\n /** register selection store for Row */\n private registerRow(y: number, type: RevoGrid.DimensionRows) {\n return this.sv.selectionStoreConnector.registerRow(y, type).store;\n }\n\n /** register selection store for Column */\n private registerCol(x: number, type: RevoGrid.DimensionCols) {\n return this.sv.selectionStoreConnector.registerColumn(x, type).store;\n }\n\n /** Collect Column data */\n private gatherColumnData(data: ViewportColumn) {\n const parent = data.uuid;\n const realSize = data.dimensions[data.colType].store.get('realSize');\n const prop: Record<string, any> = {\n contentWidth: realSize,\n class: data.colType,\n [`${UUID}`]: data.uuid,\n contentHeight: data.contentHeight,\n key: data.colType,\n onResizeViewport: data.onResizeViewport,\n };\n if (data.fixWidth) {\n prop.style = { minWidth: `${realSize}px` };\n }\n const headerProp: HeaderProperties = {\n parent,\n colData: getVisibleSourceItem(data.colStore),\n dimensionCol: data.dimensions[data.colType].store,\n groups: data.colStore.get('groups'),\n groupingDepth: data.colStore.get('groupingDepth'),\n resizeHandler: data.colType === 'colPinEnd' ? ['l'] : undefined,\n onHeaderresize: data.onHeaderresize,\n };\n\n return {\n prop,\n type: data.colType,\n position: data.position,\n headerProp,\n parent,\n viewportCol: data.viewports[data.colType].store,\n };\n }\n\n /** Collect Row data */\n private dataViewPort(data: ViewportColumn) {\n const slots: { [key in RevoGrid.DimensionRows]: SlotType } = {\n rowPinStart: HEADER_SLOT,\n rgRow: CONTENT_SLOT,\n rowPinEnd: FOOTER_SLOT,\n };\n\n // y position for selection\n let y = 0;\n return rowTypes.reduce((r, type) => {\n // filter out empty sources, we still need to return source to keep slot working\n const isPresent = data.viewports[type].store.get('realCount') || type === 'rgRow';\n const rgCol = {\n ...data,\n position: { ...data.position, y: isPresent ? y : EMPTY_INDEX },\n };\n r.push(\n this.dataPartition(\n rgCol,\n type,\n slots[type],\n type !== 'rgRow', // is fixed\n ),\n );\n if (isPresent) {\n y++;\n }\n return r;\n }, []);\n }\n\n private dataPartition(data: ViewportColumn, type: RevoGrid.DimensionRows, slot: SlotType, fixed?: boolean) {\n return {\n colData: data.colStore,\n viewportCol: data.viewports[data.colType].store,\n viewportRow: data.viewports[type].store,\n lastCell: getLastCell(data, type),\n slot,\n type,\n canDrag: !fixed,\n position: data.position,\n uuid: `${data.uuid}-${data.position.x}-${data.position.y}`,\n dataStore: data.rowStores[type].store,\n dimensionCol: data.dimensions[data.colType].store,\n dimensionRow: data.dimensions[type].store,\n style: fixed ? { height: `${data.dimensions[type].store.get('realSize')}px` } : undefined,\n };\n }\n\n scrollToCell(cell: Partial<Selection.Cell>) {\n for (let key in cell) {\n const coordinate = cell[key as keyof Selection.Cell];\n this.sv.scrollingService.scrollService({ dimension: key === 'x' ? 'rgCol' : 'rgRow', coordinate });\n }\n }\n\n /**\n * Clear current grid focus\n */\n clearFocused() {\n this.sv.selectionStoreConnector.clearAll();\n }\n\n clearEdit() {\n this.sv.selectionStoreConnector.setEdit(false);\n }\n\n /**\n * Collect focused element data\n */\n getFocused(): FocusedData | null {\n const focused = this.sv.selectionStoreConnector.focusedStore;\n if (!focused) {\n return null;\n }\n // get column data\n const colType = this.sv.selectionStoreConnector.storesXToType[focused.position.x];\n const column = this.sv.columnProvider.getColumn(focused.cell.x, colType);\n\n // get row data\n const rowType = this.sv.selectionStoreConnector.storesYToType[focused.position.y];\n const model = this.sv.dataProvider.getModel(focused.cell.y, rowType);\n return {\n column,\n model,\n cell: focused.cell,\n colType,\n rowType,\n };\n }\n\n getStoreCoordinateByType(colType: RevoGrid.DimensionCols, rowType: RevoGrid.DimensionRows) {\n const stores = this.sv.selectionStoreConnector.storesByType;\n const storeCoordinate = {\n x: stores[colType],\n y: stores[rowType],\n };\n return storeCoordinate;\n }\n\n setFocus(colType: string, rowType: string, start: Selection.Cell, end: Selection.Cell) {\n this.sv.selectionStoreConnector?.focusByCell(\n this.getStoreCoordinateByType(\n colType as RevoGrid.DimensionCols,\n rowType as RevoGrid.DimensionRows\n ), start, end);\n }\n\n getSelectedRange(): Selection.RangeArea | null {\n return this.sv.selectionStoreConnector.selectedRange;\n }\n\n setEdit(rowIndex: number, colIndex: number, colType: RevoGrid.DimensionCols, rowType: RevoGrid.DimensionRows) {\n this.sv.selectionStoreConnector?.setEditByCell(this.getStoreCoordinateByType(colType, rowType), { x: colIndex, y: rowIndex });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-row-headers.js","sourceRoot":"","sources":["../../../src/components/rowHeaders/revogr-row-headers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, Host } from '@stencil/core';\nimport { Component, Prop, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport DataStore from '../../store/dataSource/data.store';\nimport ViewportStore from '../../store/viewPort/viewport.store';\nimport { ROW_HEADER_TYPE, UUID } from '../../utils/consts';\nimport { ElementScroll } from '../revoGrid/viewport.scrolling.service';\nimport { ViewportData } from '../revoGrid/viewport.interfaces';\nimport { RowHeaderRender } from './row-header-render';\nimport { calculateRowHeaderSize } from '../../utils/row-header-utils';\nimport { HEADER_SLOT } from '../revoGrid/viewport.helpers';\n\n/**\n * Row headers component\n * Visible on the left side of the table\n */\n\n@Component({ tag: 'revogr-row-headers' })\nexport class RevogrRowHeaders {\n @Prop() height: number;\n\n @Prop() dataPorts: ViewportData[];\n @Prop() headerProp: Record<string, any>;\n @Prop() uiid: string;\n @Prop() rowClass: string;\n\n @Prop() resize: boolean;\n @Prop() rowHeaderColumn: RevoGrid.RowHeaders;\n /** Additional data to pass to renderer */\n @Prop() additionalData: any;\n\n @Event({ bubbles: false }) scrollViewport: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n @Event({ bubbles: false }) elementToScroll: EventEmitter<ElementScroll>;\n\n render() {\n const dataViews: HTMLElement[] = [];\n const viewport = new ViewportStore('colPinStart');\n\n /** render viewports rows */\n let totalLength = 1;\n for (let data of this.dataPorts) {\n const itemCount = data.dataStore.get('items').length;\n // initiate row data\n const dataStore = new DataStore<RevoGrid.DataType, RevoGrid.DimensionRows>(data.type);\n dataStore.updateData(data.dataStore.get('source'));\n // initiate column data\n const colData = new DataStore<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>('colPinStart');\n const column = {\n cellTemplate: RowHeaderRender(totalLength),\n ...this.rowHeaderColumn,\n };\n colData.updateData([column]);\n\n const viewData = {\n ...data,\n rowClass: this.rowClass,\n dataStore: dataStore.store,\n colData: colData.store,\n viewportCol: viewport.store,\n readonly: true,\n range: false,\n };\n dataViews.push(<revogr-data {...viewData} />);\n totalLength += itemCount;\n }\n\n const colSize = calculateRowHeaderSize(totalLength, this.rowHeaderColumn);\n viewport.setViewport({\n realCount: 1,\n virtualSize: 0,\n items: [\n {\n size: colSize,\n start: 0,\n end: colSize,\n itemIndex: 0,\n },\n ],\n });\n\n const parent = `${this.uiid}-rowHeaders`;\n const viewportScroll = {\n [UUID]: parent,\n contentHeight: this.height,\n contentWidth: 0,\n style: { minWidth: `${colSize}px` },\n ref: (el: ElementScroll) => this.elementToScroll.emit(el),\n onScrollViewport: (e: CustomEvent) => this.scrollViewport.emit(e.detail),\n };\n const viewportHeader = {\n ...this.headerProp,\n colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [],\n viewportCol: viewport.store,\n canResize: false,\n type: ROW_HEADER_TYPE,\n parent,\n slot: HEADER_SLOT,\n };\n return (\n <Host class={ { [ROW_HEADER_TYPE]: true } } key={ROW_HEADER_TYPE}>\n <revogr-viewport-scroll {...viewportScroll}>\n <revogr-header {...viewportHeader} />\n {dataViews}\n </revogr-viewport-scroll>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-row-headers.js","sourceRoot":"","sources":["../../../src/components/rowHeaders/revogr-row-headers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, Host } from '@stencil/core';\nimport { Component, Prop, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport DataStore from '../../store/dataSource/data.store';\nimport ViewportStore from '../../store/viewPort/viewport.store';\nimport { ROW_HEADER_TYPE, UUID } from '../../utils/consts';\nimport { ElementScroll } from '../revoGrid/viewport.scrolling.service';\nimport { ViewportData } from '../revoGrid/viewport.interfaces';\nimport { RowHeaderRender } from './row-header-render';\nimport { calculateRowHeaderSize } from '../../utils/row-header-utils';\nimport { HEADER_SLOT } from '../revoGrid/viewport.helpers';\nimport { JSX } from '../..';\n\n/**\n * Row headers component\n * Visible on the left side of the table\n */\n\n@Component({ tag: 'revogr-row-headers' })\nexport class RevogrRowHeaders {\n @Prop() height: number;\n\n @Prop() dataPorts: ViewportData[];\n @Prop() headerProp: Record<string, any>;\n @Prop() uiid: string;\n @Prop() rowClass: string;\n\n @Prop() resize: boolean;\n @Prop() rowHeaderColumn: RevoGrid.RowHeaders;\n /** Additional data to pass to renderer */\n @Prop() additionalData: any;\n\n @Event({ bubbles: false }) scrollViewport: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n @Event({ bubbles: false }) elementToScroll: EventEmitter<ElementScroll>;\n\n render() {\n const dataViews: HTMLElement[] = [];\n const viewport = new ViewportStore('colPinStart');\n\n /** render viewports rows */\n let totalLength = 1;\n for (let data of this.dataPorts) {\n const itemCount = data.dataStore.get('items').length;\n // initiate row data\n const dataStore = new DataStore<RevoGrid.DataType, RevoGrid.DimensionRows>(data.type);\n dataStore.updateData(data.dataStore.get('source'));\n // initiate column data\n const colData = new DataStore<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>('colPinStart');\n const column = {\n cellTemplate: RowHeaderRender(totalLength),\n ...this.rowHeaderColumn,\n };\n colData.updateData([column]);\n\n const viewData = {\n ...data,\n rowClass: this.rowClass,\n dataStore: dataStore.store,\n colData: colData.store,\n viewportCol: viewport.store,\n readonly: true,\n range: false,\n };\n dataViews.push(<revogr-data {...viewData} />);\n totalLength += itemCount;\n }\n\n const colSize = calculateRowHeaderSize(totalLength, this.rowHeaderColumn);\n viewport.setViewport({\n realCount: 1,\n virtualSize: 0,\n items: [\n {\n size: colSize,\n start: 0,\n end: colSize,\n itemIndex: 0,\n },\n ],\n });\n\n const parent = `${this.uiid}-rowHeaders`;\n const viewportScroll = {\n [UUID]: parent,\n contentHeight: this.height,\n contentWidth: 0,\n style: { minWidth: `${colSize}px` },\n ref: (el: ElementScroll) => this.elementToScroll.emit(el),\n onScrollViewport: (e: CustomEvent) => this.scrollViewport.emit(e.detail),\n };\n const viewportHeader: JSX.RevogrHeader & { slot: string } = {\n ...this.headerProp,\n colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [],\n viewportCol: viewport.store,\n canResize: false,\n type: ROW_HEADER_TYPE,\n parent,\n slot: HEADER_SLOT,\n };\n return (\n <Host class={ { [ROW_HEADER_TYPE]: true } } key={ROW_HEADER_TYPE}>\n <revogr-viewport-scroll {...viewportScroll}>\n <revogr-header {...viewportHeader} />\n {dataViews}\n </revogr-viewport-scroll>\n </Host>\n );\n }\n}\n"]}
@@ -100,6 +100,9 @@ revogr-viewport-scroll::-webkit-scrollbar {
100
100
  revogr-viewport-scroll.colPinStart, revogr-viewport-scroll.colPinEnd {
101
101
  z-index: 2;
102
102
  }
103
+ revogr-viewport-scroll.colPinEnd:has(.active) {
104
+ overflow: visible;
105
+ }
103
106
  revogr-viewport-scroll.rgCol {
104
107
  flex-grow: 1;
105
108
  }
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
2
  import { RevoGrid, ScrollCoordinateEvent } from '../../interfaces';
3
3
  type Delta = 'deltaX' | 'deltaY';
4
- type ScrollEvent = {
4
+ type LocalScrollEvent = {
5
5
  preventDefault(): void;
6
6
  } & {
7
7
  [x in Delta]: number;
@@ -16,6 +16,11 @@ export declare class RevogrViewportScroll {
16
16
  type: RevoGrid.DimensionType;
17
17
  hasScroll: boolean;
18
18
  }>;
19
+ /**
20
+ * Silently scroll to coordinate
21
+ * Made to align negative coordinates for mobile devices
22
+ */
23
+ silentScroll: EventEmitter<RevoGrid.ViewPortScrollEvent>;
19
24
  private scrollThrottling;
20
25
  /**
21
26
  * Width of inner content
@@ -48,13 +53,19 @@ export declare class RevogrViewportScroll {
48
53
  * update on delta in case we don't know existing position or external change
49
54
  * @param e
50
55
  */
51
- changeScroll(e: RevoGrid.ViewPortScrollEvent): Promise<RevoGrid.ViewPortScrollEvent>;
52
- mousewheelVertical({ detail: e }: CustomEvent<ScrollEvent>): void;
53
- mousewheelHorizontal({ detail: e }: CustomEvent<ScrollEvent>): void;
56
+ changeScroll(e: RevoGrid.ViewPortScrollEvent, silent?: boolean): Promise<RevoGrid.ViewPortScrollEvent>;
57
+ /**
58
+ * Dispatch this event to trigger vertical mouse wheel from plugins
59
+ */
60
+ mousewheelVertical({ detail: e, }: CustomEvent<LocalScrollEvent>): void;
61
+ /**
62
+ * Dispatch this event to trigger horizontal mouse wheel from plugins
63
+ */
64
+ mousewheelHorizontal({ detail: e, }: CustomEvent<LocalScrollEvent>): void;
54
65
  /**
55
66
  * Allows to use outside listener
56
67
  */
57
- scrollApply({ detail: { type, coordinate } }: CustomEvent<ScrollCoordinateEvent>): void;
68
+ scrollApply({ detail: { type, coordinate }, }: CustomEvent<ScrollCoordinateEvent>): void;
58
69
  connectedCallback(): void;
59
70
  componentDidLoad(): void;
60
71
  /**
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * Built by Revolist
3
3
  */
4
- import { h, Host } from '@stencil/core';
4
+ import { h, Host, } from '@stencil/core';
5
5
  import each from 'lodash/each';
6
6
  import GridResizeService from '../revoGrid/viewport.resize.service';
7
7
  import LocalScrollService from '../../services/localScrollService';
8
- import { CONTENT_SLOT, FOOTER_SLOT, HEADER_SLOT } from '../revoGrid/viewport.helpers';
8
+ import { CONTENT_SLOT, FOOTER_SLOT, HEADER_SLOT, } from '../revoGrid/viewport.helpers';
9
9
  /**
10
10
  * Service for tracking grid scrolling
11
11
  */
@@ -18,7 +18,10 @@ export class RevogrViewportScroll {
18
18
  * Last mw event time for trigger scroll function below
19
19
  * If mousewheel function was ignored we still need to trigger render
20
20
  */
21
- this.mouseWheelScroll = { rgCol: 0, rgRow: 0 };
21
+ this.mouseWheelScroll = {
22
+ rgCol: 0,
23
+ rgRow: 0,
24
+ };
22
25
  this.contentWidth = 0;
23
26
  this.contentHeight = 0;
24
27
  }
@@ -31,7 +34,18 @@ export class RevogrViewportScroll {
31
34
  * update on delta in case we don't know existing position or external change
32
35
  * @param e
33
36
  */
34
- async changeScroll(e) {
37
+ async changeScroll(e, silent = false) {
38
+ if (silent) {
39
+ if (e.coordinate) {
40
+ switch (e.dimension) {
41
+ // for mobile devices to skip negative scroll loop. only on vertical scroll
42
+ case 'rgRow':
43
+ this.verticalScroll.style.transform = `translateY(${-1 * e.coordinate}px)`;
44
+ break;
45
+ }
46
+ }
47
+ return null;
48
+ }
35
49
  if (e.delta) {
36
50
  switch (e.dimension) {
37
51
  case 'rgCol':
@@ -45,16 +59,22 @@ export class RevogrViewportScroll {
45
59
  }
46
60
  return e;
47
61
  }
48
- mousewheelVertical({ detail: e }) {
62
+ /**
63
+ * Dispatch this event to trigger vertical mouse wheel from plugins
64
+ */
65
+ mousewheelVertical({ detail: e, }) {
49
66
  this.verticalMouseWheel(e);
50
67
  }
51
- mousewheelHorizontal({ detail: e }) {
68
+ /**
69
+ * Dispatch this event to trigger horizontal mouse wheel from plugins
70
+ */
71
+ mousewheelHorizontal({ detail: e, }) {
52
72
  this.horizontalMouseWheel(e);
53
73
  }
54
74
  /**
55
75
  * Allows to use outside listener
56
76
  */
57
- scrollApply({ detail: { type, coordinate } }) {
77
+ scrollApply({ detail: { type, coordinate }, }) {
58
78
  this.applyOnScroll(type, coordinate, true);
59
79
  }
60
80
  connectedCallback() {
@@ -80,6 +100,10 @@ export class RevogrViewportScroll {
80
100
  break;
81
101
  case 'rgRow':
82
102
  this.verticalScroll.scrollTop = e.coordinate;
103
+ // for mobile devices to skip negative scroll loop. only on vertical scroll
104
+ if (this.verticalScroll.style.transform) {
105
+ this.verticalScroll.style.transform = '';
106
+ }
83
107
  break;
84
108
  }
85
109
  },
@@ -181,6 +205,9 @@ export class RevogrViewportScroll {
181
205
  * We need to trigger scroll event in case there is no mousewheel event
182
206
  */
183
207
  onScroll(type, e) {
208
+ if (!(e.target instanceof HTMLElement)) {
209
+ return;
210
+ }
184
211
  const target = e.target;
185
212
  let scroll = 0;
186
213
  switch (type) {
@@ -191,6 +218,11 @@ export class RevogrViewportScroll {
191
218
  scroll = target === null || target === void 0 ? void 0 : target.scrollTop;
192
219
  break;
193
220
  }
221
+ // for mobile devices to skip negative scroll loop
222
+ if (scroll < 0) {
223
+ this.silentScroll.emit({ dimension: type, coordinate: scroll });
224
+ return;
225
+ }
194
226
  this.applyOnScroll(type, scroll);
195
227
  }
196
228
  applyOnScroll(type, coordinate, outside = false) {
@@ -334,7 +366,7 @@ export class RevogrViewportScroll {
334
366
  "text": ""
335
367
  },
336
368
  "complexType": {
337
- "original": "{ type: RevoGrid.DimensionType; hasScroll: boolean }",
369
+ "original": "{\n type: RevoGrid.DimensionType;\n hasScroll: boolean;\n }",
338
370
  "resolved": "{ type: DimensionType; hasScroll: boolean; }",
339
371
  "references": {
340
372
  "RevoGrid": {
@@ -343,6 +375,26 @@ export class RevogrViewportScroll {
343
375
  }
344
376
  }
345
377
  }
378
+ }, {
379
+ "method": "silentScroll",
380
+ "name": "silentScroll",
381
+ "bubbles": true,
382
+ "cancelable": true,
383
+ "composed": true,
384
+ "docs": {
385
+ "tags": [],
386
+ "text": "Silently scroll to coordinate\nMade to align negative coordinates for mobile devices"
387
+ },
388
+ "complexType": {
389
+ "original": "RevoGrid.ViewPortScrollEvent",
390
+ "resolved": "{ dimension: DimensionType; coordinate: number; delta?: number; outside?: boolean; }",
391
+ "references": {
392
+ "RevoGrid": {
393
+ "location": "import",
394
+ "path": "../../interfaces"
395
+ }
396
+ }
397
+ }
346
398
  }];
347
399
  }
348
400
  static get methods() {
@@ -372,13 +424,16 @@ export class RevogrViewportScroll {
372
424
  },
373
425
  "changeScroll": {
374
426
  "complexType": {
375
- "signature": "(e: RevoGrid.ViewPortScrollEvent) => Promise<RevoGrid.ViewPortScrollEvent>",
427
+ "signature": "(e: RevoGrid.ViewPortScrollEvent, silent?: boolean) => Promise<RevoGrid.ViewPortScrollEvent>",
376
428
  "parameters": [{
377
429
  "tags": [{
378
430
  "name": "param",
379
431
  "text": "e"
380
432
  }],
381
433
  "text": ""
434
+ }, {
435
+ "tags": [],
436
+ "text": ""
382
437
  }],
383
438
  "references": {
384
439
  "Promise": {
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-viewport-scroll.js","sourceRoot":"","sources":["../../../src/components/scroll/revogr-viewport-scroll.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Method, Element, Prop, Host, Listen } from '@stencil/core';\nimport each from 'lodash/each';\n\nimport GridResizeService from '../revoGrid/viewport.resize.service';\nimport LocalScrollService from '../../services/localScrollService';\nimport { RevoGrid, ScrollCoordinateEvent } from '../../interfaces';\nimport { CONTENT_SLOT, FOOTER_SLOT, HEADER_SLOT } from '../revoGrid/viewport.helpers';\ntype Delta = 'deltaX' | 'deltaY';\ntype ScrollEvent = {\n preventDefault(): void;\n} & {[x in Delta]: number;};\n/**\n * Service for tracking grid scrolling\n */\n@Component({\n tag: 'revogr-viewport-scroll',\n styleUrl: 'revogr-viewport-scroll-style.scss',\n})\nexport class RevogrViewportScroll {\n @Event({ bubbles: true }) scrollViewport: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n @Event() resizeViewport: EventEmitter<RevoGrid.ViewPortResizeEvent>;\n @Event() scrollchange: EventEmitter<{ type: RevoGrid.DimensionType; hasScroll: boolean }>;\n\n private scrollThrottling = 10;\n\n /**\n * Width of inner content\n */\n @Prop() contentWidth = 0;\n /**\n * Height of inner content\n */\n @Prop() contentHeight = 0;\n\n private oldValY = this.contentHeight;\n private oldValX = this.contentWidth;\n\n @Element() horizontalScroll: HTMLElement;\n private verticalScroll: HTMLElement;\n private header: HTMLElement;\n private footer: HTMLElement;\n\n /**\n * Static functions to bind wheel change\n */\n private horizontalMouseWheel: (e: Partial<ScrollEvent>) => void;\n private verticalMouseWheel: (e: Partial<ScrollEvent>) => void;\n\n private resizeService: GridResizeService;\n private scrollService: LocalScrollService;\n\n /**\n * Last mw event time for trigger scroll function below\n * If mousewheel function was ignored we still need to trigger render\n */\n private mouseWheelScroll: Record<RevoGrid.DimensionType, number> = { rgCol: 0, rgRow: 0 };\n @Method() async setScroll(e: RevoGrid.ViewPortScrollEvent): Promise<void> {\n this.latestScrollUpdate(e.dimension);\n this.scrollService?.setScroll(e);\n }\n\n /**\n * update on delta in case we don't know existing position or external change\n * @param e\n */\n @Method() async changeScroll(e: RevoGrid.ViewPortScrollEvent): Promise<RevoGrid.ViewPortScrollEvent> {\n if (e.delta) {\n switch (e.dimension) {\n case 'rgCol':\n e.coordinate = this.horizontalScroll.scrollLeft + e.delta;\n break;\n case 'rgRow':\n e.coordinate = this.verticalScroll.scrollTop + e.delta;\n break;\n }\n this.setScroll(e);\n }\n return e;\n }\n\n @Listen('mousewheel-vertical') mousewheelVertical({ detail: e }: CustomEvent<ScrollEvent>) {\n this.verticalMouseWheel(e);\n }\n @Listen('mousewheel-horizontal') mousewheelHorizontal({ detail: e }: CustomEvent<ScrollEvent>) {\n this.horizontalMouseWheel(e);\n }\n /**\n * Allows to use outside listener\n */\n @Listen('scroll-coordinate') scrollApply({ detail: { type, coordinate } }: CustomEvent<ScrollCoordinateEvent>) {\n this.applyOnScroll(type, coordinate, true);\n }\n\n connectedCallback() {\n /**\n * Bind scroll functions for farther usage\n */\n\n if ('ontouchstart' in document.documentElement) {\n this.scrollThrottling = 0;\n } else {\n this.verticalMouseWheel = this.onVerticalMouseWheel.bind(this, 'rgRow', 'deltaY');\n this.horizontalMouseWheel = this.onHorizontalMouseWheel.bind(this, 'rgCol', 'deltaX');\n }\n /**\n * Create local scroll service\n */\n this.scrollService = new LocalScrollService({\n beforeScroll: e => this.scrollViewport.emit(e),\n afterScroll: e => {\n switch (e.dimension) {\n case 'rgCol':\n this.horizontalScroll.scrollLeft = e.coordinate;\n break;\n case 'rgRow':\n this.verticalScroll.scrollTop = e.coordinate;\n break;\n }\n },\n });\n }\n\n componentDidLoad() {\n // track horizontal viewport resize\n this.resizeService = new GridResizeService(this.horizontalScroll, {\n resize: entries => {\n let height = entries[0]?.contentRect.height || 0;\n if (height) {\n height -= this.header.clientHeight + this.footer.clientHeight;\n }\n const els = {\n rgRow: {\n size: height,\n contentSize: this.contentHeight,\n scroll: this.verticalScroll.scrollTop,\n },\n rgCol: {\n size: entries[0]?.contentRect.width || 0,\n contentSize: this.contentWidth,\n scroll: this.horizontalScroll.scrollLeft,\n },\n };\n each(els, (item, dimension: RevoGrid.DimensionType) => {\n this.resizeViewport.emit({ dimension, size: item.size });\n this.scrollService?.scroll(item.scroll, dimension, true);\n // track scroll visibility on outer element change\n this.setScrollVisibility(dimension, item.size, item.contentSize);\n });\n },\n });\n }\n\n /**\n * Check if scroll present or not per type\n * Trigger this method on inner content size change or on outer element size change\n * If inner content bigger then outer size then scroll is present and mousewheel binding required\n * @param type - dimension type 'rgRow/y' or 'rgCol/x'\n * @param size - outer content size\n * @param innerContentSize - inner content size\n */\n setScrollVisibility(type: RevoGrid.DimensionType, size: number, innerContentSize: number) {\n // test if scroll present\n const hasScroll = size < innerContentSize;\n let el: HTMLElement;\n // event reference for binding\n switch (type) {\n case 'rgCol':\n el = this.horizontalScroll;\n break;\n case 'rgRow':\n el = this.verticalScroll;\n break;\n }\n // based on scroll visibility assign or remove class and event\n if (hasScroll) {\n el.classList.add(`scroll-${type}`);\n } else {\n el.classList.remove(`scroll-${type}`);\n }\n this.scrollchange.emit({ type, hasScroll });\n }\n\n disconnectedCallback() {\n this.resizeService.destroy();\n }\n\n async componentDidRender() {\n // scroll update if number of rows changed\n if (this.contentHeight < this.oldValY && this.verticalScroll) {\n this.verticalScroll.scrollTop += this.contentHeight - this.oldValY;\n }\n this.oldValY = this.contentHeight;\n\n // scroll update if number of cols changed\n if (this.contentWidth < this.oldValX) {\n this.horizontalScroll.scrollLeft += this.contentWidth - this.oldValX;\n }\n this.oldValX = this.contentWidth;\n\n this.scrollService.setParams(\n {\n contentSize: this.contentHeight,\n clientSize: this.verticalScroll.clientHeight,\n virtualSize: 0,\n },\n 'rgRow',\n );\n\n this.scrollService.setParams(\n {\n contentSize: this.contentWidth,\n clientSize: this.horizontalScroll.clientWidth,\n virtualSize: 0,\n },\n 'rgCol',\n );\n this.setScrollVisibility('rgRow', this.verticalScroll.clientHeight, this.contentHeight);\n this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);\n }\n\n render() {\n return (\n <Host onWheel={this.horizontalMouseWheel} onScroll={(e: MouseEvent) => this.onScroll('rgCol', e)}>\n <div class=\"inner-content-table\" style={{ width: `${this.contentWidth}px` }}>\n <div class=\"header-wrapper\" ref={e => (this.header = e)}>\n <slot name={HEADER_SLOT} />\n </div>\n <div class=\"vertical-inner\"\n ref={el => (this.verticalScroll = el)}\n onWheel={this.verticalMouseWheel}\n onScroll={(e: MouseEvent) => this.onScroll('rgRow', e)}>\n <div class=\"content-wrapper\" style={{ height: `${this.contentHeight}px` }}>\n <slot name={CONTENT_SLOT} />\n </div>\n </div>\n <div class=\"footer-wrapper\" ref={e => (this.footer = e)}>\n <slot name={FOOTER_SLOT} />\n </div>\n </div>\n </Host>\n );\n }\n\n /**\n * Extra layer for scroll event monitoring, where MouseWheel event is not passing\n * We need to trigger scroll event in case there is no mousewheel event\n */\n private onScroll(type: RevoGrid.DimensionType, e: MouseEvent) {\n const target = e.target as HTMLElement | undefined;\n let scroll = 0;\n switch (type) {\n case 'rgCol':\n scroll = target?.scrollLeft;\n break;\n case 'rgRow':\n scroll = target?.scrollTop;\n break;\n }\n this.applyOnScroll(type, scroll);\n }\n\n private applyOnScroll(type: RevoGrid.DimensionType, coordinate: number, outside = false) {\n const change = new Date().getTime() - this.mouseWheelScroll[type];\n // apply after throttling\n if (change > this.scrollThrottling) {\n this.scrollService?.scroll(coordinate, type, undefined, undefined, outside);\n }\n }\n\n /** remember last mw event time */\n private latestScrollUpdate(dimension: RevoGrid.DimensionType) {\n this.mouseWheelScroll[dimension] = new Date().getTime();\n }\n\n /**\n * On vertical mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onVerticalMouseWheel(type: RevoGrid.DimensionType, delta: Delta, e: ScrollEvent) {\n e.preventDefault && e.preventDefault();\n const pos = this.verticalScroll.scrollTop + e[delta];\n this.scrollService?.scroll(pos, type, undefined, e[delta]);\n this.latestScrollUpdate(type);\n }\n\n /**\n * On horizontal mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onHorizontalMouseWheel(type: RevoGrid.DimensionType, delta: Delta, e: ScrollEvent) {\n e.preventDefault && e.preventDefault();\n const pos = this.horizontalScroll.scrollLeft + e[delta];\n this.scrollService?.scroll(pos, type, undefined, e[delta]);\n this.latestScrollUpdate(type);\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-viewport-scroll.js","sourceRoot":"","sources":["../../../src/components/scroll/revogr-viewport-scroll.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Method,\n Element,\n Prop,\n Host,\n Listen,\n} from '@stencil/core';\nimport each from 'lodash/each';\n\nimport GridResizeService from '../revoGrid/viewport.resize.service';\nimport LocalScrollService from '../../services/localScrollService';\nimport { RevoGrid, ScrollCoordinateEvent } from '../../interfaces';\nimport {\n CONTENT_SLOT,\n FOOTER_SLOT,\n HEADER_SLOT,\n} from '../revoGrid/viewport.helpers';\ntype Delta = 'deltaX' | 'deltaY';\ntype LocalScrollEvent = {\n preventDefault(): void;\n} & { [x in Delta]: number };\n/**\n * Service for tracking grid scrolling\n */\n@Component({\n tag: 'revogr-viewport-scroll',\n styleUrl: 'revogr-viewport-scroll-style.scss',\n})\nexport class RevogrViewportScroll {\n @Event({ bubbles: true })\n scrollViewport: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n @Event() resizeViewport: EventEmitter<RevoGrid.ViewPortResizeEvent>;\n @Event() scrollchange: EventEmitter<{\n type: RevoGrid.DimensionType;\n hasScroll: boolean;\n }>;\n\n /**\n * Silently scroll to coordinate\n * Made to align negative coordinates for mobile devices\n */\n @Event()\n silentScroll: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n\n private scrollThrottling = 10;\n\n /**\n * Width of inner content\n */\n @Prop() contentWidth = 0;\n /**\n * Height of inner content\n */\n @Prop() contentHeight = 0;\n\n private oldValY = this.contentHeight;\n private oldValX = this.contentWidth;\n\n @Element() horizontalScroll: HTMLElement;\n private verticalScroll: HTMLElement;\n private header: HTMLElement;\n private footer: HTMLElement;\n\n /**\n * Static functions to bind wheel change\n */\n private horizontalMouseWheel: (e: Partial<LocalScrollEvent>) => void;\n private verticalMouseWheel: (e: Partial<LocalScrollEvent>) => void;\n\n private resizeService: GridResizeService;\n private scrollService: LocalScrollService;\n\n /**\n * Last mw event time for trigger scroll function below\n * If mousewheel function was ignored we still need to trigger render\n */\n private mouseWheelScroll: Record<RevoGrid.DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n @Method() async setScroll(e: RevoGrid.ViewPortScrollEvent) {\n this.latestScrollUpdate(e.dimension);\n this.scrollService?.setScroll(e);\n }\n\n /**\n * update on delta in case we don't know existing position or external change\n * @param e\n */\n @Method() async changeScroll(\n e: RevoGrid.ViewPortScrollEvent,\n silent = false,\n ) {\n if (silent) {\n if (e.coordinate) {\n switch (e.dimension) {\n // for mobile devices to skip negative scroll loop. only on vertical scroll\n case 'rgRow':\n this.verticalScroll.style.transform = `translateY(${-1 * e.coordinate}px)`;\n break;\n }\n }\n return null;\n }\n if (e.delta) {\n switch (e.dimension) {\n case 'rgCol':\n e.coordinate = this.horizontalScroll.scrollLeft + e.delta;\n break;\n case 'rgRow':\n e.coordinate = this.verticalScroll.scrollTop + e.delta;\n break;\n }\n this.setScroll(e);\n }\n return e;\n }\n\n /**\n * Dispatch this event to trigger vertical mouse wheel from plugins\n */\n @Listen('mousewheel-vertical') mousewheelVertical({\n detail: e,\n }: CustomEvent<LocalScrollEvent>) {\n this.verticalMouseWheel(e);\n }\n /**\n * Dispatch this event to trigger horizontal mouse wheel from plugins\n */\n @Listen('mousewheel-horizontal') mousewheelHorizontal({\n detail: e,\n }: CustomEvent<LocalScrollEvent>) {\n this.horizontalMouseWheel(e);\n }\n /**\n * Allows to use outside listener\n */\n @Listen('scroll-coordinate') scrollApply({\n detail: { type, coordinate },\n }: CustomEvent<ScrollCoordinateEvent>) {\n this.applyOnScroll(type, coordinate, true);\n }\n\n connectedCallback() {\n /**\n * Bind scroll functions for farther usage\n */\n if ('ontouchstart' in document.documentElement) {\n this.scrollThrottling = 0;\n } else {\n this.verticalMouseWheel = this.onVerticalMouseWheel.bind(\n this,\n 'rgRow',\n 'deltaY',\n );\n this.horizontalMouseWheel = this.onHorizontalMouseWheel.bind(\n this,\n 'rgCol',\n 'deltaX',\n );\n }\n /**\n * Create local scroll service\n */\n this.scrollService = new LocalScrollService({\n beforeScroll: e => this.scrollViewport.emit(e),\n afterScroll: e => {\n switch (e.dimension) {\n case 'rgCol':\n this.horizontalScroll.scrollLeft = e.coordinate;\n break;\n case 'rgRow':\n this.verticalScroll.scrollTop = e.coordinate;\n // for mobile devices to skip negative scroll loop. only on vertical scroll\n if (this.verticalScroll.style.transform) {\n this.verticalScroll.style.transform = '';\n }\n break;\n }\n },\n });\n }\n\n componentDidLoad() {\n // track horizontal viewport resize\n this.resizeService = new GridResizeService(this.horizontalScroll, {\n resize: entries => {\n let height = entries[0]?.contentRect.height || 0;\n if (height) {\n height -= this.header.clientHeight + this.footer.clientHeight;\n }\n const els = {\n rgRow: {\n size: height,\n contentSize: this.contentHeight,\n scroll: this.verticalScroll.scrollTop,\n },\n rgCol: {\n size: entries[0]?.contentRect.width || 0,\n contentSize: this.contentWidth,\n scroll: this.horizontalScroll.scrollLeft,\n },\n };\n each(els, (item, dimension: RevoGrid.DimensionType) => {\n this.resizeViewport.emit({ dimension, size: item.size });\n this.scrollService?.scroll(item.scroll, dimension, true);\n // track scroll visibility on outer element change\n this.setScrollVisibility(dimension, item.size, item.contentSize);\n });\n },\n });\n }\n\n /**\n * Check if scroll present or not per type\n * Trigger this method on inner content size change or on outer element size change\n * If inner content bigger then outer size then scroll is present and mousewheel binding required\n * @param type - dimension type 'rgRow/y' or 'rgCol/x'\n * @param size - outer content size\n * @param innerContentSize - inner content size\n */\n setScrollVisibility(\n type: RevoGrid.DimensionType,\n size: number,\n innerContentSize: number,\n ) {\n // test if scroll present\n const hasScroll = size < innerContentSize;\n let el: HTMLElement;\n // event reference for binding\n switch (type) {\n case 'rgCol':\n el = this.horizontalScroll;\n break;\n case 'rgRow':\n el = this.verticalScroll;\n break;\n }\n // based on scroll visibility assign or remove class and event\n if (hasScroll) {\n el.classList.add(`scroll-${type}`);\n } else {\n el.classList.remove(`scroll-${type}`);\n }\n this.scrollchange.emit({ type, hasScroll });\n }\n\n disconnectedCallback() {\n this.resizeService.destroy();\n }\n\n async componentDidRender() {\n // scroll update if number of rows changed\n if (this.contentHeight < this.oldValY && this.verticalScroll) {\n this.verticalScroll.scrollTop += this.contentHeight - this.oldValY;\n }\n this.oldValY = this.contentHeight;\n\n // scroll update if number of cols changed\n if (this.contentWidth < this.oldValX) {\n this.horizontalScroll.scrollLeft += this.contentWidth - this.oldValX;\n }\n this.oldValX = this.contentWidth;\n\n this.scrollService.setParams(\n {\n contentSize: this.contentHeight,\n clientSize: this.verticalScroll.clientHeight,\n virtualSize: 0,\n },\n 'rgRow',\n );\n\n this.scrollService.setParams(\n {\n contentSize: this.contentWidth,\n clientSize: this.horizontalScroll.clientWidth,\n virtualSize: 0,\n },\n 'rgCol',\n );\n this.setScrollVisibility(\n 'rgRow',\n this.verticalScroll.clientHeight,\n this.contentHeight,\n );\n this.setScrollVisibility(\n 'rgCol',\n this.horizontalScroll.clientWidth,\n this.contentWidth,\n );\n }\n\n render() {\n return (\n <Host\n onWheel={this.horizontalMouseWheel}\n onScroll={(e: UIEvent) => this.onScroll('rgCol', e)}\n >\n <div\n class=\"inner-content-table\"\n style={{ width: `${this.contentWidth}px` }}\n >\n <div class=\"header-wrapper\" ref={e => (this.header = e)}>\n <slot name={HEADER_SLOT} />\n </div>\n <div\n class=\"vertical-inner\"\n ref={el => (this.verticalScroll = el)}\n onWheel={this.verticalMouseWheel}\n onScroll={(e: MouseEvent) => this.onScroll('rgRow', e)}\n >\n <div\n class=\"content-wrapper\"\n style={{ height: `${this.contentHeight}px` }}\n >\n <slot name={CONTENT_SLOT} />\n </div>\n </div>\n <div class=\"footer-wrapper\" ref={e => (this.footer = e)}>\n <slot name={FOOTER_SLOT} />\n </div>\n </div>\n </Host>\n );\n }\n /**\n * Extra layer for scroll event monitoring, where MouseWheel event is not passing\n * We need to trigger scroll event in case there is no mousewheel event\n */\n private onScroll(type: RevoGrid.DimensionType, e: UIEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n const target = e.target;\n let scroll = 0;\n switch (type) {\n case 'rgCol':\n scroll = target?.scrollLeft;\n break;\n case 'rgRow':\n scroll = target?.scrollTop;\n break;\n }\n\n // for mobile devices to skip negative scroll loop\n if (scroll < 0) {\n this.silentScroll.emit({ dimension: type, coordinate: scroll });\n return;\n }\n this.applyOnScroll(type, scroll);\n }\n\n private applyOnScroll(\n type: RevoGrid.DimensionType,\n coordinate: number,\n outside = false,\n ) {\n const change = new Date().getTime() - this.mouseWheelScroll[type];\n // apply after throttling\n if (change > this.scrollThrottling) {\n this.scrollService?.scroll(\n coordinate,\n type,\n undefined,\n undefined,\n outside,\n );\n }\n }\n\n /** remember last mw event time */\n private latestScrollUpdate(dimension: RevoGrid.DimensionType) {\n this.mouseWheelScroll[dimension] = new Date().getTime();\n }\n\n /**\n * On vertical mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onVerticalMouseWheel(\n type: RevoGrid.DimensionType,\n delta: Delta,\n e: LocalScrollEvent,\n ) {\n e.preventDefault && e.preventDefault();\n const pos = this.verticalScroll.scrollTop + e[delta];\n this.scrollService?.scroll(pos, type, undefined, e[delta]);\n this.latestScrollUpdate(type);\n }\n\n /**\n * On horizontal mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onHorizontalMouseWheel(\n type: RevoGrid.DimensionType,\n delta: Delta,\n e: LocalScrollEvent,\n ) {\n e.preventDefault && e.preventDefault();\n const pos = this.horizontalScroll.scrollLeft + e[delta];\n this.scrollService?.scroll(pos, type, undefined, e[delta]);\n this.latestScrollUpdate(type);\n }\n}\n"]}
@@ -73,5 +73,5 @@ revogr-focus.focused-cell {
73
73
  position: absolute;
74
74
  pointer-events: none;
75
75
  z-index: 9;
76
- display: block;
76
+ display: block !important;
77
77
  }