Mercurial > hg > isophonics-drupal-site
view core/misc/date.es6.js @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line source
/** * @file * Polyfill for HTML5 date input. */ (function($, Modernizr, Drupal) { /** * 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(context, settings) { const $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() { const $input = $(this); const datepickerSettings = {}; const 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(context, settings, trigger) { if (trigger === 'unload') { $(context) .find('input[data-drupal-date-format]') .findOnce('datePicker') .datepicker('destroy'); } }, }; })(jQuery, Modernizr, Drupal);