diff --git a/public/app/plugins/panel/graph/styleEditor.html b/public/app/plugins/panel/graph/styleEditor.html index 465e8d4894e..efa39b3b3f3 100644 --- a/public/app/plugins/panel/graph/styleEditor.html +++ b/public/app/plugins/panel/graph/styleEditor.html @@ -3,15 +3,30 @@
Draw Modes
- +
+
+ + +
+
- +
+
+ + +
+
- +
+
+ + +
+
diff --git a/public/sass/_grafana.scss b/public/sass/_grafana.scss index 32643962ddc..c7b4567bfb5 100644 --- a/public/sass/_grafana.scss +++ b/public/sass/_grafana.scss @@ -35,6 +35,7 @@ @import "components/navs"; @import "components/tabs"; @import "components/alerts"; +@import "components/switch"; @import "components/tooltip"; @import "components/tags"; @import "components/panel_graph"; diff --git a/public/sass/components/_gf-form.scss b/public/sass/components/_gf-form.scss index 3d93df79a29..95bbf6cb7ea 100644 --- a/public/sass/components/_gf-form.scss +++ b/public/sass/components/_gf-form.scss @@ -50,6 +50,12 @@ $gf-form-label-margin: 0.25rem; @include border-radius($label-border-radius-sm); } +.gf-form-switch-wrapper { + margin-right: $gf-form-label-margin; + padding: $input-padding-y $input-padding-x; + background-color: $input-bg; +} + .gf-form-checkbox { flex-shrink: 0; padding: $input-padding-y $input-padding-x; @@ -139,8 +145,8 @@ $gf-form-label-margin: 0.25rem; } } -.gf-form-select-wrapper + .gf-form-select-wrapper { - margin-left: $gf-form-label-margin; +.gf-form-select-wrapper + .gf-form-select-wrapper { + margin-left: $gf-form-label-margin; } .gf-form-btn { @@ -149,3 +155,5 @@ $gf-form-label-margin: 0.25rem; flex-shrink: 0; flex-grow: 0; } + + diff --git a/public/sass/components/_switch.scss b/public/sass/components/_switch.scss new file mode 100644 index 00000000000..be02ade9d77 --- /dev/null +++ b/public/sass/components/_switch.scss @@ -0,0 +1,196 @@ +$switch-border-radius: 1rem; +$switch-width: 3.5rem; +$switch-height: 1.5rem; + +/* ============================================================ + COMMON +============================================================ */ +.cmn-toggle { + position: absolute; + margin-left: -9999px; + visibility: hidden; +} +.cmn-toggle + label { + display: block; + position: relative; + cursor: pointer; + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* ============================================================ + SWITCH 1 - ROUND +============================================================ */ +input.cmn-toggle-round + label { + padding: 2px; + width: $switch-width; + height: $switch-height; + background-color: $dark-1; + border-radius: $switch-border-radius; +} + +input.cmn-toggle-round + label:before, input.cmn-toggle-round + label:after { + display: block; + position: absolute; + top: 1px; + left: 1px; + bottom: 1px; + content: ""; +} + +input.cmn-toggle-round + label:before { + right: 1px; + background-color: $card-background; + border-radius: $switch-border-radius; + box-shadow: $card-shadow; + transition: background 0.4s; +} + +input.cmn-toggle-round + label:after { + width: $switch-height; + background-color: $dark-5; + border-radius: 100%; + box-shadow: $card-shadow; + transition: margin 0.4s; +} + +input.cmn-toggle-round:checked + label:before { + background-color: $blue; +} + +input.cmn-toggle-round:checked + label:after { + margin-left: $switch-width - $switch-height; +} + +/* ============================================================ + SWITCH 2 - ROUND FLAT +============================================================ */ +input.cmn-toggle-round-flat + label { + padding: 2px; + width: 120px; + height: 60px; + background-color: #dddddd; + -webkit-border-radius: 60px; + -moz-border-radius: 60px; + -ms-border-radius: 60px; + -o-border-radius: 60px; + border-radius: 60px; + -webkit-transition: background 0.4s; + -moz-transition: background 0.4s; + -o-transition: background 0.4s; + transition: background 0.4s; +} +input.cmn-toggle-round-flat + label:before, input.cmn-toggle-round-flat + label:after { + display: block; + position: absolute; + content: ""; +} +input.cmn-toggle-round-flat + label:before { + top: 2px; + left: 2px; + bottom: 2px; + right: 2px; + background-color: #fff; + -webkit-border-radius: 60px; + -moz-border-radius: 60px; + -ms-border-radius: 60px; + -o-border-radius: 60px; + border-radius: 60px; + -webkit-transition: background 0.4s; + -moz-transition: background 0.4s; + -o-transition: background 0.4s; + transition: background 0.4s; +} +input.cmn-toggle-round-flat + label:after { + top: 4px; + left: 4px; + bottom: 4px; + width: 52px; + background-color: #dddddd; + -webkit-border-radius: 52px; + -moz-border-radius: 52px; + -ms-border-radius: 52px; + -o-border-radius: 52px; + border-radius: 52px; + -webkit-transition: margin 0.4s, background 0.4s; + -moz-transition: margin 0.4s, background 0.4s; + -o-transition: margin 0.4s, background 0.4s; + transition: margin 0.4s, background 0.4s; +} +input.cmn-toggle-round-flat:checked + label { + background-color: #8ce196; +} +input.cmn-toggle-round-flat:checked + label:after { + margin-left: 60px; + background-color: #8ce196; +} + +/* ============================================================ + SWITCH 3 - YES NO +============================================================ */ +input.cmn-toggle-yes-no + label { + padding: 2px; + width: 120px; + height: 60px; +} +input.cmn-toggle-yes-no + label:before, input.cmn-toggle-yes-no + label:after { + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + color: #fff; + font-family: "Roboto Slab", serif; + font-size: 20px; + text-align: center; + line-height: 60px; +} +input.cmn-toggle-yes-no + label:before { + background-color: #dddddd; + content: attr(data-off); + -webkit-transition: -webkit-transform 0.5s; + -moz-transition: -moz-transform 0.5s; + -o-transition: -o-transform 0.5s; + transition: transform 0.5s; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + -o-backface-visibility: hidden; + backface-visibility: hidden; +} +input.cmn-toggle-yes-no + label:after { + background-color: #8ce196; + content: attr(data-on); + -webkit-transition: -webkit-transform 0.5s; + -moz-transition: -moz-transform 0.5s; + -o-transition: -o-transform 0.5s; + transition: transform 0.5s; + -webkit-transform: rotateY(180deg); + -moz-transform: rotateY(180deg); + -ms-transform: rotateY(180deg); + -o-transform: rotateY(180deg); + transform: rotateY(180deg); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + -o-backface-visibility: hidden; + backface-visibility: hidden; +} +input.cmn-toggle-yes-no:checked + label:before { + -webkit-transform: rotateY(180deg); + -moz-transform: rotateY(180deg); + -ms-transform: rotateY(180deg); + -o-transform: rotateY(180deg); + transform: rotateY(180deg); +} +input.cmn-toggle-yes-no:checked + label:after { + -webkit-transform: rotateY(0); + -moz-transform: rotateY(0); + -ms-transform: rotateY(0); + -o-transform: rotateY(0); + transform: rotateY(0); +}