mirror of
https://gitlab.com/JKANetwork/CheckServer.git
synced 2026-02-18 03:01:35 +01:00
Start again
This commit is contained in:
50
vendors/ion.rangeSlider/.bower.json
vendored
Normal file
50
vendors/ion.rangeSlider/.bower.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "ion.rangeSlider",
|
||||
"version": "2.1.4",
|
||||
"homepage": "https://github.com/IonDen/ion.rangeSlider",
|
||||
"authors": [
|
||||
{
|
||||
"name": "IonDen",
|
||||
"email": "denis.ineshin@gmail.com",
|
||||
"homepage": "http://ionden.com"
|
||||
}
|
||||
],
|
||||
"description": "Powerful range slider with skin support",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/IonDen/ion.rangeSlider.git"
|
||||
},
|
||||
"main": [
|
||||
"js/ion.rangeSlider.js",
|
||||
"css/ion.rangeSlider.css",
|
||||
"css/ion.rangeSlider.skinFlat.css",
|
||||
"img/sprite-skin-flat.png"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": ">=1.8"
|
||||
},
|
||||
"moduleType": [
|
||||
"globals"
|
||||
],
|
||||
"keywords": [
|
||||
"jquery-plugin",
|
||||
"diapason",
|
||||
"ion",
|
||||
"range",
|
||||
"slider"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"PSD",
|
||||
"ion-rangeSlider.jquery.json"
|
||||
],
|
||||
"_release": "2.1.4",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "2.1.4",
|
||||
"commit": "b013f67882be811599580a76cf65074dff9f8b5a"
|
||||
},
|
||||
"_source": "https://github.com/IonDen/ion.rangeSlider.git",
|
||||
"_target": "^2.1.3",
|
||||
"_originalSource": "ionrangeslider"
|
||||
}
|
||||
1
vendors/ion.rangeSlider/.gitignore
vendored
Normal file
1
vendors/ion.rangeSlider/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.idea
|
||||
5
vendors/ion.rangeSlider/.npmignore
vendored
Normal file
5
vendors/ion.rangeSlider/.npmignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
.idea
|
||||
PSD
|
||||
bower.json
|
||||
ion-rangeSlider.jquery.json
|
||||
readme.ru.md
|
||||
BIN
vendors/ion.rangeSlider/_tmp/logo-ion-range-slider.png
vendored
Normal file
BIN
vendors/ion.rangeSlider/_tmp/logo-ion-range-slider.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
41
vendors/ion.rangeSlider/bower.json
vendored
Normal file
41
vendors/ion.rangeSlider/bower.json
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "ion.rangeSlider",
|
||||
"version": "2.1.4",
|
||||
"homepage": "https://github.com/IonDen/ion.rangeSlider",
|
||||
"authors": [
|
||||
{
|
||||
"name": "IonDen",
|
||||
"email": "denis.ineshin@gmail.com",
|
||||
"homepage": "http://ionden.com"
|
||||
}
|
||||
],
|
||||
"description": "Powerful range slider with skin support",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/IonDen/ion.rangeSlider.git"
|
||||
},
|
||||
"main": [
|
||||
"js/ion.rangeSlider.js",
|
||||
"css/ion.rangeSlider.css",
|
||||
"css/ion.rangeSlider.skinFlat.css",
|
||||
"img/sprite-skin-flat.png"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": ">=1.8"
|
||||
},
|
||||
"moduleType": [
|
||||
"globals"
|
||||
],
|
||||
"keywords": [
|
||||
"jquery-plugin",
|
||||
"diapason",
|
||||
"ion",
|
||||
"range",
|
||||
"slider"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"PSD",
|
||||
"ion-rangeSlider.jquery.json"
|
||||
]
|
||||
}
|
||||
150
vendors/ion.rangeSlider/css/ion.rangeSlider.css
vendored
Normal file
150
vendors/ion.rangeSlider/css/ion.rangeSlider.css
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
/* Ion.RangeSlider
|
||||
// css version 2.0.3
|
||||
// © 2013-2014 Denis Ineshin | IonDen.com
|
||||
// ===================================================================================================================*/
|
||||
|
||||
/* =====================================================================================================================
|
||||
// RangeSlider */
|
||||
|
||||
.irs {
|
||||
position: relative; display: block;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.irs-line {
|
||||
position: relative; display: block;
|
||||
overflow: hidden;
|
||||
outline: none !important;
|
||||
}
|
||||
.irs-line-left, .irs-line-mid, .irs-line-right {
|
||||
position: absolute; display: block;
|
||||
top: 0;
|
||||
}
|
||||
.irs-line-left {
|
||||
left: 0; width: 11%;
|
||||
}
|
||||
.irs-line-mid {
|
||||
left: 9%; width: 82%;
|
||||
}
|
||||
.irs-line-right {
|
||||
right: 0; width: 11%;
|
||||
}
|
||||
|
||||
.irs-bar {
|
||||
position: absolute; display: block;
|
||||
left: 0; width: 0;
|
||||
}
|
||||
.irs-bar-edge {
|
||||
position: absolute; display: block;
|
||||
top: 0; left: 0;
|
||||
}
|
||||
|
||||
.irs-shadow {
|
||||
position: absolute; display: none;
|
||||
left: 0; width: 0;
|
||||
}
|
||||
|
||||
.irs-slider {
|
||||
position: absolute; display: block;
|
||||
cursor: default;
|
||||
z-index: 1;
|
||||
}
|
||||
.irs-slider.single {
|
||||
|
||||
}
|
||||
.irs-slider.from {
|
||||
|
||||
}
|
||||
.irs-slider.to {
|
||||
|
||||
}
|
||||
.irs-slider.type_last {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.irs-min {
|
||||
position: absolute; display: block;
|
||||
left: 0;
|
||||
cursor: default;
|
||||
}
|
||||
.irs-max {
|
||||
position: absolute; display: block;
|
||||
right: 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.irs-from, .irs-to, .irs-single {
|
||||
position: absolute; display: block;
|
||||
top: 0; left: 0;
|
||||
cursor: default;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.irs-grid {
|
||||
position: absolute; display: none;
|
||||
bottom: 0; left: 0;
|
||||
width: 100%; height: 20px;
|
||||
}
|
||||
.irs-with-grid .irs-grid {
|
||||
display: block;
|
||||
}
|
||||
.irs-grid-pol {
|
||||
position: absolute;
|
||||
top: 0; left: 0;
|
||||
width: 1px; height: 8px;
|
||||
background: #000;
|
||||
}
|
||||
.irs-grid-pol.small {
|
||||
height: 4px;
|
||||
}
|
||||
.irs-grid-text {
|
||||
position: absolute;
|
||||
bottom: 0; left: 0;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
font-size: 9px; line-height: 9px;
|
||||
padding: 0 3px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.irs-disable-mask {
|
||||
position: absolute; display: block;
|
||||
top: 0; left: -1%;
|
||||
width: 102%; height: 100%;
|
||||
cursor: default;
|
||||
background: rgba(0,0,0,0.0);
|
||||
z-index: 2;
|
||||
}
|
||||
.lt-ie9 .irs-disable-mask {
|
||||
background: #000;
|
||||
filter: alpha(opacity=0);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.irs-disabled {
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
|
||||
.irs-hidden-input {
|
||||
position: absolute !important;
|
||||
display: block !important;
|
||||
top: 0 !important;
|
||||
left: 0 !important;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
font-size: 0 !important;
|
||||
line-height: 0 !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
overflow: hidden;
|
||||
outline: none !important;
|
||||
z-index: -9999 !important;
|
||||
background: none !important;
|
||||
border-style: solid !important;
|
||||
border-color: transparent !important;
|
||||
}
|
||||
106
vendors/ion.rangeSlider/css/ion.rangeSlider.skinFlat.css
vendored
Normal file
106
vendors/ion.rangeSlider/css/ion.rangeSlider.skinFlat.css
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
/* Ion.RangeSlider, Flat UI Skin
|
||||
// css version 2.0.3
|
||||
// © Denis Ineshin, 2014 https://github.com/IonDen
|
||||
// ===================================================================================================================*/
|
||||
|
||||
/* =====================================================================================================================
|
||||
// Skin details */
|
||||
|
||||
.irs-line-mid,
|
||||
.irs-line-left,
|
||||
.irs-line-right,
|
||||
.irs-bar,
|
||||
.irs-bar-edge,
|
||||
.irs-slider {
|
||||
background: url(../img/sprite-skin-flat.png) repeat-x;
|
||||
}
|
||||
|
||||
.irs {
|
||||
height: 40px;
|
||||
}
|
||||
.irs-with-grid {
|
||||
height: 60px;
|
||||
}
|
||||
.irs-line {
|
||||
height: 12px; top: 25px;
|
||||
}
|
||||
.irs-line-left {
|
||||
height: 12px;
|
||||
background-position: 0 -30px;
|
||||
}
|
||||
.irs-line-mid {
|
||||
height: 12px;
|
||||
background-position: 0 0;
|
||||
}
|
||||
.irs-line-right {
|
||||
height: 12px;
|
||||
background-position: 100% -30px;
|
||||
}
|
||||
|
||||
.irs-bar {
|
||||
height: 12px; top: 25px;
|
||||
background-position: 0 -60px;
|
||||
}
|
||||
.irs-bar-edge {
|
||||
top: 25px;
|
||||
height: 12px; width: 9px;
|
||||
background-position: 0 -90px;
|
||||
}
|
||||
|
||||
.irs-shadow {
|
||||
height: 3px; top: 34px;
|
||||
background: #000;
|
||||
opacity: 0.25;
|
||||
}
|
||||
.lt-ie9 .irs-shadow {
|
||||
filter: alpha(opacity=25);
|
||||
}
|
||||
|
||||
.irs-slider {
|
||||
width: 16px; height: 18px;
|
||||
top: 22px;
|
||||
background-position: 0 -120px;
|
||||
}
|
||||
.irs-slider.state_hover, .irs-slider:hover {
|
||||
background-position: 0 -150px;
|
||||
}
|
||||
|
||||
.irs-min, .irs-max {
|
||||
color: #999;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
top: 0; padding: 1px 3px;
|
||||
background: #e1e4e9;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.irs-from, .irs-to, .irs-single {
|
||||
color: #fff;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
padding: 1px 5px;
|
||||
background: #ed5565;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.irs-from:after, .irs-to:after, .irs-single:after {
|
||||
position: absolute; display: block; content: "";
|
||||
bottom: -6px; left: 50%;
|
||||
width: 0; height: 0;
|
||||
margin-left: -3px;
|
||||
overflow: hidden;
|
||||
border: 3px solid transparent;
|
||||
border-top-color: #ed5565;
|
||||
}
|
||||
|
||||
|
||||
.irs-grid-pol {
|
||||
background: #e1e4e9;
|
||||
}
|
||||
.irs-grid-text {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.irs-disabled {
|
||||
}
|
||||
124
vendors/ion.rangeSlider/css/ion.rangeSlider.skinHTML5.css
vendored
Normal file
124
vendors/ion.rangeSlider/css/ion.rangeSlider.skinHTML5.css
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
/* Ion.RangeSlider, Simple Skin
|
||||
// css version 2.0.3
|
||||
// © Denis Ineshin, 2014 https://github.com/IonDen
|
||||
// © guybowden, 2014 https://github.com/guybowden
|
||||
// ===================================================================================================================*/
|
||||
|
||||
/* =====================================================================================================================
|
||||
// Skin details */
|
||||
|
||||
.irs {
|
||||
height: 55px;
|
||||
}
|
||||
.irs-with-grid {
|
||||
height: 75px;
|
||||
}
|
||||
.irs-line {
|
||||
height: 10px; top: 33px;
|
||||
background: #EEE;
|
||||
background: linear-gradient(to bottom, #DDD -50%, #FFF 150%); /* W3C */
|
||||
border: 1px solid #CCC;
|
||||
border-radius: 16px;
|
||||
-moz-border-radius: 16px;
|
||||
}
|
||||
.irs-line-left {
|
||||
height: 8px;
|
||||
}
|
||||
.irs-line-mid {
|
||||
height: 8px;
|
||||
}
|
||||
.irs-line-right {
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
.irs-bar {
|
||||
height: 10px; top: 33px;
|
||||
border-top: 1px solid #428bca;
|
||||
border-bottom: 1px solid #428bca;
|
||||
background: #428bca;
|
||||
background: linear-gradient(to top, rgba(66,139,202,1) 0%,rgba(127,195,232,1) 100%); /* W3C */
|
||||
}
|
||||
.irs-bar-edge {
|
||||
height: 10px; top: 33px;
|
||||
width: 14px;
|
||||
border: 1px solid #428bca;
|
||||
border-right: 0;
|
||||
background: #428bca;
|
||||
background: linear-gradient(to top, rgba(66,139,202,1) 0%,rgba(127,195,232,1) 100%); /* W3C */
|
||||
border-radius: 16px 0 0 16px;
|
||||
-moz-border-radius: 16px 0 0 16px;
|
||||
}
|
||||
|
||||
.irs-shadow {
|
||||
height: 2px; top: 38px;
|
||||
background: #000;
|
||||
opacity: 0.3;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
}
|
||||
.lt-ie9 .irs-shadow {
|
||||
filter: alpha(opacity=30);
|
||||
}
|
||||
|
||||
.irs-slider {
|
||||
top: 25px;
|
||||
width: 27px; height: 27px;
|
||||
border: 1px solid #AAA;
|
||||
background: #DDD;
|
||||
background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(220,220,220,1) 20%,rgba(255,255,255,1) 100%); /* W3C */
|
||||
border-radius: 27px;
|
||||
-moz-border-radius: 27px;
|
||||
box-shadow: 1px 1px 3px rgba(0,0,0,0.3);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.irs-slider.state_hover, .irs-slider:hover {
|
||||
background: #FFF;
|
||||
}
|
||||
|
||||
.irs-min, .irs-max {
|
||||
color: #333;
|
||||
font-size: 12px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
top: 0;
|
||||
padding: 1px 5px;
|
||||
background: rgba(0,0,0,0.1);
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
}
|
||||
|
||||
.lt-ie9 .irs-min, .lt-ie9 .irs-max {
|
||||
background: #ccc;
|
||||
}
|
||||
|
||||
.irs-from, .irs-to, .irs-single {
|
||||
color: #fff;
|
||||
font-size: 14px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
padding: 1px 5px;
|
||||
background: #428bca;
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
}
|
||||
.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {
|
||||
background: #999;
|
||||
}
|
||||
|
||||
.irs-grid {
|
||||
height: 27px;
|
||||
}
|
||||
.irs-grid-pol {
|
||||
opacity: 0.5;
|
||||
background: #428bca;
|
||||
}
|
||||
.irs-grid-pol.small {
|
||||
background: #999;
|
||||
}
|
||||
|
||||
.irs-grid-text {
|
||||
bottom: 5px;
|
||||
color: #99a4ac;
|
||||
}
|
||||
|
||||
.irs-disabled {
|
||||
}
|
||||
116
vendors/ion.rangeSlider/css/ion.rangeSlider.skinModern.css
vendored
Normal file
116
vendors/ion.rangeSlider/css/ion.rangeSlider.skinModern.css
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
/* Ion.RangeSlider, Modern Skin
|
||||
// css version 2.0.3
|
||||
// © Denis Ineshin, 2014 https://github.com/IonDen
|
||||
// ===================================================================================================================*/
|
||||
|
||||
/* =====================================================================================================================
|
||||
// Skin details */
|
||||
|
||||
.irs-line-mid,
|
||||
.irs-line-left,
|
||||
.irs-line-right,
|
||||
.irs-bar,
|
||||
.irs-bar-edge,
|
||||
.irs-slider {
|
||||
background: url(../img/sprite-skin-modern.png) repeat-x;
|
||||
}
|
||||
|
||||
.irs {
|
||||
height: 50px;
|
||||
}
|
||||
.irs-with-grid {
|
||||
height: 70px;
|
||||
}
|
||||
.irs-line {
|
||||
height: 6px; top: 25px;
|
||||
}
|
||||
.irs-line-left {
|
||||
height: 6px;
|
||||
background-position: 0 -30px;
|
||||
}
|
||||
.irs-line-mid {
|
||||
height: 6px;
|
||||
background-position: 0 0;
|
||||
}
|
||||
.irs-line-right {
|
||||
height: 6px;
|
||||
background-position: 100% -30px;
|
||||
}
|
||||
|
||||
.irs-bar {
|
||||
height: 6px; top: 25px;
|
||||
background-position: 0 -60px;
|
||||
}
|
||||
.irs-bar-edge {
|
||||
top: 25px;
|
||||
height: 6px; width: 6px;
|
||||
background-position: 0 -90px;
|
||||
}
|
||||
|
||||
.irs-shadow {
|
||||
height: 5px; top: 25px;
|
||||
background: #000;
|
||||
opacity: 0.25;
|
||||
}
|
||||
.lt-ie9 .irs-shadow {
|
||||
filter: alpha(opacity=25);
|
||||
}
|
||||
|
||||
.irs-slider {
|
||||
width: 11px; height: 18px;
|
||||
top: 31px;
|
||||
background-position: 0 -120px;
|
||||
}
|
||||
.irs-slider.state_hover, .irs-slider:hover {
|
||||
background-position: 0 -150px;
|
||||
}
|
||||
|
||||
.irs-min, .irs-max {
|
||||
color: #999;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
top: 0; padding: 1px 3px;
|
||||
background: #e1e4e9;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.irs-from, .irs-to, .irs-single {
|
||||
color: #fff;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
padding: 1px 5px;
|
||||
background: #20b426;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.irs-from:after, .irs-to:after, .irs-single:after {
|
||||
position: absolute; display: block; content: "";
|
||||
bottom: -6px; left: 50%;
|
||||
width: 0; height: 0;
|
||||
margin-left: -3px;
|
||||
overflow: hidden;
|
||||
border: 3px solid transparent;
|
||||
border-top-color: #20b426;
|
||||
}
|
||||
|
||||
.irs-grid {
|
||||
height: 34px;
|
||||
}
|
||||
.irs-grid-pol {
|
||||
background: #c0c0c0;
|
||||
}
|
||||
.irs-grid-text {
|
||||
bottom: 12px;
|
||||
color: #c0c0c0;
|
||||
}
|
||||
|
||||
.irs-disable-mask {
|
||||
|
||||
}
|
||||
.irs-disabled {
|
||||
|
||||
}
|
||||
.lt-ie9 .irs-disabled {
|
||||
|
||||
}
|
||||
102
vendors/ion.rangeSlider/css/ion.rangeSlider.skinNice.css
vendored
Normal file
102
vendors/ion.rangeSlider/css/ion.rangeSlider.skinNice.css
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
/* Ion.RangeSlider, Nice Skin
|
||||
// css version 2.0.3
|
||||
// © Denis Ineshin, 2014 https://github.com/IonDen
|
||||
// ===================================================================================================================*/
|
||||
|
||||
/* =====================================================================================================================
|
||||
// Skin details */
|
||||
|
||||
.irs-line-mid,
|
||||
.irs-line-left,
|
||||
.irs-line-right,
|
||||
.irs-bar,
|
||||
.irs-bar-edge,
|
||||
.irs-slider {
|
||||
background: url(../img/sprite-skin-nice.png) repeat-x;
|
||||
}
|
||||
|
||||
.irs {
|
||||
height: 40px;
|
||||
}
|
||||
.irs-with-grid {
|
||||
height: 60px;
|
||||
}
|
||||
.irs-line {
|
||||
height: 8px; top: 25px;
|
||||
}
|
||||
.irs-line-left {
|
||||
height: 8px;
|
||||
background-position: 0 -30px;
|
||||
}
|
||||
.irs-line-mid {
|
||||
height: 8px;
|
||||
background-position: 0 0;
|
||||
}
|
||||
.irs-line-right {
|
||||
height: 8px;
|
||||
background-position: 100% -30px;
|
||||
}
|
||||
|
||||
.irs-bar {
|
||||
height: 8px; top: 25px;
|
||||
background-position: 0 -60px;
|
||||
}
|
||||
.irs-bar-edge {
|
||||
top: 25px;
|
||||
height: 8px; width: 11px;
|
||||
background-position: 0 -90px;
|
||||
}
|
||||
|
||||
.irs-shadow {
|
||||
height: 1px; top: 34px;
|
||||
background: #000;
|
||||
opacity: 0.15;
|
||||
}
|
||||
.lt-ie9 .irs-shadow {
|
||||
filter: alpha(opacity=15);
|
||||
}
|
||||
|
||||
.irs-slider {
|
||||
width: 22px; height: 22px;
|
||||
top: 17px;
|
||||
background-position: 0 -120px;
|
||||
}
|
||||
.irs-slider.state_hover, .irs-slider:hover {
|
||||
background-position: 0 -150px;
|
||||
}
|
||||
|
||||
.irs-min, .irs-max {
|
||||
color: #999;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
top: 0; padding: 1px 3px;
|
||||
background: rgba(0,0,0,0.1);
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.lt-ie9 .irs-min, .lt-ie9 .irs-max {
|
||||
background: #ccc;
|
||||
}
|
||||
|
||||
.irs-from, .irs-to, .irs-single {
|
||||
color: #fff;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
padding: 1px 5px;
|
||||
background: rgba(0,0,0,0.3);
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {
|
||||
background: #999;
|
||||
}
|
||||
|
||||
.irs-grid-pol {
|
||||
background: #99a4ac;
|
||||
}
|
||||
.irs-grid-text {
|
||||
color: #99a4ac;
|
||||
}
|
||||
|
||||
.irs-disabled {
|
||||
}
|
||||
102
vendors/ion.rangeSlider/css/ion.rangeSlider.skinSimple.css
vendored
Normal file
102
vendors/ion.rangeSlider/css/ion.rangeSlider.skinSimple.css
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
/* Ion.RangeSlider, Simple Skin
|
||||
// css version 2.0.3
|
||||
// © Denis Ineshin, 2014 https://github.com/IonDen
|
||||
// ===================================================================================================================*/
|
||||
|
||||
/* =====================================================================================================================
|
||||
// Skin details */
|
||||
|
||||
.irs-line-mid,
|
||||
.irs-line-left,
|
||||
.irs-line-right,
|
||||
.irs-bar,
|
||||
.irs-bar-edge,
|
||||
.irs-slider {
|
||||
background: url(../img/sprite-skin-simple.png) repeat-x;
|
||||
}
|
||||
|
||||
.irs {
|
||||
height: 40px;
|
||||
}
|
||||
.irs-with-grid {
|
||||
height: 60px;
|
||||
}
|
||||
.irs-line {
|
||||
height: 6px; top: 25px;
|
||||
}
|
||||
.irs-line-left {
|
||||
height: 6px;
|
||||
background-position: 0 -30px;
|
||||
}
|
||||
.irs-line-mid {
|
||||
height: 6px;
|
||||
background-position: 0 0;
|
||||
}
|
||||
.irs-line-right {
|
||||
height: 6px;
|
||||
background-position: 100% -30px;
|
||||
}
|
||||
|
||||
.irs-bar {
|
||||
height: 6px; top: 25px;
|
||||
background-position: 0 -60px;
|
||||
}
|
||||
.irs-bar-edge {
|
||||
top: 25px;
|
||||
height: 6px; width: 7px;
|
||||
background-position: 0 -90px;
|
||||
}
|
||||
|
||||
.irs-shadow {
|
||||
height: 1px; top: 34px;
|
||||
background: #000;
|
||||
opacity: 0.75;
|
||||
}
|
||||
.lt-ie9 .irs-shadow {
|
||||
filter: alpha(opacity=75);
|
||||
}
|
||||
|
||||
.irs-slider {
|
||||
width: 8px; height: 15px;
|
||||
top: 21px;
|
||||
background-position: 0 -120px;
|
||||
}
|
||||
.irs-slider.state_hover, .irs-slider:hover {
|
||||
background-position: 0 -150px;
|
||||
}
|
||||
|
||||
.irs-min, .irs-max {
|
||||
color: #c0c0c0;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
top: 0; padding: 1px 3px;
|
||||
background: rgba(0,0,0,0.1);
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.lt-ie9 .irs-min, .lt-ie9 .irs-max {
|
||||
background: #3654b0;
|
||||
}
|
||||
|
||||
.irs-from, .irs-to, .irs-single {
|
||||
color: #000;
|
||||
font-size: 10px; line-height: 1.333;
|
||||
text-shadow: none;
|
||||
padding: 1px 5px;
|
||||
background: rgba(255,255,255,0.8);
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {
|
||||
background: #d8dff3;
|
||||
}
|
||||
|
||||
.irs-grid-pol {
|
||||
background: #777;
|
||||
}
|
||||
.irs-grid-text {
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
.irs-disabled {
|
||||
}
|
||||
427
vendors/ion.rangeSlider/css/normalize.css
vendored
Normal file
427
vendors/ion.rangeSlider/css/normalize.css
vendored
Normal file
@@ -0,0 +1,427 @@
|
||||
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||
|
||||
/**
|
||||
* 1. Set default font family to sans-serif.
|
||||
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-family: sans-serif; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default margin.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||
* and Firefox.
|
||||
* Correct `block` display not defined for `main` in IE 11.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block; /* 1 */
|
||||
vertical-align: baseline; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||
*/
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability when focused and also mouse hovered in all browsers.
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari and Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address variable `h1` font-size and margin within `section` and `article`
|
||||
* contexts in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove border when inside `a` element in IE 8/9/10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct overflow not hidden in IE 9/10/11.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margin not present in IE 8/9 and Safari.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
*/
|
||||
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contain overflow in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address odd `em`-unit font size rendering in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
* styling of `select`, unless a `border` property is set.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 1. Correct color not being inherited.
|
||||
* Known issue: affects color of disabled elements.
|
||||
* 2. Correct font properties not being inherited.
|
||||
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
margin: 0; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
button {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
* Correct `select` style inheritance in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 4+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* It's recommended that you don't attempt to style these elements.
|
||||
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
*
|
||||
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
* 2. Remove excess padding in IE 8/9/10.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
* `font-size` values of the `input`, it causes the cursor style of the
|
||||
* decrement button to change from `default` to `text`.
|
||||
*/
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||
* (include `-moz` to future-proof).
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; /* 2 */
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||
* padding (and `textfield` appearance).
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't inherit the `font-weight` (applied by a rule above).
|
||||
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
*/
|
||||
|
||||
optgroup {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Tables
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0;
|
||||
}
|
||||
137
vendors/ion.rangeSlider/history.md
vendored
Normal file
137
vendors/ion.rangeSlider/history.md
vendored
Normal file
@@ -0,0 +1,137 @@
|
||||

|
||||
|
||||
# Update History
|
||||
|
||||
### Version 2.1.4. April 27, 2016
|
||||
* Issues: #330, #369
|
||||
|
||||
### Version 2.1.3. April 10, 2016
|
||||
* Issues: #342, #350
|
||||
|
||||
### Version 2.1.2. October 13, 2015
|
||||
* Fixed bugs. Issues: #310, #312, #313, #316
|
||||
|
||||
### Version 2.1.1. September 21, 2015
|
||||
* Fixed bugs. Issues: #305
|
||||
* New features. Requests: #282
|
||||
|
||||
### Version 2.1.0. September 20, 2015
|
||||
* Fixed bugs. Issues: #288
|
||||
* New features. Requests: #281, #284, #286, #289
|
||||
* Some code refactoring
|
||||
* Code documentation updated
|
||||
|
||||
### Version 2.0.13. July 25, 2015
|
||||
* Fixed bugs. Issues: #208, #270, #273
|
||||
* New features. Requests: #233
|
||||
|
||||
### Version 2.0.12. July 10, 2015
|
||||
* Fixed more bugs. Issues: #247, #263, #265, #269
|
||||
|
||||
### Version 2.0.11. July 02, 2015
|
||||
* Fixed more bugs. Issues: #247, #253
|
||||
|
||||
### Version 2.0.10. June 06, 2015
|
||||
* Fixed rounding bug. Issue #247
|
||||
|
||||
### Version 2.0.9. May 30, 2015
|
||||
* Fixed critical bug. Issue #246
|
||||
|
||||
### Version 2.0.8. May 30, 2015
|
||||
* Fixed some bugs. Issues: #219, #228, #230, #245
|
||||
|
||||
### Version 2.0.7. May 26, 2015
|
||||
* Fixed memory issue: #220
|
||||
* Fixed CPU issue: #186
|
||||
* Merged PRs: #209, #226, #235
|
||||
|
||||
### Version 2.0.6. February 17, 2015
|
||||
* Issues done: #197
|
||||
* Fixed bug with broken From and To
|
||||
|
||||
### Version 2.0.5. February 13, 2015
|
||||
* Issues done: #193, #195, #201
|
||||
|
||||
### Version 2.0.4. February 12, 2015
|
||||
* Issues done: #174, #184
|
||||
* NPM support added
|
||||
* Readme files optimisations
|
||||
|
||||
### Version 2.0.3. December 29, 2014
|
||||
* Issues done: #160, #165, #166, #168, #170
|
||||
|
||||
### Version 2.0.2: December 02, 2014
|
||||
* Issues done: #143, #148, #153, #155, #159
|
||||
* API update.
|
||||
|
||||
### Version 2.0.1: November 15, 2014
|
||||
* Some bugs fixed
|
||||
* Some new methods
|
||||
|
||||
### Version 2.0.0: November 08, 2014
|
||||
* New Core
|
||||
* New API
|
||||
* Lot's of bug fixes
|
||||
* Many improvements
|
||||
* SPM support added
|
||||
|
||||
### Version 1.9.3: August 06, 2014
|
||||
* Bower support added
|
||||
|
||||
### Version 1.9.2: August 04, 2014
|
||||
* New param gridMargin
|
||||
* Issues done: #89, #94, #96, #97, #98, #103
|
||||
|
||||
### Version 1.9.1: April 15, 2014
|
||||
* Issues done: #81, #82, #85
|
||||
|
||||
### Version 1.9.0: March 16, 2014
|
||||
* Issues done: #65, #68, #70, #77, #78
|
||||
* New plugin description
|
||||
* New demos design
|
||||
* Some new slider params
|
||||
|
||||
### Version 1.8.5: January 12, 2014
|
||||
* Issues done: #12, #30, #33, #43, #47, #52, #58
|
||||
* Bug fixes
|
||||
* New param "disable"
|
||||
* Link to input and slider in all callbacks
|
||||
* Click on slider to move it
|
||||
|
||||
### Version 1.8.2: October 31, 2013
|
||||
* Issues done: #13, #31, #35, #37, #40
|
||||
* Some code optimisations
|
||||
|
||||
### Version 1.8.1: October 10, 2013
|
||||
* Issues done: #25
|
||||
* New Flat UI Skin
|
||||
* Some skin optimisations
|
||||
|
||||
### Version 1.8.0: October 08, 2013
|
||||
* Issues done: #20, #21, #23, #24, #26
|
||||
* Removed hideText option
|
||||
* New method and options
|
||||
* Improved code style
|
||||
* Minor optimisations
|
||||
|
||||
### Version 1.7.2: September 11, 2013
|
||||
* Issues done: #15, #16
|
||||
* Fixed bug on Android-devices
|
||||
* Added support for negative and fractional values
|
||||
|
||||
### Version 1.7.0: August 23, 2013
|
||||
* Issues done: #7, #8, #9, #10
|
||||
* Some enhancements
|
||||
|
||||
### Version 1.6.3: July 29, 2013
|
||||
* Issues done: #2
|
||||
* Moved to Semantic Versioning
|
||||
|
||||
### December, 2012
|
||||
* Plugin release
|
||||
|
||||
***
|
||||
|
||||
Support the plugin:
|
||||
|
||||
[](https://pledgie.com/campaigns/25694)
|
||||
BIN
vendors/ion.rangeSlider/img/sprite-skin-flat.png
vendored
Normal file
BIN
vendors/ion.rangeSlider/img/sprite-skin-flat.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 304 B |
BIN
vendors/ion.rangeSlider/img/sprite-skin-modern.png
vendored
Normal file
BIN
vendors/ion.rangeSlider/img/sprite-skin-modern.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 505 B |
BIN
vendors/ion.rangeSlider/img/sprite-skin-nice.png
vendored
Normal file
BIN
vendors/ion.rangeSlider/img/sprite-skin-nice.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 694 B |
BIN
vendors/ion.rangeSlider/img/sprite-skin-simple.png
vendored
Normal file
BIN
vendors/ion.rangeSlider/img/sprite-skin-simple.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 358 B |
63
vendors/ion.rangeSlider/index.md
vendored
Normal file
63
vendors/ion.rangeSlider/index.md
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||

|
||||
|
||||
> English description | <a href="readme.ru.md">Описание на русском</a>
|
||||
|
||||
Ion.RangeSlider. Is an easy, flexible and responsive range slider with tons of options.
|
||||
|
||||
***
|
||||
|
||||
* Version: 2.1.4
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/en.html">Project page and demos</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/ion.rangeSlider-2.1.4.zip">Download ZIP</a>
|
||||
|
||||
[](https://pledgie.com/campaigns/25694)
|
||||
|
||||
## Description
|
||||
* Ion.RangeSlider — cool, comfortable, responsive and easily customizable range slider
|
||||
* Supports events and public methods, has flexible settings, can be completely altered with CSS
|
||||
* Cross-browser: Google Chrome, Mozilla Firefox 3.6+, Opera 12+, Safari 5+, Internet Explorer 8+
|
||||
* Ion.RangeSlider supports touch-devices (iPhone, iPad, Nexus, etc.).
|
||||
* Ion.RangeSlider freely distributed under terms of <a href="http://ionden.com/a/plugins/licence.html" target="_blank">MIT licence</a>.
|
||||
* With this plugin you will be able to build beautiful range sliders, like this:
|
||||
|
||||

|
||||
|
||||
## Key features
|
||||
* Skin support. (5 skins included and PSD for skin creation)
|
||||
* Any number of sliders at one page without conflicts and big performance problems
|
||||
* Two slider types single (1 slider) and double (2 sliders)
|
||||
* Support of negative and fractional values
|
||||
* Ability to set custom step and snap grid to step
|
||||
* Support of custom values diapason
|
||||
* Customisable grid of values
|
||||
* Ability to disable UI elements (min and max, current value, grid)
|
||||
* Postfixes and prefixes for your numbers ($20, 20 € etc.)
|
||||
* Additional postfix for maximum value (eg. $0 — $100<b>+</b>)
|
||||
* Ability to prettify large numbers (eg. 10000000 -> 10 000 000 or 10.000.000)
|
||||
* Slider writes its value right into input value field. This makes it easy to use in any html form
|
||||
* Any slider value can be set through input data-attribute (eg. data-min="10")
|
||||
* Slider supports disable param. You can set it true to make slider inactive
|
||||
* Slider supports external methods (update, reset and remove) to control it after creation
|
||||
* For advanced users slider has callbacks (onStart, onChange, onFinish, onUpdate). Slider pastes all its params to callback first argument as object
|
||||
* Slider supports date and time
|
||||
|
||||
|
||||
## Demos
|
||||
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo.html" class="switch__item">Basic demo</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_advanced.html" class="switch__item">Advanced demo</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_interactions.html" class="switch__item">Interactions demo</a>
|
||||
|
||||
|
||||
## GitHub
|
||||
|
||||
* <a href="https://github.com/IonDen/ion.rangeSlider">GitHub page</a>
|
||||
|
||||
|
||||
### <a href="history.md">Update history</a>
|
||||
|
||||
***
|
||||
|
||||
Support the plugin:
|
||||
|
||||
[](https://pledgie.com/campaigns/25694)
|
||||
2317
vendors/ion.rangeSlider/js/ion.rangeSlider.js
vendored
Normal file
2317
vendors/ion.rangeSlider/js/ion.rangeSlider.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
76
vendors/ion.rangeSlider/js/ion.rangeSlider.min.js
vendored
Normal file
76
vendors/ion.rangeSlider/js/ion.rangeSlider.min.js
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
// Ion.RangeSlider | version 2.1.4 | https://github.com/IonDen/ion.rangeSlider
|
||||
;(function(g){"function"===typeof define&&define.amd?define(["jquery"],function(q){g(q,document,window,navigator)}):g(jQuery,document,window,navigator)})(function(g,q,h,t,v){var u=0,p=function(){var a=t.userAgent,b=/msie\s\d+/i;return 0<a.search(b)&&(a=b.exec(a).toString(),a=a.split(" ")[1],9>a)?(g("html").addClass("lt-ie9"),!0):!1}();Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,d=[].slice;if("function"!=typeof b)throw new TypeError;var c=d.call(arguments,1),e=function(){if(this instanceof
|
||||
e){var f=function(){};f.prototype=b.prototype;var f=new f,l=b.apply(f,c.concat(d.call(arguments)));return Object(l)===l?l:f}return b.apply(a,c.concat(d.call(arguments)))};return e});Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var d;if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),e=c.length>>>0;if(0===e)return-1;d=+b||0;Infinity===Math.abs(d)&&(d=0);if(d>=e)return-1;for(d=Math.max(0<=d?d:e-Math.abs(d),0);d<e;){if(d in c&&c[d]===a)return d;d++}return-1});
|
||||
var r=function(a,b,d){this.VERSION="2.1.4";this.input=a;this.plugin_count=d;this.old_to=this.old_from=this.update_tm=this.calc_count=this.current_plugin=0;this.raf_id=this.old_min_interval=null;this.is_update=this.is_key=this.no_diapason=this.force_redraw=this.dragging=!1;this.is_start=!0;this.is_click=this.is_resize=this.is_active=this.is_finish=!1;this.$cache={win:g(h),body:g(q.body),input:g(a),cont:null,rs:null,min:null,max:null,from:null,to:null,single:null,bar:null,line:null,s_single:null,s_from:null,
|
||||
s_to:null,shad_single:null,shad_from:null,shad_to:null,edge:null,grid:null,grid_labels:[]};this.coords={x_gap:0,x_pointer:0,w_rs:0,w_rs_old:0,w_handle:0,p_gap:0,p_gap_left:0,p_gap_right:0,p_step:0,p_pointer:0,p_handle:0,p_single_fake:0,p_single_real:0,p_from_fake:0,p_from_real:0,p_to_fake:0,p_to_real:0,p_bar_x:0,p_bar_w:0,grid_gap:0,big_num:0,big:[],big_w:[],big_p:[],big_x:[]};this.labels={w_min:0,w_max:0,w_from:0,w_to:0,w_single:0,p_min:0,p_max:0,p_from_fake:0,p_from_left:0,p_to_fake:0,p_to_left:0,
|
||||
p_single_fake:0,p_single_left:0};var c=this.$cache.input;a=c.prop("value");var e;d={type:"single",min:10,max:100,from:null,to:null,step:1,min_interval:0,max_interval:0,drag_interval:!1,values:[],p_values:[],from_fixed:!1,from_min:null,from_max:null,from_shadow:!1,to_fixed:!1,to_min:null,to_max:null,to_shadow:!1,prettify_enabled:!0,prettify_separator:" ",prettify:null,force_edges:!1,keyboard:!1,keyboard_step:5,grid:!1,grid_margin:!0,grid_num:4,grid_snap:!1,hide_min_max:!1,hide_from_to:!1,prefix:"",
|
||||
postfix:"",max_postfix:"",decorate_both:!0,values_separator:" \u2014 ",input_values_separator:";",disable:!1,onStart:null,onChange:null,onFinish:null,onUpdate:null};c={type:c.data("type"),min:c.data("min"),max:c.data("max"),from:c.data("from"),to:c.data("to"),step:c.data("step"),min_interval:c.data("minInterval"),max_interval:c.data("maxInterval"),drag_interval:c.data("dragInterval"),values:c.data("values"),from_fixed:c.data("fromFixed"),from_min:c.data("fromMin"),from_max:c.data("fromMax"),from_shadow:c.data("fromShadow"),
|
||||
to_fixed:c.data("toFixed"),to_min:c.data("toMin"),to_max:c.data("toMax"),to_shadow:c.data("toShadow"),prettify_enabled:c.data("prettifyEnabled"),prettify_separator:c.data("prettifySeparator"),force_edges:c.data("forceEdges"),keyboard:c.data("keyboard"),keyboard_step:c.data("keyboardStep"),grid:c.data("grid"),grid_margin:c.data("gridMargin"),grid_num:c.data("gridNum"),grid_snap:c.data("gridSnap"),hide_min_max:c.data("hideMinMax"),hide_from_to:c.data("hideFromTo"),prefix:c.data("prefix"),postfix:c.data("postfix"),
|
||||
max_postfix:c.data("maxPostfix"),decorate_both:c.data("decorateBoth"),values_separator:c.data("valuesSeparator"),input_values_separator:c.data("inputValuesSeparator"),disable:c.data("disable")};c.values=c.values&&c.values.split(",");for(e in c)c.hasOwnProperty(e)&&(c[e]||0===c[e]||delete c[e]);a&&(a=a.split(c.input_values_separator||b.input_values_separator||";"),a[0]&&a[0]==+a[0]&&(a[0]=+a[0]),a[1]&&a[1]==+a[1]&&(a[1]=+a[1]),b&&b.values&&b.values.length?(d.from=a[0]&&b.values.indexOf(a[0]),d.to=
|
||||
a[1]&&b.values.indexOf(a[1])):(d.from=a[0]&&+a[0],d.to=a[1]&&+a[1]));g.extend(d,b);g.extend(d,c);this.options=d;this.validate();this.result={input:this.$cache.input,slider:null,min:this.options.min,max:this.options.max,from:this.options.from,from_percent:0,from_value:null,to:this.options.to,to_percent:0,to_value:null};this.init()};r.prototype={init:function(a){this.no_diapason=!1;this.coords.p_step=this.convertToPercent(this.options.step,!0);this.target="base";this.toggleInput();this.append();this.setMinMax();
|
||||
a?(this.force_redraw=!0,this.calc(!0),this.callOnUpdate()):(this.force_redraw=!0,this.calc(!0),this.callOnStart());this.updateScene()},append:function(){this.$cache.input.before('<span class="irs js-irs-'+this.plugin_count+'"></span>');this.$cache.input.prop("readonly",!0);this.$cache.cont=this.$cache.input.prev();this.result.slider=this.$cache.cont;this.$cache.cont.html('<span class="irs"><span class="irs-line" tabindex="-1"><span class="irs-line-left"></span><span class="irs-line-mid"></span><span class="irs-line-right"></span></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span><span class="irs-bar"></span>');
|
||||
this.$cache.rs=this.$cache.cont.find(".irs");this.$cache.min=this.$cache.cont.find(".irs-min");this.$cache.max=this.$cache.cont.find(".irs-max");this.$cache.from=this.$cache.cont.find(".irs-from");this.$cache.to=this.$cache.cont.find(".irs-to");this.$cache.single=this.$cache.cont.find(".irs-single");this.$cache.bar=this.$cache.cont.find(".irs-bar");this.$cache.line=this.$cache.cont.find(".irs-line");this.$cache.grid=this.$cache.cont.find(".irs-grid");"single"===this.options.type?(this.$cache.cont.append('<span class="irs-bar-edge"></span><span class="irs-shadow shadow-single"></span><span class="irs-slider single"></span>'),
|
||||
this.$cache.edge=this.$cache.cont.find(".irs-bar-edge"),this.$cache.s_single=this.$cache.cont.find(".single"),this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.shad_single=this.$cache.cont.find(".shadow-single")):(this.$cache.cont.append('<span class="irs-shadow shadow-from"></span><span class="irs-shadow shadow-to"></span><span class="irs-slider from"></span><span class="irs-slider to"></span>'),this.$cache.s_from=this.$cache.cont.find(".from"),
|
||||
this.$cache.s_to=this.$cache.cont.find(".to"),this.$cache.shad_from=this.$cache.cont.find(".shadow-from"),this.$cache.shad_to=this.$cache.cont.find(".shadow-to"),this.setTopHandler());this.options.hide_from_to&&(this.$cache.from[0].style.display="none",this.$cache.to[0].style.display="none",this.$cache.single[0].style.display="none");this.appendGrid();this.options.disable?(this.appendDisableMask(),this.$cache.input[0].disabled=!0):(this.$cache.cont.removeClass("irs-disabled"),this.$cache.input[0].disabled=
|
||||
!1,this.bindEvents());this.options.drag_interval&&(this.$cache.bar[0].style.cursor="ew-resize")},setTopHandler:function(){var a=this.options.max,b=this.options.to;this.options.from>this.options.min&&b===a?this.$cache.s_from.addClass("type_last"):b<a&&this.$cache.s_to.addClass("type_last")},changeLevel:function(a){switch(a){case "single":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_single_fake);break;case "from":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake);
|
||||
this.$cache.s_from.addClass("state_hover");this.$cache.s_from.addClass("type_last");this.$cache.s_to.removeClass("type_last");break;case "to":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_to_fake);this.$cache.s_to.addClass("state_hover");this.$cache.s_to.addClass("type_last");this.$cache.s_from.removeClass("type_last");break;case "both":this.coords.p_gap_left=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.coords.p_gap_right=this.toFixed(this.coords.p_to_fake-
|
||||
this.coords.p_pointer),this.$cache.s_to.removeClass("type_last"),this.$cache.s_from.removeClass("type_last")}},appendDisableMask:function(){this.$cache.cont.append('<span class="irs-disable-mask"></span>');this.$cache.cont.addClass("irs-disabled")},remove:function(){this.$cache.cont.remove();this.$cache.cont=null;this.$cache.line.off("keydown.irs_"+this.plugin_count);this.$cache.body.off("touchmove.irs_"+this.plugin_count);this.$cache.body.off("mousemove.irs_"+this.plugin_count);this.$cache.win.off("touchend.irs_"+
|
||||
this.plugin_count);this.$cache.win.off("mouseup.irs_"+this.plugin_count);p&&(this.$cache.body.off("mouseup.irs_"+this.plugin_count),this.$cache.body.off("mouseleave.irs_"+this.plugin_count));this.$cache.grid_labels=[];this.coords.big=[];this.coords.big_w=[];this.coords.big_p=[];this.coords.big_x=[];cancelAnimationFrame(this.raf_id)},bindEvents:function(){if(!this.no_diapason){this.$cache.body.on("touchmove.irs_"+this.plugin_count,this.pointerMove.bind(this));this.$cache.body.on("mousemove.irs_"+this.plugin_count,
|
||||
this.pointerMove.bind(this));this.$cache.win.on("touchend.irs_"+this.plugin_count,this.pointerUp.bind(this));this.$cache.win.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this));this.$cache.line.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"));this.$cache.line.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"));this.options.drag_interval&&"double"===this.options.type?(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,
|
||||
"both")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"both"))):(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")));"single"===this.options.type?(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),
|
||||
this.$cache.shad_single.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.edge.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_single.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))):(this.$cache.single.on("touchstart.irs_"+
|
||||
this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),
|
||||
this.$cache.shad_from.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("mousedown.irs_"+
|
||||
this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")));if(this.options.keyboard)this.$cache.line.on("keydown.irs_"+this.plugin_count,this.key.bind(this,"keyboard"));p&&(this.$cache.body.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.body.on("mouseleave.irs_"+this.plugin_count,this.pointerUp.bind(this)))}},
|
||||
pointerMove:function(a){this.dragging&&(this.coords.x_pointer=(a.pageX||a.originalEvent.touches&&a.originalEvent.touches[0].pageX)-this.coords.x_gap,this.calc())},pointerUp:function(a){if(this.current_plugin===this.plugin_count&&this.is_active){this.is_active=!1;this.$cache.cont.find(".state_hover").removeClass("state_hover");this.force_redraw=!0;p&&g("*").prop("unselectable",!1);this.updateScene();this.restoreOriginalMinInterval();if(g.contains(this.$cache.cont[0],a.target)||this.dragging)this.is_finish=
|
||||
!0,this.callOnFinish();this.dragging=!1}},pointerDown:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&("both"===a&&this.setTempMinInterval(),a||(a=this.target),this.current_plugin=this.plugin_count,this.target=a,this.dragging=this.is_active=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=d-this.coords.x_gap,this.calcPointerPercent(),this.changeLevel(a),p&&g("*").prop("unselectable",!0),this.$cache.line.trigger("focus"),
|
||||
this.updateScene())},pointerClick:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&(this.current_plugin=this.plugin_count,this.target=a,this.is_click=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=+(d-this.coords.x_gap).toFixed(),this.force_redraw=!0,this.calc(),this.$cache.line.trigger("focus"))},key:function(a,b){if(!(this.current_plugin!==this.plugin_count||b.altKey||b.ctrlKey||b.shiftKey||b.metaKey)){switch(b.which){case 83:case 65:case 40:case 37:b.preventDefault();
|
||||
this.moveByKey(!1);break;case 87:case 68:case 38:case 39:b.preventDefault(),this.moveByKey(!0)}return!0}},moveByKey:function(a){var b=this.coords.p_pointer,b=a?b+this.options.keyboard_step:b-this.options.keyboard_step;this.coords.x_pointer=this.toFixed(this.coords.w_rs/100*b);this.is_key=!0;this.calc()},setMinMax:function(){this.options&&(this.options.hide_min_max?(this.$cache.min[0].style.display="none",this.$cache.max[0].style.display="none"):(this.options.values.length?(this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])),
|
||||
this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]))):(this.$cache.min.html(this.decorate(this._prettify(this.options.min),this.options.min)),this.$cache.max.html(this.decorate(this._prettify(this.options.max),this.options.max))),this.labels.w_min=this.$cache.min.outerWidth(!1),this.labels.w_max=this.$cache.max.outerWidth(!1)))},setTempMinInterval:function(){var a=this.result.to-this.result.from;null===this.old_min_interval&&(this.old_min_interval=this.options.min_interval);
|
||||
this.options.min_interval=a},restoreOriginalMinInterval:function(){null!==this.old_min_interval&&(this.options.min_interval=this.old_min_interval,this.old_min_interval=null)},calc:function(a){if(this.options){this.calc_count++;if(10===this.calc_count||a)this.calc_count=0,this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.calcHandlePercent();if(this.coords.w_rs){this.calcPointerPercent();a=this.getHandleX();"click"===this.target&&(this.coords.p_gap=this.coords.p_handle/2,a=this.getHandleX(),this.target=
|
||||
this.options.drag_interval?"both_one":this.chooseHandle(a));switch(this.target){case "base":var b=(this.options.max-this.options.min)/100;a=(this.result.from-this.options.min)/b;b=(this.result.to-this.options.min)/b;this.coords.p_single_real=this.toFixed(a);this.coords.p_from_real=this.toFixed(a);this.coords.p_to_real=this.toFixed(b);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,
|
||||
this.options.from_min,this.options.from_max);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);this.target=null;break;case "single":if(this.options.from_fixed)break;this.coords.p_single_real=this.convertToRealPercent(a);this.coords.p_single_real=
|
||||
this.calcWithStep(this.coords.p_single_real);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);break;case "from":if(this.options.from_fixed)break;this.coords.p_from_real=this.convertToRealPercent(a);this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real>this.coords.p_to_real&&(this.coords.p_from_real=this.coords.p_to_real);
|
||||
this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_real=this.checkMaxInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);break;case "to":if(this.options.to_fixed)break;this.coords.p_to_real=this.convertToRealPercent(a);this.coords.p_to_real=
|
||||
this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real<this.coords.p_from_real&&(this.coords.p_to_real=this.coords.p_from_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_real=this.checkMaxInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);
|
||||
break;case "both":if(this.options.from_fixed||this.options.to_fixed)break;a=this.toFixed(a+.1*this.coords.p_handle);this.coords.p_from_real=this.convertToRealPercent(a)-this.coords.p_gap_left;this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);
|
||||
this.coords.p_to_real=this.convertToRealPercent(a)+this.coords.p_gap_right;this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case "both_one":if(!this.options.from_fixed&&!this.options.to_fixed){var d=this.convertToRealPercent(a);
|
||||
a=this.result.to_percent-this.result.from_percent;var c=a/2,b=d-c,d=d+c;0>b&&(b=0,d=b+a);100<d&&(d=100,b=d-a);this.coords.p_from_real=this.calcWithStep(b);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_real=this.calcWithStep(d);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_fake=
|
||||
this.convertToFakePercent(this.coords.p_to_real)}}"single"===this.options.type?(this.coords.p_bar_x=this.coords.p_handle/2,this.coords.p_bar_w=this.coords.p_single_fake,this.result.from_percent=this.coords.p_single_real,this.result.from=this.convertToValue(this.coords.p_single_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from])):(this.coords.p_bar_x=this.toFixed(this.coords.p_from_fake+this.coords.p_handle/2),this.coords.p_bar_w=this.toFixed(this.coords.p_to_fake-
|
||||
this.coords.p_from_fake),this.result.from_percent=this.coords.p_from_real,this.result.from=this.convertToValue(this.coords.p_from_real),this.result.to_percent=this.coords.p_to_real,this.result.to=this.convertToValue(this.coords.p_to_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from],this.result.to_value=this.options.values[this.result.to]));this.calcMinMax();this.calcLabels()}}},calcPointerPercent:function(){this.coords.w_rs?(0>this.coords.x_pointer||isNaN(this.coords.x_pointer)?
|
||||
this.coords.x_pointer=0:this.coords.x_pointer>this.coords.w_rs&&(this.coords.x_pointer=this.coords.w_rs),this.coords.p_pointer=this.toFixed(this.coords.x_pointer/this.coords.w_rs*100)):this.coords.p_pointer=0},convertToRealPercent:function(a){return a/(100-this.coords.p_handle)*100},convertToFakePercent:function(a){return a/100*(100-this.coords.p_handle)},getHandleX:function(){var a=100-this.coords.p_handle,b=this.toFixed(this.coords.p_pointer-this.coords.p_gap);0>b?b=0:b>a&&(b=a);return b},calcHandlePercent:function(){this.coords.w_handle=
|
||||
"single"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1);this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100)},chooseHandle:function(a){return"single"===this.options.type?"single":a>=this.coords.p_from_real+(this.coords.p_to_real-this.coords.p_from_real)/2?this.options.to_fixed?"from":"to":this.options.from_fixed?"to":"from"},calcMinMax:function(){this.coords.w_rs&&(this.labels.p_min=this.labels.w_min/this.coords.w_rs*100,this.labels.p_max=
|
||||
this.labels.w_max/this.coords.w_rs*100)},calcLabels:function(){this.coords.w_rs&&!this.options.hide_from_to&&("single"===this.options.type?(this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=this.coords.p_single_fake+this.coords.p_handle/2-this.labels.p_single_fake/2):(this.labels.w_from=this.$cache.from.outerWidth(!1),this.labels.p_from_fake=this.labels.w_from/this.coords.w_rs*100,this.labels.p_from_left=
|
||||
this.coords.p_from_fake+this.coords.p_handle/2-this.labels.p_from_fake/2,this.labels.p_from_left=this.toFixed(this.labels.p_from_left),this.labels.p_from_left=this.checkEdges(this.labels.p_from_left,this.labels.p_from_fake),this.labels.w_to=this.$cache.to.outerWidth(!1),this.labels.p_to_fake=this.labels.w_to/this.coords.w_rs*100,this.labels.p_to_left=this.coords.p_to_fake+this.coords.p_handle/2-this.labels.p_to_fake/2,this.labels.p_to_left=this.toFixed(this.labels.p_to_left),this.labels.p_to_left=
|
||||
this.checkEdges(this.labels.p_to_left,this.labels.p_to_fake),this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=(this.labels.p_from_left+this.labels.p_to_left+this.labels.p_to_fake)/2-this.labels.p_single_fake/2,this.labels.p_single_left=this.toFixed(this.labels.p_single_left)),this.labels.p_single_left=this.checkEdges(this.labels.p_single_left,this.labels.p_single_fake))},updateScene:function(){this.raf_id&&
|
||||
(cancelAnimationFrame(this.raf_id),this.raf_id=null);clearTimeout(this.update_tm);this.update_tm=null;this.options&&(this.drawHandles(),this.is_active?this.raf_id=requestAnimationFrame(this.updateScene.bind(this)):this.update_tm=setTimeout(this.updateScene.bind(this),300))},drawHandles:function(){this.coords.w_rs=this.$cache.rs.outerWidth(!1);if(this.coords.w_rs){this.coords.w_rs!==this.coords.w_rs_old&&(this.target="base",this.is_resize=!0);if(this.coords.w_rs!==this.coords.w_rs_old||this.force_redraw)this.setMinMax(),
|
||||
this.calc(!0),this.drawLabels(),this.options.grid&&(this.calcGridMargin(),this.calcGridLabels()),this.force_redraw=!0,this.coords.w_rs_old=this.coords.w_rs,this.drawShadow();if(this.coords.w_rs&&(this.dragging||this.force_redraw||this.is_key)){if(this.old_from!==this.result.from||this.old_to!==this.result.to||this.force_redraw||this.is_key){this.drawLabels();this.$cache.bar[0].style.left=this.coords.p_bar_x+"%";this.$cache.bar[0].style.width=this.coords.p_bar_w+"%";if("single"===this.options.type)this.$cache.s_single[0].style.left=
|
||||
this.coords.p_single_fake+"%",this.$cache.single[0].style.left=this.labels.p_single_left+"%",this.options.values.length?this.$cache.input.prop("value",this.result.from_value):this.$cache.input.prop("value",this.result.from),this.$cache.input.data("from",this.result.from);else{this.$cache.s_from[0].style.left=this.coords.p_from_fake+"%";this.$cache.s_to[0].style.left=this.coords.p_to_fake+"%";if(this.old_from!==this.result.from||this.force_redraw)this.$cache.from[0].style.left=this.labels.p_from_left+
|
||||
"%";if(this.old_to!==this.result.to||this.force_redraw)this.$cache.to[0].style.left=this.labels.p_to_left+"%";this.$cache.single[0].style.left=this.labels.p_single_left+"%";this.options.values.length?this.$cache.input.prop("value",this.result.from_value+this.options.input_values_separator+this.result.to_value):this.$cache.input.prop("value",this.result.from+this.options.input_values_separator+this.result.to);this.$cache.input.data("from",this.result.from);this.$cache.input.data("to",this.result.to)}this.old_from===
|
||||
this.result.from&&this.old_to===this.result.to||this.is_start||this.$cache.input.trigger("change");this.old_from=this.result.from;this.old_to=this.result.to;this.is_resize||this.is_update||this.is_start||this.is_finish||this.callOnChange();if(this.is_key||this.is_click)this.is_click=this.is_key=!1,this.callOnFinish();this.is_finish=this.is_resize=this.is_update=!1}this.force_redraw=this.is_click=this.is_key=this.is_start=!1}}},drawLabels:function(){if(this.options){var a=this.options.values.length,
|
||||
b=this.options.p_values,d;if(!this.options.hide_from_to)if("single"===this.options.type)a=a?this.decorate(b[this.result.from]):this.decorate(this._prettify(this.result.from),this.result.from),this.$cache.single.html(a),this.calcLabels(),this.$cache.min[0].style.visibility=this.labels.p_single_left<this.labels.p_min+1?"hidden":"visible",this.$cache.max[0].style.visibility=this.labels.p_single_left+this.labels.p_single_fake>100-this.labels.p_max-1?"hidden":"visible";else{a?(this.options.decorate_both?
|
||||
(a=this.decorate(b[this.result.from]),a+=this.options.values_separator,a+=this.decorate(b[this.result.to])):a=this.decorate(b[this.result.from]+this.options.values_separator+b[this.result.to]),d=this.decorate(b[this.result.from]),b=this.decorate(b[this.result.to])):(this.options.decorate_both?(a=this.decorate(this._prettify(this.result.from),this.result.from),a+=this.options.values_separator,a+=this.decorate(this._prettify(this.result.to),this.result.to)):a=this.decorate(this._prettify(this.result.from)+
|
||||
this.options.values_separator+this._prettify(this.result.to),this.result.to),d=this.decorate(this._prettify(this.result.from),this.result.from),b=this.decorate(this._prettify(this.result.to),this.result.to));this.$cache.single.html(a);this.$cache.from.html(d);this.$cache.to.html(b);this.calcLabels();b=Math.min(this.labels.p_single_left,this.labels.p_from_left);a=this.labels.p_single_left+this.labels.p_single_fake;d=this.labels.p_to_left+this.labels.p_to_fake;var c=Math.max(a,d);this.labels.p_from_left+
|
||||
this.labels.p_from_fake>=this.labels.p_to_left?(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",this.result.from===this.result.to?("from"===this.target?this.$cache.from[0].style.visibility="visible":"to"===this.target?this.$cache.to[0].style.visibility="visible":this.target||(this.$cache.from[0].style.visibility="visible"),this.$cache.single[0].style.visibility="hidden",c=d):(this.$cache.from[0].style.visibility=
|
||||
"hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",c=Math.max(a,d))):(this.$cache.from[0].style.visibility="visible",this.$cache.to[0].style.visibility="visible",this.$cache.single[0].style.visibility="hidden");this.$cache.min[0].style.visibility=b<this.labels.p_min+1?"hidden":"visible";this.$cache.max[0].style.visibility=c>100-this.labels.p_max-1?"hidden":"visible"}}},drawShadow:function(){var a=this.options,b=this.$cache,d="number"===typeof a.from_min&&
|
||||
!isNaN(a.from_min),c="number"===typeof a.from_max&&!isNaN(a.from_max),e="number"===typeof a.to_min&&!isNaN(a.to_min),f="number"===typeof a.to_max&&!isNaN(a.to_max);"single"===a.type?a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_single[0].style.display="block",b.shad_single[0].style.left=d+"%",b.shad_single[0].style.width=
|
||||
c+"%"):b.shad_single[0].style.display="none":(a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_from[0].style.display="block",b.shad_from[0].style.left=d+"%",b.shad_from[0].style.width=c+"%"):b.shad_from[0].style.display="none",a.to_shadow&&(e||f)?(e=this.convertToPercent(e?a.to_min:a.min),a=this.convertToPercent(f?
|
||||
a.to_max:a.max)-e,e=this.toFixed(e-this.coords.p_handle/100*e),a=this.toFixed(a-this.coords.p_handle/100*a),e+=this.coords.p_handle/2,b.shad_to[0].style.display="block",b.shad_to[0].style.left=e+"%",b.shad_to[0].style.width=a+"%"):b.shad_to[0].style.display="none")},callOnStart:function(){if(this.options.onStart&&"function"===typeof this.options.onStart)this.options.onStart(this.result)},callOnChange:function(){if(this.options.onChange&&"function"===typeof this.options.onChange)this.options.onChange(this.result)},
|
||||
callOnFinish:function(){if(this.options.onFinish&&"function"===typeof this.options.onFinish)this.options.onFinish(this.result)},callOnUpdate:function(){if(this.options.onUpdate&&"function"===typeof this.options.onUpdate)this.options.onUpdate(this.result)},toggleInput:function(){this.$cache.input.toggleClass("irs-hidden-input")},convertToPercent:function(a,b){var d=this.options.max-this.options.min;return d?this.toFixed((b?a:a-this.options.min)/(d/100)):(this.no_diapason=!0,0)},convertToValue:function(a){var b=
|
||||
this.options.min,d=this.options.max,c=b.toString().split(".")[1],e=d.toString().split(".")[1],f,l,g=0,k=0;if(0===a)return this.options.min;if(100===a)return this.options.max;c&&(g=f=c.length);e&&(g=l=e.length);f&&l&&(g=f>=l?f:l);0>b&&(k=Math.abs(b),b=+(b+k).toFixed(g),d=+(d+k).toFixed(g));a=(d-b)/100*a+b;(b=this.options.step.toString().split(".")[1])?a=+a.toFixed(b.length):(a/=this.options.step,a*=this.options.step,a=+a.toFixed(0));k&&(a-=k);k=b?+a.toFixed(b.length):this.toFixed(a);k<this.options.min?
|
||||
k=this.options.min:k>this.options.max&&(k=this.options.max);return k},calcWithStep:function(a){var b=Math.round(a/this.coords.p_step)*this.coords.p_step;100<b&&(b=100);100===a&&(b=100);return this.toFixed(b)},checkMinInterval:function(a,b,d){var c=this.options;if(!c.min_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);"from"===d?b-a<c.min_interval&&(a=b-c.min_interval):a-b<c.min_interval&&(a=b+c.min_interval);return this.convertToPercent(a)},checkMaxInterval:function(a,b,d){var c=
|
||||
this.options;if(!c.max_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);"from"===d?b-a>c.max_interval&&(a=b-c.max_interval):a-b>c.max_interval&&(a=b+c.max_interval);return this.convertToPercent(a)},checkDiapason:function(a,b,d){a=this.convertToValue(a);var c=this.options;"number"!==typeof b&&(b=c.min);"number"!==typeof d&&(d=c.max);a<b&&(a=b);a>d&&(a=d);return this.convertToPercent(a)},toFixed:function(a){a=a.toFixed(9);return+a},_prettify:function(a){return this.options.prettify_enabled?
|
||||
this.options.prettify&&"function"===typeof this.options.prettify?this.options.prettify(a):this.prettify(a):a},prettify:function(a){return a.toString().replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1"+this.options.prettify_separator)},checkEdges:function(a,b){if(!this.options.force_edges)return this.toFixed(a);0>a?a=0:a>100-b&&(a=100-b);return this.toFixed(a)},validate:function(){var a=this.options,b=this.result,d=a.values,c=d.length,e,f;"string"===typeof a.min&&(a.min=+a.min);"string"===typeof a.max&&
|
||||
(a.max=+a.max);"string"===typeof a.from&&(a.from=+a.from);"string"===typeof a.to&&(a.to=+a.to);"string"===typeof a.step&&(a.step=+a.step);"string"===typeof a.from_min&&(a.from_min=+a.from_min);"string"===typeof a.from_max&&(a.from_max=+a.from_max);"string"===typeof a.to_min&&(a.to_min=+a.to_min);"string"===typeof a.to_max&&(a.to_max=+a.to_max);"string"===typeof a.keyboard_step&&(a.keyboard_step=+a.keyboard_step);"string"===typeof a.grid_num&&(a.grid_num=+a.grid_num);a.max<a.min&&(a.max=a.min);if(c)for(a.p_values=
|
||||
[],a.min=0,a.max=c-1,a.step=1,a.grid_num=a.max,a.grid_snap=!0,f=0;f<c;f++)e=+d[f],isNaN(e)?e=d[f]:(d[f]=e,e=this._prettify(e)),a.p_values.push(e);if("number"!==typeof a.from||isNaN(a.from))a.from=a.min;if("number"!==typeof a.to||isNaN(a.from))a.to=a.max;if("single"===a.type)a.from<a.min&&(a.from=a.min),a.from>a.max&&(a.from=a.max);else{if(a.from<a.min||a.from>a.max)a.from=a.min;if(a.to>a.max||a.to<a.min)a.to=a.max;a.from>a.to&&(a.from=a.to)}if("number"!==typeof a.step||isNaN(a.step)||!a.step||0>a.step)a.step=
|
||||
1;if("number"!==typeof a.keyboard_step||isNaN(a.keyboard_step)||!a.keyboard_step||0>a.keyboard_step)a.keyboard_step=5;"number"===typeof a.from_min&&a.from<a.from_min&&(a.from=a.from_min);"number"===typeof a.from_max&&a.from>a.from_max&&(a.from=a.from_max);"number"===typeof a.to_min&&a.to<a.to_min&&(a.to=a.to_min);"number"===typeof a.to_max&&a.from>a.to_max&&(a.to=a.to_max);if(b){b.min!==a.min&&(b.min=a.min);b.max!==a.max&&(b.max=a.max);if(b.from<b.min||b.from>b.max)b.from=a.from;if(b.to<b.min||b.to>
|
||||
b.max)b.to=a.to}if("number"!==typeof a.min_interval||isNaN(a.min_interval)||!a.min_interval||0>a.min_interval)a.min_interval=0;if("number"!==typeof a.max_interval||isNaN(a.max_interval)||!a.max_interval||0>a.max_interval)a.max_interval=0;a.min_interval&&a.min_interval>a.max-a.min&&(a.min_interval=a.max-a.min);a.max_interval&&a.max_interval>a.max-a.min&&(a.max_interval=a.max-a.min)},decorate:function(a,b){var d="",c=this.options;c.prefix&&(d+=c.prefix);d+=a;c.max_postfix&&(c.values.length&&a===c.p_values[c.max]?
|
||||
(d+=c.max_postfix,c.postfix&&(d+=" ")):b===c.max&&(d+=c.max_postfix,c.postfix&&(d+=" ")));c.postfix&&(d+=c.postfix);return d},updateFrom:function(){this.result.from=this.options.from;this.result.from_percent=this.convertToPercent(this.result.from);this.options.values&&(this.result.from_value=this.options.values[this.result.from])},updateTo:function(){this.result.to=this.options.to;this.result.to_percent=this.convertToPercent(this.result.to);this.options.values&&(this.result.to_value=this.options.values[this.result.to])},
|
||||
updateResult:function(){this.result.min=this.options.min;this.result.max=this.options.max;this.updateFrom();this.updateTo()},appendGrid:function(){if(this.options.grid){var a=this.options,b,d;b=a.max-a.min;var c=a.grid_num,e=0,f=0,g=4,h,k,m=0,n="";this.calcGridMargin();a.grid_snap?(c=b/a.step,e=this.toFixed(a.step/(b/100))):e=this.toFixed(100/c);4<c&&(g=3);7<c&&(g=2);14<c&&(g=1);28<c&&(g=0);for(b=0;b<c+1;b++){h=g;f=this.toFixed(e*b);100<f&&(f=100,h-=2,0>h&&(h=0));this.coords.big[b]=f;k=(f-e*(b-1))/
|
||||
(h+1);for(d=1;d<=h&&0!==f;d++)m=this.toFixed(f-k*d),n+='<span class="irs-grid-pol small" style="left: '+m+'%"></span>';n+='<span class="irs-grid-pol" style="left: '+f+'%"></span>';m=this.convertToValue(f);m=a.values.length?a.p_values[m]:this._prettify(m);n+='<span class="irs-grid-text js-grid-text-'+b+'" style="left: '+f+'%">'+m+"</span>"}this.coords.big_num=Math.ceil(c+1);this.$cache.cont.addClass("irs-with-grid");this.$cache.grid.html(n);this.cacheGridLabels()}},cacheGridLabels:function(){var a,
|
||||
b,d=this.coords.big_num;for(b=0;b<d;b++)a=this.$cache.grid.find(".js-grid-text-"+b),this.$cache.grid_labels.push(a);this.calcGridLabels()},calcGridLabels:function(){var a,b;b=[];var d=[],c=this.coords.big_num;for(a=0;a<c;a++)this.coords.big_w[a]=this.$cache.grid_labels[a].outerWidth(!1),this.coords.big_p[a]=this.toFixed(this.coords.big_w[a]/this.coords.w_rs*100),this.coords.big_x[a]=this.toFixed(this.coords.big_p[a]/2),b[a]=this.toFixed(this.coords.big[a]-this.coords.big_x[a]),d[a]=this.toFixed(b[a]+
|
||||
this.coords.big_p[a]);this.options.force_edges&&(b[0]<-this.coords.grid_gap&&(b[0]=-this.coords.grid_gap,d[0]=this.toFixed(b[0]+this.coords.big_p[0]),this.coords.big_x[0]=this.coords.grid_gap),d[c-1]>100+this.coords.grid_gap&&(d[c-1]=100+this.coords.grid_gap,b[c-1]=this.toFixed(d[c-1]-this.coords.big_p[c-1]),this.coords.big_x[c-1]=this.toFixed(this.coords.big_p[c-1]-this.coords.grid_gap)));this.calcGridCollision(2,b,d);this.calcGridCollision(4,b,d);for(a=0;a<c;a++)b=this.$cache.grid_labels[a][0],
|
||||
b.style.marginLeft=-this.coords.big_x[a]+"%"},calcGridCollision:function(a,b,d){var c,e,f,g=this.coords.big_num;for(c=0;c<g;c+=a){e=c+a/2;if(e>=g)break;f=this.$cache.grid_labels[e][0];f.style.visibility=d[c]<=b[e]?"visible":"hidden"}},calcGridMargin:function(){this.options.grid_margin&&(this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.coords.w_rs&&(this.coords.w_handle="single"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1),this.coords.p_handle=this.toFixed(this.coords.w_handle/
|
||||
this.coords.w_rs*100),this.coords.grid_gap=this.toFixed(this.coords.p_handle/2-.1),this.$cache.grid[0].style.width=this.toFixed(100-this.coords.p_handle)+"%",this.$cache.grid[0].style.left=this.coords.grid_gap+"%"))},update:function(a){this.input&&(this.is_update=!0,this.options.from=this.result.from,this.options.to=this.result.to,this.options=g.extend(this.options,a),this.validate(),this.updateResult(a),this.toggleInput(),this.remove(),this.init(!0))},reset:function(){this.input&&(this.updateResult(),
|
||||
this.update())},destroy:function(){this.input&&(this.toggleInput(),this.$cache.input.prop("readonly",!1),g.data(this.input,"ionRangeSlider",null),this.remove(),this.options=this.input=null)}};g.fn.ionRangeSlider=function(a){return this.each(function(){g.data(this,"ionRangeSlider")||g.data(this,"ionRangeSlider",new r(this,a,u++))})};(function(){for(var a=0,b=["ms","moz","webkit","o"],d=0;d<b.length&&!h.requestAnimationFrame;++d)h.requestAnimationFrame=h[b[d]+"RequestAnimationFrame"],h.cancelAnimationFrame=
|
||||
h[b[d]+"CancelAnimationFrame"]||h[b[d]+"CancelRequestAnimationFrame"];h.requestAnimationFrame||(h.requestAnimationFrame=function(b,d){var f=(new Date).getTime(),g=Math.max(0,16-(f-a)),p=h.setTimeout(function(){b(f+g)},g);a=f+g;return p});h.cancelAnimationFrame||(h.cancelAnimationFrame=function(a){clearTimeout(a)})})()});
|
||||
62
vendors/ion.rangeSlider/package.json
vendored
Normal file
62
vendors/ion.rangeSlider/package.json
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"name": "ion-rangeslider",
|
||||
"version": "2.1.4",
|
||||
"description": "Cool, comfortable and easily customizable range slider with many options and skin support",
|
||||
"homepage": "http://ionden.com/a/plugins/ion.rangeSlider/en.html",
|
||||
"author": {
|
||||
"name": "Denis Ineshin (IonDen)",
|
||||
"email": "ionden.tech@gmail.com",
|
||||
"url": "https://github.com/IonDen"
|
||||
},
|
||||
"keywords": [
|
||||
"jquery-plugin",
|
||||
"ecosystem:jquery",
|
||||
"jquery",
|
||||
"form",
|
||||
"input",
|
||||
"range",
|
||||
"slider",
|
||||
"rangeslider",
|
||||
"interface",
|
||||
"diapason",
|
||||
"ui",
|
||||
"noui",
|
||||
"skins"
|
||||
],
|
||||
"main": "./js/ion.rangeSlider.js",
|
||||
"directories": {
|
||||
"lib": "js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/IonDen/ion.rangeSlider.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/IonDen/ion.rangeSlider/issues"
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jquery": ">=1.8"
|
||||
},
|
||||
"ignore": [
|
||||
".idea",
|
||||
"PSD",
|
||||
"bower.json",
|
||||
"ion-rangeSlider.jquery.json",
|
||||
"readme.ru.md"
|
||||
],
|
||||
|
||||
"spm": {
|
||||
"main": "js/ion.rangeSlider.js",
|
||||
"dependencies": {
|
||||
"jquery": "1.11.2"
|
||||
},
|
||||
"ignore": [
|
||||
".idea",
|
||||
"PSD",
|
||||
"bower.json",
|
||||
"ion-rangeSlider.jquery.json",
|
||||
"readme.ru.md"
|
||||
]
|
||||
}
|
||||
}
|
||||
490
vendors/ion.rangeSlider/readme.md
vendored
Normal file
490
vendors/ion.rangeSlider/readme.md
vendored
Normal file
@@ -0,0 +1,490 @@
|
||||

