From 56c6def9266f24f97857cc7068fe2d65a7b285b0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 9 Nov 2009 03:10:57 +0000 Subject: [PATCH] Slider: Added paging - page up/down jumps by 1/5 the size of the range. Fixes #3096 - Add a paging option for slider --- tests/unit/slider/slider_core.js | 46 ++++++++++++++++++++++++++++++++ ui/jquery.ui.slider.js | 12 +++++++++ 2 files changed, 58 insertions(+) diff --git a/tests/unit/slider/slider_core.js b/tests/unit/slider/slider_core.js index 0aadc913d..38d4f4669 100644 --- a/tests/unit/slider/slider_core.js +++ b/tests/unit/slider/slider_core.js @@ -83,6 +83,52 @@ test("keydown END on handle sets value to max", function() { el.slider('destroy'); }); +test("keydown PAGE_UP on handle increases value by 1/5 range, not greater than max", function() { + $.each(['horizontal', 'vertical'], function(i, orientation) { + el = $('
'); + options = { + max: 100, + min: 0, + orientation: orientation, + step: 1 + }; + el.slider(options); + + el.slider("value", 70); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_UP }); + equals(el.slider("value"), 90); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_UP }); + equals(el.slider("value"), 100); + + el.slider("destroy"); + }); +}); + +test("keydown PAGE_DOWN on handle decreases value by 1/5 range, not less than min", function() { + $.each(['horizontal', 'vertical'], function(i, orientation) { + el = $('
'); + options = { + max: 100, + min: 0, + orientation: orientation, + step: 1 + }; + el.slider(options); + + el.slider("value", 30); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_DOWN }); + equals(el.slider("value"), 10); + + handle().simulate("keydown", { keyCode: $.ui.keyCode.PAGE_DOWN }); + equals(el.slider("value"), 0); + + el.slider("destroy"); + }); +}); + test("keydown UP on handle increases value by step, not greater than max", function() { el = $('
'); options = { diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js index 105a08ff9..2c96bd018 100644 --- a/ui/jquery.ui.slider.js +++ b/ui/jquery.ui.slider.js @@ -13,6 +13,10 @@ (function($) { +// number of pages in a slider +// (how many times can you page up/down to go through the whole range) +var numPages = 5; + $.widget("ui.slider", $.extend({}, $.ui.mouse, { _init: function() { @@ -119,6 +123,8 @@ $.widget("ui.slider", $.extend({}, $.ui.mouse, { switch (event.keyCode) { case $.ui.keyCode.HOME: case $.ui.keyCode.END: + case $.ui.keyCode.PAGE_UP: + case $.ui.keyCode.PAGE_DOWN: case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: @@ -146,6 +152,12 @@ $.widget("ui.slider", $.extend({}, $.ui.mouse, { case $.ui.keyCode.END: newVal = self._valueMax(); break; + case $.ui.keyCode.PAGE_UP: + newVal = curVal + ((self._valueMax() - self._valueMin()) / numPages); + break; + case $.ui.keyCode.PAGE_DOWN: + newVal = curVal - ((self._valueMax() - self._valueMin()) / numPages); + break; case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: if(curVal == self._valueMax()) return; -- 2.39.5