Improve range-field (#1016)

* Improve range-field

Adds some JS (2.04 KB), SCSS (6.87 KB), and changed Twig to improve the functionality and styling of the range-field.

* Gulp build

* Fix range-field step

* Rangetouch to webpack, gulp rebuild

* Recompile from gulp

* Compliance for nested fields.

Replaces dots with underscores for id-attributes within the field.
This commit is contained in:
Ole Vik
2017-03-18 20:52:57 +01:00
committed by Andy Miller
parent 79928c9256
commit b0dff58c45
17 changed files with 216 additions and 303 deletions

View File

@@ -1,3 +1,3 @@
@import url("//fonts.googleapis.com/css?family=Montserrat:400|Lato:300,400,700|Inconsolata:400,700");body,h5,h6,.badge,.note,.grav-mdeditor-preview,input,select,textarea,button,.selectize-input{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}h1,h2,h3,h4,#admin-menu li,.form-tabs>label,.label{font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif}code,kbd,pre,samp,body .CodeMirror{font-family:"Inconsolata","Monaco","Consolas","Lucida Console",monospace !important}
/*# sourceMappingURL=../css-compiled/fonts.css.map */
/*# sourceMappingURL=fonts.css.map */

View File

@@ -1,11 +1 @@
{
"version": 3,
"file": "../scss/fonts.css",
"sources": [
"../scss/fonts.scss",
"../hdr0",
"../scss/configuration/fonts/_support.scss"
],
"mappings": "AE+DA,OAAO,CAAC,4FAAI,CAtBR,AAAA,IAAI,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACZ,AAAA,MAAM,CAAE,AAAA,KAAK,CAAE,AAAA,sBAAsB,CACrC,AAAA,KAAK,CAAE,AAAA,MAAM,CAAE,AAAA,QAAQ,CAAE,AAAA,MAAM,CAAE,AAAA,gBAAgB,AAAC,CAC9C,WAAW,CAAE,MAAU,CAAE,WAAW,CAAE,QAAQ,CAAE,QAAQ,CAAE,OAAO,CAAE,UAAU,CAChF,AAID,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACd,AAAY,WAAD,CAAC,EAAE,CAAE,AAAa,UAAH,CAAG,KAAK,CAAE,AAAA,MAAM,AAAC,CACvC,WAAW,CAAE,YAAU,CAAE,WAAW,CAAE,QAAQ,CAAE,QAAQ,CAAE,OAAO,CAAE,UAAU,CAChF,AAID,AAAA,IAAI,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,IAAI,CACpB,AAAK,IAAD,CAAC,WAAW,AAAC,CACb,WAAW,CAAE,aAAU,CAAE,QAAQ,CAAE,UAAU,CAAE,gBAAgB,CAAE,SAAS,CAAC,UAAU,CACxF",
"names": []
}
{"version":3,"file":"fonts.css","sources":["fonts.scss","configuration/fonts/_support.scss"],"sourcesContent":["$fonts-default: 'Lato' !default;\r\n$fonts-header: 'Montserrat' !default;\r\n$fonts-mono: 'Inconsolata' !default;\r\n\r\n$font-definitions: (\r\n Montserrat: '400',\r\n Lato: '300,400,700',\r\n Inconsolata: '400,700'\r\n);\r\n\r\n@import \"configuration/fonts/support\";\r\n\r\n\r\n\r\n\r\n","@function str-replace($string, $search, $replace: '') {\r\n $index: str-index($string, $search);\r\n\r\n @if $index {\r\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\r\n }\r\n\r\n @return $string;\r\n}\r\n\r\n@function admin-font-faces($fonts) {\r\n $url: \"//fonts.googleapis.com/css?family=\";\r\n $nb: 0;\r\n\r\n @each $fontname, $weights in $fonts {\r\n\r\n @if $fontname == $fonts-default or\r\n $fontname == $fonts-header or\r\n $fontname == $fonts-mono {\r\n\r\n $nb: $nb + 1;\r\n $nb-word: 0;\r\n\r\n $fontname: str-replace(\"#{$fontname}\", \" \", \"+\");\r\n\r\n $url: $url + $fontname;\r\n\r\n @if $weights != null {\r\n $url: $url + \":\" + $weights;\r\n }\r\n\r\n @if $nb < 3 {\r\n $url: $url + \"|\";\r\n }\r\n }\r\n }\r\n\r\n @return $url;\r\n}\r\n\r\n@mixin body-fonts($font) {\r\n body, h5, h6,\r\n .badge, .note, .grav-mdeditor-preview,\r\n input, select, textarea, button, .selectize-input {\r\n font-family: \"#{$font}\", \"Helvetica\", \"Tahoma\", \"Geneva\", \"Arial\", sans-serif;\r\n }\r\n}\r\n\r\n@mixin header-fonts($font) {\r\n h1, h2, h3, h4,\r\n #admin-menu li, .form-tabs > label, .label {\r\n font-family: \"#{$font}\", \"Helvetica\", \"Tahoma\", \"Geneva\", \"Arial\", sans-serif;\r\n }\r\n}\r\n\r\n@mixin mono-fonts($font) {\r\n code, kbd, pre, samp,\r\n body .CodeMirror {\r\n font-family: \"#{$font}\", \"Monaco\", \"Consolas\", \"Lucida Console\", monospace !important;\r\n }\r\n}\r\n$font-url: admin-font-faces($font-definitions);\r\n\r\n@import url(\"#{$font-url}\");\r\n\r\n@include body-fonts($fonts-default);\r\n\r\n@include header-fonts($fonts-header);\r\n\r\n@include mono-fonts($fonts-mono);\r\n\r\n\r\n\r\n\r\n\r\n"],"names":[],"mappings":"AC+DA,OAAO,CAAC,4FAAI,CAtBR,AAAA,IAAI,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACZ,AAAA,MAAM,CAAE,AAAA,KAAK,CAAE,AAAA,sBAAsB,CACrC,AAAA,KAAK,CAAE,AAAA,MAAM,CAAE,AAAA,QAAQ,CAAE,AAAA,MAAM,CAAE,AAAA,gBAAgB,AAAC,CAC9C,WAAW,CAAE,MAAU,CAAE,WAAW,CAAE,QAAQ,CAAE,QAAQ,CAAE,OAAO,CAAE,UAAU,CAChF,AAID,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACd,AAAY,WAAD,CAAC,EAAE,CAAE,AAAa,UAAH,CAAG,KAAK,CAAE,AAAA,MAAM,AAAC,CACvC,WAAW,CAAE,YAAU,CAAE,WAAW,CAAE,QAAQ,CAAE,QAAQ,CAAE,OAAO,CAAE,UAAU,CAChF,AAID,AAAA,IAAI,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,IAAI,CACpB,AAAK,IAAD,CAAC,WAAW,AAAC,CACb,WAAW,CAAE,aAAU,CAAE,QAAQ,CAAE,UAAU,CAAE,gBAAgB,CAAE,SAAS,CAAC,UAAU,CACxF"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
body,h5,h6,.badge,.note,.grav-mdeditor-preview,input,select,textarea,button,.selectize-input,h1,h2,h3,h4,#admin-menu li,.form-tabs>label,.label{font-family:"Helvetica Neue", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif}code,kbd,pre,samp,body .CodeMirror{font-family:"Monaco", "Consolas", "Lucida Console", monospace}
/*# sourceMappingURL=../css-compiled/simple-fonts.css.map */
/*# sourceMappingURL=simple-fonts.css.map */

View File

@@ -1,10 +1 @@
{
"version": 3,
"file": "../scss/simple-fonts.css",
"sources": [
"../scss/simple-fonts.scss",
"../hdr0"
],
"mappings": "AAAA,AAAA,IAAI,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACZ,AAAA,MAAM,CAAE,AAAA,KAAK,CAAE,AAAA,sBAAsB,CACrC,AAAA,KAAK,CAAE,AAAA,MAAM,CAAE,AAAA,QAAQ,CAAE,AAAA,MAAM,CAAE,AAAA,gBAAgB,CACjD,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACd,AAAY,WAAD,CAAC,EAAE,CAAE,AAAa,UAAH,CAAG,KAAK,CAAE,AAAA,MAAM,AAAC,CACvC,WAAW,CAAE,sEAAuE,CACvF,AACD,AAAA,IAAI,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,IAAI,CACpB,AAAK,IAAD,CAAC,WAAW,AAAC,CACb,WAAW,CAAE,iDAAkD,CAClE",
"names": []
}
{"version":3,"file":"simple-fonts.css","sources":["simple-fonts.scss"],"sourcesContent":["body, h5, h6,\r\n.badge, .note, .grav-mdeditor-preview,\r\ninput, select, textarea, button, .selectize-input,\r\nh1, h2, h3, h4,\r\n#admin-menu li, .form-tabs > label, .label {\r\n font-family: \"Helvetica Neue\", \"Helvetica\", \"Tahoma\", \"Geneva\", \"Arial\", sans-serif;\r\n}\r\ncode, kbd, pre, samp,\r\nbody .CodeMirror {\r\n font-family: \"Monaco\", \"Consolas\", \"Lucida Console\", monospace;\r\n}\r\n"],"names":[],"mappings":"AAAA,AAAA,IAAI,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACZ,AAAA,MAAM,CAAE,AAAA,KAAK,CAAE,AAAA,sBAAsB,CACrC,AAAA,KAAK,CAAE,AAAA,MAAM,CAAE,AAAA,QAAQ,CAAE,AAAA,MAAM,CAAE,AAAA,gBAAgB,CACjD,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACd,AAAY,WAAD,CAAC,EAAE,CAAE,AAAa,UAAH,CAAG,KAAK,CAAE,AAAA,MAAM,AAAC,CACvC,WAAW,CAAE,sEAAsE,CACtF,AACD,AAAA,IAAI,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,IAAI,CACpB,AAAK,IAAD,CAAC,WAAW,AAAC,CACb,WAAW,CAAE,iDAAiD,CACjE"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -27,6 +27,7 @@
"immutablediff": "^0.4.4",
"js-yaml": "^3.8.2",
"mout": "^1.0.0",
"rangetouch": "0.0.9",
"remodal": "^1.1.1",
"selectize": "^0.12.4",
"sortablejs": "^1.5.1",

View File

@@ -1476,3 +1476,6 @@ body .bootstrap-datetimepicker-widget {
}
}
}
// Range-field
@import "template/modules/input-range";

View File

@@ -0,0 +1,130 @@
$rangefield-slider-width-number: 230;
$rangefield-slider-width: #{$rangefield-slider-width-number}px;
$rangefield-slider-height: 1.35em;
$rangefield-slider-border-width: 1px !default;
$rangefield-slider-border-color: $form-border !default;
$rangefield-background-slider: $form-field-bg;
$rangefield-background-filled-slider: darken($form-field-bg, 15);
$rangefield-thumb-width: 2.125em;
$rangefield-thumb-height: 2.125em;
$rangefield-thumb-radius: 50%;
$rangefield-thumb-background: $button-bg;
$rangefield-thumb-border: 1px solid darken($form-field-bg, 15);
$rangefield-shadow-size: -8px;
$rangefield-fit-thumb-in-slider: -8px;
@function makelongshadow($color, $size) {
$val: 5px 0 0 $size $color;
@for $i from 6 through $rangefield-slider-width-number {
$val: #{$val}, #{$i}px 0 0 $size #{$color};
}
@return $val;
}
input.rangefield[type="range"],
input.rangefield[type="number"] {
display: inline-block;
}
input.rangefield[type="number"] {
height: $rangefield-thumb-height;
width: ($rangefield-thumb-width * 2.5);
vertical-align: top;
}
_:-ms-lang(x), input.rangefield[type="number"] { vertical-align: text-top; } // IE 10+, Edge
input.rangefield[type="range"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: none;
cursor: pointer;
display: inline-block;
vertical-align: top;
height: 100%;
min-height: $rangefield-thumb-height;
overflow: hidden;
width: $rangefield-slider-width;
&:focus {
box-shadow: none;
outline: none;
}
&::-webkit-slider-runnable-track {
background: $rangefield-background-filled-slider;
content: '';
height: $rangefield-slider-height;
pointer-events: none;
border: $rangefield-slider-border-width solid $rangefield-slider-border-color;
}
&::-webkit-slider-thumb {
height: $rangefield-thumb-height;
width: $rangefield-thumb-width;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: $rangefield-thumb-background;
border-radius: $rangefield-thumb-radius;
box-shadow: makelongshadow($rangefield-background-slider, $rangefield-shadow-size);
margin-top: $rangefield-fit-thumb-in-slider;
border: $rangefield-thumb-border;
}
&::-moz-range-track {
width: $rangefield-slider-width;
height: $rangefield-slider-height;
background: $rangefield-background-slider;
}
&::-moz-range-thumb {
height: $rangefield-thumb-height - 0.5em;
width: $rangefield-thumb-width - 0.5em;
background: $rangefield-thumb-background;
border-radius: $rangefield-thumb-radius;
border: $rangefield-thumb-border;
position: relative;
}
&::-moz-range-progress {
height: $rangefield-slider-height;
background: $rangefield-background-filled-slider;
border: 0;
margin-top: 0;
}
&::-ms-track {
background: transparent;
border: 0;
border-color: transparent;
border-radius: 0;
border-width: 0;
color: transparent;
height: $rangefield-slider-height + 0.625em;
width: $rangefield-slider-width;
}
&::-ms-thumb {
height: $rangefield-thumb-height;
width: $rangefield-thumb-width;
margin-top: 0.05em;
background: $rangefield-thumb-background;
border-radius: $rangefield-thumb-radius;
border: $rangefield-thumb-border;
}
&::-ms-fill-lower {
background: $rangefield-background-filled-slider;
border-radius: 0;
}
&::-ms-fill-upper {
background: $rangefield-background-slider;
border-radius: 0;
}
&::-ms-tooltip {
display: none;
}
}

View File

@@ -2,18 +2,39 @@
{% block input_attributes %}
type="range"
style="display: inline-block;vertical-align: middle;"
{% if field.id is defined %}
oninput="{{ field.id|e }}_output.value = {{ field.id|e }}.value"
{% endif %}
class="rangefield"
{% if field.validate.min %}min="{{ field.validate.min }}"{% endif %}
{% if field.validate.max %}max="{{ field.validate.max }}"{% endif %}
{% if field.step %}step="{{ field.step }}"{% endif %}
{% if field.id is defined %}
id="range_{{ field.id|e|replace('.', '_') }}"
oninput="number_{{ field.id|e|replace('.', '_') }}_output.value = this.value"
{% else %}
id="range_{{ field.name|e|replace('.', '_') }}"
oninput="number_{{ field.name|e|replace('.', '_') }}_output.value = this.value"
{% endif %}
{{ parent() }}
{% endblock %}
{% block append %}
{% if field.id is defined %}
<output name="{{ (scope ~ field.name)|fieldName }}" id="{{ field.id|e }}_output" style="display: inline-block;vertical-align: baseline;padding: 0 0.5em 5px 0.5em;">
{{ value|join(', ')|e('html_attr') }}
</output>
<input
type="number"
class="rangefield"
{% if field.validate.min %}min="{{ field.validate.min }}"{% endif %}
{% if field.validate.max %}max="{{ field.validate.max }}"{% endif %}
{% if field.step %}step="{{ field.step }}"{% endif %}
{% if value %}
value="{{ value }}"
{% elseif field.default %}
value="{{ field.default }}"
{% else %}
value="0"
{% endif %}
{% if field.id is defined %}
id="number_{{ field.id|e|replace('.', '_') }}_output"
oninput="range_{{ field.id|e|replace('.', '_') }}.value = this.value"
{% else %}
id="number_{{ field.name|e|replace('.', '_') }}_output"
oninput="range_{{ field.name|e|replace('.', '_') }}.value = this.value"
{% endif %}
/>
{% endblock append %}

View File

@@ -8,6 +8,7 @@ module.exports = {
'codemirror',
'chartist',
'selectize',
'rangetouch',
'remodal',
'toastr',
'bootstrap',