annotate core/modules/system/js/system.date.es6.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 /**
Chris@0 2 * @file
Chris@0 3 * Provides date format preview feature.
Chris@0 4 */
Chris@0 5
Chris@17 6 (function($, Drupal, drupalSettings) {
Chris@0 7 const dateFormats = drupalSettings.dateFormats;
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Display the preview for date format entered.
Chris@0 11 *
Chris@0 12 * @type {Drupal~behavior}
Chris@0 13 *
Chris@0 14 * @prop {Drupal~behaviorAttach} attach
Chris@0 15 * Attach behavior for previewing date formats on input elements.
Chris@0 16 */
Chris@0 17 Drupal.behaviors.dateFormat = {
Chris@0 18 attach(context) {
Chris@0 19 const $context = $(context);
Chris@17 20 const $source = $context
Chris@17 21 .find('[data-drupal-date-formatter="source"]')
Chris@17 22 .once('dateFormat');
Chris@17 23 const $target = $context
Chris@17 24 .find('[data-drupal-date-formatter="preview"]')
Chris@17 25 .once('dateFormat');
Chris@0 26 const $preview = $target.find('em');
Chris@0 27
Chris@0 28 // All elements have to exist.
Chris@0 29 if (!$source.length || !$target.length) {
Chris@0 30 return;
Chris@0 31 }
Chris@0 32
Chris@0 33 /**
Chris@0 34 * Event handler that replaces date characters with value.
Chris@0 35 *
Chris@0 36 * @param {jQuery.Event} e
Chris@0 37 * The jQuery event triggered.
Chris@0 38 */
Chris@0 39 function dateFormatHandler(e) {
Chris@0 40 const baseValue = $(e.target).val() || '';
Chris@17 41 const dateString = baseValue.replace(
Chris@17 42 /\\?(.?)/gi,
Chris@17 43 (key, value) => (dateFormats[key] ? dateFormats[key] : value),
Chris@17 44 );
Chris@0 45
Chris@0 46 $preview.html(dateString);
Chris@0 47 $target.toggleClass('js-hide', !dateString.length);
Chris@0 48 }
Chris@0 49
Chris@0 50 /**
Chris@0 51 * On given event triggers the date character replacement.
Chris@0 52 */
Chris@17 53 $source
Chris@17 54 .on(
Chris@17 55 'keyup.dateFormat change.dateFormat input.dateFormat',
Chris@17 56 dateFormatHandler,
Chris@17 57 )
Chris@0 58 // Initialize preview.
Chris@0 59 .trigger('keyup');
Chris@0 60 },
Chris@0 61 };
Chris@17 62 })(jQuery, Drupal, drupalSettings);