Browse Source

refactored

pull/15806/head
Ebicoglu 4 years ago
parent
commit
22668a2a54
  1. 36
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs
  2. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs
  3. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerDrops.cs
  4. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerOpens.cs
  5. 23
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelperService.cs
  6. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerWeekNumbers.cs
  7. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelper.cs
  8. 45
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelperService.cs
  9. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/DatePickerOptionsAttribute.cs
  10. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/DateRangePickerAttribute.cs
  11. 117
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/IAbpDatePickerOptions.cs
  12. 226
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js

36
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs

@ -179,34 +179,37 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
return abpDateInputTagHelper;
}
private AbpTagHelper GetAbpDateRangeInputTagHelper(TagHelperContext context, TagHelperOutput output,
ModelExpression model)
private AbpTagHelper GetAbpDateRangeInputTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model)
{
var modelAttribute = model.ModelExplorer.GetAttribute<DateRangePickerAttribute>();
var pickerId = modelAttribute.PickerId;
var otherModel = TagHelper.Model.ModelExplorer.Properties.SingleOrDefault(x =>
x != model.ModelExplorer && x.GetAttribute<DateRangePickerAttribute>()?.PickerId == pickerId);
var otherModelAttribute = otherModel?.GetAttribute<DateRangePickerAttribute>();
var abpDateRangeInputTagHelper = _serviceProvider.GetRequiredService<AbpDateRangePickerTagHelper>();
abpDateRangeInputTagHelper.PickerId = pickerId;
abpDateRangeInputTagHelper.ViewContext = TagHelper.ViewContext;
if (modelAttribute.IsStart)
{
abpDateRangeInputTagHelper.AspForStart = model;
}
if (otherModelAttribute?.IsStart == false)
{
abpDateRangeInputTagHelper.AspForEnd = ModelExplorerToModelExpressionConverter(otherModel);
var otherModelExists = TryToGetOtherDateModel(model, pickerId, out var otherModel);
if (otherModelExists && otherModel.GetAttribute<DateRangePickerAttribute>().IsEnd)
{
abpDateRangeInputTagHelper.AspForEnd = ModelExplorerToModelExpressionConverter(otherModel);
}
}
return abpDateRangeInputTagHelper;
}
private bool TryToGetOtherDateModel(ModelExpression model, string pickerId, out ModelExplorer otherModel)
{
otherModel = TagHelper.Model.ModelExplorer.Properties.SingleOrDefault(x => x != model.ModelExplorer && x.GetAttribute<DateRangePickerAttribute>()?.PickerId == pickerId);
return otherModel != null;
}
private bool IsDateRangeGroup(ModelExplorer modelModelExplorer)
private static bool IsDateRangeGroup(ModelExplorer modelModelExplorer)
{
return modelModelExplorer.GetAttribute<DateRangePickerAttribute>() != null;
}
@ -353,18 +356,23 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
{
return IsEnum(model.ModelExplorer) || AreSelectItemsProvided(model.ModelExplorer);
}
protected virtual bool IsDateGroup(TagHelperContext context, ModelExpression model)
{
if(model.ModelExplorer.GetAttribute<DatePickerAttribute>() != null || model.ModelExplorer.GetAttribute<DateRangePickerAttribute>() != null)
if (model.ModelExplorer.GetAttribute<DatePickerAttribute>() != null ||
model.ModelExplorer.GetAttribute<DateRangePickerAttribute>() != null)
{
return true;
}
if(model.Metadata.ModelType == typeof(DateTime) || model.Metadata.ModelType == typeof(DateTime?) || model.Metadata.ModelType == typeof(DateTimeOffset) || model.Metadata.ModelType == typeof(DateTimeOffset?))
if (model.Metadata.ModelType == typeof(DateTime) ||
model.Metadata.ModelType == typeof(DateTime?) ||
model.Metadata.ModelType == typeof(DateTimeOffset) ||
model.Metadata.ModelType == typeof(DateTimeOffset?))
{
return true;
}
return false;
}

7
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs

