This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
drupalcampbristol/web/modules/contrib/webform/js/webform.element.time.js
2017-03-16 15:29:07 +00:00

58 lines
1.6 KiB
JavaScript

/**
* @file
* Javascript behaviors for time integration.
*/
(function ($, Drupal) {
'use strict';
/**
* Attach timepicker fallback on time elements.
*
* @type {Drupal~behavior}
*
* @prop {Drupal~behaviorAttach} attach
* Attaches the behavior to time elements.
*/
Drupal.behaviors.webformTime = {
attach: function (context, settings) {
var $context = $(context);
// Skip if time inputs are supported by the browser.
if (Modernizr.inputtypes.time === true) {
return;
}
$context.find('input[type="time"]').once('timePicker').each(function () {
var $input = $(this);
var options = {};
if ($input.data('webformTimeFormat')) {
options.timeFormat = $input.data('webformTimeFormat');
}
if ($input.attr('min')) {
options.minTime = $input.attr('min');
}
if ($input.attr('max')) {
options.maxTime = $input.attr('max');
}
// HTML5 time element steps is in seconds but for the timepicker
// fallback it needs to be in minutes.
// Note: The 'datetime' element uses the #date_increment which defaults
// to 1 (second).
// @see \Drupal\Core\Datetime\Element\Datetime::processDatetime
// Only use step if it is greater than 60 seconds.
if ($input.attr('step') && ($input.attr('step') > 60)) {
options.step = Math.round($input.attr('step') / 60);
}
else {
options.step = 1;
}
$input.timepicker(options);
});
}
}
})(jQuery, Drupal);