summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/resources/pdf/elements/viewer-page-selector.js
diff options
context:
space:
mode:
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.js67
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]/, '');
+ },
+});