From 31e5726ab4443fc3355e80ffe934ca0ef541d0ce Mon Sep 17 00:00:00 2001 From: Kelly Fox Date: Tue, 2 Aug 2016 21:36:06 -0500 Subject: [PATCH] add marker icons and labels --- demo/index.html | 176 ++++++++++++++++++++- paper-slider.html | 389 ++++++++++++++++++++++++++++++++++++++++++++-- test/basic.html | 223 +++++++++++++++++++++++++- 3 files changed, 763 insertions(+), 25 deletions(-) diff --git a/demo/index.html b/demo/index.html index 3910a8a..405309b 100644 --- a/demo/index.html +++ b/demo/index.html @@ -19,6 +19,8 @@ + + @@ -86,18 +88,173 @@

The pins can be labelled

Grade:

+ + + +

Markers may have labels or icons

+ + + + +

Marker ticks can be displayed without a label or icon

+ + + + +

Markers can be specified as waypoints

+ + @@ -116,6 +273,11 @@

The pins can be labelled

var label = (grade.value < grade.secondaryProgress) ? "Fail" : "Pass" ; document.querySelector('#gradeLabel').textContent = grade.value + " (" + label + ")"; }); + + var width = document.querySelector('#width'); + width.addEventListener('value-change', function() { + document.querySelector('#widthLabel').textContent = width.value + 'px'; + }); }); diff --git a/paper-slider.html b/paper-slider.html index d9437c6..e512895 100644 --- a/paper-slider.html +++ b/paper-slider.html @@ -12,6 +12,7 @@ + @@ -57,6 +58,14 @@ `--paper-slider-pin-start-color` | The color of the pin at the far left | `--paper-grey-400` `--paper-slider-height` | Height of the progress bar | `2px` `--paper-slider-input` | Mixin applied to the input in editable mode | `{}` +`--paper-slider-marker-color` | The color of the markers | `--paper-grey-800` +`--paper-slider-marker-label-color` | The color of the marker labels | `black` +`--paper-slider-marker-icon-color` | The color of the marker icons | `black` +`--paper-slider-marker-highlight-color` | The color of highlighted marker icons or labels | `--paper-grey-500` +`--paper-slider-marker-top-icon-y-offset` | The y-offset of top icons | `-2.3em` +`--paper-slider-marker-bottom-icon-y-offset` | The y-offset of bottom icons | `0.6em` +`--paper-slider-marker-top-label-y-offset` | The y-offset of top labels | `-2em` +`--paper-slider-marker-bottom-label-y-offset` | The y-offset of bottom labels | `1em` @group Paper Elements @element paper-slider @@ -83,6 +92,21 @@ --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); --calculated-paper-slider-height: var(--paper-slider-height, 2px); + --slider-marker-label-style: { + position: absolute; + display: block; + font-size: 11px; + font-weight: bold; + text-transform: uppercase; + color: var(--paper-slider-marker-label-color, black); + pointer-events: all; + } + --slider-marker-icon-style: { + position: absolute; + display: block; + color: var(--paper-slider-marker-icon-color, black); + pointer-events: all; + } } /* focus shows the ripple */ @@ -137,6 +161,14 @@ --paper-progress-height: var(--calculated-paper-slider-height); } + .highlight { + color: var(--paper-slider-marker-highlight-color, --paper-blue-700) !important; + -webkit-transition: color 0.3s ease-in; + -moz-transition: color 0.3s ease-in; + -o-transition: color 0.3s ease-in; + transition: color 0.3s ease-in; + } + .slider-markers { position: absolute; top: calc(14px + var(--paper-slider-height,2px)/2); @@ -151,15 +183,76 @@ .slider-marker { @apply(--layout-flex); } - .slider-markers::after, - .slider-marker::after { + + .slider-markers:not(.invisible)::after, + .slider-marker:not(.invisible)::after { content: ""; display: block; margin-left: -1px; width: 2px; height: var(--calculated-paper-slider-height); border-radius: 50%; - background-color: black; + background-color: var(--paper-slider-marker-color, --paper-grey-800); + } + + .slider-marker-label { + @apply(--slider-marker-label-style); + -ms-transform: translate(-50%, var(--paper-slider-marker-bottom-label-y-offset, 1em)); + -webkit-transform: translate(-50%, var(--paper-slider-marker-bottom-label-y-offset, 1em)); + transform: translate(-50%, var(--paper-slider-marker-bottom-label-y-offset, 1em)); + } + + .slider-marker-label.top { + @apply(--slider-marker-label-style); + -ms-transform: translate(-50%, var(--paper-slider-marker-top-label-y-offset, -2em)); + -webkit-transform: translate(-50%, var(--paper-slider-marker-top-label-y-offset, -2em)); + transform: translate(-50%, var(--paper-slider-marker-top-label-y-offset, -2em)); + } + + .slider-marker-icon { + @apply(--slider-marker-icon-style); + -ms-transform: translate(-50%, var(--paper-slider-marker-bottom-icon-y-offset, 0.6em)); + -webkit-transform: translate(-50%, var(--paper-slider-marker-bottom-icon-y-offset, 0.6em)); + transform: translate(-50%, var(--paper-slider-marker-bottom-icon-y-offset, 0.6em)); + } + + .slider-marker-icon.top { + @apply(--slider-marker-icon-style); + -ms-transform: translate(-50%, var(--paper-slider-marker-top-icon-y-offset, -2.3em)); + -webkit-transform: translate(-50%, var(--paper-slider-marker-top-icon-y-offset, -2.3em)); + transform: translate(-50%, var(--paper-slider-marker-top-icon-y-offset, -2.3em)); + } + + .slider-markers-label { + @apply(--slider-marker-label-style); + right: 0; + -ms-transform: translate(50%, var(--paper-slider-marker-bottom-label-y-offset, 1em)); + -webkit-transform: translate(50%, var(--paper-slider-marker-bottom-label-y-offset, 1em)); + transform: translate(50%, var(--paper-slider-marker-bottom-label-y-offset, 1em)); + } + + .slider-markers-label.top { + @apply(--slider-marker-label-style); + right: 0; + -ms-transform: translate(50%, var(--paper-slider-marker-top-label-y-offset, -2em)); + -webkit-transform: translate(50%, var(--paper-slider-marker-top-label-y-offset, -2em)); + transform: translate(50%, var(--paper-slider-marker-top-label-y-offset, -2em)); + } + + .slider-markers-icon { + @apply(--slider-marker-icon-style); + right: 0; + -ms-transform: translate(50%, var(--paper-slider-marker-bottom-icon-y-offset, 0.6em)); + -webkit-transform: translate(50%, var(--paper-slider-marker-bottom-icon-y-offset, 0.6em)); + transform: translate(50%, var(--paper-slider-marker-bottom-icon-y-offset, 0.6em)); + } + + .slider-markers-icon.top { + @apply(--slider-marker-icon-style); + right: 0; + -ms-transform: translate(50%, var(--paper-slider-marker-top-icon-y-offset, -2.3em)); + -webkit-transform: translate(50%, var(--paper-slider-marker-top-icon-y-offset, -2.3em)); + transform: translate(50%, var(--paper-slider-marker-top-icon-y-offset, -2.3em)); } .slider-knob { @@ -319,13 +412,44 @@ -