73bcce88
luigser
COMPONENTS
|
1
2
3
4
5
6
7
8
9
10
11
|
<!--
@license
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<link rel="import" href="../polymer/polymer.html">
|
73bcce88
luigser
COMPONENTS
|
12
|
<link rel="import" href="../iron-a11y-keys-behavior/iron-a11y-keys-behavior.html">
|
a1a3bc73
Luigi Serra
graphs updates
|
13
|
<link rel="import" href="../iron-flex-layout/iron-flex-layout.html">
|
73bcce88
luigser
COMPONENTS
|
14
|
<link rel="import" href="../iron-form-element-behavior/iron-form-element-behavior.html">
|
a1a3bc73
Luigi Serra
graphs updates
|
15
16
17
18
19
|
<link rel="import" href="../iron-range-behavior/iron-range-behavior.html">
<link rel="import" href="../paper-behaviors/paper-inky-focus-behavior.html">
<link rel="import" href="../paper-input/paper-input.html">
<link rel="import" href="../paper-progress/paper-progress.html">
<link rel="import" href="../paper-styles/color.html">
|
73bcce88
luigser
COMPONENTS
|
20
21
|
<!--
|
eb240478
Luigi Serra
public room cards...
|
22
23
|
Material design: [Sliders](https://www.google.com/design/spec/components/sliders.html)
|
73bcce88
luigser
COMPONENTS
|
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
|
`paper-slider` allows user to select a value from a range of values by
moving the slider thumb. The interactive nature of the slider makes it a
great choice for settings that reflect intensity levels, such as volume,
brightness, or color saturation.
Example:
<paper-slider></paper-slider>
Use `min` and `max` to specify the slider range. Default is 0 to 100.
Example:
<paper-slider min="10" max="200" value="110"></paper-slider>
### Styling
The following custom properties and mixins are available for styling:
Custom property | Description | Default
----------------|-------------|----------
`--paper-slider-bar-color` | The background color of the slider | `transparent`
`--paper-slider-active-color` | The progress bar color | `--google-blue-700`
`--paper-slider-secondary-color` | The secondary progress bar color | `--google-blue-300`
`--paper-slider-knob-color` | The knob color | `--google-blue-700`
|
a1a3bc73
Luigi Serra
graphs updates
|
49
|
`--paper-slider-disabled-knob-color` | The disabled knob color | `--paper-grey-400`
|
73bcce88
luigser
COMPONENTS
|
50
51
|
`--paper-slider-pin-color` | The pin color | `--google-blue-700`
`--paper-slider-font-color` | The pin's text color | `#fff`
|
a1a3bc73
Luigi Serra
graphs updates
|
52
53
|
`--paper-slider-disabled-active-color` | The disabled progress bar color | `--paper-grey-400`
`--paper-slider-disabled-secondary-color` | The disabled secondary progress bar color | `--paper-grey-400`
|
73bcce88
luigser
COMPONENTS
|
54
|
`--paper-slider-knob-start-color` | The fill color of the knob at the far left | `transparent`
|
a1a3bc73
Luigi Serra
graphs updates
|
55
56
|
`--paper-slider-knob-start-border-color` | The border color of the knob at the far left | `--paper-grey-400`
`--paper-slider-pin-start-color` | The color of the pin at the far left | `--paper-grey-400`
|
73bcce88
luigser
COMPONENTS
|
57
|
`--paper-slider-height` | Height of the progress bar | `2px`
|
a1a3bc73
Luigi Serra
graphs updates
|
58
|
`--paper-slider-input` | Mixin applied to the input in editable mode | `{}`
|
73bcce88
luigser
COMPONENTS
|
59
60
61
62
63
64
65
66
|
@group Paper Elements
@element paper-slider
@demo demo/index.html
@hero hero.svg
-->
<dom-module id="paper-slider">
|
eb240478
Luigi Serra
public room cards...
|
67
68
69
|
<template strip-whitespace>
<style>
:host {
|
a1a3bc73
Luigi Serra
graphs updates
|
70
71
72
|
@apply(--layout);
@apply(--layout-justified);
@apply(--layout-center);
|
eb240478
Luigi Serra
public room cards...
|
73
74
75
76
77
78
79
80
81
|
width: 200px;
cursor: default;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
--paper-progress-active-color: var(--paper-slider-active-color, --google-blue-700);
--paper-progress-secondary-color: var(--paper-slider-secondary-color, --google-blue-300);
|
a1a3bc73
Luigi Serra
graphs updates
|
82
83
|
--paper-progress-disabled-active-color: var(--paper-slider-disabled-active-color, --paper-grey-400);
--paper-progress-disabled-secondary-color: var(--paper-slider-disabled-secondary-color, --paper-grey-400);
|
eb240478
Luigi Serra
public room cards...
|
84
85
86
87
88
89
90
91
92
|
}
/* focus shows the ripple */
:host(:focus) {
outline: none;
}
#sliderContainer {
position: relative;
|
a1a3bc73
Luigi Serra
graphs updates
|
93
94
95
96
|
width: 100%;
height: calc(30px + var(--paper-slider-height, 2px));
margin-left: calc(15px + var(--paper-slider-height, 2px)/2);
margin-right: calc(15px + var(--paper-slider-height, 2px)/2);
|
eb240478
Luigi Serra
public room cards...
|
97
98
99
100
101
102
103
|
}
#sliderContainer:focus {
outline: 0;
}
#sliderContainer.editable {
|
a1a3bc73
Luigi Serra
graphs updates
|
104
105
|
margin-top: 12px;
margin-bottom: 12px;
|
eb240478
Luigi Serra
public room cards...
|
106
107
108
109
110
|
}
.bar-container {
position: absolute;
top: 0;
|
a1a3bc73
Luigi Serra
graphs updates
|
111
112
113
|
bottom: 0;
left: 0;
right: 0;
|
eb240478
Luigi Serra
public room cards...
|
114
115
116
117
|
overflow: hidden;
}
.ring > .bar-container {
|
a1a3bc73
Luigi Serra
graphs updates
|
118
119
|
left: calc(5px + var(--paper-slider-height, 2px)/2);
transition: left 0.18s ease;
|
eb240478
Luigi Serra
public room cards...
|
120
121
122
123
124
125
|
}
.ring.expand.dragging > .bar-container {
transition: none;
}
|
a1a3bc73
Luigi Serra
graphs updates
|
126
127
128
129
|
.ring.expand:not(.pin) > .bar-container {
left: calc(8px + var(--paper-slider-height, 2px)/2);
}
|
eb240478
Luigi Serra
public room cards...
|
130
|
#sliderBar {
|
a1a3bc73
Luigi Serra
graphs updates
|
131
|
padding: 15px 0;
|
eb240478
Luigi Serra
public room cards...
|
132
|
width: 100%;
|
eb240478
Luigi Serra
public room cards...
|
133
|
background-color: var(--paper-slider-bar-color, transparent);
|
a1a3bc73
Luigi Serra
graphs updates
|
134
|
--paper-progress-container-color: var(--paper-grey-400);
|
eb240478
Luigi Serra
public room cards...
|
135
136
137
|
--paper-progress-height: var(--paper-slider-height, 2px);
}
|
eb240478
Luigi Serra
public room cards...
|
138
139
|
.slider-markers {
position: absolute;
|
a1a3bc73
Luigi Serra
graphs updates
|
140
141
142
143
|
top: calc(14px + var(--paper-slider-height,2px)/2);
height: var(--paper-slider-height, 2px);
left: 0;
right: -1px;
|
eb240478
Luigi Serra
public room cards...
|
144
145
|
box-sizing: border-box;
pointer-events: none;
|
a1a3bc73
Luigi Serra
graphs updates
|
146
|
@apply(--layout-horizontal);
|
eb240478
Luigi Serra
public room cards...
|
147
148
|
}
|
a1a3bc73
Luigi Serra
graphs updates
|
149
150
151
|
.slider-marker {
@apply(--layout-flex);
}
|
eb240478
Luigi Serra
public room cards...
|
152
153
154
155
|
.slider-markers::after,
.slider-marker::after {
content: "";
display: block;
|
a1a3bc73
Luigi Serra
graphs updates
|
156
|
margin-left: -1px;
|
eb240478
Luigi Serra
public room cards...
|
157
158
159
160
161
162
163
|
width: 2px;
height: 2px;
border-radius: 50%;
background-color: black;
}
#sliderKnob {
|
eb240478
Luigi Serra
public room cards...
|
164
165
166
|
position: absolute;
left: 0;
top: 0;
|
a1a3bc73
Luigi Serra
graphs updates
|
167
168
169
|
margin-left: calc(-15px - var(--paper-slider-height, 2px)/2);
width: calc(30px + var(--paper-slider-height, 2px));
height: calc(30px + var(--paper-slider-height, 2px));
|
eb240478
Luigi Serra
public room cards...
|
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
}
.transiting > #sliderKnob {
transition: left 0.08s ease;
}
#sliderKnob:focus {
outline: none;
}
#sliderKnob.dragging {
transition: none;
}
.snaps > #sliderKnob.dragging {
transition: -webkit-transform 0.08s ease;
transition: transform 0.08s ease;
}
#sliderKnobInner {
|
a1a3bc73
Luigi Serra
graphs updates
|
190
191
192
|
margin: 10px;
width: calc(100% - 20px);
height: calc(100% - 20px);
|
eb240478
Luigi Serra
public room cards...
|
193
|
background-color: var(--paper-slider-knob-color, --google-blue-700);
|
a1a3bc73
Luigi Serra
graphs updates
|
194
195
|
border: 2px solid var(--paper-slider-knob-color, --google-blue-700);
border-radius: 50%;
|
eb240478
Luigi Serra
public room cards...
|
196
197
198
199
|
-moz-box-sizing: border-box;
box-sizing: border-box;
|
a1a3bc73
Luigi Serra
graphs updates
|
200
201
202
|
transition-property: -webkit-transform, background-color, border;
transition-property: transform, background-color, border;
transition-duration: 0.18s;
|
eb240478
Luigi Serra
public room cards...
|
203
204
205
206
|
transition-timing-function: ease;
}
.expand:not(.pin) > #sliderKnob > #sliderKnobInner {
|
a1a3bc73
Luigi Serra
graphs updates
|
207
208
|
-webkit-transform: scale(1.5);
transform: scale(1.5);
|
eb240478
Luigi Serra
public room cards...
|
209
210
211
212
|
}
.ring > #sliderKnob > #sliderKnobInner {
background-color: var(--paper-slider-knob-start-color, transparent);
|
a1a3bc73
Luigi Serra
graphs updates
|
213
|
border: 2px solid var(--paper-slider-knob-start-border-color, --paper-grey-400);
|
eb240478
Luigi Serra
public room cards...
|
214
215
216
217
218
219
220
221
222
223
|
}
#sliderKnobInner::before {
background-color: var(--paper-slider-pin-color, --google-blue-700);
}
.pin > #sliderKnob > #sliderKnobInner::before {
content: "";
position: absolute;
top: 0;
|
a1a3bc73
Luigi Serra
graphs updates
|
224
225
|
left: 50%;
margin-left: -13px;
|
eb240478
Luigi Serra
public room cards...
|
226
227
|
width: 26px;
height: 26px;
|
eb240478
Luigi Serra
public room cards...
|
228
229
230
231
232
233
234
235
|
border-radius: 50% 50% 50% 0;
-webkit-transform: rotate(-45deg) scale(0) translate(0);
transform: rotate(-45deg) scale(0) translate(0);
}
#sliderKnobInner::before,
#sliderKnobInner::after {
|
a1a3bc73
Luigi Serra
graphs updates
|
236
237
|
transition: -webkit-transform .18s ease, background-color .18s ease;
transition: transform .18s ease, background-color .18s ease;
|
eb240478
Luigi Serra
public room cards...
|
238
239
240
|
}
.pin.ring > #sliderKnob > #sliderKnobInner::before {
|
a1a3bc73
Luigi Serra
graphs updates
|
241
|
background-color: var(--paper-slider-pin-start-color, --paper-grey-400);
|
eb240478
Luigi Serra
public room cards...
|
242
243
244
245
246
247
248
249
250
251
252
|
}
.pin.expand > #sliderKnob > #sliderKnobInner::before {
-webkit-transform: rotate(-45deg) scale(1) translate(17px, -17px);
transform: rotate(-45deg) scale(1) translate(17px, -17px);
}
.pin > #sliderKnob > #sliderKnobInner::after {
content: attr(value);
position: absolute;
top: 0;
|
a1a3bc73
Luigi Serra
graphs updates
|
253
254
|
left: 50%;
margin-left: -16px;
|
eb240478
Luigi Serra
public room cards...
|
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
width: 32px;
height: 26px;
text-align: center;
color: var(--paper-slider-font-color, #fff);
font-size: 10px;
-webkit-transform: scale(0) translate(0);
transform: scale(0) translate(0);
}
.pin.expand > #sliderKnob > #sliderKnobInner::after {
-webkit-transform: scale(1) translate(0, -17px);
transform: scale(1) translate(0, -17px);
}
/* paper-input */
.slider-input {
width: 50px;
|
eb240478
Luigi Serra
public room cards...
|
273
274
275
276
|
overflow: hidden;
--paper-input-container-input: {
text-align: center;
};
|
a1a3bc73
Luigi Serra
graphs updates
|
277
|
@apply(--paper-slider-input);
|
eb240478
Luigi Serra
public room cards...
|
278
|
}
|
73bcce88
luigser
COMPONENTS
|
279
|
|
eb240478
Luigi Serra
public room cards...
|
280
281
282
283
284
285
|
/* disabled state */
#sliderContainer.disabled {
pointer-events: none;
}
.disabled > #sliderKnob > #sliderKnobInner {
|
a1a3bc73
Luigi Serra
graphs updates
|
286
287
288
289
|
background-color: var(--paper-slider-disabled-knob-color, --paper-grey-400);
border: 2px solid var(--paper-slider-disabled-knob-color, --paper-grey-400);
-webkit-transform: scale3d(0.75, 0.75, 1);
transform: scale3d(0.75, 0.75, 1);
|
eb240478
Luigi Serra
public room cards...
|
290
291
292
|
}
.disabled.ring > #sliderKnob > #sliderKnobInner {
|
a1a3bc73
Luigi Serra
graphs updates
|
293
294
|
background-color: var(--paper-slider-knob-start-color, transparent);
border: 2px solid var(--paper-slider-knob-start-border-color, --paper-grey-400);
|
eb240478
Luigi Serra
public room cards...
|
295
296
297
298
299
|
}
paper-ripple {
color: var(--paper-slider-knob-color, --google-blue-700);
}
|
eb240478
Luigi Serra
public room cards...
|
300
|
</style>
|
a1a3bc73
Luigi Serra
graphs updates
|
301
|
|
73bcce88
luigser
COMPONENTS
|
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
|
<div id="sliderContainer"
class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]">
<div class="bar-container">
<paper-progress
disabled$="[[disabled]]"
id="sliderBar"
aria-hidden="true"
min="[[min]]"
max="[[max]]"
step="[[step]]"
value="[[immediateValue]]"
secondary-progress="[[secondaryProgress]]"
on-down="_bardown"
on-up="_resetKnob"
on-track="_onTrack">
</paper-progress>
</div>
<template is="dom-if" if="[[snaps]]">
|
a1a3bc73
Luigi Serra
graphs updates
|
322
|
<div class="slider-markers">
|
73bcce88
luigser
COMPONENTS
|
323
|
<template is="dom-repeat" items="[[markers]]">
|
a1a3bc73
Luigi Serra
graphs updates
|
324
|
<div class="slider-marker"></div>
|
73bcce88
luigser
COMPONENTS
|
325
326
327
328
329
|
</template>
</div>
</template>
<div id="sliderKnob"
|
73bcce88
luigser
COMPONENTS
|
330
331
332
333
|
on-down="_knobdown"
on-up="_resetKnob"
on-track="_onTrack"
on-transitionend="_knobTransitionEnd">
|
73bcce88
luigser
COMPONENTS
|
334
335
336
|
<div id="sliderKnobInner" value$="[[immediateValue]]"></div>
</div>
</div>
|
a1a3bc73
Luigi Serra
graphs updates
|
337
|
|
73bcce88
luigser
COMPONENTS
|
338
339
340
|
<template is="dom-if" if="[[editable]]">
<paper-input
id="input"
|
eb240478
Luigi Serra
public room cards...
|
341
342
343
344
|
type="number"
step="[[step]]"
min="[[min]]"
max="[[max]]"
|
73bcce88
luigser
COMPONENTS
|
345
346
|
class="slider-input"
disabled$="[[disabled]]"
|
eb240478
Luigi Serra
public room cards...
|
347
348
349
350
|
value="[[immediateValue]]"
on-change="_changeValue"
on-keydown="_inputKeyDown"
no-label-float>
|
73bcce88
luigser
COMPONENTS
|
351
352
353
|
</paper-input>
</template>
</template>
|
73bcce88
luigser
COMPONENTS
|
354
|
|
a1a3bc73
Luigi Serra
graphs updates
|
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
|
<script>
Polymer({
is: 'paper-slider',
behaviors: [
Polymer.IronA11yKeysBehavior,
Polymer.IronFormElementBehavior,
Polymer.PaperInkyFocusBehavior,
Polymer.IronRangeBehavior
],
properties: {
/**
* If true, the slider thumb snaps to tick marks evenly spaced based
* on the `step` property value.
*/
snaps: {
type: Boolean,
value: false,
notify: true
},
/**
* If true, a pin with numeric value label is shown when the slider thumb
* is pressed. Use for settings for which users need to know the exact
* value of the setting.
*/
pin: {
type: Boolean,
value: false,
notify: true
},
/**
* The number that represents the current secondary progress.
*/
secondaryProgress: {
type: Number,
value: 0,
notify: true,
observer: '_secondaryProgressChanged'
},
/**
* If true, an input is shown and user can use it to set the slider value.
*/
editable: {
type: Boolean,
value: false
},
/**
* The immediate value of the slider. This value is updated while the user
* is dragging the slider.
*/
immediateValue: {
type: Number,
value: 0,
readOnly: true,
notify: true
},
/**
* The maximum number of markers
*/
maxMarkers: {
type: Number,
value: 0,
notify: true,
observer: '_maxMarkersChanged'
},
/**
* If true, the knob is expanded
*/
expand: {
type: Boolean,
value: false,
readOnly: true
},
/**
* True when the user is dragging the slider.
*/
dragging: {
type: Boolean,
value: false,
readOnly: true
},
transiting: {
type: Boolean,
value: false,
readOnly: true
},
markers: {
type: Array,
readOnly: true,
value: []
},
},
|
73bcce88
luigser
COMPONENTS
|
457
|
|
a1a3bc73
Luigi Serra
graphs updates
|
458
459
460
461
462
|
observers: [
'_updateKnob(value, min, max, snaps, step)',
'_valueChanged(value)',
'_immediateValueChanged(immediateValue)'
],
|
73bcce88
luigser
COMPONENTS
|
463
|
|
a1a3bc73
Luigi Serra
graphs updates
|
464
465
466
467
|
hostAttributes: {
role: 'slider',
tabindex: 0
},
|
73bcce88
luigser
COMPONENTS
|
468
|
|
a1a3bc73
Luigi Serra
graphs updates
|
469
470
471
|
keyBindings: {
'left down pagedown home': '_decrementKey',
'right up pageup end': '_incrementKey'
|
73bcce88
luigser
COMPONENTS
|
472
473
|
},
|
a1a3bc73
Luigi Serra
graphs updates
|
474
475
476
477
478
|
ready: function() {
// issue polymer/polymer#1305
this.async(function() {
this._updateKnob(this.value);
}, 1);
|
73bcce88
luigser
COMPONENTS
|
479
480
481
|
},
/**
|
a1a3bc73
Luigi Serra
graphs updates
|
482
483
|
* Increases value by `step` but not above `max`.
* @method increment
|
73bcce88
luigser
COMPONENTS
|
484
|
*/
|
a1a3bc73
Luigi Serra
graphs updates
|
485
486
|
increment: function() {
this.value = this._clampValue(this.value + this.step);
|
73bcce88
luigser
COMPONENTS
|
487
488
489
|
},
/**
|
a1a3bc73
Luigi Serra
graphs updates
|
490
491
|
* Decreases value by `step` but not below `min`.
* @method decrement
|
73bcce88
luigser
COMPONENTS
|
492
|
*/
|
a1a3bc73
Luigi Serra
graphs updates
|
493
494
|
decrement: function() {
this.value = this._clampValue(this.value - this.step);
|
73bcce88
luigser
COMPONENTS
|
495
496
|
},
|
a1a3bc73
Luigi Serra
graphs updates
|
497
498
499
500
501
502
|
_updateKnob: function(value, min, max, snaps, step) {
this.setAttribute('aria-valuemin', min);
this.setAttribute('aria-valuemax', max);
this.setAttribute('aria-valuenow', value);
this._positionKnob(this._calcRatio(value));
|
73bcce88
luigser
COMPONENTS
|
503
504
|
},
|
a1a3bc73
Luigi Serra
graphs updates
|
505
506
|
_valueChanged: function() {
this.fire('value-change');
|
73bcce88
luigser
COMPONENTS
|
507
508
|
},
|
a1a3bc73
Luigi Serra
graphs updates
|
509
510
511
512
513
514
|
_immediateValueChanged: function() {
if (this.dragging) {
this.fire('immediate-value-change');
} else {
this.value = this.immediateValue;
}
|
73bcce88
luigser
COMPONENTS
|
515
516
|
},
|
a1a3bc73
Luigi Serra
graphs updates
|
517
518
|
_secondaryProgressChanged: function() {
this.secondaryProgress = this._clampValue(this.secondaryProgress);
|
73bcce88
luigser
COMPONENTS
|
519
520
|
},
|
a1a3bc73
Luigi Serra
graphs updates
|
521
522
|
_expandKnob: function() {
this._setExpand(true);
|
73bcce88
luigser
COMPONENTS
|
523
524
|
},
|
a1a3bc73
Luigi Serra
graphs updates
|
525
526
527
|
_resetKnob: function() {
this.cancelDebouncer('expandKnob');
this._setExpand(false);
|
73bcce88
luigser
COMPONENTS
|
528
|
},
|
73bcce88
luigser
COMPONENTS
|
529
|
|
a1a3bc73
Luigi Serra
graphs updates
|
530
531
532
|
_positionKnob: function(ratio) {
this._setImmediateValue(this._calcStep(this._calcKnobPosition(ratio)));
this._setRatio(this._calcRatio(this.immediateValue));
|
73bcce88
luigser
COMPONENTS
|
533
|
|
a1a3bc73
Luigi Serra
graphs updates
|
534
535
536
537
538
539
|
this.$.sliderKnob.style.left = (this.ratio * 100) + '%';
if (this.dragging) {
this._knobstartx = this.ratio * this._w;
this.translate3d(0, 0, 0, this.$.sliderKnob);
}
},
|
73bcce88
luigser
COMPONENTS
|
540
|
|
a1a3bc73
Luigi Serra
graphs updates
|
541
542
543
|
_calcKnobPosition: function(ratio) {
return (this.max - this.min) * ratio + this.min;
},
|
73bcce88
luigser
COMPONENTS
|
544
|
|
a1a3bc73
Luigi Serra
graphs updates
|
545
546
547
548
549
550
551
552
553
554
555
556
557
558
|
_onTrack: function(event) {
event.stopPropagation();
switch (event.detail.state) {
case 'start':
this._trackStart(event);
break;
case 'track':
this._trackX(event);
break;
case 'end':
this._trackEnd();
break;
}
},
|
73bcce88
luigser
COMPONENTS
|
559
|
|
a1a3bc73
Luigi Serra
graphs updates
|
560
561
562
563
564
565
566
567
568
569
|
_trackStart: function(event) {
this._w = this.$.sliderBar.offsetWidth;
this._x = this.ratio * this._w;
this._startx = this._x;
this._knobstartx = this._startx;
this._minx = - this._startx;
this._maxx = this._w - this._startx;
this.$.sliderKnob.classList.add('dragging');
this._setDragging(true);
},
|
73bcce88
luigser
COMPONENTS
|
570
|
|
a1a3bc73
Luigi Serra
graphs updates
|
571
572
573
574
|
_trackX: function(e) {
if (!this.dragging) {
this._trackStart(e);
}
|
73bcce88
luigser
COMPONENTS
|
575
|
|
a1a3bc73
Luigi Serra
graphs updates
|
576
577
|
var dx = Math.min(this._maxx, Math.max(this._minx, e.detail.dx));
this._x = this._startx + dx;
|
73bcce88
luigser
COMPONENTS
|
578
|
|
a1a3bc73
Luigi Serra
graphs updates
|
579
580
|
var immediateValue = this._calcStep(this._calcKnobPosition(this._x / this._w));
this._setImmediateValue(immediateValue);
|
73bcce88
luigser
COMPONENTS
|
581
|
|
a1a3bc73
Luigi Serra
graphs updates
|
582
583
584
585
|
// update knob's position
var translateX = ((this._calcRatio(this.immediateValue) * this._w) - this._knobstartx);
this.translate3d(translateX + 'px', 0, 0, this.$.sliderKnob);
},
|
73bcce88
luigser
COMPONENTS
|
586
|
|
a1a3bc73
Luigi Serra
graphs updates
|
587
588
|
_trackEnd: function() {
var s = this.$.sliderKnob.style;
|
73bcce88
luigser
COMPONENTS
|
589
|
|
a1a3bc73
Luigi Serra
graphs updates
|
590
591
592
593
|
this.$.sliderKnob.classList.remove('dragging');
this._setDragging(false);
this._resetKnob();
this.value = this.immediateValue;
|
73bcce88
luigser
COMPONENTS
|
594
|
|
a1a3bc73
Luigi Serra
graphs updates
|
595
|
s.transform = s.webkitTransform = '';
|
73bcce88
luigser
COMPONENTS
|
596
|
|
a1a3bc73
Luigi Serra
graphs updates
|
597
598
|
this.fire('change');
},
|
73bcce88
luigser
COMPONENTS
|
599
|
|
a1a3bc73
Luigi Serra
graphs updates
|
600
601
|
_knobdown: function(event) {
this._expandKnob();
|
73bcce88
luigser
COMPONENTS
|
602
|
|
a1a3bc73
Luigi Serra
graphs updates
|
603
604
|
// cancel selection
event.preventDefault();
|
73bcce88
luigser
COMPONENTS
|
605
|
|
a1a3bc73
Luigi Serra
graphs updates
|
606
607
608
|
// set the focus manually because we will called prevent default
this.focus();
},
|
73bcce88
luigser
COMPONENTS
|
609
|
|
a1a3bc73
Luigi Serra
graphs updates
|
610
611
612
613
614
|
_bardown: function(event) {
this._w = this.$.sliderBar.offsetWidth;
var rect = this.$.sliderBar.getBoundingClientRect();
var ratio = (event.detail.x - rect.left) / this._w;
var prevRatio = this.ratio;
|
73bcce88
luigser
COMPONENTS
|
615
|
|
a1a3bc73
Luigi Serra
graphs updates
|
616
|
this._setTransiting(true);
|
73bcce88
luigser
COMPONENTS
|
617
|
|
a1a3bc73
Luigi Serra
graphs updates
|
618
|
this._positionKnob(ratio);
|
73bcce88
luigser
COMPONENTS
|
619
|
|
a1a3bc73
Luigi Serra
graphs updates
|
620
|
this.debounce('expandKnob', this._expandKnob, 60);
|
73bcce88
luigser
COMPONENTS
|
621
|
|
a1a3bc73
Luigi Serra
graphs updates
|
622
623
624
|
// if the ratio doesn't change, sliderKnob's animation won't start
// and `_knobTransitionEnd` won't be called
// Therefore, we need to manually update the `transiting` state
|
73bcce88
luigser
COMPONENTS
|
625
|
|
a1a3bc73
Luigi Serra
graphs updates
|
626
627
628
|
if (prevRatio === this.ratio) {
this._setTransiting(false);
}
|
73bcce88
luigser
COMPONENTS
|
629
|
|
a1a3bc73
Luigi Serra
graphs updates
|
630
631
632
|
this.async(function() {
this.fire('change');
});
|
73bcce88
luigser
COMPONENTS
|
633
|
|
a1a3bc73
Luigi Serra
graphs updates
|
634
635
636
|
// cancel selection
event.preventDefault();
},
|
73bcce88
luigser
COMPONENTS
|
637
|
|
a1a3bc73
Luigi Serra
graphs updates
|
638
639
640
641
642
|
_knobTransitionEnd: function(event) {
if (event.target === this.$.sliderKnob) {
this._setTransiting(false);
}
},
|
73bcce88
luigser
COMPONENTS
|
643
|
|
a1a3bc73
Luigi Serra
graphs updates
|
644
645
646
647
648
649
650
651
652
653
|
_maxMarkersChanged: function(maxMarkers) {
if (!this.snaps) {
this._setMarkers([]);
}
var steps = Math.floor((this.max - this.min) / this.step);
if (steps > maxMarkers) {
steps = maxMarkers;
}
this._setMarkers(new Array(steps));
},
|
73bcce88
luigser
COMPONENTS
|
654
|
|
a1a3bc73
Luigi Serra
graphs updates
|
655
656
657
658
659
660
|
_mergeClasses: function(classes) {
return Object.keys(classes).filter(
function(className) {
return classes[className];
}).join(' ');
},
|
73bcce88
luigser
COMPONENTS
|
661
|
|
a1a3bc73
Luigi Serra
graphs updates
|
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
|
_getClassNames: function() {
return this._mergeClasses({
disabled: this.disabled,
pin: this.pin,
snaps: this.snaps,
ring: this.immediateValue <= this.min,
expand: this.expand,
dragging: this.dragging,
transiting: this.transiting,
editable: this.editable
});
},
_incrementKey: function(event) {
if (!this.disabled) {
if (event.detail.key === 'end') {
this.value = this.max;
} else {
this.increment();
}
this.fire('change');
|
eb240478
Luigi Serra
public room cards...
|
683
|
}
|
a1a3bc73
Luigi Serra
graphs updates
|
684
|
},
|
73bcce88
luigser
COMPONENTS
|
685
|
|
a1a3bc73
Luigi Serra
graphs updates
|
686
687
688
689
690
691
692
693
|
_decrementKey: function(event) {
if (!this.disabled) {
if (event.detail.key === 'home') {
this.value = this.min;
} else {
this.decrement();
}
this.fire('change');
|
eb240478
Luigi Serra
public room cards...
|
694
|
}
|
a1a3bc73
Luigi Serra
graphs updates
|
695
|
},
|
eb240478
Luigi Serra
public room cards...
|
696
|
|
a1a3bc73
Luigi Serra
graphs updates
|
697
698
699
700
|
_changeValue: function(event) {
this.value = event.target.value;
this.fire('change');
},
|
eb240478
Luigi Serra
public room cards...
|
701
|
|
a1a3bc73
Luigi Serra
graphs updates
|
702
703
704
|
_inputKeyDown: function(event) {
event.stopPropagation();
},
|
eb240478
Luigi Serra
public room cards...
|
705
|
|
a1a3bc73
Luigi Serra
graphs updates
|
706
707
708
709
710
|
// create the element ripple inside the `sliderKnob`
_createRipple: function() {
this._rippleContainer = this.$.sliderKnob;
return Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this);
},
|
eb240478
Luigi Serra
public room cards...
|
711
|
|
a1a3bc73
Luigi Serra
graphs updates
|
712
713
714
715
|
// Hide the ripple when user is not interacting with keyboard.
// This behavior is different from other ripple-y controls, but is
// according to spec: https://www.google.com/design/spec/components/sliders.html
_focusedChanged: function(receivedFocusFromKeyboard) {
|
eb240478
Luigi Serra
public room cards...
|
716
|
if (receivedFocusFromKeyboard) {
|
a1a3bc73
Luigi Serra
graphs updates
|
717
718
719
720
721
722
723
724
725
726
|
this.ensureRipple();
}
if (this.hasRipple()) {
// note, ripple must be un-hidden prior to setting `holdDown`
if (receivedFocusFromKeyboard) {
this._ripple.removeAttribute('hidden');
} else {
this._ripple.setAttribute('hidden', '');
}
this._ripple.holdDown = receivedFocusFromKeyboard;
|
eb240478
Luigi Serra
public room cards...
|
727
|
}
|
a1a3bc73
Luigi Serra
graphs updates
|
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
|
}
});
/**
* Fired when the slider's value changes.
*
* @event value-change
*/
/**
* Fired when the slider's immediateValue changes.
*
* @event immediate-value-change
*/
/**
* Fired when the slider's value changes due to user interaction.
*
* Changes to the slider's value due to changes in an underlying
* bound variable will not trigger this event.
*
* @event change
*/
</script>
</dom-module>
|