|
||||
|
||||
> English description | <a href="readme.ru.md">Описание на русском</a>
|
||||
|
||||
Ion.RangeSlider. Is an easy, flexible and responsive range slider with tons of options.
|
||||
|
||||
***
|
||||
|
||||
* Version: 2.1.4
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/en.html">Project page and demos</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/ion.rangeSlider-2.1.4.zip">Download ZIP</a>
|
||||
|
||||
## Description
|
||||
* Ion.RangeSlider — cool, comfortable, responsive and easily customizable range slider
|
||||
* Supports events and public methods, has flexible settings, can be completely altered with CSS
|
||||
* Cross-browser: Google Chrome, Mozilla Firefox 3.6+, Opera 12+, Safari 5+, Internet Explorer 8+
|
||||
* Ion.RangeSlider supports touch-devices (iPhone, iPad, Nexus, etc.).
|
||||
* Ion.RangeSlider freely distributed under terms of <a href="http://ionden.com/a/plugins/licence.html" target="_blank">MIT licence</a>.
|
||||
* With this plugin you will be able to build beautiful range sliders, like this:
|
||||
|
||||

|
||||
|
||||
## Key features
|
||||
* Skin support. (5 skins included and PSD for skin creation)
|
||||
* Any number of sliders at one page without conflicts and big performance problems
|
||||
* Two slider types single (1 slider) and double (2 sliders)
|
||||
* Support of negative and fractional values
|
||||
* Ability to set custom step and snap grid to step
|
||||
* Support of custom values diapason
|
||||
* Customisable grid of values
|
||||
* Ability to disable UI elements (min and max, current value, grid)
|
||||
* Postfixes and prefixes for your numbers ($20, 20 € etc.)
|
||||
* Additional postfix for maximum value (eg. $0 — $100<b>+</b>)
|
||||
* Ability to prettify large numbers (eg. 10000000 -> 10 000 000 or 10.000.000)
|
||||
* Slider writes its value right into input value field. This makes it easy to use in any html form
|
||||
* Any slider value can be set through input data-attribute (eg. data-min="10")
|
||||
* Slider supports disable param. You can set it true to make slider inactive
|
||||
* Slider supports external methods (update, reset and remove) to control it after creation
|
||||
* For advanced users slider has callbacks (onStart, onChange, onFinish, onUpdate). Slider pastes all its params to callback first argument as object
|
||||
* Slider supports date and time
|
||||
|
||||
|
||||
## Demos
|
||||
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo.html" class="switch__item">Basic demo</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_advanced.html" class="switch__item">Advanced demo</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_interactions.html" class="switch__item">Interactions demo</a>
|
||||
|
||||
|
||||
## Dependencies
|
||||
|
||||
* <a href="http://jquery.com/" target="_blank">jQuery 1.8.x+</a>
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
Add the following libraries to the page:
|
||||
* jQuery
|
||||
* ion.rangeSlider.min.js
|
||||
|
||||
Add the following stylesheets to the page:
|
||||
* <a href="http://necolas.github.io/normalize.css/" target="_blank">normalize.css</a> (optional)
|
||||
* ion.rangeSlider.css
|
||||
|
||||
Plus, a skin for the slider. 5 skins are included. Choose one:
|
||||
* ion.rangeSlider.skinFlat.css + sprite-skin-flat.png
|
||||
* ion.rangeSlider.skinHTML5.css + no images
|
||||
* ion.rangeSlider.skinModern.css + sprite-skin-modern.png
|
||||
* ion.rangeSlider.skinNice.css + sprite-skin-nice.png
|
||||
* ion.rangeSlider.skinSimple.css + sprite-skin-simple.png
|
||||
|
||||
Or use the included PSD file and design a custom skin.
|
||||
|
||||
|
||||
## Install with bower
|
||||
|
||||
* bower install ionrangeslider
|
||||
|
||||
|
||||
## Install with npm
|
||||
|
||||
* npm install ion-rangeslider
|
||||
|
||||
|
||||
## Initialisation
|
||||
|
||||
The slider overrides a native text <code>input</code> element.
|
||||
```html
|
||||
<input type="text" id="example_id" name="example_name" value="" />
|
||||
```
|
||||
|
||||
To initialise the slider, call ionRangeSlider on the element:
|
||||
```javascript
|
||||
$("#example_id").ionRangeSlider();
|
||||
```
|
||||
|
||||
|
||||
## Demo for juniors
|
||||
|
||||
If your are new in web development and you are not sure how to correctly install the plugin to your web-page, please download
|
||||
<a href="http://ionden.com/a/plugins/ion.rangeSlider/ionRangeSliderDemo.zip" class="button">this demo example</a>
|
||||
|
||||
|
||||
## Migrating from 1.x to 2.x
|
||||
* All params (except functions) are lowercase now: <b>param_name</b>, not paramName
|
||||
* Same param names was changed: hasGrid → <b>grid</b>, onLoad → <b>onStart</b>
|
||||
* Callbacks data object format was changed. Example: fromNumber → <b>from</b>
|
||||
* Slider now writes it's result to value attribute and also to data-from and data-to attributes
|
||||
|
||||
|
||||
## <a href="http://jsfiddle.net/IonDen/qv6yrjrv/" target="_blank">Experiments playground</a>
|
||||
|
||||
|
||||
## Settings
|
||||
|
||||
<table class="options">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Option</th>
|
||||
<th>Defaults</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="options__step">
|
||||
<td>type<div><sup>data-type</sup></div></td>
|
||||
<td>"single"</td>
|
||||
<td>string</td>
|
||||
<td>Choose slider type, could be <code>single</code> - for one handle, or <code>double</code> for two handles</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>min<div><sup>data-min</sup></div></td>
|
||||
<td>10</td>
|
||||
<td>number</td>
|
||||
<td>Set slider minimum value</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>max<div><sup>data-max</sup></div></td>
|
||||
<td>100</td>
|
||||
<td>number</td>
|
||||
<td>Set slider maximum value</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>from<div><sup>data-from</sup></div></td>
|
||||
<td>min</td>
|
||||
<td>number</td>
|
||||
<td>Set start position for left handle (or for single handle)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>to<div><sup>data-to</sup></div></td>
|
||||
<td>max</td>
|
||||
<td>number</td>
|
||||
<td>Set start position for right handle</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>step<div><sup>data-step</sup></div></td>
|
||||
<td>1</td>
|
||||
<td>number</td>
|
||||
<td>Set sliders step. Always > 0. Could be fractional.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>min_interval<div><sup>data-min-interval</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>number</td>
|
||||
<td>Set minimum diapason between sliders. Only in "double" type</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>max_interval<div><sup>data-max-interval</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>number</td>
|
||||
<td>Set maximum diapason between sliders. Only in "double" type</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>drag_interval<div><sup>data-drag-interval</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Allow user to drag whole range. Only in "double" type (beta)</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__step">
|
||||
<td>values<div><sup>data-values</sup></div></td>
|
||||
<td>[]</td>
|
||||
<td>array</td>
|
||||
<td>Set up your own array of possible slider values. They could be numbers or strings. If the values array is set up, min, max and step param, are no longer can be changed.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new">
|
||||
<td>from_fixed<div><sup>data-from-fixed</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Fix position of left (or single) handle.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>from_min<div><sup>data-from-min</sup></div></td>
|
||||
<td>min</td>
|
||||
<td>number</td>
|
||||
<td>Set minimum limit for left handle.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>from_max<div><sup>data-from-max</sup></div></td>
|
||||
<td>max</td>
|
||||
<td>number</td>
|
||||
<td>Set the maximum limit for left handle</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>from_shadow<div><sup>data-from-shadow</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Highlight the limits for left handle</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new">
|
||||
<td>to_fixed<div><sup>data-to-fixed</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Fix position of right handle.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>to_min<div><sup>data-to-min</sup></div></td>
|
||||
<td>min</td>
|
||||
<td>number</td>
|
||||
<td>Set the minimum limit for right handle</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>to_max<div><sup>data-to-max</sup></div></td>
|
||||
<td>max</td>
|
||||
<td>number</td>
|
||||
<td>Set the maximum limit for right handle</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>to_shadow<div><sup>data-to-shadow</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Highlight the limits for right handle</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>prettify_enabled<div><sup>data-prettify-enabled</sup></div></td>
|
||||
<td>true</td>
|
||||
<td>boolean</td>
|
||||
<td>Improve readability of long numbers. 10000000 → 10 000 000</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>prettify_separator<div><sup>data-prettify-separator</sup></div></td>
|
||||
<td>" "</td>
|
||||
<td>string</td>
|
||||
<td>Set up your own separator for long numbers. 10 000, 10.000, 10-000, etc.</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>prettify<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Set up your own prettify function. Can be anything. For example, you can set up unix time as slider values and than transform them to cool looking dates.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new options__step">
|
||||
<td>force_edges<div><sup>data-force-edges</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Slider will be always inside it's container.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new">
|
||||
<td>keyboard<div><sup>data-keyboard</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Activates keyboard controls. Move left: ←, ↓, A, S. Move right: →, ↑, W, D.</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>keyboard_step<div><sup>data-keyboard-step</sup></div></td>
|
||||
<td>5</td>
|
||||
<td>number</td>
|
||||
<td>Movement step, than controling from keyboard. In percents.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>grid<div><sup>data-grid</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Enables grid of values.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>grid_margin<div><sup>data-grid-margin</sup></div></td>
|
||||
<td>true</td>
|
||||
<td>boolean</td>
|
||||
<td>Set left and right grid borders.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>grid_num<div><sup>data-grid-num</sup></div></td>
|
||||
<td>4</td>
|
||||
<td>number</td>
|
||||
<td>Number of grid units.</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>grid_snap<div><sup>data-grid-snap</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Snap grid to sliders step (step param). If activated, grid_num will not be used.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>hide_min_max<div><sup>data-hide-min-max</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Hides min and max labels</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>hide_from_to<div><sup>data-hide-from-to</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Hide from and to lables</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>prefix<div><sup>data-prefix</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>string</td>
|
||||
<td>Set prefix for values. Will be set up right before the number: $100</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>postfix<div><sup>data-postfix</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>string</td>
|
||||
<td>Set postfix for values. Will be set up right after the number: 100k</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>max_postfix<div><sup>data-max-postfix</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>string</td>
|
||||
<td>Special postfix, used only for maximum value. Will be showed after handle will reach maximum right position. For example 0 — 100+</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>decorate_both<div><sup>data-decorate-both</sup></div></td>
|
||||
<td>true</td>
|
||||
<td>boolean</td>
|
||||
<td>Used for "double" type and only if prefix or postfix was set up. Determine how to decorate close values. For example: $10k — $100k or $10 — 100k</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>values_separator<div><sup>data-values-separator</sup></div></td>
|
||||
<td>" — "</td>
|
||||
<td>string</td>
|
||||
<td>Set your own separator for close values. Used for "double" type. Default: 10 — 100. Or you may set: 10 to 100, 10 + 100, 10 → 100 etc.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__step">
|
||||
<td>input_values_separator<div><sup>data-input-values-separator</sup></div></td>
|
||||
<td>" ; "</td>
|
||||
<td>string</td>
|
||||
<td>Separator for double values in input value property.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__step">
|
||||
<td>disable<div><sup>data-disable</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Locks slider and makes it inactive.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>onStart<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Callback. Is called on slider start.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>onChange<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Callback. IS called on each values change.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>onFinish<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Callback. Is called than user releases handle.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>onUpdate<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Callback. Is called than slider is modified by external methods <code>update</code> or <code>reset</code>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
## Description of data passed to callbacks (onChange and etc.)
|
||||
Result is object type and passed to callback as first argument:
|
||||
```javascript
|
||||
Obj: {
|
||||
"input": object, // jQuery-link to input
|
||||
"slider": object, // jQuery-link to sliders container
|
||||
"min": 0, // MIN value
|
||||
"max": 1000, // MAX values
|
||||
"from": 100, // FROM value (left or single handle)
|
||||
"from_percent": 10, // FROM value in percents
|
||||
"from_value": 0, // FROM index in values array (if used)
|
||||
"to": 900, // TO value (right handle in double type)
|
||||
"to_percent": 90, // TO value in percents
|
||||
"to_value": 0 // TO index in values array (if used)
|
||||
}
|
||||
```
|
||||
|
||||
## Creating slider (all params)
|
||||
An example of a customised slider:
|
||||
```javascript
|
||||
$("#example").ionRangeSlider({
|
||||
min: 0,
|
||||
max: 10000,
|
||||
from: 1000,
|
||||
to: 9000,
|
||||
type: 'double',
|
||||
prefix: "$",
|
||||
grid: true,
|
||||
grid_num: 10
|
||||
});
|
||||
```
|
||||
|
||||
You can also initialise slider with <code>data-*</code> attributes of input tag:
|
||||
```html
|
||||
data-min="0"
|
||||
data-max="10000"
|
||||
data-from="1000"
|
||||
data-to="9000"
|
||||
data-type="double"
|
||||
data-prefix="$"
|
||||
data-grid="true"
|
||||
data-grid-num="10"
|
||||
```
|
||||
|
||||
## Public methods
|
||||
|
||||
To use public methods, at first you must save slider instance to variable:
|
||||
```javascript
|
||||
// Launch plugin
|
||||
$("#range").ionRangeSlider({
|
||||
type: "double",
|
||||
min: 0,
|
||||
max: 1000,
|
||||
from: 200,
|
||||
to: 500,
|
||||
grid: true
|
||||
});
|
||||
|
||||
// Saving it's instance to var
|
||||
var slider = $("#range").data("ionRangeSlider");
|
||||
|
||||
// Fire public method
|
||||
slider.reset();
|
||||
```
|
||||
|
||||
There are 3 public methods:
|
||||
```javascript
|
||||
// UPDATE - updates slider to any new values
|
||||
slider.update({
|
||||
from: 300,
|
||||
to: 400
|
||||
});
|
||||
|
||||
// RESET - reset slider to it's first values
|
||||
slider.reset();
|
||||
|
||||
// DESTROY - destroys slider and restores original input field
|
||||
slider.destroy();
|
||||
```
|
||||
|
||||
|
||||
## One more look on demos
|
||||
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo.html" class="switch__item">Basic demo</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_advanced.html" class="switch__item">Advanced demo</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_interactions.html" class="switch__item">Interactions demo</a>
|
||||
|
||||
All plugins options are covered in demos.
|
||||
|
||||
|
||||
### <a href="history.md">Update history</a>
|
||||
|
||||
***
|
||||
|
||||
#### Support Ion-series plugins development:
|
||||
|
||||
* Donate through Pledgie service: [](https://pledgie.com/campaigns/25694)
|
||||
|
||||
* Donate direct to my Paypal account: https://www.paypal.me/IonDen
|
||||
|
||||
* Donate direct to my Yandex.Money account: http://yasobe.ru/na/razrabotku
|
||||
490
vendors/ion.rangeSlider/readme.ru.md
vendored
Normal file
490
vendors/ion.rangeSlider/readme.ru.md
vendored
Normal file
@@ -0,0 +1,490 @@
|
||||

|
||||
|
||||
> <a href="readme.md">English description</a> | Описание на русском
|
||||
|
||||
Удобный, гибкий и отзывчивый слайдер диапазонов
|
||||
|
||||
***
|
||||
|
||||
* Версия: 2.1.4
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/index.html">Страница проекта и демо</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/ion.rangeSlider-2.1.4.zip">Загрузить ZIP-архив</a>
|
||||
|
||||
## Описание
|
||||
* Ion.RangeSlider — классный, удобный, отзывчивый и легко настраиваемый слайдер диапазонов
|
||||
* Слайдер поддерживает события и публичные методы, имеет гибкие настройки, может быть полностью видоизменен через CSS
|
||||
* Кроссбраузерная поддержка: Google Chrome, Mozilla Firefox 3.6+, Opera 12+, Safari 5+, Internet Explorer 8+
|
||||
* Плагин поддерживает устройства с touch-экраном (iPhone, iPad, Nexus, etc.)
|
||||
* <a href="https://github.com/IonDen/ion.rangeSlider">Репозиторий на GitHub</a>
|
||||
* Плагин свободно распространяется на условиях <a href="http://ionden.com/a/plugins/licence.html" target="_blank">лицензии MIT</a>
|
||||
* Используюя этот плагин, вы сможете создавать крутейшие слайдеры диапазонов, такие как этот:
|
||||
|
||||

|
||||
|
||||
## Ключевые особенности
|
||||
* Поддержка скинов. (5 скина в комплекте и PSD для изготовления собственных)
|
||||
* Неограниченное кол-во слайдеров на одной странице без существенных потерь производительности и конфликтов между ними
|
||||
* Два режима работы с 1 или 2 ползунками
|
||||
* Поддержка отрицательных и дробных значений
|
||||
* Возможность редактировать шаг и привязывать сетку к шагу
|
||||
* Можно использовать собственный массив значений для слайдера
|
||||
* Настраиваемая сетка значений
|
||||
* Отключаемые элементы интерфейса (мин. и макс. значение, текущие значение, сетка)
|
||||
* Постфиксы и префиксы для указания единиц измерения ($20, 20 € и т.п.)
|
||||
* Дополнительный постфикс для максимального значения (например $0 — $100<b>+</b>)
|
||||
* Воможнось улучшить читабельность больших цифр (например 10000000 -> 10 000 000 или 10.000.000)
|
||||
* Слайдер пишет свое значение прямо в value исходного поля input, что позволяет вставить сладер прямо внутрь любой формы
|
||||
* Любой параметр слайдера можно так же задать через data-атрибут (например data-min="10")
|
||||
* Слайдер поддерживает параметр disabled, позволяет делать слайдер неактивным
|
||||
* Слайдер поддерживает внешние методы (update, reset и remove), позволяющие управлять слайдером уже после создания
|
||||
* Для продвинутых пользователей есть поддержка колбэков (onStart, onChange, onFinish, onUpdate). Слайдер передает свои значения в эти функции первым аргументом в виде объекта
|
||||
* Слайдер поддерживает работу с датой и временем
|
||||
|
||||
|
||||
## Демо
|
||||
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo.html" class="switch__item">Базовые настройки</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_advanced.html" class="switch__item">Расширенные настройки</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_interactions.html" class="switch__item">Взаимодействия</a>
|
||||
|
||||
|
||||
## Зависимости
|
||||
|
||||
* <a href="http://jquery.com/" target="_blank">jQuery 1.8.x+</a>
|
||||
|
||||
|
||||
## Использование
|
||||
|
||||
Подключаем библиотеки:
|
||||
* jQuery
|
||||
* ion.rangeSlider.min.js
|
||||
|
||||
Подключаем стили:
|
||||
* <a href="http://necolas.github.io/normalize.css/" target="_blank">normalize.css</a> (желательно, если он у вас еще не подключен)
|
||||
* ion.rangeSlider.css
|
||||
|
||||
Не забываем про скин. 5 скинов включены в архив. Выберите один:
|
||||
* ion.rangeSlider.skinFlat.css + sprite-skin-flat.png
|
||||
* ion.rangeSlider.skinHTML5.css + без картинок
|
||||
* ion.rangeSlider.skinModern.css + sprite-skin-modern.png
|
||||
* ion.rangeSlider.skinNice.css + sprite-skin-nice.png
|
||||
* ion.rangeSlider.skinSimple.css + sprite-skin-simple.png
|
||||
|
||||
Либо воспользуйтесь вложенным в архив PSD файлом, и нарисуйте собственный скин (не забудьте модифицировать размеры элементов в CSS файле)
|
||||
|
||||
|
||||
## Устанавливаем с помощью bower
|
||||
|
||||
* bower install ionrangeslider
|
||||
|
||||
|
||||
## Устанавливаем с помощью npm
|
||||
|
||||
* npm install ion-rangeslider
|
||||
|
||||
|
||||
## Инициализация
|
||||
|
||||
Создаем базовое поле <code>input type="text"</code>:
|
||||
```html
|
||||
<input type="text" id="example_id" name="example_name" value="" />
|
||||
```
|
||||
|
||||
Чтобы запустить слайдер, вызовите ionRangeSlider для нужного элемента:
|
||||
```javascript
|
||||
$("#example_id").ionRangeSlider();
|
||||
```
|
||||
|
||||
## Демо для новичков
|
||||
Если вы новичок в веб разработке и не уверены как правильно подключить этот плагин на вашу страницу, то скачайте вот
|
||||
<a href="http://ionden.com/a/plugins/ion.rangeSlider/ionRangeSliderDemo.zip" class="button">этот демо пример</a>
|
||||
|
||||
|
||||
## Миграция с версии 1.x на 2.x
|
||||
* Все параметры (кроме функций) теперь записываются так: <b>param_name</b>, а не paramName
|
||||
* Изменились названия некоторых параметров: hasGrid → <b>grid</b>, onLoad → <b>onStart</b>
|
||||
* Изменился формат объекта с данными слайдера, возвращаемый в колбэки. Например: fromNumber → <b>from</b>
|
||||
* Слайдер теперь постоянно записывает свои значения в поле value и в атрибуты data-from и data-to
|
||||
|
||||
|
||||
## <a href="http://jsfiddle.net/IonDen/qv6yrjrv/" target="_blank">Площадка для эксперементов с плагином</a>
|
||||
|
||||
|
||||
## Настройка
|
||||
|
||||
<table class="options">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Атрибут</th>
|
||||
<th>По умолчанию</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="options__step">
|
||||
<td>type<div><sup>data-type</sup></div></td>
|
||||
<td>"single"</td>
|
||||
<td>string</td>
|
||||
<td>Позволяет выбрать тип слайдера, может принимать значение <code>single</code> - для одиночного слайдера или <code>double</code> - для двойного слайдера</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>min<div><sup>data-min</sup></div></td>
|
||||
<td>10</td>
|
||||
<td>number</td>
|
||||
<td>Обозначает минимальное возможное значение слайдера.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>max<div><sup>data-max</sup></div></td>
|
||||
<td>100</td>
|
||||
<td>number</td>
|
||||
<td>Обозначает максимальное возможное значение слайдера.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>from<div><sup>data-from</sup></div></td>
|
||||
<td>min</td>
|
||||
<td>number</td>
|
||||
<td>Позволяет задать стартовую позицию левого ползунка (или единственного ползунка)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>to<div><sup>data-to</sup></div></td>
|
||||
<td>max</td>
|
||||
<td>number</td>
|
||||
<td>Позволяет задать стартовую позицию правого ползунка</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>step<div><sup>data-step</sup></div></td>
|
||||
<td>1</td>
|
||||
<td>number</td>
|
||||
<td>Задает шаг движения ползунков. Всегда больше нуля. Может быть дробным.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>min_interval<div><sup>data-min-interval</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>number</td>
|
||||
<td>Задает минимальный диапазон между ползунками. Только для типа "double"</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>max_interval<div><sup>data-max-interval</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>number</td>
|
||||
<td>Задает максимальный диапазон между ползунками. Только для типа "double"</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>drag_interval<div><sup>data-drag-interval</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Разрешает пользователю перетаскивать весь диапазон. Только для типа "double" (beta)</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__step">
|
||||
<td>values<div><sup>data-values</sup></div></td>
|
||||
<td>[]</td>
|
||||
<td>array</td>
|
||||
<td>Переопределяет значения слайдера, значениями взятыми из массива values. Параметры min, max, step переопределяются автоматически.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new">
|
||||
<td>from_fixed<div><sup>data-from-fixed</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Фиксирует позицию левого ползунка (или единственного ползунка).</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>from_min<div><sup>data-from-min</sup></div></td>
|
||||
<td>min</td>
|
||||
<td>number</td>
|
||||
<td>Ограничивает минимальную позицию левого ползунка.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>from_max<div><sup>data-from-max</sup></div></td>
|
||||
<td>max</td>
|
||||
<td>number</td>
|
||||
<td>Ограничивает максимальную позицию левого ползунка.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>from_shadow<div><sup>data-from-shadow</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Подсвечивает ограничения наложенные на левый ползунок.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new">
|
||||
<td>to_fixed<div><sup>data-to-fixed</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Фиксирует позицию правого ползунка.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>to_min<div><sup>data-to-min</sup></div></td>
|
||||
<td>min</td>
|
||||
<td>number</td>
|
||||
<td>Ограничивает минимальную позицию правого ползунка.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>to_max<div><sup>data-to-max</sup></div></td>
|
||||
<td>max</td>
|
||||
<td>number</td>
|
||||
<td>Ограничивает максимальную позицию правого ползунка.</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>to_shadow<div><sup>data-to-shadow</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Подсвечивает ограничения наложенные на правый ползунок.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>prettify_enabled<div><sup>data-prettify-enabled</sup></div></td>
|
||||
<td>true</td>
|
||||
<td>boolean</td>
|
||||
<td>Улучшает внешний вид длинных цифр. 10000000 → 10 000 000</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>prettify_separator<div><sup>data-prettify-separator</sup></div></td>
|
||||
<td>" "</td>
|
||||
<td>string</td>
|
||||
<td>Позволяет выбирать разделитель для улучшения читаемости длинных цифр. 10 000, 10.000, 10-000 и т.п.</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>prettify<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Собственная функция для постобработки значений слайдера. Позволяет делать с цифрами всё что угодно, например приобразовывать в даты и время.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new options__step">
|
||||
<td>force_edges<div><sup>data-force-edges</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Заставляет слайдер всегда оставаться внутри границ своего контейнера.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__new">
|
||||
<td>keyboard<div><sup>data-keyboard</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Активирует управление слайдером с помощью клавиатуры. Влево: &larr, &darr, A, S. Вправо: &rarr, &uarr, W, D.</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>keyboard_step<div><sup>data-keyboard-step</sup></div></td>
|
||||
<td>5</td>
|
||||
<td>number</td>
|
||||
<td>Шаг движения ползунка при управлении с клавиатуры. Задается в процентах.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>grid<div><sup>data-grid</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Включает отображение сетки значений.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>grid_margin<div><sup>data-grid-margin</sup></div></td>
|
||||
<td>true</td>
|
||||
<td>boolean</td>
|
||||
<td>Выравнивает сетку по крайним позициям ползунков, либо по границам контейнера.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>grid_num<div><sup>data-grid-num</sup></div></td>
|
||||
<td>4</td>
|
||||
<td>number</td>
|
||||
<td>Количество ячеек в сетке.</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>grid_snap<div><sup>data-grid-snap</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Привязка сетки к шагу слайдера (параметр step). Если активирован, то параметр grid_num не учитывается.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>hide_min_max<div><sup>data-hide-min-max</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Прячет лейблы "min" и "max"</td>
|
||||
</tr>
|
||||
<tr class="options__step">
|
||||
<td>hide_from_to<div><sup>data-hide-from-to</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Прячет лейблы "from" и "to"</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>prefix<div><sup>data-prefix</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>string</td>
|
||||
<td>Отобразить префикс для значений слайдера. Будет отображен перед цифрой, например $100.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>postfix<div><sup>data-postfix</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>string</td>
|
||||
<td>Отобразить постфикс для значений слайдера. Будет отображен после цифры, например 100 руб.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>max_postfix<div><sup>data-max-postfix</sup></div></td>
|
||||
<td>—</td>
|
||||
<td>string</td>
|
||||
<td>Отобразить дополнительный постфикс для максимального значения слайдера. Будет отображен если один из ползунков достигнет крайнего правого значения. Например 0 — 100+</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>decorate_both<div><sup>data-decorate-both</sup></div></td>
|
||||
<td>true</td>
|
||||
<td>boolean</td>
|
||||
<td>Используется для типа "double", в случае если задан prefix и/или postfix. Определяет, как декорировать близко расположенные значения.<br/>Например: $10k — $100k или же $10 — 100k</td>
|
||||
</tr>
|
||||
<tr class="options__new options__step">
|
||||
<td>values_separator<div><sup>data-values-separator</sup></div></td>
|
||||
<td>" — "</td>
|
||||
<td>string</td>
|
||||
<td>Разделитель для близко расположенных значений. Используется для типа "double". Например: 10 — 100, 10 to 100, 10 + 100, 10 → 100 и т.д.</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__step">
|
||||
<td>input_values_separator<div><sup>data-input-values-separator</sup></div></td>
|
||||
<td>" ; "</td>
|
||||
<td>string</td>
|
||||
<td>Разделитель для двойных значений в поле value у базового input-элемента</td>
|
||||
</tr>
|
||||
|
||||
<tr class="options__step">
|
||||
<td>disable<div><sup>data-disable</sup></div></td>
|
||||
<td>false</td>
|
||||
<td>boolean</td>
|
||||
<td>Блокирует слайдер, делает его не активным.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>onStart<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Коллбэк. Вызывается при старте слайдера.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>onChange<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Коллбэк. Вызывается каждый раз когда обновляются значения слайдера.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>onFinish<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Коллбэк. Вызывается когда пользователь заканчивает перемещать ползунок.</td>
|
||||
</tr>
|
||||
<tr class="options__new">
|
||||
<td>onUpdate<div><sup>—</sup></div></td>
|
||||
<td>null</td>
|
||||
<td>function</td>
|
||||
<td>Коллбэк. Вызывается когда слайдер обновляется методом <code>update</code> или <code>reset</code>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
## Описание данных передаваемых в колбэки (onChange и т.д):
|
||||
|
||||
Результат имеет тип object и передается коллбэк первым аргументом:
|
||||
```javascript
|
||||
Obj: {
|
||||
"input": object, // jQuery-ссылка на input
|
||||
"slider": object, // jQuery-ссылка на контейнер слайдера
|
||||
"min": 0, // значение MIN
|
||||
"max": 1000, // значение MAX
|
||||
"from": 100, // значение ОТ (значение левого или единственного ползунка)
|
||||
"from_percent": 10, // значение ОТ в процентах
|
||||
"from_value": 0, // индекс ОТ массива values (если используется)
|
||||
"to": 900, // значение ДО (значение правого ползунка)
|
||||
"to_percent": 90, // значение ДО в процентах
|
||||
"to_value": 0 // индекс ДО массива values (если используется)
|
||||
}
|
||||
```
|
||||
|
||||
## Создание слайдера c параметрами
|
||||
|
||||
Пример
|
||||
```javascript
|
||||
$("#example").ionRangeSlider({
|
||||
min: 0,
|
||||
max: 10000,
|
||||
from: 1000,
|
||||
to: 9000,
|
||||
type: 'double',
|
||||
prefix: "$",
|
||||
grid: true,
|
||||
grid_num: 10
|
||||
});
|
||||
```
|
||||
|
||||
Слайдер с параметрами можно также инициализировать используя атрибуты <code>data-*</code> у тэга <code>input</code>:
|
||||
```html
|
||||
data-min="0"
|
||||
data-max="10000"
|
||||
data-from="1000"
|
||||
data-to="9000"
|
||||
data-type="double"
|
||||
data-prefix="$"
|
||||
data-grid="true"
|
||||
data-grid-num="10"
|
||||
```
|
||||
|
||||
## Публичные методы
|
||||
|
||||
Для того чтобы использовать публичные методы, вначале нужно записать значение слайдера в переменную::
|
||||
```javascript
|
||||
// Запускаем слайдер
|
||||
$("#range").ionRangeSlider({
|
||||
type: "double",
|
||||
min: 0,
|
||||
max: 1000,
|
||||
from: 200,
|
||||
to: 500,
|
||||
grid: true
|
||||
});
|
||||
|
||||
// Записываем инстанс в переменную
|
||||
var slider = $("#range").data("ionRangeSlider");
|
||||
|
||||
// Запускаем публичный метод
|
||||
slider.reset();
|
||||
```
|
||||
|
||||
Всего существует 3 публичных метода:
|
||||
```javascript
|
||||
// UPDATE - обновляет значения слайдера (можно менять любые значения)
|
||||
slider.update({
|
||||
from: 300,
|
||||
to: 400
|
||||
});
|
||||
|
||||
// RESET - сбрасывает слайдер к исходным значениям
|
||||
slider.reset();
|
||||
|
||||
// DESTROY - убивает слайдер и восстанавливает исходный input
|
||||
slider.destroy();
|
||||
```
|
||||
|
||||
## Еще раз взглянем на демо
|
||||
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo.html" class="switch__item">Базовые настройки</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_advanced.html" class="switch__item">Расширенные настройки</a>
|
||||
* <a href="http://ionden.com/a/plugins/ion.rangeSlider/demo_interactions.html" class="switch__item">Взаимодействия</a>
|
||||
|
||||
В демках есть примеры использования всех опций слайдера
|
||||
|
||||
|
||||
### <a href="history.md">История обновлений</a>
|
||||
|
||||
***
|
||||
|
||||
#### Поддержите разработку плагинов серии Ion:
|
||||
|
||||
* Пожертвовать через сервис Pledgie: [](https://pledgie.com/campaigns/25694)
|
||||
|
||||
* Пожертвовать напрямую через Paypal: https://www.paypal.me/IonDen
|
||||
|
||||
* Пожертвовать напрямую через Яндекс.Деньги: http://yasobe.ru/na/razrabotku
|
||||
Reference in New Issue
Block a user