mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-05 21:05:42 +01:00
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:
2
themes/grav/css-compiled/fonts.css
vendored
2
themes/grav/css-compiled/fonts.css
vendored
@@ -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 */
|
||||
|
||||
@@ -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"}
|
||||
2
themes/grav/css-compiled/nucleus.css
vendored
2
themes/grav/css-compiled/nucleus.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
themes/grav/css-compiled/preset.css
vendored
4
themes/grav/css-compiled/preset.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
themes/grav/css-compiled/simple-fonts.css
vendored
2
themes/grav/css-compiled/simple-fonts.css
vendored
@@ -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 */
|
||||
|
||||
@@ -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"}
|
||||
2
themes/grav/css-compiled/template.css
vendored
2
themes/grav/css-compiled/template.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
12
themes/grav/js/admin.min.js
vendored
12
themes/grav/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
53
themes/grav/js/vendor.min.js
vendored
53
themes/grav/js/vendor.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -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",
|
||||
|
||||
@@ -1476,3 +1476,6 @@ body .bootstrap-datetimepicker-widget {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Range-field
|
||||
@import "template/modules/input-range";
|
||||
|
||||
130
themes/grav/scss/template/modules/_input-range.scss
Normal file
130
themes/grav/scss/template/modules/_input-range.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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 %}
|
||||
1
themes/grav/webpack.conf.js
vendored
1
themes/grav/webpack.conf.js
vendored
@@ -8,6 +8,7 @@ module.exports = {
|
||||
'codemirror',
|
||||
'chartist',
|
||||
'selectize',
|
||||
'rangetouch',
|
||||
'remodal',
|
||||
'toastr',
|
||||
'bootstrap',
|
||||
|
||||
Reference in New Issue
Block a user