57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
|
/**
|
||
|
* @file
|
||
|
* Polyfill for HTML5 date input.
|
||
|
*/
|
||
|
|
||
|
(function ($, Modernizr, Drupal) {
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
/**
|
||
|
* Attach datepicker fallback on date elements.
|
||
|
*
|
||
|
* @type {Drupal~behavior}
|
||
|
*
|
||
|
* @prop {Drupal~behaviorAttach} attach
|
||
|
* Attaches the behavior. Accepts in `settings.date` an object listing
|
||
|
* elements to process, keyed by the HTML ID of the form element containing
|
||
|
* the human-readable value. Each element is an datepicker settings object.
|
||
|
* @prop {Drupal~behaviorDetach} detach
|
||
|
* Detach the behavior destroying datepickers on effected elements.
|
||
|
*/
|
||
|
Drupal.behaviors.date = {
|
||
|
attach: function (context, settings) {
|
||
|
var $context = $(context);
|
||
|
// Skip if date are supported by the browser.
|
||
|
if (Modernizr.inputtypes.date === true) {
|
||
|
return;
|
||
|
}
|
||
|
$context.find('input[data-drupal-date-format]').once('datePicker').each(function () {
|
||
|
var $input = $(this);
|
||
|
var datepickerSettings = {};
|
||
|
var dateFormat = $input.data('drupalDateFormat');
|
||
|
// The date format is saved in PHP style, we need to convert to jQuery
|
||
|
// datepicker.
|
||
|
datepickerSettings.dateFormat = dateFormat
|
||
|
.replace('Y', 'yy')
|
||
|
.replace('m', 'mm')
|
||
|
.replace('d', 'dd');
|
||
|
// Add min and max date if set on the input.
|
||
|
if ($input.attr('min')) {
|
||
|
datepickerSettings.minDate = $input.attr('min');
|
||
|
}
|
||
|
if ($input.attr('max')) {
|
||
|
datepickerSettings.maxDate = $input.attr('max');
|
||
|
}
|
||
|
$input.datepicker(datepickerSettings);
|
||
|
});
|
||
|
},
|
||
|
detach: function (context, settings, trigger) {
|
||
|
if (trigger === 'unload') {
|
||
|
$(context).find('input[data-drupal-date-format]').findOnce('datePicker').datepicker('destroy');
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
})(jQuery, Modernizr, Drupal);
|