@ -9,7 +9,8 @@ public abstract class
where TTagHelper : AbpDatePickerBaseTagHelper<TTagHelper>
{
private IAbpDatePickerOptions _abpDatePickerOptionsImplementation;
private readonly IAbpDatePickerOptions _abpDatePickerOptionsImplementation;
public string Label { get; set; }
public string LabelTooltip { get; set; }
@ -42,15 +43,11 @@ public abstract class
public bool SuppressLabel { get; set; }
protected AbpDatePickerBaseTagHelper(AbpDatePickerBaseTagHelperService<TTagHelper> service) : base(service)
{
_abpDatePickerOptionsImplementation = new AbpDatePickerOptions();
}
public string PickerId {
get => _abpDatePickerOptionsImplementation.PickerId;
set => _abpDatePickerOptionsImplementation.PickerId = value;

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerDrops.cs

@ -1,8 +1,8 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public enum AbpDatePickerDrops
public enum AbpDatePickerDrops : byte
{
Down,
Up,
Auto
Down = 1,
Up = 2,
Auto = 3
}

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerOpens.cs

@ -1,8 +1,10 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
using System;
public enum AbpDatePickerOpens
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public enum AbpDatePickerOpens : byte
{
Left,
Right,
Center
Left = 1,
Right = 2,
Center = 3,
}

23
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelperService.cs

@ -16,14 +16,14 @@ public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<A
{
public AbpDatePickerTagHelperService(IJsonSerializer jsonSerializer, IHtmlGenerator generator, HtmlEncoder encoder, IServiceProvider serviceProvider, IStringLocalizer<AbpUiResource> l, IAbpTagHelperLocalizer tagHelperLocalizer) : base(jsonSerializer, generator, encoder, serviceProvider, l, tagHelperLocalizer)
{
}
protected override TagHelperOutput TagHelperOutput { get; set; }
[CanBeNull]
[CanBeNull]
protected virtual InputTagHelper DateTagHelper { get; set; }
[CanBeNull]
protected virtual TagHelperOutput DateTagHelperOutput { get; set; }
protected override string GetPropertyName()
@ -39,12 +39,15 @@ public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<A
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
if(TagHelper.AspFor != null)
if (TagHelper.AspFor != null)
{
DateTagHelper = new InputTagHelper(Generator) {
InputTypeName = "hidden", ViewContext = TagHelper.ViewContext, For = TagHelper.AspFor,
DateTagHelper = new InputTagHelper(Generator)
{
InputTypeName = "hidden",
ViewContext = TagHelper.ViewContext,
For = TagHelper.AspFor,
};
var attributes = new TagHelperAttributeList { { "data-date", "true" }, { "type", "hidden" } };
DateTagHelperOutput = await DateTagHelper.ProcessAndGetOutputAsync(attributes, context, "input");
}
@ -60,7 +63,9 @@ public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<A
protected override void AddBaseTagAttributes(TagHelperAttributeList attributes)
{
if(TagHelper.AspFor != null && TagHelper.AspFor.Model != null && SupportedInputTypes.TryGetValue(TagHelper.AspFor.Metadata.ModelType, out var convertFunc))
if (TagHelper.AspFor != null &&
TagHelper.AspFor.Model != null &&
SupportedInputTypes.TryGetValue(TagHelper.AspFor.Metadata.ModelType, out var convertFunc))
{
attributes.Add("data-date", convertFunc(TagHelper.AspFor.Model));
}

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerWeekNumbers.cs

@ -1,8 +1,8 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public enum AbpDatePickerWeekNumbers
public enum AbpDatePickerWeekNumbers : byte
{
None,
Normal,
Iso
None = 0,
Normal = 1,
Iso = 2
}

5
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelper.cs

@ -7,15 +7,14 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
[HtmlTargetElement("abp-date-range-picker", TagStructure = TagStructure.NormalOrSelfClosing)]
public class AbpDateRangePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDateRangePickerTagHelper>
{
// Start date
[CanBeNull]
public ModelExpression AspForStart { get; set; }
// End date
[CanBeNull]
public ModelExpression AspForEnd { get; set; }
public AbpDateRangePickerTagHelper(AbpDateRangePickerTagHelperService tagHelperService) : base(tagHelperService)
public AbpDateRangePickerTagHelper(AbpDateRangePickerTagHelperService tagHelperService) :
base(tagHelperService)
{
}
}

45
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelperService.cs

@ -17,7 +17,8 @@ public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperServ
{
public AbpDateRangePickerTagHelperService(IJsonSerializer jsonSerializer, IHtmlGenerator generator,
HtmlEncoder encoder, IServiceProvider serviceProvider, IStringLocalizer<AbpUiResource> l,
IAbpTagHelperLocalizer tagHelperLocalizer) : base(jsonSerializer, generator, encoder, serviceProvider, l,
IAbpTagHelperLocalizer tagHelperLocalizer) :
base(jsonSerializer, generator, encoder, serviceProvider, l,
tagHelperLocalizer)
{
}
@ -26,36 +27,36 @@ public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperServ
protected override T GetAttributeAndModelExpression<T>(out ModelExpression modelExpression)
{
modelExpression =
new[] { TagHelper.AspForStart, TagHelper.AspForEnd }.FirstOrDefault(x =>
x?.ModelExplorer?.GetAttribute<T>() != null);
modelExpression = new[] { TagHelper.AspForStart, TagHelper.AspForEnd }.FirstOrDefault(x => x?.ModelExplorer?.GetAttribute<T>() != null);
return modelExpression?.ModelExplorer.GetAttribute<T>();
}
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
if (TagHelper.AspForStart != null)
{
var startDateAttributes =
new TagHelperAttributeList { { "data-start-date", "true" }, { "type", "hidden" } };
StartDateTagHelper = new InputTagHelper(Generator) {
ViewContext = TagHelper.ViewContext, For = TagHelper.AspForStart, InputTypeName = "hidden"
var startDateAttributes = new TagHelperAttributeList { { "data-start-date", "true" }, { "type", "hidden" } };
StartDateTagHelper = new InputTagHelper(Generator)
{
ViewContext = TagHelper.ViewContext,
For = TagHelper.AspForStart,
InputTypeName = "hidden"
};
StartDateTagHelperOutput =
await StartDateTagHelper.ProcessAndGetOutputAsync(startDateAttributes, context, "input");
StartDateTagHelperOutput = await StartDateTagHelper.ProcessAndGetOutputAsync(startDateAttributes, context, "input");
}
if (TagHelper.AspForEnd != null)
{
var endDateAttributes = new TagHelperAttributeList { { "data-end-date", "true" }, { "type", "hidden" } };
EndDateTagHelper = new InputTagHelper(Generator) {
ViewContext = TagHelper.ViewContext, For = TagHelper.AspForEnd,InputTypeName = "hidden"
EndDateTagHelper = new InputTagHelper(Generator)
{
ViewContext = TagHelper.ViewContext,
For = TagHelper.AspForEnd,
InputTypeName = "hidden"
};
EndDateTagHelperOutput =
await EndDateTagHelper.ProcessAndGetOutputAsync(endDateAttributes, context, "input");
EndDateTagHelperOutput = await EndDateTagHelper.ProcessAndGetOutputAsync(endDateAttributes, context, "input");
}
await base.ProcessAsync(context, output);
@ -63,16 +64,16 @@ public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperServ
protected override TagHelperOutput TagHelperOutput { get; set; }
[CanBeNull]
[CanBeNull]
protected virtual InputTagHelper StartDateTagHelper { get; set; }
[CanBeNull]
[CanBeNull]
protected virtual TagHelperOutput StartDateTagHelperOutput { get; set; }
[CanBeNull]
[CanBeNull]
protected virtual InputTagHelper EndDateTagHelper { get; set; }
[CanBeNull]
[CanBeNull]
protected virtual TagHelperOutput EndDateTagHelperOutput { get; set; }
protected override string GetPropertyName()
@ -87,13 +88,15 @@ public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperServ
protected override void AddBaseTagAttributes(TagHelperAttributeList attributes)
{
if (TagHelper.AspForStart != null && TagHelper.AspForStart.Model != null &&
if (TagHelper.AspForStart != null &&
TagHelper.AspForStart.Model != null &&
SupportedInputTypes.TryGetValue(TagHelper.AspForStart.Metadata.ModelType, out var convertFuncStart))
{
attributes.Add("data-start-date", convertFuncStart(TagHelper.AspForStart.Model));
}
if (TagHelper.AspForEnd != null && TagHelper.AspForEnd.Model != null &&
if (TagHelper.AspForEnd != null &&
TagHelper.AspForEnd.Model != null &&
SupportedInputTypes.TryGetValue(TagHelper.AspForEnd.Metadata.ModelType, out var convertFuncEnd))
{
attributes.Add("data-end-date", convertFuncEnd(TagHelper.AspForEnd.Model));

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/DatePickerOptionsAttribute.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
[AttributeUsage(AttributeTargets.Property)]
public class DatePickerOptionsAttribute : Attribute, IAbpDatePickerOptions
{
private IAbpDatePickerOptions _abpDatePickerOptionsImplementation;
private readonly IAbpDatePickerOptions _abpDatePickerOptionsImplementation;
public DatePickerOptionsAttribute()
{

5
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/DateRangePickerAttribute.cs

@ -6,8 +6,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public class DateRangePickerAttribute : Attribute
{
public string PickerId { get; set; }
public bool IsStart { get; set; }
public bool IsEnd => !IsStart;
public DateRangePickerAttribute(string pickerId, bool isStart = false)
{
PickerId = pickerId;

117
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/IAbpDatePickerOptions.cs

@ -7,94 +7,143 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public interface IAbpDatePickerOptions
{
public string PickerId { get; set; }
// Min and Max date
/// <summary>
/// Min date allowed
/// </summary>
DateTime? MinDate { get; set; }
/// <summary>
/// Max date allowed
/// </summary>
DateTime? MaxDate { get; set; }
// Max span between start and end date
object? MaxSpan { get; set; }
/// <summary>
/// Max span between start and end date
/// </summary>
object MaxSpan { get; set; }
// Show dropdowns
/// <summary>
/// Show dropdowns
/// </summary>
bool? ShowDropdowns { get; set; }
// Min and Max year
/// <summary>
/// Min year allowed
/// </summary>
int? MinYear { get; set; }
/// <summary>
/// Max year allowed
/// </summary>
int? MaxYear { get; set; }
// Show week numbers
/// <summary>
/// Show week numbers
/// </summary>
AbpDatePickerWeekNumbers WeekNumbers { get; set; }
// Time picker
/// <summary>
/// Allows users to pick a time
/// </summary>
bool? TimePicker { get; set; }
// Time picker increment
/// <summary>
/// The time interval allowed
/// </summary>
int? TimePickerIncrement { get; set; }
// Time picker 24 hour
/// <summary>
/// Sets the time picker hour format as 12 or 24.
/// </summary>
bool? TimePicker24Hour { get; set; }
// Time picker seconds
/// <summary>
/// Allows seconds selection
/// </summary>
bool? TimePickerSeconds { get; set; }
// Ranges object
/// <summary>
/// Predefined date range list
/// </summary>
List<AbpDatePickerRange> Ranges { get; set; }
// Show custom range label
/// <summary>
/// Show custom range label
/// </summary>
bool? ShowCustomRangeLabel { get; set; }
// Always show calendar
/// <summary>
/// Always show calendars
/// </summary>
bool? AlwaysShowCalendars { get; set; }
// Opens date picker on left or right or center of the input
/// <summary>
/// The horizontal location of the datepicker
/// </summary>
AbpDatePickerOpens Opens { get; set; }
// Drops down or up or auto
/// <summary>
/// The vertical location of the datepicker
/// </summary>
AbpDatePickerDrops Drops { get; set; }
// Button classes
[CanBeNull]
/// <summary>
/// Button CSS classes
/// </summary>
[CanBeNull]
string ButtonClasses { get; set; }
// Apply class to all buttons
[CanBeNull]
/// <summary>
/// Apply class to all buttons
/// </summary>
[CanBeNull]
string ApplyButtonClasses { get; set; }
// Cancel class to all buttons
[CanBeNull]
/// <summary>
/// Cancel CSS classes to all buttons
/// </summary>
[CanBeNull]
string CancelButtonClasses { get; set; }
// Locale
[CanBeNull]
/// <summary>
/// Sets a custom locale
/// </summary>
[CanBeNull]
object Locale { get; set; }
// Auto apply
/// <summary>
/// Applies the value when it a date is selected
/// </summary>
bool? AutoApply { get; set; }
// Linked calendars
/// <summary>
/// When enabled, the two calendars displayed will always be for two sequential months (i.e. January and February), and both will be advanced when clicking the left or right arrows above the calendars. When disabled, the two calendars can be individually advanced and display any month/year.
/// </summary>
bool? LinkedCalendars { get; set; }
// Auto update input
/// <summary>
/// Updates the input automatically
/// </summary>
bool? AutoUpdateInput { get; set; }
// Parent element
[CanBeNull]
[CanBeNull]
string ParentEl { get; set; }
[CanBeNull]
[CanBeNull]
string DateFormat { get; set; }
bool OpenButton { get; set; }
bool ClearButton { get; set; }
bool SingleOpenAndClearButton { get; set; }
bool? IsUtc { get; set; }
bool? IsIso { get; set; }
[CanBeNull]
[CanBeNull]
object Options { get; set; }
}

226
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js

@ -187,7 +187,7 @@
});
});
}
abp.libs.bootstrapDateRangePicker = {
packageName: "bootstrap-daterangepicker",
@ -207,6 +207,7 @@
if (options.label) {
label.text(options.label)
}
$container.append(label)
var $datePicker = options.singleDatePicker ? $('<abp-date-picker></abp-date-picker>') : $('<abp-date-range-picker></abp-date-range-picker>');
$container.append($datePicker)
@ -292,19 +293,20 @@
return $container;
}
};
abp.dom.initializers.initializeDateRangePickers = function ($rootElement) {
$rootElement
.findWithSelf('abp-date-picker,abp-date-range-picker')
.each(function () {
var $this = $(this);
var $input = $(this).find('.input-group input[type="text"]')
if($input.data('daterangepicker')) {
var $input = $this.find('.input-group input[type="text"]')
if ($input.data('daterangepicker')) {
return;
}
var $openButton = $(this).find('button[data-type="open"]')
var $clearButton = $(this).find('button[data-type="clear"]')
var $openButton = $this.find('button[data-type="open"]')
var $clearButton = $this.find('button[data-type="clear"]')
var singleDatePicker = $this.is('abp-date-picker')
var options = {};
options.singleDatePicker = singleDatePicker;
@ -321,29 +323,27 @@
maxYear: parseInt(moment().add(100, 'year').locale('en').format('YYYY')),
locale: {
direction: abp.localization.currentCulture.isRightToLeft ? 'rtl' : 'ltr',
todayLabel: abp.localization.localize('Today', 'AbpUi'),
clearLabel: abp.localization.localize('Clear', 'AbpUi'),
applyLabel: abp.localization.localize('Apply', 'AbpUi'),
todayLabel: abp.localization.localize('Today', 'AbpUi'),
clearLabel: abp.localization.localize('Clear', 'AbpUi'),
applyLabel: abp.localization.localize('Apply', 'AbpUi'),
},
singleOpenAndClearButton: true
};
var locale = defaultOptions.locale;
$.extend(options, defaultOptions);
$.extend(options, $this.data());
if(jQuery.isEmptyObject(options.locale))
{
if (jQuery.isEmptyObject(options.locale)) {
options.locale = locale;
}else{
} else {
locale = options.locale;
}
$.extend(options, $this.data("options"));
if(jQuery.isEmptyObject(options.locale))
{
if (jQuery.isEmptyObject(options.locale)) {
options.locale = locale;
}
if(options.timePicker && options.timePicker24Hour === undefined){
if (options.timePicker && options.timePicker24Hour === undefined) {
options.timePicker24Hour = moment.localeData().longDateFormat('LT').indexOf('A') < 1;
}
@ -356,33 +356,35 @@
var separator = options.separator;
var defaultDateFormat = "YYYY-MM-DD";
var singleOpenAndClearButton = options.singleOpenAndClearButton && $clearButton.length > 0 && $openButton.length > 0;
const replaceButton = function (hasDate) {
var hiddenClass = 'd-none';
if(singleOpenAndClearButton){
if(hasDate){
if (singleOpenAndClearButton) {
if (hasDate) {
$openButton.addClass(hiddenClass);
$clearButton.removeClass(hiddenClass);
$clearButton.insertAfter($openButton);
}else {
} else {
$openButton.removeClass(hiddenClass);
$clearButton.addClass(hiddenClass);
$openButton.insertAfter($clearButton);
}
}
}
const getMoment = function (date) {
if(!date){
if (!date) {
return isUtc ? moment.utc() : moment();
}
if(isUtc) {
return moment.utc(date,dateFormat);
}else {
return moment(date,dateFormat);
if (isUtc) {
return moment.utc(date, dateFormat);
} else {
return moment(date, dateFormat);
}
}
if (dateFormat) {
options.locale = options.locale || {};
options.locale.format = dateFormat;
@ -394,25 +396,25 @@
}
var startDate = options.startDate ? moment(options.startDate) : null;
if(singleDatePicker && !startDate){
if (singleDatePicker && !startDate) {
startDate = options.date ? moment(options.date) : null;
}
var endDate = options.endDate ? moment(options.endDate) : null;
if (startDate) {
options.startDate = startDate;
}
if (endDate) {
options.endDate = endDate;
}
if(options.ranges){
if (options.ranges) {
$.each(options.ranges, function (key, value) {
let start = value[0];
let end;
if(value.length > 1){
if (value.length > 1) {
end = value[1];
}else{
} else {
end = value[0];
}
options.ranges[key] = [getMoment(start), getMoment(end)];
@ -421,11 +423,11 @@
var $todayBtn = $('<button type="button" class="btn btn-sm btn-default today-btn" data-action="today">' + options.locale.todayLabel + '</button>');
var $clearBtn = $('<button type="button" class="btn btn-sm btn-default clear-btn" data-action="clear">' + options.locale.clearLabel + '</button>');
var extraButtons = [];
if (options.showTodayButton) {
extraButtons.push($todayBtn);
$todayBtn.on('click', function () {
var today = getMoment();
$input.data('daterangepicker').setStartDate(today);
@ -433,43 +435,44 @@
$input.data('daterangepicker').updateView();
});
}
if (options.showClearButton) {
extraButtons.push($clearBtn);
$clearBtn.on('click', function () {
$input.val('').trigger('change');
$dateRangePicker.hide();
});
}
if (typeof options.template !== 'string' && !(options.template instanceof $))
options.template =
'<div class="daterangepicker">' +
'<div class="ranges"></div>' +
'<div class="drp-calendar left">' +
'<div class="calendar-table"></div>' +
'<div class="calendar-time"></div>' +
'</div>' +
'<div class="drp-calendar right">' +
'<div class="calendar-table"></div>' +
'<div class="calendar-time"></div>' +
'</div>' +
'<div class="drp-buttons">' +
'<button class="applyBtn" disabled="disabled" type="button"></button> ' +
'</div>' +
'<div class="ranges"></div>' +
'<div class="drp-calendar left">' +
'<div class="calendar-table"></div>' +
'<div class="calendar-time"></div>' +
'</div>' +
'<div class="drp-calendar right">' +
'<div class="calendar-table"></div>' +
'<div class="calendar-time"></div>' +
'</div>' +
'<div class="drp-buttons">' +
'<button class="applyBtn" disabled="disabled" type="button"></button> ' +
'</div>' +
'</div>';
$input.daterangepicker(options);
var $dateRangePicker = $input.data('daterangepicker');
if($dateRangePicker.container.find('.drp-buttons').css('display') !== 'none'){
if ($dateRangePicker.container.find('.drp-buttons').css('display') !== 'none') {
$.each(extraButtons, function (index, value) {
$dateRangePicker.container.find('.drp-buttons').prepend(value);
});
}
else{
else {
var $div = $('<div class="drp-buttons extra-buttons"></div>');
$div.css('display', 'block');
$.each(extraButtons, function (index, value) {
@ -477,14 +480,11 @@
});
$div.insertAfter($dateRangePicker.container.find('.drp-buttons'));
}
$dateRangePicker.outsideClick = function(e) {
$dateRangePicker.outsideClick = function (e) {
var target = $(e.target);
// if the page is clicked anywhere except within the daterangerpicker/button
// itself then call this.hide()
// if the page is clicked anywhere except within the daterangerpicker/button itself then call this.hide()
if (
// ie modal dialog fix
e.type == "focusin" ||
@ -492,24 +492,27 @@
target.closest(this.container).length ||
target.closest('.calendar-table').length ||
target.closest($openButton).length
) return;
) {
return;
}
this.hide();
this.element.trigger('outsideClick.daterangepicker', this);
};
$openButton.on('click', function () {
$dateRangePicker.toggle();
});
const extendDateFormat = function (format) {
if(timePicker){
if(timePicker24Hour){
if(timePickerSeconds){
if (timePicker) {
if (timePicker24Hour) {
if (timePickerSeconds) {
format += " HH:mm:ss";
}else{
} else {
format += " HH:mm";
}
}else {
} else {
if (timePickerSeconds) {
format += ' ' + " hh:mm:ss A"
} else {
@ -517,33 +520,34 @@
}
}
}
return format;
}
defaultDateFormat = extendDateFormat(defaultDateFormat);
if(!dateFormat) {
if (!dateFormat) {
dateFormat = extendDateFormat(moment.localeData().longDateFormat('L'))
}
if(!separator) {
if (!separator) {
separator = $dateRangePicker.locale.separator;
}
if(singleDatePicker){
if(startDate){
if (singleDatePicker) {
if (startDate) {
$input.val(startDate.format(dateFormat));
}
}else{
if(startDate && endDate){
} else {
if (startDate && endDate) {
$input.val(startDate.format(dateFormat) + separator + endDate.format(dateFormat));
}
}
$input.on('apply.daterangepicker', function (ev, picker) {
if(singleDatePicker){
if (singleDatePicker) {
$(this).val(picker.startDate.format(dateFormat));
}else{
} else {
$(this).val(picker.startDate.format(dateFormat) + separator + picker.endDate.format(dateFormat));
}
@ -554,6 +558,7 @@
$(this).val('');
$(this).trigger('change');
});
$input.on('show.daterangepicker', function (ev, picker) {
var momentStartDate = getMoment(startDate);
var momentEndDate = getMoment(endDate);
@ -564,7 +569,6 @@
picker.setEndDate(momentEndDate);
}
});
$clearButton.on('click', function () {
$input.val('');
@ -572,9 +576,9 @@
});
$input.on('change', function () {
if($(this).val() !== ''){
if ($(this).val() !== '') {
replaceButton(true);
}else{
} else {
replaceButton(false);
}
var dates = $(this).val().split(separator);
@ -582,91 +586,97 @@
startDate = getMoment(dates[0]);
if (!startDate.isValid()) {
startDate = null;
}else{
} else {
startDate = formatDate(startDate);
}
endDate = getMoment(dates[1]);
if (!endDate.isValid()) {
endDate = null;
}else{
} else {
endDate = formatDate(endDate);
}
} else {
if(dates[0]){
if (dates[0]) {
startDate = getMoment(dates[0]);
if (!startDate.isValid()) {
startDate = null;
}else{
} else {
startDate = formatDate(startDate);
}
}
else{
else {
startDate = null;
}
endDate = null;
}
if(!startDate){
if (!startDate) {
replaceButton(false);
$(this).val('');
$dateRangePicker.setStartDate(getMoment());
$dateRangePicker.setEndDate(getMoment());
}
if(!singleDatePicker){
if (!singleDatePicker) {
var input1 = $this.find("input[data-start-date]")
input1.val(startDate);
var input2 = $this.find("input[data-end-date]")
input2.val(endDate);
}else{
} else {
var input = $this.find("input[data-date]")
input.val(startDate);
}
if(singleDatePicker){
if (singleDatePicker) {
$this.data('date', startDate);
$input.data('date', startDate);
}else{
} else {
$this.data('startDate', startDate);
$this.data('endDate', endDate);
$input.data('startDate', startDate);
$input.data('endDate', endDate);
}
});
function formatDate(date){
if(date){
if(isIso){
function formatDate(date) {
if (date) {
if (isIso) {
return date.locale('en').format();
}
return date.locale('en').format(defaultDateFormat)
}
return null;
}
function getFormattedStartDate (){
if(startDate){
function getFormattedStartDate() {
if (startDate) {
return getMoment(startDate).format(dateFormat);
}
return null;
}
function getFormattedEndDate (){
if(endDate){
function getFormattedEndDate() {
if (endDate) {
return getMoment(endDate).format(dateFormat);
}
return null;
}
if(singleDatePicker){
if (singleDatePicker) {
$this[0].getFormattedDate = getFormattedStartDate;
$input[0].getFormattedDate = getFormattedStartDate;
$dateRangePicker.getFormattedDate = getFormattedStartDate;
}else{
} else {
$dateRangePicker.getFormattedStartDate = getFormattedStartDate;
$dateRangePicker.getFormattedEndDate = getFormattedEndDate;
$this[0].getFormattedStartDate = getFormattedStartDate;
$this[0].getFormattedEndDate = getFormattedEndDate;
$input[0].getFormattedStartDate = getFormattedStartDate;
$input[0].getFormattedEndDate = getFormattedEndDate;
}

Loading…
Cancel
Save