| OLD | NEW | 
|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 Polymer({ | 5 Polymer({ | 
| 6   is: 'viewer-page-selector', | 6   is: 'viewer-page-selector', | 
| 7 | 7 | 
| 8   properties: { | 8   properties: { | 
| 9     /** | 9     /** | 
| 10      * The number of pages the document contains. | 10      * The number of pages the document contains. | 
| 11      */ | 11      */ | 
| 12     docLength: { | 12     docLength: { | 
| 13       type: Number, | 13       type: Number, | 
| 14       value: 1, | 14       value: 1, | 
| 15       observer: 'docLengthChanged' | 15       observer: 'docLengthChanged_' | 
| 16     }, | 16     }, | 
| 17 | 17 | 
| 18     /** | 18     /** | 
| 19      * The current page being viewed (1-based). A change to pageNo is mirrored | 19      * The current page being viewed (1-based). A change to pageNo is mirrored | 
| 20      * immediately to the input field. A change to the input field is not | 20      * immediately to the input field. A change to the input field is not | 
| 21      * mirrored back until pageNoCommitted() is called and change-page is fired. | 21      * mirrored back until pageNoCommitted() is called and change-page is fired. | 
| 22      */ | 22      */ | 
| 23     pageNo: { | 23     pageNo: { | 
| 24       type: Number, | 24       type: Number, | 
| 25       value: 1 | 25       value: 1 | 
| 26     }, | 26     }, | 
| 27 | 27 | 
| 28     strings: Object, | 28     strings: Object, | 
| 29   }, | 29   }, | 
| 30 | 30 | 
| 31   pageNoCommitted: function() { | 31   pageNoCommitted: function() { | 
| 32     var page = parseInt(this.$.input.value); | 32     var page = parseInt(this.$.input.value, 10); | 
| 33 | 33 | 
| 34     if (!isNaN(page) && page <= this.docLength && page > 0) | 34     if (!isNaN(page) && page <= this.docLength && page > 0) | 
| 35       this.fire('change-page', {page: page - 1}); | 35       this.fire('change-page', {page: page - 1}); | 
| 36     else | 36     else | 
| 37       this.$.input.value = this.pageNo; | 37       this.$.input.value = this.pageNo; | 
| 38     this.$.input.blur(); | 38     this.$.input.blur(); | 
| 39   }, | 39   }, | 
| 40 | 40 | 
| 41   docLengthChanged: function() { | 41   /** @private */ | 
|  | 42   docLengthChanged_: function() { | 
| 42     var numDigits = this.docLength.toString().length; | 43     var numDigits = this.docLength.toString().length; | 
| 43     this.$.pageselector.style.width = numDigits + 'ch'; | 44     this.$.pageselector.style.width = numDigits + 'ch'; | 
| 44     // Set both sides of the slash to the same width, so that the layout is | 45     // Set both sides of the slash to the same width, so that the layout is | 
| 45     // exactly centered. | 46     // exactly centered. | 
| 46     this.$['pagelength-spacer'].style.width = numDigits + 'ch'; | 47     this.$['pagelength-spacer'].style.width = numDigits + 'ch'; | 
| 47   }, | 48   }, | 
| 48 | 49 | 
| 49   select: function() { | 50   select: function() { | 
| 50     this.$.input.select(); | 51     this.$.input.select(); | 
| 51   }, | 52   }, | 
| 52 | 53 | 
| 53   /** | 54   /** | 
| 54    * @return {boolean} True if the selector input field is currently focused. | 55    * @return {boolean} True if the selector input field is currently focused. | 
| 55    */ | 56    */ | 
| 56   isActive: function() { | 57   isActive: function() { | 
| 57     return this.shadowRoot.activeElement == this.$.input; | 58     return this.shadowRoot.activeElement == this.$.input; | 
| 58   } | 59   } | 
| 59 }); | 60 }); | 
| OLD | NEW | 
|---|