blob: 014362ab962c4fba693bd7e41dbbc172bda92555 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
// 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
},
pageNoCommitted: function() {
var page = parseInt(this.$.input.value);
if (!isNaN(page) && page <= this.docLength && page > 0)
this.fire('change-page', {page: page - 1});
else
this.$.input.value = this.pageNo;
this.$.input.blur();
},
docLengthChanged: function() {
var numDigits = this.docLength.toString().length;
this.$.pageselector.style.width = numDigits + 'ch';
// Set both sides of the slash to the same width, so that the layout is
// exactly centered.
this.$['pagelength-spacer'].style.width = numDigits + 'ch';
},
select: function() {
this.$.input.select();
},
/**
* @return {boolean} True if the selector input field is currently focused.
*/
isActive: function() {
return this.shadowRoot.activeElement == this.$.input;
}
});
|