| Current Path : /home/rtorresani/www/vendor/magento/module-ui/view/base/web/js/lib/knockout/bindings/ |
| Current File : //home/rtorresani/www/vendor/magento/module-ui/view/base/web/js/lib/knockout/bindings/range.js |
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
define([
'ko',
'jquery',
'underscore',
'../template/renderer'
], function (ko, $, _, renderer) {
'use strict';
var isTouchDevice = !_.isUndefined(document.ontouchstart),
sliderFn = 'slider',
sliderModule = 'jquery-ui-modules/slider';
if (isTouchDevice) {
sliderFn = 'touchSlider';
sliderModule = 'mage/touch-slider';
}
ko.bindingHandlers.range = {
/**
* Initializes binding and a slider update.
*
* @param {HTMLElement} element
* @param {Function} valueAccessor
*/
init: function (element, valueAccessor) {
var config = valueAccessor(),
value = config.value;
_.extend(config, {
value: value(),
/**
* Callback which is being called when sliders' value changes.
*
* @param {Event} event
* @param {Object} ui
*/
slide: function (event, ui) {
value(ui.value);
}
});
require([sliderModule], function () {
$(element)[sliderFn](config);
});
},
/**
* Updates sliders' plugin configuration.
*
* @param {HTMLElement} element
* @param {Function} valueAccessor
*/
update: function (element, valueAccessor) {
var config = valueAccessor();
config.value = ko.unwrap(config.value);
require([sliderModule], function () {
$(element)[sliderFn]('option', config);
});
}
};
renderer.addAttribute('range');
});