| Index: chrome/browser/resources/ntp4/dot_list.js
|
| diff --git a/chrome/browser/resources/ntp4/dot_list.js b/chrome/browser/resources/ntp4/dot_list.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..45b615af5f6ffc2cc0e9ae4217ce754718b12f3e
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/ntp4/dot_list.js
|
| @@ -0,0 +1,80 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +/**
|
| + * @fileoverview DotList implementation
|
| + */
|
| +
|
| +cr.define('ntp4', function() {
|
| + 'use strict';
|
| +
|
| + /**
|
| + * Live list of the navigation dots.
|
| + * @type {!NodeList|undefined}
|
| + */
|
| + var navDots;
|
| +
|
| + /**
|
| + * Creates a new DotList object.
|
| + * @constructor
|
| + * @extends {HTMLUListElement}
|
| + */
|
| + var DotList = cr.ui.define('ul');
|
| +
|
| + DotList.prototype = {
|
| + __proto__: HTMLUListElement.prototype,
|
| +
|
| + /** @inheritDoc */
|
| + decorate: function() {
|
| + this.addEventListener('keydown', this.onKeyDown_.bind(this));
|
| + navDots = this.getElementsByClassName('dot');
|
| + },
|
| +
|
| + /**
|
| + * Live list of the navigation dots.
|
| + * @type {!NodeList|undefined}
|
| + */
|
| + get dots() {
|
| + return navDots;
|
| + },
|
| +
|
| + /**
|
| + * Handler for key events on the dot list. These keys will change the focus
|
| + * element.
|
| + * @param {Event} e The KeyboardEvent.
|
| + */
|
| + onKeyDown_: function(e) {
|
| + if (e.metaKey || e.shiftKey || e.altKey || e.ctrlKey)
|
| + return;
|
| +
|
| + var direction = 0;
|
| + if (e.keyIdentifier == 'Left')
|
| + direction = -1;
|
| + else if (e.keyIdentifier == 'Right')
|
| + direction = 1;
|
| + else
|
| + return;
|
| +
|
| + var focusDot = this.querySelector('.dot:focus');
|
| + if (!focusDot)
|
| + return;
|
| + var focusIndex = Array.prototype.indexOf.call(navDots, focusDot);
|
| + var newFocusIndex = focusIndex + direction;
|
| + if (focusIndex == newFocusIndex)
|
| + return;
|
| +
|
| + newFocusIndex = (newFocusIndex + navDots.length) % navDots.length;
|
| + navDots[newFocusIndex].tabIndex = 3;
|
| + navDots[newFocusIndex].focus();
|
| + focusDot.tabIndex = -1;
|
| +
|
| + e.stopPropagation();
|
| + e.preventDefault();
|
| + }
|
| + };
|
| +
|
| + return {
|
| + DotList: DotList
|
| + };
|
| +});
|
|
|