From 094fbf99928b4d706d73b80af4d74d149cb6761a Mon Sep 17 00:00:00 2001 From: tobiu Date: Tue, 4 Feb 2025 11:28:05 +0100 Subject: [PATCH] draggable.grid.header.toolbar.SortZone: add support for the row scroll position #6375 --- .../grid/header/toolbar/SortZone.scss | 8 ++-- .../grid/header/toolbar/SortZone.mjs | 47 ++++++++++++------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/resources/scss/src/draggable/grid/header/toolbar/SortZone.scss b/resources/scss/src/draggable/grid/header/toolbar/SortZone.scss index 468c076e8..a90674f25 100644 --- a/resources/scss/src/draggable/grid/header/toolbar/SortZone.scss +++ b/resources/scss/src/draggable/grid/header/toolbar/SortZone.scss @@ -14,6 +14,10 @@ .neo-dragproxy { .neo-grid-container { border: none; + + * { + scrollbar-width: none; + } } .neo-grid-header-toolbar { @@ -23,10 +27,6 @@ border-right: 1px solid var(--grid-container-border-color); } } - - .neo-grid-row { - position: unset; - } } .neo-grid-header-toolbar { diff --git a/src/draggable/grid/header/toolbar/SortZone.mjs b/src/draggable/grid/header/toolbar/SortZone.mjs index c99708604..26efcde11 100644 --- a/src/draggable/grid/header/toolbar/SortZone.mjs +++ b/src/draggable/grid/header/toolbar/SortZone.mjs @@ -52,16 +52,17 @@ class SortZone extends BaseSortZone { return await super.createDragProxy(data, createComponent) } - let me = this, - grid = me.owner.parent, - {view} = grid, - gridRows = view.getVdomRoot().cn, - columnIndex = me.dragElement['aria-colindex'] - 1, - {dataField} = view.columnPositions[columnIndex], - cells = view.getColumnCells(dataField), - rows = [], - config = await super.createDragProxy(data, false), - rect = await grid.getDomRect(), + let me = this, + grid = me.owner.parent, + {view} = grid, + gridRows = view.getVdomRoot().cn, + columnIndex = me.dragElement['aria-colindex'] - 1, + {dataField} = view.columnPositions[columnIndex], + cells = view.getColumnCells(dataField), + rows = [], + config = await super.createDragProxy(data, false), + rect = await grid.getDomRect(), + viewWrapperId = Neo.getId('grid-view-wrapper'), row; config.cls = ['neo-grid-wrapper', me.owner.getTheme()]; @@ -69,11 +70,11 @@ class SortZone extends BaseSortZone { config.style.height = `${rect.height - 2}px`; // minus border-bottom & border-top cells.forEach((cell, index) => { - row = VdomUtil.clone({cls: gridRows[index].cls, cn: [cell]}); // clone to remove ids - - row.style = { - height: view.rowHeight + 'px' - }; + row = VdomUtil.clone({ // clone to remove ids + cls : gridRows[index].cls, + cn : [cell], + style: gridRows[index].style + }); delete row.cn[0].style.left; @@ -84,10 +85,24 @@ class SortZone extends BaseSortZone { {cn: [ {cls: ['neo-grid-container'], cn: [ {...config.vdom, cls: ['neo-grid-header-toolbar', 'neo-toolbar']}, - {cls: ['neo-grid-view'], cn: rows} + {cls: ['neo-grid-view-wrapper'], id: viewWrapperId, cn: [ + {cls: ['neo-grid-view'], cn: rows}, + {cls: ['neo-grid-scrollbar'], style: {height: view.vdom.cn[1].height}} + ]} ]} ]}; + config.listeners = { + mounted() { + Neo.main.DomAccess.scrollTo({ + direction: 'top', + id : viewWrapperId, + value : view.scrollPosition.y, + windowId : this.windowId + }) + } + }; + if (createComponent) { return me.dragProxy = Neo.create(config) }