diff options
Diffstat (limited to 'chromium/chrome/browser/resources/pdf/elements/viewer-page-selector.js')
-rw-r--r-- | chromium/chrome/browser/resources/pdf/elements/viewer-page-selector.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector.js b/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector.js new file mode 100644 index 00000000000..b7999237a98 --- /dev/null +++ b/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector.js @@ -0,0 +1,67 @@ +// Copyright 2015 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. + +Polymer({ + is: 'viewer-page-selector', + + properties: { + /** + * The number of pages the document contains. + */ + docLength: {type: Number, value: 1, observer: 'docLengthChanged_'}, + + /** + * The current page being viewed (1-based). A change to pageNo is mirrored + * immediately to the input field. A change to the input field is not + * mirrored back until pageNoCommitted() is called and change-page is fired. + */ + pageNo: { + type: Number, + value: 1, + }, + + strings: Object, + }, + + /** @return {!CrInputElement} */ + get pageSelector() { + return this.$.pageselector; + }, + + pageNoCommitted: function() { + const page = parseInt(this.pageSelector.value, 10); + + if (!isNaN(page) && page <= this.docLength && page > 0) { + this.fire('change-page', {page: page - 1, origin: 'pageselector'}); + } else { + this.pageSelector.value = this.pageNo.toString(); + } + this.pageSelector.blur(); + }, + + /** @private */ + docLengthChanged_: function() { + const numDigits = this.docLength.toString().length; + this.style.setProperty('--page-length-digits', `${numDigits}`); + }, + + select: function() { + this.pageSelector.select(); + }, + + /** + * @return {boolean} True if the selector input field is currently focused. + */ + isActive: function() { + return this.shadowRoot.activeElement == this.pageSelector; + }, + + /** + * Immediately remove any non-digit characters. + * @private + */ + onInputValueChange_: function() { + this.pageSelector.value = this.pageSelector.value.replace(/[^\d]/, ''); + }, +}); |