From 496f3857960abc96f9a54df7db8970f9729acd44 Mon Sep 17 00:00:00 2001 From: furybean Date: Fri, 4 Nov 2016 11:38:44 +0800 Subject: [PATCH] Table: support header mousewheel scroll. --- packages/table/src/table.vue | 15 +++++++++++++++ packages/table/src/util.js | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/table/src/table.vue b/packages/table/src/table.vue index b08c18053..bcf97fab5 100644 --- a/packages/table/src/table.vue +++ b/packages/table/src/table.vue @@ -96,6 +96,7 @@ import TableLayout from './table-layout'; import TableBody from './table-body'; import TableHeader from './table-header'; + import { mousewheel } from './util'; let tableIdSeed = 1; @@ -185,6 +186,20 @@ if (refs.rightFixedBodyWrapper) refs.rightFixedBodyWrapper.scrollTop = this.scrollTop; }); + mousewheel(headerWrapper, function(event) { + event.preventDefault(); + }); + + mousewheel(headerWrapper, throttle(16, function(event) { + const deltaX = event.deltaX; + + if (deltaX > 0) { + bodyWrapper.scrollLeft = bodyWrapper.scrollLeft + 10; + } else { + bodyWrapper.scrollLeft = bodyWrapper.scrollLeft - 10; + } + })); + if (this.fit) { this.windowResizeListener = throttle(50, () => { if (this.$ready) this.doLayout(); diff --git a/packages/table/src/util.js b/packages/table/src/util.js index b05cd0228..25c10f2de 100644 --- a/packages/table/src/util.js +++ b/packages/table/src/util.js @@ -98,3 +98,11 @@ export const getColumnByCell = function(table, cell) { } return null; }; + +const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; + +export const mousewheel = function(element, callback) { + if (element && element.addEventListener) { + element.addEventListener(isFirefox ? 'DOMMouseScroll' : 'mousewheel', callback); + } +};