From 9b00344e575d66ddf04e092f414f43dcc3930189 Mon Sep 17 00:00:00 2001 From: Henrik Heimbuerger Date: Thu, 15 Nov 2018 15:45:32 +0100 Subject: [PATCH 1/8] implement proof-of-concept for preserving selected preset labels When selecting a preset from the preset dropdown, instead of being immediately translated into its date range representation, the preset label is now displayed inside the component. The idea is that the component consumer can now work with this preset differently, the primary use case being that e.g. "Last week" can be treated symbolic and updated when the page is reloaded on a Sunday/Monday and the date range representation of the preset has changed. The moment the user clicks on the displayed preset, it *is* turned into its date range representation and the user can set a custom date range, taking the preset's date range as the starting point. --- dev/js/Calendar.js | 29 ++++++++++++++++++++++++++--- dev/js/app.js | 15 +++++++++------ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/dev/js/Calendar.js b/dev/js/Calendar.js index 7588f8d..dee1c0b 100644 --- a/dev/js/Calendar.js +++ b/dev/js/Calendar.js @@ -68,6 +68,7 @@ var start = $('.dr-item-aside', this).data('start'); var end = $('.dr-item-aside', this).data('end'); + self.preset_label = $(this).data('label'); self.start_date = self.calendarCheckDate(start); self.end_date = self.calendarCheckDate(end); @@ -295,7 +296,7 @@ item.data('end', endISO); item.html(string); } else { - ul_presets.append('
  • '+ d.label + + ul_presets.append('
  • '+ d.label + ''+ string +''+ '
  • '); } @@ -306,8 +307,19 @@ Calendar.prototype.calendarSetDates = function() { + // fill widgets with data $('.dr-date-start', this.element).html(moment(this.start_date).format(this.format.input)); $('.dr-date-end', this.element).html(moment(this.end_date).format(this.format.input)); + $('.dr-date-preset', this.element).html(this.preset_label); + + // show one set (preset vs. custom days) and hide the other + if (this.preset_label) { + $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).hide(); + $('.dr-date-preset', this.element).show(); + } else { + $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).show(); + $('.dr-date-preset', this.element).hide(); + } if (!this.start_date && !this.end_date) { var old_date = $('.dr-date', this.element).html(); @@ -371,7 +383,11 @@ Calendar.prototype.calendarCheckDates = function() { var startTxt = $('.dr-date-start', this.element).html(); var endTxt = $('.dr-date-end', this.element).html(); - var c = this.calendarCheckDate($(this.selected).html()); + if (this.preset_label) { + var c = this.calendarCheckDate(startTxt); + } else { + var c = this.calendarCheckDate($(this.selected).html()); + } var s; var e; @@ -432,7 +448,6 @@ Calendar.prototype.calendarOpen = function(selected, switcher) { var self = this; var other; - var cal_width = $('.dr-dates', this.element).innerWidth() - 8; this.selected = selected || this.selected; @@ -449,6 +464,12 @@ this.calendarCheckDates(); this.calendarCreate(switcher); + + if (this.preset_label) { + selected = this.selected = $('.dr-date.dr-date-start').get(0); + this.preset_label = null; + } + this.calendarSetDates(); var next_month = moment(switcher || this.current_date).add(1, 'month').startOf('month').startOf('day'); @@ -584,6 +605,7 @@ }); } + var cal_width = $('.dr-dates', this.element).innerWidth() - 8; $('.dr-calendar', this.element) .css('width', cal_width) .slideDown(200); @@ -690,6 +712,7 @@ '
    '+ moment(this.start_date).format(this.format.input) +'
    ' + '' + '
    '+ moment(this.end_date).format(this.format.input) +'
    ' + + '' + '' + (this.presets ? '
    ' + diff --git a/dev/js/app.js b/dev/js/app.js index 9d5f5d6..5029601 100644 --- a/dev/js/app.js +++ b/dev/js/app.js @@ -16,9 +16,10 @@ var dd = new Calendar({ end_date: moment(), callback: function() { var start = moment(this.start_date).format('ll'), - end = moment(this.end_date).format('ll'); + end = moment(this.end_date).format('ll'), + preset = this.preset_label; - console.debug('Start Date: '+ start +'\nEnd Date: '+ end); + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); } }); @@ -31,9 +32,10 @@ new Calendar({ presets: false, callback: function() { var start = moment(this.start_date).format('ll'), - end = moment(this.end_date).format('ll'); + end = moment(this.end_date).format('ll'), + preset = this.preset_label; - console.debug('Start Date: '+ start +'\nEnd Date: '+ end); + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); } }); @@ -58,8 +60,9 @@ new Calendar({ }], callback: function() { var start = moment(this.start_date).format('ll'), - end = moment(this.end_date).format('ll'); + end = moment(this.end_date).format('ll'), + preset = this.preset_label; - console.debug('Start Date: '+ start +'\nEnd Date: '+ end); + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); } }); From f5927337659e6cddca48a986839f32154230c581 Mon Sep 17 00:00:00 2001 From: Henrik Heimbuerger Date: Mon, 26 Nov 2018 16:24:03 +0100 Subject: [PATCH 2/8] clean up fallback procedure to date range when preset is clicked --- dev/js/Calendar.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/dev/js/Calendar.js b/dev/js/Calendar.js index dee1c0b..93edb0f 100644 --- a/dev/js/Calendar.js +++ b/dev/js/Calendar.js @@ -383,11 +383,8 @@ Calendar.prototype.calendarCheckDates = function() { var startTxt = $('.dr-date-start', this.element).html(); var endTxt = $('.dr-date-end', this.element).html(); - if (this.preset_label) { - var c = this.calendarCheckDate(startTxt); - } else { - var c = this.calendarCheckDate($(this.selected).html()); - } + + var c = this.calendarCheckDate($(this.selected).html()); var s; var e; @@ -449,7 +446,12 @@ var self = this; var other; - this.selected = selected || this.selected; + if ($(selected).hasClass('dr-date-preset')) { + this.selected = $('.dr-date.dr-date-start', this.element).get(0); + this.preset_label = null; + } else { + this.selected = selected || this.selected; + } if (this.presetIsOpen == true) this.presetToggle(); @@ -464,12 +466,6 @@ this.calendarCheckDates(); this.calendarCreate(switcher); - - if (this.preset_label) { - selected = this.selected = $('.dr-date.dr-date-start').get(0); - this.preset_label = null; - } - this.calendarSetDates(); var next_month = moment(switcher || this.current_date).add(1, 'month').startOf('month').startOf('day'); @@ -610,7 +606,7 @@ .css('width', cal_width) .slideDown(200); $('.dr-input', this.element).addClass('dr-active'); - $(selected).addClass('dr-active').focus(); + $(this.selected).addClass('dr-active').focus(); this.element.addClass('dr-active'); this.calIsOpen = true; From d191f483a4dfc60e9b2297e8bce2486588c6e1b8 Mon Sep 17 00:00:00 2001 From: Henrik Heimbuerger Date: Mon, 26 Nov 2018 16:26:43 +0100 Subject: [PATCH 3/8] add configuration flag for sticky presets feature --- dev/js/Calendar.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dev/js/Calendar.js b/dev/js/Calendar.js index 93edb0f..409496e 100644 --- a/dev/js/Calendar.js +++ b/dev/js/Calendar.js @@ -54,6 +54,7 @@ this.current_date = settings.current_date ? moment(settings.current_date) : (this.type == 'single' ? moment() : null); + this.sticky_presets = settings.sticky_presets || false; this.presets = settings.presets == false || this.type == 'single' ? false : true; this.callback = settings.callback || this.calendarSetDates; @@ -313,12 +314,14 @@ $('.dr-date-preset', this.element).html(this.preset_label); // show one set (preset vs. custom days) and hide the other - if (this.preset_label) { - $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).hide(); - $('.dr-date-preset', this.element).show(); - } else { - $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).show(); - $('.dr-date-preset', this.element).hide(); + if (this.sticky_presets) { + if (this.preset_label) { + $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).hide(); + $('.dr-date-preset', this.element).show(); + } else { + $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).show(); + $('.dr-date-preset', this.element).hide(); + } } if (!this.start_date && !this.end_date) { From 5d89e1fa9ebff462788606035044a54ded1e26c0 Mon Sep 17 00:00:00 2001 From: Henrik Heimbuerger Date: Mon, 26 Nov 2018 16:35:18 +0100 Subject: [PATCH 4/8] trigger change callback if sticky preset has changed --- dev/js/Calendar.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dev/js/Calendar.js b/dev/js/Calendar.js index 409496e..c0d00d1 100644 --- a/dev/js/Calendar.js +++ b/dev/js/Calendar.js @@ -42,6 +42,7 @@ this.orig_start_date = null; this.orig_end_date = null; this.orig_current_date = null; + this.orig_preset_label = null; this.earliest_date = settings.earliest_date ? moment(settings.earliest_date) : moment('1900-01-01', 'YYYY-MM-DD'); @@ -217,6 +218,7 @@ this.orig_start_date = this.start_date; this.orig_end_date = this.end_date; this.orig_current_date = this.current_date; + this.orig_preset_label = this.preset_label; this.presetIsOpen = true; } else if (this.presetIsOpen) { @@ -339,7 +341,7 @@ Calendar.prototype.calendarSaveDates = function() { if (this.type === 'double') { - if (!moment(this.orig_end_date).isSame(this.end_date) || !moment(this.orig_start_date).isSame(this.start_date)) + if (!moment(this.orig_end_date).isSame(this.end_date) || !moment(this.orig_start_date).isSame(this.start_date) || (this.sticky_presets && (this.orig_preset_label !== this.preset_label))) return this.callback(); } else { if (!this.required || !moment(this.orig_current_date).isSame(this.current_date)) @@ -465,6 +467,7 @@ this.orig_start_date = this.start_date; this.orig_end_date = this.end_date; this.orig_current_date = this.current_date; + this.orig_preset_label = this.preset_label; } this.calendarCheckDates(); From 6f868395eb60d48ee14e7094b5cd6a8b237e19ab Mon Sep 17 00:00:00 2001 From: Henrik Heimbuerger Date: Mon, 26 Nov 2018 16:59:28 +0100 Subject: [PATCH 5/8] add calendar with sticky presets mode to the manual testing page --- dev/js/app.js | 29 +++++++++++++++++++++++++++++ public/index.html | 2 ++ 2 files changed, 31 insertions(+) diff --git a/dev/js/app.js b/dev/js/app.js index 5029601..43fe07f 100644 --- a/dev/js/app.js +++ b/dev/js/app.js @@ -66,3 +66,32 @@ new Calendar({ console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); } }); + +new Calendar({ + element: $('.four'), + sticky_presets: true, + earliest_date: '2000-01-01', + latest_date: moment(), + start_date: moment().subtract(29, 'days'), + end_date: moment(), + presets: [{ + label: 'Last 30 days', + start: moment().subtract(29, 'days'), + end: moment() + },{ + label: 'Last month', + start: moment().subtract(1, 'month').startOf('month'), + end: moment().subtract(1, 'month').endOf('month') + },{ + label: 'Last year', + start: moment().subtract(1, 'year').startOf('year'), + end: moment().subtract(1, 'year').endOf('year') + }], + callback: function() { + var start = moment(this.start_date).format('ll'), + end = moment(this.end_date).format('ll'), + preset = this.preset_label; + + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); + } +}); diff --git a/public/index.html b/public/index.html index 4eed98c..4b6e189 100644 --- a/public/index.html +++ b/public/index.html @@ -21,6 +21,8 @@

    Baremetrics Date Range Picker

    +
    +
    From 849afe11ce02481d7f7763b778ee702b1205dba3 Mon Sep 17 00:00:00 2001 From: Henrik Heimbuerger Date: Sun, 26 May 2019 17:00:15 +0200 Subject: [PATCH 6/8] update gulp output files --- public/js/Calendar.js | 35 +++++++++++++++++++++++++++++----- public/js/app.js | 44 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 68 insertions(+), 11 deletions(-) diff --git a/public/js/Calendar.js b/public/js/Calendar.js index 7588f8d..c0d00d1 100644 --- a/public/js/Calendar.js +++ b/public/js/Calendar.js @@ -42,6 +42,7 @@ this.orig_start_date = null; this.orig_end_date = null; this.orig_current_date = null; + this.orig_preset_label = null; this.earliest_date = settings.earliest_date ? moment(settings.earliest_date) : moment('1900-01-01', 'YYYY-MM-DD'); @@ -54,6 +55,7 @@ this.current_date = settings.current_date ? moment(settings.current_date) : (this.type == 'single' ? moment() : null); + this.sticky_presets = settings.sticky_presets || false; this.presets = settings.presets == false || this.type == 'single' ? false : true; this.callback = settings.callback || this.calendarSetDates; @@ -68,6 +70,7 @@ var start = $('.dr-item-aside', this).data('start'); var end = $('.dr-item-aside', this).data('end'); + self.preset_label = $(this).data('label'); self.start_date = self.calendarCheckDate(start); self.end_date = self.calendarCheckDate(end); @@ -215,6 +218,7 @@ this.orig_start_date = this.start_date; this.orig_end_date = this.end_date; this.orig_current_date = this.current_date; + this.orig_preset_label = this.preset_label; this.presetIsOpen = true; } else if (this.presetIsOpen) { @@ -295,7 +299,7 @@ item.data('end', endISO); item.html(string); } else { - ul_presets.append('
  • '+ d.label + + ul_presets.append('
  • '+ d.label + ''+ string +''+ '
  • '); } @@ -306,8 +310,21 @@ Calendar.prototype.calendarSetDates = function() { + // fill widgets with data $('.dr-date-start', this.element).html(moment(this.start_date).format(this.format.input)); $('.dr-date-end', this.element).html(moment(this.end_date).format(this.format.input)); + $('.dr-date-preset', this.element).html(this.preset_label); + + // show one set (preset vs. custom days) and hide the other + if (this.sticky_presets) { + if (this.preset_label) { + $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).hide(); + $('.dr-date-preset', this.element).show(); + } else { + $('.dr-date-start, .dr-dates-dash, .dr-date-end', this.element).show(); + $('.dr-date-preset', this.element).hide(); + } + } if (!this.start_date && !this.end_date) { var old_date = $('.dr-date', this.element).html(); @@ -324,7 +341,7 @@ Calendar.prototype.calendarSaveDates = function() { if (this.type === 'double') { - if (!moment(this.orig_end_date).isSame(this.end_date) || !moment(this.orig_start_date).isSame(this.start_date)) + if (!moment(this.orig_end_date).isSame(this.end_date) || !moment(this.orig_start_date).isSame(this.start_date) || (this.sticky_presets && (this.orig_preset_label !== this.preset_label))) return this.callback(); } else { if (!this.required || !moment(this.orig_current_date).isSame(this.current_date)) @@ -371,6 +388,7 @@ Calendar.prototype.calendarCheckDates = function() { var startTxt = $('.dr-date-start', this.element).html(); var endTxt = $('.dr-date-end', this.element).html(); + var c = this.calendarCheckDate($(this.selected).html()); var s; var e; @@ -432,9 +450,13 @@ Calendar.prototype.calendarOpen = function(selected, switcher) { var self = this; var other; - var cal_width = $('.dr-dates', this.element).innerWidth() - 8; - this.selected = selected || this.selected; + if ($(selected).hasClass('dr-date-preset')) { + this.selected = $('.dr-date.dr-date-start', this.element).get(0); + this.preset_label = null; + } else { + this.selected = selected || this.selected; + } if (this.presetIsOpen == true) this.presetToggle(); @@ -445,6 +467,7 @@ this.orig_start_date = this.start_date; this.orig_end_date = this.end_date; this.orig_current_date = this.current_date; + this.orig_preset_label = this.preset_label; } this.calendarCheckDates(); @@ -584,11 +607,12 @@ }); } + var cal_width = $('.dr-dates', this.element).innerWidth() - 8; $('.dr-calendar', this.element) .css('width', cal_width) .slideDown(200); $('.dr-input', this.element).addClass('dr-active'); - $(selected).addClass('dr-active').focus(); + $(this.selected).addClass('dr-active').focus(); this.element.addClass('dr-active'); this.calIsOpen = true; @@ -690,6 +714,7 @@ '
    '+ moment(this.start_date).format(this.format.input) +'
    ' + '' + '
    '+ moment(this.end_date).format(this.format.input) +'
    ' + + '' + '
    ' + (this.presets ? '
    ' + diff --git a/public/js/app.js b/public/js/app.js index 9d5f5d6..43fe07f 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -16,9 +16,10 @@ var dd = new Calendar({ end_date: moment(), callback: function() { var start = moment(this.start_date).format('ll'), - end = moment(this.end_date).format('ll'); + end = moment(this.end_date).format('ll'), + preset = this.preset_label; - console.debug('Start Date: '+ start +'\nEnd Date: '+ end); + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); } }); @@ -31,9 +32,10 @@ new Calendar({ presets: false, callback: function() { var start = moment(this.start_date).format('ll'), - end = moment(this.end_date).format('ll'); + end = moment(this.end_date).format('ll'), + preset = this.preset_label; - console.debug('Start Date: '+ start +'\nEnd Date: '+ end); + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); } }); @@ -58,8 +60,38 @@ new Calendar({ }], callback: function() { var start = moment(this.start_date).format('ll'), - end = moment(this.end_date).format('ll'); + end = moment(this.end_date).format('ll'), + preset = this.preset_label; - console.debug('Start Date: '+ start +'\nEnd Date: '+ end); + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); + } +}); + +new Calendar({ + element: $('.four'), + sticky_presets: true, + earliest_date: '2000-01-01', + latest_date: moment(), + start_date: moment().subtract(29, 'days'), + end_date: moment(), + presets: [{ + label: 'Last 30 days', + start: moment().subtract(29, 'days'), + end: moment() + },{ + label: 'Last month', + start: moment().subtract(1, 'month').startOf('month'), + end: moment().subtract(1, 'month').endOf('month') + },{ + label: 'Last year', + start: moment().subtract(1, 'year').startOf('year'), + end: moment().subtract(1, 'year').endOf('year') + }], + callback: function() { + var start = moment(this.start_date).format('ll'), + end = moment(this.end_date).format('ll'), + preset = this.preset_label; + + console.debug('Start Date: ' + start + '\nEnd Date: ' + end + '\nPreset: ' + preset); } }); From bdcac62d22c194c5374097b95330adcb66c991f6 Mon Sep 17 00:00:00 2001 From: Serhiy Stetskovych Date: Fri, 5 Jul 2019 16:17:10 +0300 Subject: [PATCH 7/8] New changes needed for smileback. --- dev/js/Calendar.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/dev/js/Calendar.js b/dev/js/Calendar.js index c0d00d1..e0a5031 100644 --- a/dev/js/Calendar.js +++ b/dev/js/Calendar.js @@ -48,12 +48,23 @@ : moment('1900-01-01', 'YYYY-MM-DD'); this.latest_date = settings.latest_date ? moment(settings.latest_date) : moment('2900-12-31', 'YYYY-MM-DD'); - this.end_date = settings.end_date ? moment(settings.end_date) - : (this.type == 'double' ? moment() : null); - this.start_date = settings.start_date ? moment(settings.start_date) - : (this.type == 'double' ? this.end_date.clone().subtract(1, 'month') : null); this.current_date = settings.current_date ? moment(settings.current_date) : (this.type == 'single' ? moment() : null); + this.preset_label = settings.preset_label ? settings.preset_label + : (this.type == 'single' ? 'Last 3 months' : null); + if(this.preset_label) { + var self = this; + var preset = settings.presets.find(function(obj) { + return obj.label === self.preset_label; + }); + this.start_date = preset.start; + this.end_date = preset.end; + } else { + this.start_date = settings.start_date ? moment(settings.start_date) + : (this.type == 'double' ? this.end_date.clone().subtract(1, 'month') : null); + this.end_date = settings.end_date ? moment(settings.end_date) + : (this.type == 'double' ? moment() : null); + } this.sticky_presets = settings.sticky_presets || false; this.presets = settings.presets == false || this.type == 'single' ? false : true; @@ -61,6 +72,7 @@ this.callback = settings.callback || this.calendarSetDates; this.calendarHTML(this.type); + this.calendarSetDates(); $('.dr-presets', this.element).click(function() { self.presetToggle(); @@ -71,6 +83,10 @@ var end = $('.dr-item-aside', this).data('end'); self.preset_label = $(this).data('label'); + if (self.preset_label == 'custom'){ + self.calendarOpen($('.dr-date', this.element)); + return; + } self.start_date = self.calendarCheckDate(start); self.end_date = self.calendarCheckDate(end); @@ -304,7 +320,7 @@ ''); } }); - + ul_presets.append('
  • Custom
  • '); return ul_presets; } @@ -806,6 +822,7 @@ if ($(cal.selected).hasClass('dr-date-start')) { $('.dr-date-end', cal.element).trigger('click'); } else { + self.preset_label = null; cal.calendarSaveDates(); cal.calendarClose('force'); } From 5863527f8fea2340ba64c64633ff7bbd5f3c6fad Mon Sep 17 00:00:00 2001 From: Serhiy Stetskovych Date: Mon, 8 Jul 2019 11:59:39 +0300 Subject: [PATCH 8/8] Run gulp to generate output files. --- public/js/Calendar.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/public/js/Calendar.js b/public/js/Calendar.js index c0d00d1..e0a5031 100644 --- a/public/js/Calendar.js +++ b/public/js/Calendar.js @@ -48,12 +48,23 @@ : moment('1900-01-01', 'YYYY-MM-DD'); this.latest_date = settings.latest_date ? moment(settings.latest_date) : moment('2900-12-31', 'YYYY-MM-DD'); - this.end_date = settings.end_date ? moment(settings.end_date) - : (this.type == 'double' ? moment() : null); - this.start_date = settings.start_date ? moment(settings.start_date) - : (this.type == 'double' ? this.end_date.clone().subtract(1, 'month') : null); this.current_date = settings.current_date ? moment(settings.current_date) : (this.type == 'single' ? moment() : null); + this.preset_label = settings.preset_label ? settings.preset_label + : (this.type == 'single' ? 'Last 3 months' : null); + if(this.preset_label) { + var self = this; + var preset = settings.presets.find(function(obj) { + return obj.label === self.preset_label; + }); + this.start_date = preset.start; + this.end_date = preset.end; + } else { + this.start_date = settings.start_date ? moment(settings.start_date) + : (this.type == 'double' ? this.end_date.clone().subtract(1, 'month') : null); + this.end_date = settings.end_date ? moment(settings.end_date) + : (this.type == 'double' ? moment() : null); + } this.sticky_presets = settings.sticky_presets || false; this.presets = settings.presets == false || this.type == 'single' ? false : true; @@ -61,6 +72,7 @@ this.callback = settings.callback || this.calendarSetDates; this.calendarHTML(this.type); + this.calendarSetDates(); $('.dr-presets', this.element).click(function() { self.presetToggle(); @@ -71,6 +83,10 @@ var end = $('.dr-item-aside', this).data('end'); self.preset_label = $(this).data('label'); + if (self.preset_label == 'custom'){ + self.calendarOpen($('.dr-date', this.element)); + return; + } self.start_date = self.calendarCheckDate(start); self.end_date = self.calendarCheckDate(end); @@ -304,7 +320,7 @@ ''); } }); - + ul_presets.append('
  • Custom
  • '); return ul_presets; } @@ -806,6 +822,7 @@ if ($(cal.selected).hasClass('dr-date-start')) { $('.dr-date-end', cal.element).trigger('click'); } else { + self.preset_label = null; cal.calendarSaveDates(); cal.calendarClose('force'); }