From 0e820333caf2eff5fb3ae996788aef301c64d72a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentino=20Me=C4=91imorec?= <valentino@medjimorec.net> Date: Sat, 28 Apr 2018 23:03:56 +0200 Subject: [PATCH] Added theme options for date time picker --- js/drupal.single_datetime.js | 3 +++ src/Element/SingleDateTime.php | 1 + .../FieldWidget/SingleDateTimeRangeWidget.php | 1 + .../Field/FieldWidget/SingleDateTimeWidget.php | 15 +++++++++++++++ 4 files changed, 20 insertions(+) diff --git a/js/drupal.single_datetime.js b/js/drupal.single_datetime.js index 47f1907..917c15f 100644 --- a/js/drupal.single_datetime.js +++ b/js/drupal.single_datetime.js @@ -82,6 +82,8 @@ var inline = input.data('inline'); + var theme = input.data('datetimepickerTheme'); + // If is date & time field. if (widgetType === 'datetime') { format = (hourFormat === '12h') ? 'Y-m-d h:i:s A' : 'Y-m-d H:i:s'; @@ -105,6 +107,7 @@ maxDate, yearStart, yearEnd, + theme, }); }); }, diff --git a/src/Element/SingleDateTime.php b/src/Element/SingleDateTime.php index c07d747..b77ee40 100644 --- a/src/Element/SingleDateTime.php +++ b/src/Element/SingleDateTime.php @@ -83,6 +83,7 @@ class SingleDateTime extends FormElement { 'data-disable-days' => Json::encode($disabled_days), 'data-exclude-date' => $exclude_date, 'data-inline' => !empty($element['#inline']) ? 1 : 0, + 'data-datetimepicker-theme' => $element['#datetimepicker-theme'], ]; // Year start. diff --git a/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php b/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php index 0c14849..c762ee5 100644 --- a/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php +++ b/src/Plugin/Field/FieldWidget/SingleDateTimeRangeWidget.php @@ -196,6 +196,7 @@ class SingleDateTimeRangeWidget extends SingleDateTimeWidget implements Containe '#disable_days' => $this->getSetting('disable_days'), '#exclude_date' => $this->getSetting('exclude_date'), '#inline' => $this->getSetting('inline'), + '#datetimepicker_theme' => $this->getSetting('datetimepicker_theme'), '#min_date' => $this->getSetting('min_date'), '#max_date' => $this->getSetting('max_date'), '#year_start' => $this->getSetting('year_start'), diff --git a/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php b/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php index 7abf459..e0aa1b2 100644 --- a/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php +++ b/src/Plugin/Field/FieldWidget/SingleDateTimeWidget.php @@ -35,6 +35,7 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor 'disable_days' => [], 'exclude_date' => '', 'inline' => FALSE, + 'datetimepicker_theme' => 'default', 'min_date' => '', 'max_date' => '', 'year_start' => '', @@ -103,6 +104,17 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor '#default_value' => $this->getSetting('inline'), '#required' => FALSE, ]; + $elements['datetimepicker_theme'] = [ + '#type' => 'select', + '#title' => $this->t('Theme'), + '#description' => $this->t('Setting a color scheme. Now only supported default and dark theme'), + '#options' => [ + 'default' => $this->t('Default'), + 'dark' => $this->t('Dark'), + ], + '#default_value' => $this->getSetting('datetimepicker_theme'), + '#required' => FALSE, + ]; $elements['min_date'] = [ '#type' => 'textfield', '#title' => $this->t('Set a limit to the minimum date/time allowed to pick.'), @@ -174,6 +186,8 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor $summary[] = t('Display inline widget: @render_widget', ['@render_widget' => !empty($this->getSetting('inline')) ? t('Yes') : t('No')]); + $summary[] = t('Theme: @theme', ['@theme' => ucfirst($this->getSetting('datetimepicker_theme'))]); + $summary[] = t('Minimum date/time: @min_date', ['@min_date' => !empty($min_date) ? $min_date : t('None')]); $summary[] = t('Maximum date/time: @max_date', ['@max_date' => !empty($max_date) ? $max_date : t('None')]); @@ -309,6 +323,7 @@ class SingleDateTimeWidget extends DateTimeWidgetBase implements ContainerFactor $element['value']['#disable_days'] = $this->getSetting('disable_days'); $element['value']['#exclude_date'] = $this->getSetting('exclude_date'); $element['value']['#inline'] = $this->getSetting('inline'); + $element['value']['#datetimepicker-theme'] = $this->getSetting('datetimepicker_theme'); $element['value']['#min_date'] = $this->getSetting('min_date'); $element['value']['#max_date'] = $this->getSetting('max_date'); $element['value']['#year_start'] = $this->getSetting('year_start'); -- GitLab