{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-calendars/src/daterangepicker/daterangepicker.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/daterangepicker/presets.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/daterangepicker/daterangepicker.component.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","DATERANGEWRAPPER","INPUTCONTAINER","DATERANGEICON","POPUP","LEFTCALENDER","RIGHTCALENDER","LEFTCONTAINER","RIGHTCONTAINER","ROOT","LIBRARY","CONTROL","ERROR","ACTIVE","STARTENDCONTAINER","STARTDATE","ENDDATE","STARTBUTTON","INPUTFOCUS","ENDBUTTON","RANGEHOVER","OTHERMONTH","STARTLABEL","ENDLABEL","DISABLED","SELECTED","CALENDAR","NEXTICON","PREVICON","HEADER","TITLE","ICONCONTAINER","RANGECONTAINER","RANGEHEADER","PRESETS","FOOTER","RANGEBORDER","TODAY","FOCUSDATE","CONTENT","DAYSPAN","WEEKNUMBER","DATEDISABLED","ICONDISABLED","CALENDARCONTAINER","SEPARATOR","APPLY","CANCEL","DEVICE","OVERLAY","CHANGEICON","LISTCLASS","RTL","HOVER","OVERFLOW","OFFSETVALUE","PRIMARY","FLAT","CSS","ZOOMIN","NONEDITABLE","DAYHEADERLONG","HIDDENELEMENT","wrapperAttr","_super","Presets","apply","DateRangePicker","options","element","_this","call","isCustomRange","isCustomWindow","presetsItem","liCollections","previousEleValue","isKeyPopup","dateDisabled","isRangeIconClicked","isMaxDaysClicked","disabledDays","preventBlur","preventFocus","invalidValueString","isAngular","preventChange","dateRangeOptions","render","initialize","setProperties","startDate","startValue","endDate","endValue","setModelValue","setDataAttribute","hasAttribute","setAttribute","renderComplete","preRender","keyInputConfigs","altDownArrow","escape","enter","tab","altRightArrow","altLeftArrow","moveUp","moveDown","spacebar","defaultConstant","placeholder","startLabel","endLabel","customRange","applyText","cancelText","selectedDays","days","isMobile","window","matchMedia","matches","inputElement","angularTag","tagName","createElement","appendChild","cloneElement","cloneNode","updateHtmlAttributeToElement","getAttribute","id","checkInvalidRange","value","rangeArray","split","separator","Date","initProperty","tabIndex","removeAttribute","navNextFunction","navNextMonth","bind","navPrevFunction","navPrevMonth","deviceNavNextFunction","deviceNavNext","deviceNavPrevFunction","deviceNavPrevious","initStartDate","checkDateValue","initEndDate","formElement","updateValue","formatString","isNaN","checkValue","setValue","start","end","globalize","locale","checkFormat","checkView","firstDayOfWeek","getFirstDayOfWeek","format","skeleton","skeletonString","getDatePattern","type","validationAttribute","checkHtmlAttributes","defaultKeyConfigs","shiftTab","min","max","l10n","setLocale","getConstant","processPresets","createInput","updateHtmlAttributeToWrapper","setRangeAllowEdit","bindEvents","isDynamic","attributes","htmlAttributes","name","_i","_a","keys","pro","indexOf","firstHiddenChild","secondHiddenChild","allowEdit","readonly","updateClearIconState","inputWrapper","container","input","attr","updatedClassValue","replace","trim","dateRangeStyle","updateCssClass","cssNewClass","cssOldClass","setCssClass","popupWrapper","presets","label","range","push","text","activeIndex","add","buttons","rangeIconHandler","inputFocusHandler","inputBlurHandler","inputChangeHandler","showClearButton","clearButton","resetHandler","keyConfigs","inputKeyboardModule","eventName","keyAction","inputHandler","formResetHandler","enabled","unBindEvents","remove","destroy","updateHiddenInput","parseDate","formatDate","dispatchEvent","e","stopPropagation","bindClearEvent","valueType","preventDefault","clear","clearedArgs","event","trigger","changeTrigger","clearRange","hide","restoreValue","previousStartValue","previousEndValue","disabled","val","startCopy","endCopy","floatLabelType","errorClass","applyButton","removeSelection","targetElement","isPopupOpen","document","body","contains","popupObj","applyFunction","children","focus","show","leftCalendar","calendarFocus","attributes_1","prop","undefined","dateValue","minDays","parseInt","maxDays","createPopup","splice","setMilliseconds","className","adjustLongHeaderWidth","isPreset","createPresets","listRippleEffect","renderPopup","renderControl","createControl","bindCalendarEvents","updateRange","calendarElement","rightCalendar","disabledDateRender","updateHeader","clearCalendarEvents","clearEvents","leftCalPrevIcon","leftCalNextIcon","rightCalPrevIcon","rightCalNextIcon","updateNavIcons","iconHandler","calendarIconEvent","classList","deviceCalendarEvent","startButton","deviceHeaderClick","endButton","calendarIconRipple","headerTitleElement","querySelector","leftKeyboardModule","keyInputHandler","rightKeyboardModule","depth","bindCalendarCellEvents","removeFocusedDate","selector","duration","isCenterRipple","nextIcon","previousIcon","calendar","updateDeviceCalendar","navigateNext","deviceNavigation","navigatePrevious","deviceCalendar","contentElement","tableBodyElement","table","getElementsByTagName","headerElement","currentTarget","currentDate","createContentBody","removeClassDisabled","updateMinMaxDays","selectableDates","focusArguments","model","isServerRendered","openOnFocus","dateOptions","prevStartVal","prevEndVal","refreshControl","activeElement","blurArguments","strictMode","updateInput","inputStr","isDateDisabled","keyCalendarUpdate","isLeftCalendar","ele","leftCalCurrentDate","rightCalCurrentDate","updateCalendarElement","navInCalendar","leftLimit","rightLimit","date","view","getViewNumber","currentView","setDate","getDate","action","addDay","KeyboardNavigate","keyNavigation","firstDay","renderMonths","renderYears","renderDecades","lastDay","rightDateLimit","getFullYear","getMonth","leftDateLimit","selectedDate","focusedDate","depthValue","levelRestrict","presetElement","effect","selectRange","controlDown","contentClick","yearDate","navigateTo","cancelButton","firstElementChild","calendarNavigation","addMonths","addYears","checkMinMaxDays","presetHeight","tdCells","querySelectorAll","tdCells_1","cell","disabledCell","hoverSelection","isDate","focusedDate_1","today","eleDate","getIdValue","isSameMonth","isSameYear","currentElement","tdCells_2","isDisabledCell","startDateValue","eleDateValue","setHours","isSameStartEnd","startVal","endVal","isSame","elementCollection","elementCollection_1","tdCells_3","eleDateValue_1","addSelectedAttributes","endDateValue","rangeArgs","inputValue","Math","round","abs","removeTimeValueFromDate","getTime","args","daySpan","isInteracted","otherMonthSelect","isStartDate","sameDate","dateIdString","tdCell","y","m","firstMonth","lastMonth","getHours","setMinutes","getMinutes","setSeconds","getSeconds","endEle","endEle_1","ele_1","endEle_2","ele_2","removeSelectedAttributes","tdCells_4","tdCells_5","startMonth","startYear","previousIconHandler","nextIconHandler","startValueSelected","minDate","maxDate","maxEle","tdCells_6","calendar_1","tdCells_7","textContent","disabledDayCnt","toString","title","start_1","end_1","updateControl","createRangeHeader","labelContainer","endBtn","startBtn","content","changeIcon","disableInput","setEnabled","validateMinMax","validateRangeStrict","validateMinMaxDays","validateRange","renderCalendar","enableRtl","createHeader","createContent","isSameDecade","endYear","startMonthCurrentDate","setMonth","selectNextMonth","month","selectNextYear","yr","setFullYear","selectNextDecade","decyr","selectStartMonth","createCalendar","calendarContainer","validateDate","minMaxUpdate","prevIcon","leftTitle","leftContainer","rightContainer","leftNavTitle","rightTitle","rightNavTitle","tableHeadElement","navigateTitle","clickEventEmitter","getCalendarView","navigatedEvent","navigatedArgs","controlContainer","headerContainer","footerSection","cancelBtn","applyBtn","enable","cancelFunction","style","height","getBoundingClientRect","deviceHeaderUpdate","eve","isValueChanged","closeEventArgs","cancel","focusOut","popupKeyboardModule","popupKeyActionHandle","onMouseClick","item","li","isClick","setListSelection","onMouseOver","onMouseLeave","slice","values_1","renderCustomPopup","removeListSelection","values","applyPresetRange","modelValue","showPopup","zIndex","refreshPosition","openEventArgs","appendTo","attrs","listTag","createList","customElement","wireListEvents","width","unWireListEvents","popupWidth","cssClass","modal","relateTo","position","X","Y","offsetX","offsetY","collision","targetType","open","btnKeyboardModule","presetKeyboardModule","presetKeyActionHandler","popupKeyBoardHandler","isDevice","popupCloseHandler","close","parentElement","targetExitViewport","display","documentHandler","keyCode","rangeContainer","listMoveDown","setScrollPosition","listMoveUp","hvrItem","getHoverLI","actItem","getActiveLI","nextElementSibling","previousElementSibling","listHeight","hover","active","nextEle","offsetTop","liHeight","scrollTop","blur","updatedCssClassValue","properties","addAttributes","setEleWidth","dayHeaderFormat","isDisabled","disabledDates","formatOption","invalid","startinvalue","endinvalue","startString","endString","valueString","startObject","endObject","invalidobject","getstringvalue","checkInvalidValue","toLocaleDateString","stringValue","formatOpt","extISOStr","basISOString","test","virtualRenderCellArgs","virtualRenderCellEvent","localDate","count","isStartDisabled","isEndDisabled","createHiddenInput","evt","createEvent","initEvent","toLowerCase","navigate","focusIn","isBlur","ariaAttrs","removeAttributes","ensureInputAttribute","getModuleName","getPersistData","keyEntity","addOnPersist","getSelectedRange","mobileRangePopupWrap","popup","eventArgs","setOverlayIndex","outerHTML","setPlaceholder","refreshChange","enableInput","clearModelvalue","newProp","oldProp","setMinMaxDays","onPropertyChanged","openPopup","setReadonly","setEnableRtl","setClearButton","removeFloating","addFloating","PresetsDirective","PresetsPlugin","install","Vue","component","PresetDirective","PresetPlugin","modelProps","DateRangePickerComponent","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","ej2Instances","_trigger","bindProperties","_setProperties","muteOnChange","map","$emit","eventProp","successHandler","requestType","match","propKey","$slots","default","requiredModules","props","DateRangePickerPlugin"],"mappings":"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","file":"js/calendars~param~param2~param3~requests~security.77f279ed.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \nimport { Property, EventHandler, Internationalization, NotifyPropertyChanges, detach, getUniqueID } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Event, Browser, L10n, ChildProperty } from '@syncfusion/ej2-base';\nimport { addClass, createElement, remove, closest, select, prepend, removeClass, attributes, Collection } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, formatUnit, setValue, rippleEffect, merge, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { CalendarBase } from '../calendar/calendar';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar DATERANGEWRAPPER = 'e-date-range-wrapper';\nvar INPUTCONTAINER = 'e-input-group';\nvar DATERANGEICON = 'e-input-group-icon e-range-icon e-icons';\nvar POPUP = 'e-popup';\nvar LEFTCALENDER = 'e-left-calendar';\nvar RIGHTCALENDER = 'e-right-calendar';\nvar LEFTCONTAINER = 'e-left-container';\nvar RIGHTCONTAINER = 'e-right-container';\nvar ROOT = 'e-daterangepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar STARTENDCONTAINER = 'e-start-end';\nvar STARTDATE = 'e-start-date';\nvar ENDDATE = 'e-end-date';\nvar STARTBUTTON = 'e-start-btn';\nvar INPUTFOCUS = 'e-input-focus';\nvar ENDBUTTON = 'e-end-btn';\nvar RANGEHOVER = 'e-range-hover';\nvar OTHERMONTH = 'e-other-month';\nvar STARTLABEL = 'e-start-label';\nvar ENDLABEL = 'e-end-label';\nvar DISABLED = 'e-disabled';\nvar SELECTED = 'e-selected';\nvar CALENDAR = 'e-calendar';\nvar NEXTICON = 'e-next';\nvar PREVICON = 'e-prev';\nvar HEADER = 'e-header';\nvar TITLE = 'e-title';\nvar ICONCONTAINER = 'e-icon-container';\nvar RANGECONTAINER = 'e-date-range-container';\nvar RANGEHEADER = 'e-range-header';\nvar PRESETS = 'e-presets';\nvar FOOTER = 'e-footer';\nvar RANGEBORDER = 'e-range-border';\nvar TODAY = 'e-today';\nvar FOCUSDATE = 'e-focused-date';\nvar CONTENT = 'e-content';\nvar DAYSPAN = 'e-day-span';\nvar WEEKNUMBER = 'e-week-number';\nvar DATEDISABLED = 'e-date-disabled';\nvar ICONDISABLED = 'e-icon-disabled';\nvar CALENDARCONTAINER = 'e-calendar-container';\nvar SEPARATOR = 'e-separator';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar DEVICE = 'e-device';\nvar OVERLAY = 'e-overlay';\nvar CHANGEICON = 'e-change-icon e-icons';\nvar LISTCLASS = 'e-list-item';\nvar RTL = 'e-rtl';\nvar HOVER = 'e-hover';\nvar OVERFLOW = 'e-range-overflow';\nvar OFFSETVALUE = 4;\nvar PRIMARY = 'e-primary';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar ZOOMIN = 'e-zoomin';\nvar NONEDITABLE = 'e-non-edit';\nvar DAYHEADERLONG = 'e-daterange-day-header-lg';\nvar HIDDENELEMENT = 'e-daterange-hidden';\nvar wrapperAttr = ['title', 'class', 'style'];\nvar Presets = /** @class */ (function (_super) {\n __extends(Presets, _super);\n function Presets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Presets.prototype, \"label\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"end\", void 0);\n return Presets;\n}(ChildProperty));\nexport { Presets };\n/**\n * Represents the DateRangePicker component that allows user to select the date range from the calendar\n * or entering the range through the input element.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateRangePicker = /** @class */ (function (_super) {\n __extends(DateRangePicker, _super);\n /**\n * Constructor for creating the widget\n */\n function DateRangePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isCustomRange = false;\n _this.isCustomWindow = false;\n _this.presetsItem = [];\n _this.liCollections = [];\n _this.previousEleValue = '';\n _this.isKeyPopup = false;\n _this.dateDisabled = false;\n _this.isRangeIconClicked = false;\n _this.isMaxDaysClicked = false;\n _this.disabledDays = [];\n _this.preventBlur = false;\n _this.preventFocus = false;\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.dateRangeOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n * @return void\n * @private\n */\n DateRangePicker.prototype.render = function () {\n this.initialize();\n this.setProperties({ startDate: this.startValue }, true);\n this.setProperties({ endDate: this.endValue }, true);\n this.setModelValue();\n this.setDataAttribute(false);\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n * @returns void\n * @private\n */\n DateRangePicker.prototype.preRender = function () {\n this.keyInputConfigs = {\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n tab: 'tab',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n spacebar: 'space'\n };\n this.defaultConstant = {\n placeholder: this.placeholder,\n startLabel: 'Start Date',\n endLabel: 'End Date',\n customRange: 'Custom Range',\n applyText: 'Apply',\n cancelText: 'Cancel',\n selectedDays: 'Selected Days',\n days: 'days'\n };\n /**\n * Mobile View\n */\n this.isMobile = window.matchMedia('(max-width:550px)').matches;\n this.inputElement = this.element;\n this.angularTag = null;\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.updateHtmlAttributeToElement();\n if (this.element.getAttribute('id')) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n this.checkInvalidRange(this.value);\n if (!this.invalidValueString && (typeof (this.value) === 'string')) {\n var rangeArray = this.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n }\n this.initProperty();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n this.navNextFunction = this.navNextMonth.bind(this);\n this.navPrevFunction = this.navPrevMonth.bind(this);\n this.deviceNavNextFunction = this.deviceNavNext.bind(this);\n this.deviceNavPrevFunction = this.deviceNavPrevious.bind(this);\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.formElement = closest(this.element, 'form');\n };\n ;\n DateRangePicker.prototype.updateValue = function () {\n var dateOptions = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (this.value && this.value.length > 0) {\n if (this.value[0] instanceof Date && !isNaN(+this.value[0])) {\n this.setProperties({ startDate: this.value[0] }, true);\n this.startValue = this.value[0];\n }\n else if (typeof this.value[0] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.startValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ startDate: new Date(this.checkValue(this.value[0])) }, true);\n this.startValue = new Date(this.checkValue(this.value[0]));\n }\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value[1] instanceof Date && !isNaN(+this.value[1])) {\n this.setProperties({ endDate: this.value[1] }, true);\n this.endValue = this.value[1];\n }\n else if (typeof this.value[1] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ endDate: new Date(this.checkValue(this.value[1])) }, true);\n this.endValue = new Date(this.checkValue(this.value[1]));\n this.setValue();\n }\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (this.value && this.value.start) {\n if (this.value.start instanceof Date && !isNaN(+this.value.start)) {\n this.setProperties({ startDate: this.value.start }, true);\n this.startValue = this.value.start;\n }\n else if (typeof this.value.start === 'string') {\n this.setProperties({ startDate: new Date(this.checkValue(this.value.start)) }, true);\n this.startValue = new Date(this.checkValue(this.value.start));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value.end instanceof Date && !isNaN(+this.value.end)) {\n this.setProperties({ endDate: this.value.end }, true);\n this.endValue = this.value.end;\n }\n else if (typeof this.value.end === 'string') {\n this.setProperties({ endDate: new Date(this.checkValue(this.value.end)) }, true);\n this.endValue = new Date(this.checkValue(this.value.end));\n this.setValue();\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (isNullOrUndefined(this.value)) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(this.endDate)));\n this.startValue = this.checkDateValue(new Date(this.checkValue(this.startDate)));\n this.setValue();\n }\n };\n DateRangePicker.prototype.initProperty = function () {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.updateValue();\n };\n DateRangePicker.prototype.checkFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n else {\n this.formatString = null;\n }\n }\n else {\n this.formatString = null;\n }\n };\n DateRangePicker.prototype.initialize = function () {\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.checkHtmlAttributes(false);\n merge(this.defaultKeyConfigs, { shiftTab: 'shift+tab' });\n var start = this.checkDateValue(new Date(this.checkValue(this.startValue)));\n this.setProperties({ startDate: start }, true); // persist the value propeerty.\n this.setProperties({ endValue: this.checkDateValue(new Date(this.checkValue(this.endValue))) }, true);\n this.setValue();\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.l10n = new L10n('daterangepicker', this.defaultConstant, this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.processPresets();\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setRangeAllowEdit();\n this.bindEvents();\n };\n DateRangePicker.prototype.setDataAttribute = function (isDynamic) {\n var attributes = {};\n if (!isDynamic) {\n for (var i = 0; i < this.element.attributes.length; i++) {\n attributes[this.element.attributes[i].name] = this.element.getAttribute(this.element.attributes[i].name);\n }\n }\n else {\n attributes = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (pro.indexOf('data') === 0) {\n this.firstHiddenChild.setAttribute(pro, attributes[pro]);\n this.secondHiddenChild.setAttribute(pro, attributes[pro]);\n }\n }\n };\n DateRangePicker.prototype.setRangeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateClearIconState();\n };\n DateRangePicker.prototype.updateClearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n };\n DateRangePicker.prototype.validationAttribute = function (element, input) {\n var name = element.getAttribute('name') ? element.getAttribute('name') : element.getAttribute('id');\n input.setAttribute('name', name);\n element.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(element.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = element.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n element.removeAttribute(attributes[i]);\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValue = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (key === 'style') {\n var dateRangeStyle = this.inputWrapper.container.getAttribute(key);\n dateRangeStyle = !isNullOrUndefined(dateRangeStyle) ? (dateRangeStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputWrapper.container.setAttribute(key, dateRangeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n DateRangePicker.prototype.updateCssClass = function (cssNewClass, cssOldClass) {\n if (!isNullOrUndefined(cssOldClass)) {\n cssOldClass = (cssOldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssNewClass)) {\n cssNewClass = (cssNewClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssNewClass, [this.inputWrapper.container], cssOldClass);\n if (this.popupWrapper) {\n Input.setCssClass(cssNewClass, [this.popupWrapper], cssOldClass);\n }\n };\n DateRangePicker.prototype.processPresets = function () {\n this.presetsItem = [];\n var i = 0;\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n for (var _i = 0, _a = this.presets; _i < _a.length; _i++) {\n var range = _a[_i];\n var id = range.label.replace(/\\s+/g, '') + '_' + (++i);\n if (typeof range.end === 'string') {\n this.presetsItem.push({\n id: id, text: range.label, end: new Date(this.checkValue(range.end)), start: new Date(this.checkValue(range.start))\n });\n }\n else {\n this.presetsItem.push({ id: id, text: range.label, start: range.start, end: range.end });\n }\n }\n var startDate = isNullOrUndefined(this.startValue) ? null : new Date(+this.startValue);\n var endDate = isNullOrUndefined(this.endValue) ? null : new Date(+this.endValue);\n this.presetsItem.push({ id: 'custom_range', text: this.l10n.getConstant('customRange'), start: startDate, end: endDate });\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.isCustomRange = true;\n this.activeIndex = this.presetsItem.length - 1;\n }\n }\n };\n DateRangePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n if (!this.isMobile) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.inputKeyboardModule = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n };\n DateRangePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.inputKeyboardModule)) {\n this.inputKeyboardModule.destroy();\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.inputElement.tabIndex = -1;\n };\n DateRangePicker.prototype.updateHiddenInput = function () {\n if (this.firstHiddenChild && this.secondHiddenChild) {\n var format = { type: 'datetime', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (typeof this.startDate === 'string') {\n this.startDate = this.globalize.parseDate(this.startDate, format);\n }\n if (typeof this.endDate === 'string') {\n this.endDate = this.globalize.parseDate(this.endDate, format);\n }\n this.firstHiddenChild.value = (this.startDate && this.globalize.formatDate(this.startDate, format))\n || (this.inputElement.value);\n this.secondHiddenChild.value = (this.endDate && this.globalize.formatDate(this.endDate, format)) ||\n (this.inputElement.value);\n this.dispatchEvent(this.firstHiddenChild, 'focusout');\n this.dispatchEvent(this.firstHiddenChild, 'change');\n }\n };\n DateRangePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DateRangePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.valueType = this.value;\n e.preventDefault();\n this.clear();\n var clearedArgs = {\n event: e\n };\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.trigger('cleared', clearedArgs);\n this.changeTrigger(e);\n this.clearRange();\n this.hide(e);\n };\n DateRangePicker.prototype.restoreValue = function () {\n this.previousEleValue = this.inputElement.value;\n this.previousStartValue = this.startValue;\n this.previousEndValue = this.endValue;\n this.valueType = null;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.setValue();\n this.setModelValue();\n };\n DateRangePicker.prototype.formResetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.formElement && (e.target === this.formElement) && !this.inputElement.disabled) {\n var val = this.inputElement.getAttribute('value');\n if (!isNullOrUndefined(this.startCopy)) {\n if (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.value.start)) {\n this.setProperties({ value: { start: this.startCopy, end: this.endCopy } }, true);\n this.startValue = this.value.start;\n this.endValue = this.value.end;\n }\n else {\n this.setProperties({ value: [this.startCopy, this.endCopy] }, true);\n this.startValue = this.value[0];\n this.endValue = this.value[1];\n }\n this.setProperties({ startDate: this.startValue, endDate: this.endValue }, true);\n }\n else {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n this.startValue = this.endValue = null;\n }\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n val = '';\n this.startValue = this.endValue = null;\n this.inputElement.setAttribute('value', '');\n }\n this.restoreValue();\n if (this.inputElement) {\n Input.setValue(val, this.inputElement, this.floatLabelType, this.showClearButton);\n this.errorClass();\n }\n }\n };\n DateRangePicker.prototype.clear = function () {\n if (this.startValue !== null) {\n this.startValue = null;\n }\n if (this.endValue !== null) {\n this.endValue = null;\n }\n if (this.value && this.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n if (this.value !== null && this.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n if (!(isNullOrUndefined(this.applyButton))) {\n this.applyButton.disabled = this.applyButton.element.disabled = true;\n }\n this.removeSelection();\n };\n DateRangePicker.prototype.rangeIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isMobile) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n this.targetElement = null;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n }\n else {\n this.isRangeIconClicked = true;\n this.inputWrapper.container.children[0].focus();\n this.show(null, e);\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.isRangeIconClicked = false;\n this.calendarFocus();\n this.isRangeIconClicked = true;\n }\n }\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateRangePicker.prototype.checkHtmlAttributes = function (isDynamic) {\n this.globalize = new Internationalization(this.locale);\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['startDate', 'endDate', 'minDays', 'maxDays', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder',\n 'type', 'value'];\n var format = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['enabled'] === undefined)) || isDynamic) {\n var disabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ enabled: !disabled }, !isDynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === 'true' || this.inputElement.getAttribute(prop) === '' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['value'] === undefined)) || isDynamic) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, value, {}), !isDynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'min':\n if ((isNullOrUndefined(this.min) || +this.min === +new Date(1900, 0, 1)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'max':\n if ((isNullOrUndefined(this.max) || +this.max === +new Date(2099, 11, 31)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'startDate':\n if (isNullOrUndefined(this.startDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.startValue = dateValue;\n this.setValue();\n }\n break;\n case 'endDate':\n if (isNullOrUndefined(this.endDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.endValue = dateValue;\n this.setValue();\n }\n break;\n case 'minDays':\n if (isNullOrUndefined(this.minDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'maxDays':\n if (isNullOrUndefined(this.maxDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n DateRangePicker.prototype.createPopup = function () {\n for (var i = 0; i < this.presetsItem.length; i++) {\n if ((i !== (this.presetsItem.length - 1)) && this.presetsItem[i].id === 'custom_range') {\n this.presetsItem.splice(i, 1);\n }\n }\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n for (var i = 0; i <= this.presetsItem.length - 2; i++) {\n var startDate = this.presetsItem[i].start;\n var endDate = this.presetsItem[i].end;\n if (this.startValue && this.endValue) {\n if ((+startDate.setMilliseconds(0) === +this.startValue.setMilliseconds(0)) &&\n (+endDate.setMilliseconds(0) === +this.endValue.setMilliseconds(0))) {\n this.activeIndex = i;\n this.isCustomRange = false;\n }\n }\n }\n this.popupWrapper = createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.adjustLongHeaderWidth();\n var isPreset = (!this.isCustomRange || this.isMobile);\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.isCustomWindow = false;\n this.createPresets();\n this.listRippleEffect();\n this.renderPopup();\n }\n else {\n this.isCustomWindow = true;\n this.renderControl();\n }\n };\n DateRangePicker.prototype.renderControl = function () {\n this.createControl();\n this.bindCalendarEvents();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.disabledDateRender();\n }\n this.updateHeader();\n };\n DateRangePicker.prototype.clearCalendarEvents = function () {\n EventHandler.clearEvents(this.leftCalPrevIcon);\n EventHandler.clearEvents(this.leftCalNextIcon);\n EventHandler.clearEvents(this.rightCalPrevIcon);\n EventHandler.clearEvents(this.rightCalNextIcon);\n };\n DateRangePicker.prototype.updateNavIcons = function () {\n _super.prototype.iconHandler.call(this);\n };\n DateRangePicker.prototype.calendarIconEvent = function () {\n this.clearCalendarEvents();\n if (this.leftCalPrevIcon && !this.leftCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.leftCalNextIcon && !this.leftCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalNextIcon, 'mousedown', this.navNextFunction);\n }\n if (this.rightCalPrevIcon && !this.rightCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.rightCalNextIcon && !this.rightCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalNextIcon, 'mousedown', this.navNextFunction);\n }\n };\n DateRangePicker.prototype.bindCalendarEvents = function () {\n if (!this.isMobile) {\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.headerTitleElement = this.popupObj.element.querySelector('.' + RIGHTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.headerTitleElement = this.popupObj.element.querySelector('.' + LEFTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.leftKeyboardModule = new KeyboardEvents(this.leftCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.rightKeyboardModule = new KeyboardEvents(this.rightCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.deviceCalendarEvent();\n EventHandler.add(this.startButton.element, 'click', this.deviceHeaderClick, this);\n EventHandler.add(this.endButton.element, 'click', this.deviceHeaderClick, this);\n }\n if (this.start === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.calendarIconRipple = function () {\n rippleEffect(this.leftCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.leftCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n };\n DateRangePicker.prototype.deviceCalendarEvent = function () {\n EventHandler.clearEvents(this.nextIcon);\n EventHandler.clearEvents(this.previousIcon);\n rippleEffect(this.nextIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.previousIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n if (this.nextIcon && !this.nextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.nextIcon, 'mousedown', this.deviceNavNextFunction);\n }\n if (this.previousIcon && !this.previousIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.previousIcon, 'mousedown', this.deviceNavPrevFunction);\n }\n };\n DateRangePicker.prototype.deviceNavNext = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigateNext(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.deviceNavPrevious = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigatePrevious(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.updateDeviceCalendar = function (calendar) {\n if (calendar) {\n this.previousIcon = calendar.querySelector('.' + PREVICON);\n this.nextIcon = calendar.querySelector('.' + NEXTICON);\n this.calendarElement = calendar;\n this.deviceCalendar = calendar;\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n }\n };\n DateRangePicker.prototype.deviceHeaderClick = function (event) {\n var element = event.currentTarget;\n if (element.classList.contains(STARTBUTTON) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.classList.remove(ACTIVE);\n this.startButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + STARTDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.startValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.removeClassDisabled();\n }\n else if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + ENDDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.endValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n this.selectableDates();\n }\n };\n DateRangePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n this.preventBlur = false;\n var focusArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n if (!this.preventFocus) {\n this.preventFocus = true;\n this.trigger('focus', focusArguments);\n }\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.openOnFocus) {\n this.show();\n }\n };\n DateRangePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.preventBlur) {\n var value = this.inputElement.value;\n if (!isNullOrUndefined(this.presetsItem)) {\n if (this.presetsItem.length > 0 && this.previousEleValue !== this.inputElement.value) {\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n }\n }\n if (!isNullOrUndefined(value) && value.trim() !== '') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length > 1) {\n this.invalidValueString = null;\n var dateOptions = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n var startDate = this.globalize.parseDate(range[0].trim(), dateOptions);\n var endDate = this.globalize.parseDate(range[1].trim(), dateOptions);\n if (!isNullOrUndefined(startDate) && !isNaN(+startDate) && !isNullOrUndefined(endDate) && !isNaN(+endDate)) {\n var prevStartVal = this.startValue;\n this.startValue = startDate;\n var prevEndVal = this.endValue;\n this.endValue = endDate;\n this.setValue();\n this.refreshControl();\n if (value !== this.previousEleValue) {\n this.changeTrigger(e);\n }\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n this.updateHiddenInput();\n // For Mobile mode, when a value is present and choose another range and click on console\n // when popup is open, two startvalues and end values are updated in the popup.\n if (this.isMobile && this.isPopupOpen()) {\n this.startValue = prevStartVal;\n this.endValue = prevEndVal;\n }\n return;\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n if (!this.strictMode) {\n if (isNullOrUndefined(this.popupObj)) {\n this.currentDate = null;\n }\n this.previousStartValue = this.previousEndValue = null;\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(value) && value.trim() === '') {\n this.startValue = null;\n this.endValue = null;\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.updateInput();\n }\n this.errorClass();\n this.changeTrigger(e);\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n }\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.clearRange = function () {\n this.previousStartValue = this.previousEndValue = null;\n this.currentDate = null;\n };\n DateRangePicker.prototype.errorClass = function () {\n var inputStr = this.inputElement.value.trim();\n if (((isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue) && inputStr !== '') ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max))\n || ((this.startValue && this.isDateDisabled(this.startValue))\n || (this.endValue && this.isDateDisabled(this.endValue)))) && inputStr !== '') {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n };\n DateRangePicker.prototype.keyCalendarUpdate = function (isLeftCalendar, ele) {\n this.removeFocusedDate();\n if (isLeftCalendar) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n ele = this.leftCalendar;\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n ele = this.rightCalendar;\n }\n this.updateCalendarElement(ele);\n this.table.focus();\n return ele;\n };\n DateRangePicker.prototype.navInCalendar = function (e, isLeftCalendar, leftLimit, rightLimit, ele) {\n var view = this.getViewNumber(this.currentView());\n var date;\n var min = this.min;\n var max;\n if (!isNullOrUndefined(this.maxDays) && this.isMaxDaysClicked && !isNullOrUndefined(this.startValue)) {\n max = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n }\n else {\n max = this.max;\n }\n switch (e.action) {\n case 'moveRight':\n date = new Date(+this.currentDate);\n this.addDay(date, 1, e, max, min);\n if (isLeftCalendar && +date === +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.KeyboardNavigate(1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveLeft':\n date = new Date(+this.currentDate);\n this.addDay(date, -1, e, max, min);\n if (!isLeftCalendar) {\n if (+date === +leftLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n }\n this.KeyboardNavigate(-1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveUp':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, -7, e, max, min);\n if (+date <= +leftLimit && !isLeftCalendar) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.KeyboardNavigate(-7, view, e, max, min);\n }\n else {\n this.KeyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n this.keyNavigation(ele, e);\n break;\n case 'moveDown':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, 7, e, max, min);\n if (isLeftCalendar && +date >= +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.KeyboardNavigate(7, view, e, max, min);\n }\n else {\n this.KeyboardNavigate(4, view, e, this.max, this.min);\n }\n this.keyNavigation(ele, e);\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n remove(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n this.keyNavigation(ele, e);\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n remove(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n this.keyNavigation(ele, e);\n break;\n }\n };\n // tslint:disable-next-line:max-func-body-length\n DateRangePicker.prototype.keyInputHandler = function (e, value) {\n var date;\n var view = this.getViewNumber(this.currentView());\n var rightDateLimit = new Date(this.rightCalCurrentDate.getFullYear(), this.rightCalCurrentDate.getMonth(), 1);\n var leftDateLimit = new Date(this.leftCalCurrentDate.getFullYear(), this.leftCalCurrentDate.getMonth() + 1, 0);\n var ele = closest(e.target, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n var isLeftCalendar = ele.classList.contains(LEFTCALENDER);\n this.updateCalendarElement(ele);\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n var focusedDate = ele.querySelector('tr td.' + FOCUSDATE);\n var startDate = ele.querySelector('tr td.' + STARTDATE);\n var endDate = ele.querySelector('tr td.' + ENDDATE);\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n var leftCalendar = closest(e.target, '.' + LEFTCALENDER);\n var rightCalendar = closest(e.target, '.' + RIGHTCALENDER);\n var presetElement = closest(e.target, '.' + PRESETS);\n if (!isNullOrUndefined(focusedDate)) {\n this.currentDate = this.currentDate;\n }\n else if (!isNullOrUndefined(endDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.endValue);\n }\n else if (!isNullOrUndefined(startDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.startValue);\n }\n else if (!this.dateDisabled) {\n this.currentDate.setDate(1);\n }\n this.effect = '';\n switch (e.action) {\n case 'altUpArrow':\n if (this.isPopupOpen()) {\n this.hide(e);\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n break;\n case 'select':\n if (levelRestrict) {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : startDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n this.selectRange(null, (element));\n }\n }\n else {\n if (!isNullOrUndefined(selectedDate) && !levelRestrict || !isNullOrUndefined(focusedDate)) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n }\n e.preventDefault();\n break;\n case 'controlHome':\n var yearDate = new Date(this.currentDate.getFullYear(), 0, 1);\n if (!isLeftCalendar && +yearDate < +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 0, 1));\n this.keyNavigation(ele, e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else if (!isNullOrUndefined(rightCalendar)) {\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n if (this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(rightCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'controlUp':\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n this.calendarNavigation(e, this.calendarElement);\n }\n else {\n this.calendarNavigation(e, this.calendarElement);\n }\n e.preventDefault();\n break;\n case 'controlDown':\n if ((!isNullOrUndefined(selectedDate) || !isNullOrUndefined(focusedDate)) && !levelRestrict) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (selectedDate || focusedDate), value);\n }\n e.preventDefault();\n break;\n case 'controlEnd':\n yearDate = new Date(this.currentDate.getFullYear(), 11, 31);\n if (isLeftCalendar && +yearDate > +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 11, 31));\n this.keyNavigation(ele, e);\n break;\n case 'pageUp':\n date = new Date(+this.currentDate);\n this.addMonths(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addMonths(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'pageDown':\n date = new Date(+this.currentDate);\n this.addMonths(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addMonths(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageUp':\n date = new Date(+this.currentDate);\n this.addYears(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addYears(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageDown':\n date = new Date(+this.currentDate);\n this.addYears(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addYears(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftTab':\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.setAttribute('tabindex', '0');\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n e.preventDefault();\n break;\n case 'spacebar':\n if (this.applyButton && !this.applyButton.disabled) {\n this.applyFunction(e);\n }\n break;\n default:\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n this.checkMinMaxDays();\n }\n this.presetHeight();\n };\n DateRangePicker.prototype.keyNavigation = function (calendar, e) {\n this.bindCalendarCellEvents(calendar);\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n this.updateNavIcons();\n this.calendarIconEvent();\n this.updateRange([calendar]);\n this.dateDisabled = this.isDateDisabled(this.currentDate);\n e.preventDefault();\n };\n DateRangePicker.prototype.inputHandler = function (e) {\n switch (e.action) {\n case 'altDownArrow':\n if (!this.isPopupOpen()) {\n if (this.inputElement.value === '') {\n this.clear();\n this.changeTrigger(e);\n this.clearRange();\n }\n this.show(null, e);\n this.isRangeIconClicked = false;\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n this.isKeyPopup = true;\n }\n break;\n case 'escape':\n if (this.isPopupOpen()) {\n this.hide(e);\n }\n break;\n case 'enter':\n if (document.activeElement === this.inputElement) {\n this.inputBlurHandler(e);\n this.hide(e);\n }\n break;\n case 'tab':\n if (document.activeElement === this.inputElement && this.isPopupOpen()) {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n DateRangePicker.prototype.bindCalendarCellEvents = function (calendar) {\n var tdCells;\n if (calendar) {\n tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n }\n else {\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n }\n for (var _i = 0, tdCells_1 = tdCells; _i < tdCells_1.length; _i++) {\n var cell = tdCells_1[_i];\n EventHandler.clearEvents(cell);\n var disabledCell = void 0;\n disabledCell = cell.classList.contains(DISABLED) || cell.classList.contains(DATEDISABLED);\n if (!disabledCell && !cell.classList.contains(WEEKNUMBER)) {\n if (!this.isMobile) {\n EventHandler.add(cell, 'mouseover', this.hoverSelection, this);\n }\n EventHandler.add(cell, 'mousedown', this.selectRange, this);\n }\n }\n };\n DateRangePicker.prototype.removeFocusedDate = function () {\n var isDate = !isNullOrUndefined(this.startValue) || !isNullOrUndefined(this.endValue);\n var focusedDate;\n focusedDate = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' .' + FOCUSDATE);\n for (var _i = 0, focusedDate_1 = focusedDate; _i < focusedDate_1.length; _i++) {\n var ele = focusedDate_1[_i];\n var today = new Date();\n var eleDate = this.getIdValue(null, ele);\n if ((this.depth === 'Month' && this.currentView() === 'Month' &&\n (!ele.classList.contains(TODAY) || (ele.classList.contains(TODAY) && isDate)))\n || (this.depth === 'Year' && this.currentView() === 'Year' &&\n ((!this.isSameMonth(today, eleDate) && !this.isSameYear(today, eleDate)) || isDate))\n || (this.depth === 'Decade' && this.currentView() === 'Decade' &&\n (!this.isSameYear(today, eleDate) || isDate))) {\n ele.classList.remove(FOCUSDATE);\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(ENDDATE)) {\n ele.removeAttribute('aria-label');\n }\n }\n }\n };\n DateRangePicker.prototype.hoverSelection = function (event, element) {\n var currentElement = element || event.currentTarget;\n var currentDate = this.getIdValue(null, currentElement);\n if (!isNullOrUndefined(this.startValue) && +this.startValue >= +this.min && +this.startValue <= +this.max) {\n if ((!this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)\n && isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue))\n || (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n var tdCells = void 0;\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n for (var _i = 0, tdCells_2 = tdCells; _i < tdCells_2.length; _i++) {\n var ele = tdCells_2[_i];\n var isDisabledCell = (!ele.classList.contains(DISABLED) || ele.classList.contains(DATEDISABLED));\n if (!ele.classList.contains(WEEKNUMBER) && isDisabledCell) {\n var eleDate = this.getIdValue(null, ele);\n var startDateValue = new Date(+this.startValue);\n var eleDateValue = new Date(+eleDate);\n if (eleDateValue.setHours(0, 0, 0, 0) >= startDateValue.setHours(0, 0, 0, 0) && +eleDate <= +currentDate) {\n addClass([ele], RANGEHOVER);\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.isSameStartEnd = function (startVal, endVal) {\n var isSame = false;\n if (this.depth === 'Month') {\n if ((startVal).setHours(0, 0, 0, 0) === (endVal).setHours(0, 0, 0, 0)) {\n isSame = true;\n }\n }\n else if (this.depth === 'Year') {\n if ((startVal.getFullYear() === endVal.getFullYear()) &&\n (startVal.getMonth() === endVal.getMonth())) {\n isSame = true;\n }\n }\n else if (this.depth === 'Decade') {\n if (startVal.getFullYear() === endVal.getFullYear()) {\n isSame = true;\n }\n }\n return isSame;\n };\n DateRangePicker.prototype.updateRange = function (elementCollection) {\n if (!isNullOrUndefined(this.startValue)) {\n for (var _i = 0, elementCollection_1 = elementCollection; _i < elementCollection_1.length; _i++) {\n var calendar = elementCollection_1[_i];\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n for (var _a = 0, tdCells_3 = tdCells; _a < tdCells_3.length; _a++) {\n var ele = tdCells_3[_a];\n if (!ele.classList.contains(WEEKNUMBER) && !ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n var eleDateValue = this.getIdValue(null, ele);\n if (!isNullOrUndefined(this.endValue)) {\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) >= +new Date(+this.startValue).setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +new Date(+this.endValue).setHours(0, 0, 0, 0) &&\n !this.isSameStartEnd(new Date(+this.startValue), new Date(+this.endValue)) &&\n +new Date(+this.startValue).setHours(0, 0, 0, 0) >= +this.min\n && +new Date(+this.endValue).setHours(0, 0, 0, 0) <= +this.max\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], RANGEHOVER);\n }\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n if (ele.classList.contains(SELECTED) && ele.classList.contains(ENDDATE) &&\n (+eleDateValue !== +this.endValue)) {\n removeClass([ele], [SELECTED]);\n removeClass([ele], [ENDDATE]);\n }\n if (ele.classList.contains(RANGEHOVER) && (+eleDateValue > +this.endValue)) {\n removeClass([ele], [RANGEHOVER]);\n }\n if (!ele.classList.contains(OTHERMONTH)) {\n var startDateValue = new Date(+this.startValue);\n var eleDateValue_1 = new Date(+eleDate);\n if (this.currentView() === this.depth &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +startDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) >= +startDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, true);\n }\n var endDateValue = new Date(+this.endValue);\n if (this.currentView() === 'Year') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), eleDateValue_1.getMonth() + 1, 0);\n }\n else if (this.currentView() === 'Decade') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), 11, 31);\n }\n if (this.currentView() === this.depth &&\n !isNullOrUndefined(this.endValue) &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +endDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) <= +endDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, false);\n }\n if (+eleDate === +this.startValue && !isNullOrUndefined(this.endValue) && +eleDate === +this.endValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.checkMinMaxDays = function () {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n if (!this.isMobile) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + LEFTCALENDER));\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + RIGHTCALENDER));\n }\n else {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n }\n };\n DateRangePicker.prototype.rangeArgs = function (e) {\n var inputValue;\n var range;\n var startDate = !isNullOrUndefined(this.startValue) ?\n this.globalize.formatDate(this.startValue, {\n format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd'\n }) : null;\n var endDate = !isNullOrUndefined(this.endValue) ?\n this.globalize.formatDate(this.endValue, {\n format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd'\n }) : null;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n inputValue = startDate + ' ' + this.separator + ' ' + endDate;\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n }\n else {\n inputValue = '';\n range = 0;\n }\n var args = {\n value: this.value,\n startDate: this.startValue,\n endDate: this.endValue,\n daySpan: range,\n event: e || null,\n element: this.element,\n isInteracted: !isNullOrUndefined(e),\n text: inputValue\n };\n return args;\n };\n DateRangePicker.prototype.otherMonthSelect = function (ele, isStartDate, sameDate) {\n var value = +this.getIdValue(null, ele);\n var dateIdString = '*[id^=\"/id\"]:not(.e-other-month)'.replace('/id', '' + value);\n var tdCell = this.popupObj && this.popupObj.element.querySelector(dateIdString);\n if (!isNullOrUndefined(tdCell)) {\n if (isStartDate) {\n addClass([tdCell], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.startValue, true);\n }\n else {\n addClass([tdCell], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.endValue, true);\n }\n if (sameDate) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n };\n // tslint:disable-next-line:max-func-body-length\n DateRangePicker.prototype.selectRange = function (event, element) {\n var leftCalendar;\n var rightCalendar;\n if (event) {\n event.preventDefault();\n }\n var date;\n date = isNullOrUndefined(event) ? this.getIdValue(null, element)\n : this.getIdValue(event, null);\n var y = date.getFullYear();\n var m = date.getMonth();\n var firstDay = new Date(y, m, 1);\n var lastDay = new Date(y, m + 1, 0);\n var firstMonth = new Date(y, 0, 1);\n var lastMonth = new Date(y, 11, 31);\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n if (!this.isMobile || this.isMobile && !this.endButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n }\n else if (this.isMobile && this.startButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n var ele = element || event.currentTarget;\n if (isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.previousStartValue)) {\n date.setHours(this.previousStartValue.getHours());\n date.setMinutes(this.previousStartValue.getMinutes());\n date.setSeconds(this.previousStartValue.getSeconds());\n }\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.endValue = null;\n this.setValue();\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n this.applyButton.disabled = true;\n this.applyButton.element.disabled = true;\n if (this.isMobile) {\n this.endButton.element.classList.add(ACTIVE);\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else {\n if (+date === +this.startValue || +date > +this.startValue) {\n if (+date === +this.startValue && !isNullOrUndefined(this.minDays) && this.minDays > 1) {\n return;\n }\n this.endValue = null;\n this.setValue();\n if (this.isMobile || element) {\n this.hoverSelection(event, element);\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n date.setHours(this.previousEndValue.getHours());\n date.setMinutes(this.previousEndValue.getMinutes());\n date.setSeconds(this.previousEndValue.getSeconds());\n }\n this.endValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? lastDay : lastMonth;\n this.setValue();\n var endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n if (this.isMobile) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n for (var _i = 0, endEle_1 = endEle; _i < endEle_1.length; _i++) {\n var ele_1 = endEle_1[_i];\n ele_1.removeAttribute('aria-label');\n if (!ele_1.classList.contains(STARTDATE)) {\n ele_1.setAttribute('aria-selected', 'false');\n removeClass([ele_1], [ENDDATE, SELECTED]);\n }\n else {\n this.addSelectedAttributes(ele_1, this.startValue, true);\n removeClass([ele_1], [ENDDATE]);\n }\n }\n }\n addClass([ele], ENDDATE);\n if (+this.endValue === +this.startValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n else {\n this.addSelectedAttributes(ele, this.endValue, false);\n }\n if (ele.classList.contains(OTHERMONTH)) {\n if (+this.endValue === +this.startValue) {\n this.otherMonthSelect(ele, false, true);\n }\n else {\n this.otherMonthSelect(ele, false);\n }\n }\n endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, endEle_2 = endEle; _a < endEle_2.length; _a++) {\n var ele_2 = endEle_2[_a];\n if (ele_2.classList.contains(STARTDATE)) {\n removeClass([ele_2], [RANGEHOVER]);\n }\n }\n this.applyButton.disabled = false;\n this.applyButton.element.disabled = false;\n if (!this.isMobile) {\n this.removeClassDisabled();\n }\n this.disabledDateRender();\n this.trigger('select', this.rangeArgs(event));\n }\n else if (+date < +this.startValue) {\n this.removeClassDisabled();\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.setValue();\n this.removeSelectedAttributes();\n removeClass(this.popupObj.element.querySelectorAll('.' + STARTDATE), [STARTDATE, SELECTED]);\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n }\n }\n if (event) {\n leftCalendar = closest(event.target, '.' + LEFTCALENDER);\n }\n if (!isNullOrUndefined(leftCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (event) {\n rightCalendar = event && closest(event.target, '.' + RIGHTCALENDER);\n }\n if (!isNullOrUndefined(rightCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n addClass([ele], SELECTED);\n this.updateHeader();\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.selectableDates = function () {\n if (!isNullOrUndefined(this.startValue)) {\n var tdCells = this.calendarElement.querySelectorAll('.' + CALENDAR + ' td');\n var isStartDate = false;\n if (this.currentView() === this.depth) {\n for (var _i = 0, tdCells_4 = tdCells; _i < tdCells_4.length; _i++) {\n var ele = tdCells_4[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n if (!ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n if (+eleDate < +this.startValue) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n continue;\n }\n else {\n break;\n }\n }\n }\n if (ele.classList.contains(STARTDATE) && !ele.classList.contains(OTHERMONTH)) {\n isStartDate = true;\n break;\n }\n }\n if (isStartDate) {\n if (!this.previousIcon.classList.contains(DISABLED)) {\n addClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n else {\n for (var _a = 0, tdCells_5 = tdCells; _a < tdCells_5.length; _a++) {\n var ele = tdCells_5[_a];\n var startMonth = this.startValue.getMonth();\n var startYear = this.startValue.getFullYear();\n var element = this.getIdValue(null, ele);\n if (!this.startButton.element.classList.contains(ACTIVE) && ((this.currentView() === 'Year' &&\n (element.getMonth() < startMonth) && (element.getFullYear() <= startYear))\n || (this.currentView() === 'Decade' && (element.getMonth() <= startMonth) &&\n (element.getFullYear() < startYear)))) {\n addClass([ele], [DISABLED]);\n }\n else {\n break;\n }\n }\n if (tdCells[0].classList.contains(DISABLED)) {\n this.previousIconHandler(true);\n }\n else if (tdCells[tdCells.length - 1].classList.contains(DISABLED)) {\n this.nextIconHandler(true);\n }\n }\n }\n };\n DateRangePicker.prototype.updateMinMaxDays = function (calendar) {\n if ((!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) ||\n (this.isMobile && this.endButton.element.classList.contains(ACTIVE))) {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n var startValueSelected = this.removeTimeValueFromDate(this.startValue);\n var minDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.minDays - 1)));\n var maxDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.maxDays - 1)));\n minDate = (!isNullOrUndefined(this.minDays) && this.minDays > 0) ? minDate : null;\n maxDate = (!isNullOrUndefined(this.maxDays) && this.maxDays > 0) ? maxDate : null;\n if (this.currentView() === 'Year') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear(), minDate.getMonth(), 0);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), maxDate.getMonth(), 1);\n }\n else if (this.currentView() === 'Decade') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear() - 1, 11, 1);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), 0, 1);\n }\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n var maxEle = void 0;\n for (var _i = 0, tdCells_6 = tdCells; _i < tdCells_6.length; _i++) {\n var ele = tdCells_6[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n var eleDate = this.getIdValue(null, ele);\n eleDate = this.removeTimeValueFromDate(eleDate);\n if (!isNullOrUndefined(minDate) && +eleDate === +minDate && ele.classList.contains(DISABLED)) {\n minDate.setDate(minDate.getDate() + 1);\n }\n if (!ele.classList.contains(DISABLED)) {\n if (+eleDate <= +startValueSelected) {\n continue;\n }\n if (!isNullOrUndefined(minDate) && +eleDate < +minDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n }\n if (!isNullOrUndefined(maxDate) && +eleDate > +maxDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n this.isMaxDaysClicked = true;\n EventHandler.clearEvents(ele);\n if (isNullOrUndefined(maxEle) && !ele.classList.contains(OTHERMONTH)) {\n maxEle = ele;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(maxEle)) {\n if (this.isMobile) {\n if (!this.nextIcon.classList.contains(DISABLED)) {\n addClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n var calendar_1 = closest(maxEle, '.' + RIGHTCALENDER);\n calendar_1 = isNullOrUndefined(calendar_1) ? this.leftCalendar : calendar_1;\n var isLeftCalendar = calendar_1.classList.contains(LEFTCALENDER);\n if (!isLeftCalendar) {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.leftCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.rightCalPrevIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n }\n }\n }\n else {\n this.isMaxDaysClicked = false;\n }\n };\n DateRangePicker.prototype.removeTimeValueFromDate = function (value) {\n var dateValue = new Date(value.getFullYear(), value.getMonth(), value.getDate());\n return dateValue;\n };\n DateRangePicker.prototype.removeClassDisabled = function () {\n var tdCells;\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td' + '.' + DATEDISABLED);\n for (var _i = 0, tdCells_7 = tdCells; _i < tdCells_7.length; _i++) {\n var ele = tdCells_7[_i];\n if (ele.classList.contains(DATEDISABLED)) {\n removeClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.add(ele, 'click', this.selectRange, this);\n if (!this.isMobile) {\n EventHandler.add(ele, 'mouseover', this.hoverSelection, this);\n }\n }\n }\n if (this.isMobile) {\n if (this.nextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.previousIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (this.rightCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.rightCalPrevIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.leftCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n };\n DateRangePicker.prototype.updateHeader = function () {\n var format = { type: 'date', skeleton: isBlazor() ? 'D' : 'yMMMd' };\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = range.toString() + ' ' + this.l10n.getConstant('days');\n }\n else {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n if (!isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n }\n }\n if ((this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue)) ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue))\n && +this.startValue > +this.endValue))) {\n if (!this.isMobile) {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n }\n if (this.popupObj.element.querySelector('#custom_range')) {\n this.popupObj.element.querySelector('#custom_range').textContent =\n this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange') : 'Custom Range';\n }\n };\n DateRangePicker.prototype.removeSelection = function () {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.removeSelectedAttributes();\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [STARTDATE, ENDDATE, SELECTED]);\n }\n if (this.popupObj.element.querySelectorAll('.' + FOCUSDATE).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + FOCUSDATE), FOCUSDATE);\n }\n if (this.popupObj.element.querySelectorAll('.' + RANGEHOVER).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + RANGEHOVER), [RANGEHOVER]);\n }\n }\n };\n DateRangePicker.prototype.addSelectedAttributes = function (ele, date, isStartDate, sameDate) {\n if (ele) {\n var title = this.globalize.formatDate(date, { type: 'date', skeleton: isBlazor() ? 'D' : 'full' });\n if (!isNullOrUndefined(sameDate) && sameDate) {\n ele.setAttribute('aria-label', 'The current start and end date is ' + '' + title);\n }\n else {\n ele.setAttribute('aria-label', 'The current ' + (isStartDate ? 'start' : 'end') + ' date is ' + '' + title);\n }\n ele.setAttribute('aria-selected', 'true');\n }\n };\n DateRangePicker.prototype.removeSelectedAttributes = function () {\n if (this.popupObj) {\n var start = this.popupObj.element.querySelectorAll('.' + STARTDATE);\n for (var _i = 0, start_1 = start; _i < start_1.length; _i++) {\n var ele = start_1[_i];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n var end = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, end_1 = end; _a < end_1.length; _a++) {\n var ele = end_1[_a];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n }\n };\n DateRangePicker.prototype.updateCalendarElement = function (calendar) {\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.calendarElement = this.leftCalendar;\n this.currentDate = this.leftCalCurrentDate;\n this.previousIcon = this.leftCalPrevIcon;\n this.nextIcon = this.leftCalNextIcon;\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.currentDate = this.rightCalCurrentDate;\n this.previousIcon = this.rightCalPrevIcon;\n this.nextIcon = this.rightCalNextIcon;\n }\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n };\n DateRangePicker.prototype.navPrevMonth = function (e) {\n e.preventDefault();\n var ele = closest(e.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(e.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigatePrevious(e);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n DateRangePicker.prototype.deviceNavigation = function (ele) {\n this.deviceCalendarEvent();\n this.updateRange([this.popupObj.element.querySelector('.' + CALENDAR)]);\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.selectableDates();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.updateControl = function (calendar) {\n if (calendar.classList.contains(RIGHTCALENDER)) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n this.calendarIconEvent();\n if ((((this.depth === 'Month')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-month')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-month'))\n || ((this.depth === 'Year')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-year')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-year'))\n || ((this.depth === 'Decade')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-decade')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-decade')))\n || this.isMobile) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange([calendar]);\n };\n DateRangePicker.prototype.navNextMonth = function (event) {\n event.preventDefault();\n var ele = closest(event.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(event.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigateNext(event);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n DateRangePicker.prototype.isPopupOpen = function () {\n if (!isNullOrUndefined(this.popupObj) && this.popupObj.element.classList.contains(POPUP)) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.createRangeHeader = function () {\n var labelContainer = this.createElement('div', { className: STARTENDCONTAINER });\n if (!this.isMobile) {\n var startLabel = this.createElement('a', { className: STARTLABEL });\n var endLabel = this.createElement('a', { className: ENDLABEL });\n var changeIcon = this.createElement('span', { className: CHANGEICON });\n attributes(startLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'Start Date', 'role': 'button' });\n attributes(endLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'End Date', 'role': 'button' });\n labelContainer.appendChild(startLabel);\n labelContainer.appendChild(changeIcon);\n labelContainer.appendChild(endLabel);\n startLabel.textContent = this.l10n.getConstant('startLabel');\n endLabel.textContent = this.l10n.getConstant('endLabel');\n }\n else {\n var endBtn = this.createElement('button', { className: ENDBUTTON });\n var startBtn = this.createElement('button', { className: STARTBUTTON });\n this.startButton = new Button({ content: this.l10n.getConstant('startLabel') }, startBtn);\n this.endButton = new Button({ content: this.l10n.getConstant('endLabel') }, endBtn);\n labelContainer.appendChild(startBtn);\n labelContainer.appendChild(endBtn);\n }\n return labelContainer;\n };\n DateRangePicker.prototype.disableInput = function () {\n if (this.strictMode) {\n if (!isNullOrUndefined(this.previousStartValue) && !isNullOrUndefined(this.previousEndValue)) {\n this.startValue = this.previousStartValue;\n this.endValue = this.previousEndValue;\n this.setValue();\n this.updateInput();\n }\n }\n else {\n this.updateInput();\n this.clearRange();\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.errorClass();\n }\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n };\n DateRangePicker.prototype.validateMinMax = function () {\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (!(this.min <= this.max)) {\n this.disableInput();\n return;\n }\n if (!isNullOrUndefined(this.minDays) && !isNullOrUndefined(this.maxDays)) {\n if (this.maxDays > 0 && this.minDays > 0 && (this.minDays > this.maxDays)) {\n this.maxDays = null;\n }\n }\n if (!isNullOrUndefined(this.minDays) && this.minDays < 0) {\n this.minDays = null;\n }\n if (!isNullOrUndefined(this.maxDays) && this.maxDays < 0) {\n this.maxDays = null;\n }\n };\n DateRangePicker.prototype.validateRangeStrict = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (+this.startValue <= +this.min) {\n this.startValue = this.min;\n this.setValue();\n }\n else if (+this.startValue >= +this.min && +this.startValue >= +this.max) {\n this.startValue = this.max;\n }\n }\n if (!isNullOrUndefined(this.endValue)) {\n if (+this.endValue > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else if (+this.endValue < +this.min) {\n this.endValue = this.min;\n this.setValue();\n }\n }\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateRange = function () {\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateMinMaxDays = function () {\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) && !(range >= this.minDays)) {\n if (this.strictMode) {\n var date = new Date(+this.startValue);\n date.setDate(date.getDate() + (this.minDays - 1));\n if (+date > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else {\n this.endValue = date;\n this.setValue();\n }\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n if ((!isNullOrUndefined(this.maxDays) && this.maxDays > 0) && !(range <= this.maxDays)) {\n if (this.strictMode) {\n this.endValue = new Date(+this.startValue);\n this.endValue.setDate(this.endValue.getDate() + (this.maxDays - 1));\n this.setValue();\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n };\n DateRangePicker.prototype.renderCalendar = function () {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(CALENDAR);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n attributes(this.calendarElement, { 'role': 'calendar' });\n _super.prototype.createHeader.call(this);\n _super.prototype.createContent.call(this);\n };\n DateRangePicker.prototype.isSameMonth = function (start, end) {\n if (start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameYear = function (start, end) {\n if (start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameDecade = function (start, end) {\n var startYear = start.getFullYear();\n var endYear = end.getFullYear();\n if ((startYear - (startYear % 10)) === (endYear - (endYear % 10))) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.startMonthCurrentDate = function () {\n if (this.isSameMonth(this.min, this.max) || +this.currentDate > +this.max || this.isSameMonth(this.currentDate, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (this.currentDate < this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n };\n DateRangePicker.prototype.selectNextMonth = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameMonth(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n return;\n }\n if ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setDate(1);\n var month = this.currentDate.getMonth() + 1;\n this.currentDate.setMonth(month);\n }\n };\n DateRangePicker.prototype.selectNextYear = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameYear(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setMonth(0);\n var yr = this.currentDate.getFullYear() + 1;\n this.currentDate.setFullYear(yr);\n return;\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setMonth(0);\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 1);\n }\n };\n DateRangePicker.prototype.selectNextDecade = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameDecade(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n var decyr = this.currentDate.getFullYear() + 10;\n this.currentDate.setFullYear(decyr);\n return;\n }\n if (((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 10);\n }\n };\n DateRangePicker.prototype.selectStartMonth = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.max) && this.isSameMonth(this.startValue, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (!(this.startValue >= this.min && this.startValue <= this.max)\n || this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n else {\n this.currentDate = new Date(+this.startValue);\n }\n }\n else {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.startMonthCurrentDate();\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.startMonthCurrentDate();\n };\n DateRangePicker.prototype.createCalendar = function () {\n var calendarContainer = this.createElement('div', { className: CALENDARCONTAINER });\n if (!this.isMobile) {\n this.selectStartMonth();\n this.renderCalendar();\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.calendarElement.classList.add(LEFTCALENDER);\n this.leftCalPrevIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + PREVICON);\n this.leftCalNextIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + NEXTICON);\n this.leftTitle = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalNextIcon);\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalPrevIcon);\n prepend([this.leftCalPrevIcon], this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER));\n this.leftCalendar = this.calendarElement;\n var leftContainer = this.createElement('div', { className: LEFTCONTAINER });\n var rightContainer = this.createElement('div', { className: RIGHTCONTAINER });\n leftContainer.appendChild(this.leftCalendar);\n calendarContainer.appendChild(leftContainer);\n if (!this.isMobile) {\n EventHandler.add(this.leftTitle, 'click', this.leftNavTitle, this);\n }\n if (this.start === 'Month') {\n this.selectNextMonth();\n }\n if (this.start === 'Year') {\n this.selectNextYear();\n }\n if (this.start === 'Decade') {\n this.selectNextDecade();\n }\n this.renderCalendar();\n this.rightCalCurrentDate = new Date(+this.currentDate);\n addClass([this.calendarElement], RIGHTCALENDER);\n this.rightCalendar = this.calendarElement;\n removeClass([this.leftCalendar && this.leftCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n removeClass([this.rightCalendar && this.rightCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n this.rightCalPrevIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + PREVICON);\n this.rightCalNextIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + NEXTICON);\n this.rightTitle = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('table').setAttribute('tabindex', '-1');\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalNextIcon);\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalPrevIcon);\n prepend([this.rightCalPrevIcon], this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER));\n rightContainer.appendChild(this.rightCalendar);\n calendarContainer.appendChild(rightContainer);\n if (!this.isMobile) {\n EventHandler.add(this.rightTitle, 'click', this.rightNavTitle, this);\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.currentDate = new Date(+this.startValue);\n }\n _super.prototype.validateDate.call(this);\n _super.prototype.minMaxUpdate.call(this);\n _super.prototype.render.call(this);\n var prevIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + PREVICON);\n var nextIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + NEXTICON);\n remove(this.calendarElement.querySelector('.' + CALENDAR + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(nextIcon);\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(prevIcon);\n prepend([prevIcon], this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER));\n this.deviceCalendar = this.calendarElement;\n calendarContainer.appendChild(this.calendarElement);\n this.headerTitleElement = this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER + ' .' + TITLE);\n }\n return calendarContainer;\n };\n DateRangePicker.prototype.leftNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.leftCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.calendarNavigation = function (e, element) {\n this.table = element.querySelector('table');\n this.headerTitleElement = element.querySelector('.e-title');\n this.tableBodyElement = element.querySelector('tbody');\n this.tableHeadElement = element.querySelector('thead');\n this.contentElement = element.querySelector('.e-content');\n this.updateCalendarElement(element);\n _super.prototype.navigateTitle.call(this, e);\n this.updateNavIcons();\n };\n DateRangePicker.prototype.rightNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.rightCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.clickEventEmitter = function (e) {\n if (!this.isMobile) {\n if (closest(e.target, '.e-calendar.e-left-calendar')) {\n this.calendarElement = this.leftCalendar;\n this.updateCalendarElement(this.leftCalendar);\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.updateCalendarElement(this.rightCalendar);\n }\n }\n };\n /**\n * Gets the current view of the Calendar.\n * @returns string\n * @private\n * @hidden\n */\n DateRangePicker.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n DateRangePicker.prototype.getCalendarView = function (view) {\n if (view === 'Year') {\n return 'Year';\n }\n else if (view === 'Decade') {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n DateRangePicker.prototype.navigatedEvent = function (e) {\n this.trigger('navigated', this.navigatedArgs);\n if (!isNullOrUndefined(this.popupObj)) {\n var element = void 0;\n var view = this.getCalendarView(this.currentView());\n if (this.isMobile) {\n if (view === this.depth) {\n this.bindCalendarCellEvents();\n this.deviceNavigation();\n this.removeFocusedDate();\n this.checkMinMaxDays();\n }\n else {\n this.selectableDates();\n }\n }\n else {\n if (!this.isMobile && view === this.depth) {\n element = this.calendarElement.classList.contains('e-left-calendar') ? this.leftCalendar : this.rightCalendar;\n if (element === this.leftCalendar && ((e && !e.currentTarget.children[0].classList.contains('e-icons'))\n || (!isNullOrUndefined(this.controlDown)))) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.leftCalCurrentDate;\n this.updateCalendarElement(this.leftCalendar);\n this.updateControl(this.leftCalendar);\n this.updateCalendarElement(this.rightCalendar);\n _super.prototype.navigateTo.call(this, view, this.rightCalCurrentDate);\n this.updateControl(this.rightCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n else if (e && !e.currentTarget.children[0].classList.contains('e-icons')\n || (!isNullOrUndefined(this.controlDown))) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.rightCalCurrentDate;\n this.updateCalendarElement(this.rightCalendar);\n this.updateControl(this.rightCalendar);\n this.updateCalendarElement(this.leftCalendar);\n if (this.startValue && isNullOrUndefined(this.endValue)) {\n if (view === 'Month' && this.startValue.getMonth() < this.rightCalCurrentDate.getMonth() &&\n this.startValue.getFullYear() <= this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else if (view === 'Year' && this.startValue.getFullYear() < this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n this.updateControl(this.leftCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n this.checkMinMaxDays();\n }\n else {\n this.updateNavIcons();\n this.calendarIconEvent();\n }\n }\n }\n };\n DateRangePicker.prototype.createControl = function () {\n var controlContainer = this.createElement('div', { className: RANGECONTAINER });\n var headerContainer = this.createElement('div', { className: RANGEHEADER });\n var labelContainer = this.createRangeHeader();\n headerContainer.appendChild(labelContainer);\n var daySpan = this.createElement('div', { className: DAYSPAN });\n attributes(daySpan, { 'aria-label': 'Selected Days' });\n daySpan.textContent = this.l10n.getConstant('selectedDays');\n headerContainer.appendChild(daySpan);\n var separator = this.createElement('div', { className: SEPARATOR });\n var calendarContainer = this.createCalendar();\n controlContainer.appendChild(headerContainer);\n controlContainer.appendChild(separator);\n controlContainer.appendChild(calendarContainer);\n var footerSection = this.createElement('div', { className: FOOTER });\n var cancelBtn = this.createElement('button', { className: CANCEL + ' ' + FLAT + ' ' + CSS });\n var applyBtn = this.createElement('button');\n addClass([applyBtn], [APPLY, FLAT, PRIMARY, CSS]);\n footerSection.appendChild(applyBtn);\n footerSection.appendChild(cancelBtn);\n var enable = !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue);\n this.cancelButton = new Button({ content: this.l10n.getConstant('cancelText') }, cancelBtn);\n this.applyButton = new Button({ content: this.l10n.getConstant('applyText'), disabled: !enable }, applyBtn);\n EventHandler.add(applyBtn, 'click', this.applyFunction, this);\n EventHandler.add(cancelBtn, 'click', this.cancelFunction, this);\n this.popupWrapper.appendChild(controlContainer);\n if (!this.isMobile) {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.createPresets();\n this.listRippleEffect();\n addClass([controlContainer], RANGEBORDER);\n addClass([this.popupWrapper], 'e-preset-wrapper');\n var presets = this.popupWrapper.querySelector('.' + PRESETS);\n presets.style.height = this.popupWrapper.querySelector('.' + RANGECONTAINER).getBoundingClientRect().height + 'px';\n }\n }\n this.popupWrapper.appendChild(footerSection);\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n this.renderPopup();\n };\n DateRangePicker.prototype.cancelFunction = function (eve) {\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n eve.preventDefault();\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.startValue = null;\n this.endValue = null;\n this.removeSelection();\n this.hide(eve);\n };\n DateRangePicker.prototype.deviceHeaderUpdate = function () {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.endButton.element.setAttribute('disabled', '');\n this.startButton.element.classList.add(ACTIVE);\n }\n else if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.classList.add(ACTIVE);\n }\n };\n DateRangePicker.prototype.applyFunction = function (eve) {\n var isValueChanged = false;\n if (eve.type !== 'touchstart') {\n eve.preventDefault();\n }\n if (this.closeEventArgs && this.closeEventArgs.cancel) {\n this.startValue = this.popupWrapper.querySelector('.e-start-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-start-date'));\n this.endValue = this.popupWrapper.querySelector('.e-end-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-end-date'));\n this.setValue();\n }\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n if (eve.type !== 'touchstart' &&\n this.closeEventArgs && !this.closeEventArgs.cancel) {\n eve.preventDefault();\n }\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n this.previousEleValue = this.inputElement.value;\n Input.setValue(this.rangeArgs(eve).text, this.inputElement, this.floatLabelType, this.showClearButton);\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n isValueChanged = true;\n }\n this.changeTrigger(eve);\n this.hide(eve ? eve : null);\n this.errorClass();\n isValueChanged = true;\n }\n else {\n this.hide(eve ? eve : null);\n }\n if (!(closest(eve.target, '.' + INPUTCONTAINER))\n && (!isValueChanged)) {\n this.focusOut();\n }\n if (!this.isMobile) {\n this.isKeyPopup = false;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyConfigs: this.keyInputConfigs,\n keyAction: this.popupKeyActionHandle.bind(this)\n });\n }\n }\n };\n DateRangePicker.prototype.onMouseClick = function (event, item) {\n if (event.type === 'touchstart') {\n return;\n }\n var target = item || event.target;\n var li = closest(target, '.' + LISTCLASS);\n var isClick = li && li.classList.contains(ACTIVE);\n if (li && li.classList.contains(LISTCLASS)) {\n this.setListSelection(li, event);\n }\n this.inputElement.focus();\n if (!this.isMobile) {\n this.preventFocus = true;\n if (li && li.classList.contains(LISTCLASS) && li.getAttribute('id') === 'custom_range') {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (!isClick && event.type === 'keydown') {\n this.inputElement.focus();\n }\n }\n }\n };\n DateRangePicker.prototype.onMouseOver = function (event) {\n var li = closest(event.target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS) && !li.classList.contains(HOVER)) {\n addClass([li], HOVER);\n }\n };\n DateRangePicker.prototype.onMouseLeave = function (event) {\n var item = closest(event.target, '.' + HOVER);\n if (!isNullOrUndefined(item)) {\n removeClass([item], HOVER);\n }\n };\n DateRangePicker.prototype.setListSelection = function (li, event) {\n if (li && (!li.classList.contains(ACTIVE) || (this.isMobile && li.classList.contains(ACTIVE)))) {\n if (this.isMobile && li.classList.contains(ACTIVE)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n var values_1 = this.presetsItem[this.activeIndex];\n if (values_1.id === 'custom_range') {\n this.renderCustomPopup();\n return;\n }\n return;\n }\n this.removeListSelection();\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([li], ACTIVE);\n li.setAttribute('aria-selected', 'true');\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n }\n else {\n this.applyPresetRange(values, event);\n }\n }\n };\n DateRangePicker.prototype.removeListSelection = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n if (!isNullOrUndefined(item)) {\n removeClass([item], ACTIVE);\n item.removeAttribute('aria-selected');\n }\n };\n DateRangePicker.prototype.setValue = function () {\n this.modelValue = [this.startValue, this.endValue];\n };\n DateRangePicker.prototype.applyPresetRange = function (values, e) {\n this.hide(null);\n this.presetsItem[this.presetsItem.length - 1].start = null;\n this.presetsItem[this.presetsItem.length - 1].end = null;\n this.startValue = values.start;\n this.endValue = values.end;\n this.setValue();\n this.refreshControl();\n this.trigger('select', this.rangeArgs(e));\n this.changeTrigger(e);\n this.previousEleValue = this.inputElement.value;\n this.isCustomRange = false;\n this.leftCalendar = this.rightCalendar = null;\n if (this.isKeyPopup) {\n this.isRangeIconClicked = false;\n this.inputElement.focus();\n }\n };\n DateRangePicker.prototype.showPopup = function (element, event) {\n this.presetHeight();\n if (this.zIndex === 1000) {\n this.popupObj.show(null, this.element);\n }\n else {\n this.popupObj.show(null, null);\n }\n if (this.isMobile) {\n this.popupObj.refreshPosition();\n }\n };\n DateRangePicker.prototype.renderCustomPopup = function () {\n this.isCustomWindow = true;\n this.popupObj.hide();\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.renderControl();\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup();\n this.isCustomRange = true;\n if (!this.isMobile) {\n this.calendarFocus();\n }\n };\n DateRangePicker.prototype.listRippleEffect = function () {\n for (var _i = 0, _a = this.liCollections; _i < _a.length; _i++) {\n var li = _a[_i];\n rippleEffect(li);\n }\n };\n DateRangePicker.prototype.createPresets = function () {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });\n var listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);\n attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n this.presetElement.appendChild(listTag);\n this.popupWrapper.appendChild(this.presetElement);\n var customElement = this.presetElement.querySelector('#custom_range');\n if (!isNullOrUndefined(customElement)) {\n customElement.textContent = this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange')\n : 'Custom Range';\n }\n this.liCollections = this.presetElement.querySelectorAll('.' + LISTCLASS);\n this.wireListEvents();\n if (this.isMobile) {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex > -1) {\n addClass([this.liCollections[this.activeIndex]], ACTIVE);\n }\n }\n };\n DateRangePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.presetElement, 'click', this.onMouseClick, this);\n if (!this.isMobile) {\n EventHandler.add(this.presetElement, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.presetElement, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateRangePicker.prototype.unWireListEvents = function () {\n if (!isNullOrUndefined(this.presetElement)) {\n EventHandler.remove(this.presetElement, 'click touchstart', this.onMouseClick);\n if (!this.isMobile) {\n EventHandler.remove(this.presetElement, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.presetElement, 'mouseout', this.onMouseLeave);\n }\n }\n };\n // tslint:disable-next-line:max-func-body-length\n DateRangePicker.prototype.renderPopup = function () {\n var _this = this;\n this.popupWrapper.classList.add('e-control');\n var popupWidth = this.popupWrapper.getBoundingClientRect().width;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass.trim() !== '') {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (this.isMobile && this.isCustomWindow) {\n this.modal = this.createElement('div');\n document.body.appendChild(this.modal);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n relateTo: this.isMobile && this.isCustomWindow ? document.body :\n (!isNullOrUndefined(this.targetElement) ? this.targetElement : this.inputWrapper.container),\n position: (this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'left', Y: 'bottom' } : { X: 'center', Y: 'center' }) :\n this.enableRtl ? { X: 'left', Y: 'bottom' } : { X: 'right', Y: 'bottom' }),\n offsetX: this.isMobile || this.enableRtl ? 0 : -popupWidth,\n offsetY: OFFSETVALUE,\n collision: this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'fit' } : { X: 'fit', Y: 'fit' }) : { X: 'fit', Y: 'flip' },\n targetType: this.isMobile && this.isCustomWindow ? 'container' : 'relative',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n open: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n addClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (!_this.isMobile) {\n if (_this.cancelButton) {\n _this.btnKeyboardModule = new KeyboardEvents(_this.cancelButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { tab: 'tab', altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n _this.btnKeyboardModule = new KeyboardEvents(_this.applyButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n }\n if (!isNullOrUndefined(_this.leftCalendar)) {\n if (!_this.isRangeIconClicked) {\n _this.calendarFocus();\n }\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.keyInputConfigs = extend(_this.keyInputConfigs, _this.keyConfigs);\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.presetKeyActionHandler.bind(_this),\n keyConfigs: _this.keyInputConfigs\n });\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n if (isNullOrUndefined(_this.leftCalendar)) {\n _this.preventBlur = true;\n _this.presetElement.focus();\n }\n else {\n _this.presetElement.setAttribute('tabindex', '-1');\n }\n }\n _this.popupKeyBoardHandler();\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.add(document, 'keydown', _this.popupCloseHandler, _this);\n }\n },\n close: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (_this.isRangeIconClicked) {\n _this.inputWrapper.container.children[1].focus();\n }\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label)) {\n _this.unWireListEvents();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n if (!isNullOrUndefined(_this.popupObj.element.parentElement)) {\n detach(_this.popupObj.element);\n }\n _this.popupObj.destroy();\n _this.popupObj = null;\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.remove(document, 'keydown', _this.popupCloseHandler);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (this.isMobile) {\n this.popupObj.element.classList.add(DEVICE);\n if (!this.isMobile) {\n this.popupObj.element.classList.add('e-bigger');\n }\n }\n if (this.isMobile && this.isCustomWindow) {\n addClass([this.modal], [DEVICE, ROOT, 'e-range-modal']);\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n };\n DateRangePicker.prototype.popupCloseHandler = function (e) {\n switch (e.keyCode) {\n case 27:\n this.hide(e);\n break;\n }\n };\n DateRangePicker.prototype.calendarFocus = function () {\n var startDate = this.popupObj && this.popupObj.element.querySelector('.' + STARTDATE);\n if (startDate) {\n var ele = closest(startDate, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n ele.children[1].firstElementChild.focus();\n }\n addClass([startDate], FOCUSDATE);\n }\n else {\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n };\n DateRangePicker.prototype.presetHeight = function () {\n var presets = this.popupObj && this.popupObj.element.querySelector('.' + PRESETS);\n var rangeContainer = this.popupObj && this.popupObj.element.querySelector('.' + RANGECONTAINER);\n if (!isNullOrUndefined(presets) && !isNullOrUndefined(rangeContainer)) {\n presets.style.height = rangeContainer.getBoundingClientRect().height + 'px';\n }\n };\n DateRangePicker.prototype.presetKeyActionHandler = function (e) {\n switch (e.action) {\n case 'moveDown':\n this.listMoveDown(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'moveUp':\n this.listMoveUp(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'enter':\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(this.leftCalendar) && !isNullOrUndefined(actItem)) {\n if (isNullOrUndefined(hvrItem) || (!isNullOrUndefined(actItem) && actItem === hvrItem)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(actItem);\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.calendarFocus();\n actItem.classList.remove(HOVER);\n e.preventDefault();\n return;\n }\n }\n }\n if (!isNullOrUndefined(hvrItem) || !isNullOrUndefined(actItem)) {\n this.onMouseClick(e, hvrItem || actItem);\n }\n e.preventDefault();\n break;\n case 'tab':\n if (this.leftCalendar) {\n var item = this.getHoverLI();\n if (!isNullOrUndefined(item)) {\n item.classList.remove(HOVER);\n }\n }\n else {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n DateRangePicker.prototype.listMoveDown = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n else {\n addClass([this.liCollections[0]], HOVER);\n }\n };\n DateRangePicker.prototype.listMoveUp = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n };\n DateRangePicker.prototype.getHoverLI = function () {\n var item = this.presetElement.querySelector('.' + HOVER);\n return item;\n };\n DateRangePicker.prototype.getActiveLI = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n return item;\n };\n DateRangePicker.prototype.popupKeyBoardHandler = function () {\n this.popupKeyboardModule = new KeyboardEvents(this.popupWrapper, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { escape: 'escape' }\n });\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n };\n DateRangePicker.prototype.setScrollPosition = function () {\n var listHeight = this.presetElement.getBoundingClientRect().height;\n var hover = this.presetElement.querySelector('.' + HOVER);\n var active = this.presetElement.querySelector('.' + ACTIVE);\n var element = !isNullOrUndefined(hover) ? hover : active;\n if (!isNullOrUndefined(element)) {\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.presetElement.scrollTop = nextEle ? (height - (listHeight / 2 + liHeight / 2)) : height;\n }\n else {\n this.presetElement.scrollTop = 0;\n }\n }\n };\n DateRangePicker.prototype.popupKeyActionHandle = function (e) {\n var presetElement = closest(e.target, '.' + PRESETS);\n switch (e.action) {\n case 'escape':\n if (this.isPopupOpen()) {\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[1].blur();\n }\n break;\n case 'enter':\n if (!this.isPopupOpen()) {\n this.show(null, e);\n }\n else {\n this.inputWrapper.container.children[1].focus();\n }\n break;\n case 'tab':\n this.hide(e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n else {\n if (document.activeElement === this.cancelButton.element && this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (document.activeElement === this.applyButton.element && this.applyButton.element.disabled !== true) {\n this.cancelButton.element.focus();\n }\n else {\n if (!isNullOrUndefined(this.presetElement) && (document.activeElement === this.cancelButton.element)) {\n this.presetElement.focus();\n }\n else {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n e.preventDefault();\n break;\n }\n };\n DateRangePicker.prototype.documentHandler = function (e) {\n if (isNullOrUndefined(this.popupObj)) {\n return;\n }\n var target = e.target;\n if (!this.inputWrapper.container.contains(target) ||\n (!isNullOrUndefined(this.popupObj) && !closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))) {\n if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||\n this.closeEventArgs && !this.closeEventArgs.cancel)) {\n e.preventDefault();\n }\n }\n if ((isNullOrUndefined(this.targetElement) ||\n (!isNullOrUndefined(this.targetElement) && !(target === this.targetElement))) &&\n !(closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && !(closest(target, '.e-daterangepicker.e-popup') && (!target.classList.contains('e-day')))) {\n this.preventBlur = false;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n if (!this.isMobile) {\n this.isRangeIconClicked = false;\n }\n }\n }\n };\n DateRangePicker.prototype.createInput = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n floatLabelType: this.floatLabelType,\n element: this.inputElement,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n },\n buttons: [DATERANGEICON]\n }, this.createElement);\n attributes(this.inputElement, {\n 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',\n 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n });\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n if (!isNullOrUndefined(this.placeholder) && this.placeholder.trim() !== '') {\n Input.addAttributes({ 'aria-placeholder': this.placeholder }, this.inputElement);\n }\n this.setEleWidth(this.width);\n addClass([this.inputWrapper.container], DATERANGEWRAPPER);\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.inputElement.type === 'hidden') {\n this.inputWrapper.container.style.display = 'none';\n }\n this.refreshControl();\n this.previousEleValue = this.inputElement.value;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.startCopy = this.startDate;\n this.endCopy = this.endDate;\n };\n DateRangePicker.prototype.setEleWidth = function (width) {\n if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (this.width);\n }\n else if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n DateRangePicker.prototype.adjustLongHeaderWidth = function () {\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.popupWrapper], DAYHEADERLONG);\n }\n };\n DateRangePicker.prototype.refreshControl = function () {\n this.validateMinMax();\n if (this.strictMode) {\n this.validateRangeStrict();\n }\n var isDisabled = this.disabledDates();\n if (this.strictMode && (isDisabled)) {\n this.startValue = this.previousStartValue;\n this.setProperties({ startDate: this.startValue }, true);\n this.endValue = this.previousEndValue;\n this.setProperties({ endDate: this.endValue }, true);\n this.setValue();\n }\n this.updateInput();\n if (!this.strictMode) {\n this.validateRange();\n }\n if (!this.strictMode && (isDisabled)) {\n this.clearRange();\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !isDisabled) {\n this.disabledDateRender();\n }\n this.errorClass();\n this.previousStartValue = isNullOrUndefined(this.startValue) || isNaN(+this.startValue) ? null : new Date(+this.startValue);\n this.previousEndValue = isNullOrUndefined(this.endValue) || isNaN(+this.endValue) ? null : new Date(+this.endValue);\n };\n DateRangePicker.prototype.updateInput = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var formatOption = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n var startDate = this.globalize.formatDate(this.startValue, formatOption);\n var endDate = this.globalize.formatDate(this.endValue, formatOption);\n Input.setValue(startDate + ' ' + this.separator + ' ' + endDate, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n Input.setValue(this.invalidValueString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n DateRangePicker.prototype.checkInvalidRange = function (value) {\n if (!isNullOrUndefined(value)) {\n var invalid = false;\n var startinvalue = void 0;\n var endinvalue = void 0;\n var startString = null;\n var endString = null;\n var valueString = null;\n var startObject = false;\n var endObject = false;\n var invalidobject = false;\n if (typeof (value) === 'string') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length === 2) {\n startString = range[0];\n endString = range[1];\n }\n else {\n invalid = true;\n valueString = value;\n }\n }\n else {\n if (value.length > 0) {\n startinvalue = value[0];\n endinvalue = value[1];\n }\n else {\n startinvalue = value.start;\n endinvalue = value.end;\n }\n if (!(startinvalue instanceof Date) && typeof (startinvalue) !== 'object') {\n startString = this.getstringvalue(startinvalue);\n }\n else if (startinvalue instanceof Date) {\n startObject = true;\n }\n else if (!isNullOrUndefined(startinvalue)) {\n invalidobject = true;\n }\n if (!(endinvalue instanceof Date) && typeof (endinvalue) !== 'object') {\n endString = this.getstringvalue(endinvalue);\n }\n else if (endinvalue instanceof Date) {\n endObject = true;\n }\n else if (!isNullOrUndefined(endinvalue)) {\n invalidobject = true;\n }\n }\n if ((isNullOrUndefined(startString) && !startObject && !isNullOrUndefined(endString)) ||\n (!isNullOrUndefined(startString) && !endObject && isNullOrUndefined(endString))) {\n invalid = true;\n }\n if (invalidobject) {\n startString = endString = valueString = null;\n invalid = true;\n }\n if (startString) {\n invalid = invalid || this.checkInvalidValue(startString);\n }\n if (endString) {\n invalid = invalid || this.checkInvalidValue(endString);\n }\n if (invalid) {\n if (startObject && !invalidobject) {\n startString = startinvalue.toLocaleDateString();\n }\n if (endObject && !invalidobject) {\n endString = endinvalue.toLocaleDateString();\n }\n if (!isNullOrUndefined(startString) && !isNullOrUndefined(endString)) {\n valueString = startString + ' ' + this.separator + ' ' + endString;\n }\n else if (!isNullOrUndefined(startString)) {\n valueString = startString;\n }\n else if (!isNullOrUndefined(endString)) {\n valueString = endString;\n }\n this.invalidValueString = valueString;\n this.setProperties({ value: null }, true);\n this.setProperties({ startValue: null }, true);\n this.setProperties({ endValue: null }, true);\n this.startDate = null;\n this.endDate = null;\n }\n }\n };\n DateRangePicker.prototype.getstringvalue = function (value) {\n var stringValue = null;\n if (!isNullOrUndefined(value) && (typeof value === 'number')) {\n stringValue = (value).toString();\n }\n else if (!isNullOrUndefined(value) && (typeof value === 'string')) {\n stringValue = '' + value;\n }\n return stringValue;\n };\n DateRangePicker.prototype.checkInvalidValue = function (value) {\n var valueString = value;\n var invalid = false;\n var formatOpt = null;\n formatOpt = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (typeof valueString !== 'string') {\n invalid = true;\n }\n else {\n var globalize = new Internationalization(this.locale);\n if (!this.checkDateValue(globalize.parseDate(valueString, formatOpt))) {\n var extISOStr = null;\n var basISOString = null;\n // tslint:disable-next-line\n extISOStr = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // tslint:disable-next-line\n basISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOStr.test(valueString) && !basISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n }\n }\n return invalid;\n };\n DateRangePicker.prototype.isDateDisabled = function (date) {\n if (isNullOrUndefined(date)) {\n return false;\n }\n var value = new Date(+date);\n if (+value < +this.min || +value > +this.max) {\n return true;\n }\n this.virtualRenderCellArgs = {\n date: value,\n isDisabled: false,\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.disabledDateRender = function () {\n this.disabledDays = [];\n this.disabledDayCnt = null;\n var localDate = new Date(+this.startValue);\n var count = 0;\n while (+localDate <= +this.endValue) {\n this.virtualRenderCellArgs = {\n date: localDate,\n isDisabled: false,\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n this.disabledDays.push(new Date(+args.date));\n if (+localDate > +this.startValue && +localDate < +this.endValue) {\n count++;\n }\n }\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n this.disabledDayCnt = count;\n };\n DateRangePicker.prototype.virtualRenderCellEvent = function (args) {\n extend(this.virtualRenderCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n DateRangePicker.prototype.disabledDates = function () {\n var isStartDisabled = false;\n var isEndDisabled = false;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n isStartDisabled = this.isDateDisabled(this.startValue);\n isEndDisabled = this.isDateDisabled(this.endValue);\n if (!this.isPopupOpen()) {\n this.currentDate = null;\n }\n this.setValue();\n }\n return (isStartDisabled || isEndDisabled);\n };\n DateRangePicker.prototype.setModelValue = function () {\n if (!this.value && this.startDate === null && this.endDate === null) {\n this.setProperties({ value: null }, true);\n }\n else if (this.value === null || this.value.start === null) {\n if (this.value === null) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n else if (this.value.start === null) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n else {\n if ((this.value && this.value.length > 0) ||\n this.valueType && this.valueType.length > 0) {\n if (+this.startDate !== +this.value[0] || +this.endDate !== +this.value[1]) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n if (this.value && this.value[0] == null && this.value[1] == null) {\n this.setProperties({ value: null }, true);\n }\n }\n else {\n if ((this.value && this.value.start)) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n }\n this.createHiddenInput();\n };\n /**\n * To dispatch the event manually\n */\n DateRangePicker.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n this.firstHiddenChild.dispatchEvent(evt);\n };\n DateRangePicker.prototype.changeTrigger = function (e) {\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.setModelValue();\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.rangeArgs(e));\n }\n }\n this.previousEleValue = this.inputElement.value;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n * @hidden\n */\n DateRangePicker.prototype.navigateTo = function (view, date) {\n if (this.isPopupOpen()) {\n if (view.toLowerCase() === 'month') {\n view = 'Month';\n }\n else if (view.toLowerCase() === 'year') {\n view = 'Year';\n }\n else if (view.toLowerCase() === 'decade') {\n view = 'Decade';\n }\n else {\n return;\n }\n if (this.getViewNumber(view) < this.getViewNumber(this.depth)) {\n view = this.depth;\n }\n if (this.isMobile) {\n _super.prototype.navigateTo.call(this, view, date);\n }\n else {\n if (date < this.min) {\n date = new Date(+this.min);\n }\n else if (date >= this.max) {\n date = new Date(+this.max);\n }\n if (view === 'Month' && this.isSameMonth(date, this.max)) {\n date = new Date(this.max.getFullYear(), this.max.getMonth() - 1, this.min.getDate());\n }\n else if (view === 'Year' && this.isSameYear(date, this.max)) {\n date = new Date((this.max.getFullYear() - 1), this.max.getMonth(), this.max.getDate());\n }\n else if (view === 'Decade' && this.isSameDecade(date, this.max)) {\n date = new Date((this.max.getFullYear() - 10), this.max.getMonth(), this.max.getDate());\n }\n this.leftCalCurrentDate = date;\n this.navigate(this.leftCalendar, this.leftCalCurrentDate, view);\n if (view === 'Month') {\n date = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));\n }\n else if (view === 'Year') {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 1));\n }\n else {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 10));\n }\n this.rightCalCurrentDate = date;\n this.navigate(this.rightCalendar, this.rightCalCurrentDate, view);\n this.leftKeyboardModule = this.rightKeyboardModule = null;\n this.updateNavIcons();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n };\n DateRangePicker.prototype.navigate = function (calendar, date, view) {\n this.calendarElement = calendar;\n this.table = calendar.querySelector('table');\n this.tableBodyElement = calendar.querySelector('tbody');\n this.headerTitleElement = calendar.querySelector('.e-title');\n this.tableHeadElement = calendar.querySelector('thead');\n this.contentElement = calendar.querySelector('.e-content');\n this.previousIcon = calendar.querySelector('.e-prev');\n this.nextIcon = calendar.querySelector('.e-next');\n this.effect = ZOOMIN;\n _super.prototype.navigateTo.call(this, view, date);\n };\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n DateRangePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.focus();\n var focusArguments = {\n model: this\n };\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n DateRangePicker.prototype.focusOut = function () {\n var isBlur = this.preventBlur;\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.preventBlur = false;\n this.inputElement.blur();\n this.preventBlur = isBlur;\n }\n };\n /**\n * To destroy the widget.\n * @returns void\n */\n DateRangePicker.prototype.destroy = function () {\n this.unBindEvents();\n this.hide(null);\n var ariaAttrs = {\n 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',\n 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n removeClass([this.inputElement], [ROOT]);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n Input.removeAttributes(ariaAttrs, this.inputElement);\n (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) ?\n this.inputElement.setAttribute('tabindex', this.tabIndex) : this.inputElement.removeAttribute('tabindex');\n this.ensureInputAttribute();\n this.inputElement.classList.remove('e-input');\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n detach(this.inputWrapper.container);\n }\n }\n if (!isNullOrUndefined(this.inputKeyboardModule) && !this.isMobile) {\n this.inputKeyboardModule.destroy();\n }\n if (this.popupObj) {\n if (!this.isMobile) {\n this.clearCalendarEvents();\n }\n }\n _super.prototype.destroy.call(this);\n this.inputWrapper = this.popupWrapper = this.popupObj = this.cloneElement = this.presetElement = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if ((!isNullOrUndefined(this.firstHiddenChild))\n && (!isNullOrUndefined(this.secondHiddenChild))) {\n detach(this.firstHiddenChild);\n detach(this.secondHiddenChild);\n this.firstHiddenChild = this.secondHiddenChild = null;\n this.inputElement.setAttribute('name', this.element.getAttribute('data-name'));\n this.inputElement.removeAttribute('data-name');\n }\n };\n DateRangePicker.prototype.ensureInputAttribute = function () {\n var attr = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n attr[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < attr.length; i++) {\n if (isNullOrUndefined(this.cloneElement.getAttribute(attr[i]))) {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(attr[i]);\n }\n else {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(attr[i]);\n }\n this.inputElement.setAttribute(attr[i], this.cloneElement.getAttribute(attr[i]));\n }\n }\n };\n /**\n * To get component name\n * @returns string\n * @private\n */\n DateRangePicker.prototype.getModuleName = function () {\n return 'daterangepicker';\n };\n /**\n * Return the properties that are maintained upon browser refresh.\n * @returns string\n */\n DateRangePicker.prototype.getPersistData = function () {\n var keyEntity = ['startDate', 'endDate', 'value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Return the selected range and day span in the DateRangePicker.\n * @returns Object\n */\n DateRangePicker.prototype.getSelectedRange = function () {\n var range;\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n this.disabledDateRender();\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n }\n else {\n range = 0;\n }\n return { startDate: this.startValue, endDate: this.endValue, daySpan: range };\n };\n /**\n * To open the Popup container in the DateRangePicker component.\n * @returns void\n */\n DateRangePicker.prototype.show = function (element, event) {\n var _this = this;\n if (this.isMobile && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n if (!this.isPopupOpen()) {\n if (element) {\n this.targetElement = element;\n }\n this.createPopup();\n if (this.isMobile || Browser.isDevice) {\n this.mobileRangePopupWrap = this.createElement('div', { className: 'e-daterangepick-mob-popup-wrap' });\n document.body.appendChild(this.mobileRangePopupWrap);\n }\n this.openEventArgs = {\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: (isBlazor() && this.isServerRendered) ? null : this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n var eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openEventArgs = eventArgs;\n if (!_this.openEventArgs.cancel) {\n _this.openEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.showPopup(element, event);\n var isPreset = (!_this.isCustomRange || (_this.isMobile && _this.isCustomRange));\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label) && isPreset) {\n _this.setScrollPosition();\n }\n _this.checkMinMaxDays();\n if ((_this.isMobile) && (!isNullOrUndefined(_this.startDate)) && (isNullOrUndefined(_this.endDate))) {\n _this.endButton.element.classList.add(ACTIVE);\n _this.startButton.element.classList.remove(ACTIVE);\n _this.endButton.element.removeAttribute('disabled');\n _this.selectableDates();\n }\n _super.prototype.setOverlayIndex.call(_this, _this.mobileRangePopupWrap, _this.popupObj.element, _this.modal, _this.isMobile || Browser.isDevice);\n }\n });\n }\n }\n };\n /**\n * To close the Popup container in the DateRangePicker component.\n * @returns void\n */\n DateRangePicker.prototype.hide = function (event) {\n var _this = this;\n if (this.popupObj) {\n if (isNullOrUndefined(this.previousEndValue) && isNullOrUndefined(this.previousStartValue)) {\n this.clearRange();\n }\n else {\n if (!isNullOrUndefined(this.previousStartValue)) {\n this.startValue = new Date(this.checkValue(this.previousStartValue));\n this.setValue();\n this.currentDate = new Date(this.checkValue(this.startValue));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n this.endValue = new Date(this.checkValue(this.previousEndValue));\n this.setValue();\n }\n else {\n this.endValue = null;\n this.setValue();\n }\n }\n if (this.isPopupOpen()) {\n this.closeEventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj,\n date: this.inputElement.value,\n model: (isBlazor() && this.isServerRendered) ? null : this,\n event: event ? event : null\n };\n var eventArgs = this.closeEventArgs;\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventArgs = eventArgs;\n if (!_this.closeEventArgs.cancel) {\n if (_this.isMobile) {\n if (!isNullOrUndefined(_this.startButton) && !isNullOrUndefined(_this.endButton)) {\n EventHandler.remove(_this.startButton.element, 'click touchstart', _this.deviceHeaderClick);\n EventHandler.remove(_this.endButton.element, 'click touchstart', _this.deviceHeaderClick);\n }\n }\n if (_this.popupObj) {\n _this.popupObj.hide();\n if (_this.preventBlur) {\n _this.inputElement.focus();\n addClass([_this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n if (!_this.isMobile) {\n if (!isNullOrUndefined(_this.leftKeyboardModule) && !isNullOrUndefined(_this.rightKeyboardModule)) {\n _this.leftKeyboardModule.destroy();\n _this.rightKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.presetKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.cancelButton)) {\n _this.btnKeyboardModule.destroy();\n }\n }\n _this.targetElement = null;\n removeClass([document.body], OVERFLOW);\n EventHandler.remove(document, 'mousedown touchstart', _this.documentHandler);\n if (_this.isMobile && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (_this.isMobile || Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileRangePopupWrap)) {\n _this.mobileRangePopupWrap.remove();\n _this.mobileRangePopupWrap = null;\n }\n }\n _this.isKeyPopup = _this.dateDisabled = false;\n }\n else {\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n }\n _this.updateClearIconState();\n _this.updateHiddenInput();\n if (_this.isMobile && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n }\n else {\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n DateRangePicker.prototype.setLocale = function () {\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n this.updateHiddenInput();\n this.changeTrigger();\n };\n DateRangePicker.prototype.refreshChange = function () {\n this.checkView();\n this.refreshControl();\n this.changeTrigger();\n };\n DateRangePicker.prototype.setDate = function () {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.refreshChange();\n };\n DateRangePicker.prototype.enableInput = function () {\n if (+this.min <= +this.max) {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.element.hasAttribute('disabled')) {\n this.bindEvents();\n }\n }\n };\n DateRangePicker.prototype.clearModelvalue = function (newProp, oldProp) {\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n if (oldProp.value && oldProp.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n else if (oldProp.value && oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n else if (oldProp.value && !oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n this.updateValue();\n this.setDate();\n };\n DateRangePicker.prototype.createHiddenInput = function () {\n if (isNullOrUndefined(this.firstHiddenChild) && isNullOrUndefined(this.secondHiddenChild)) {\n this.firstHiddenChild = this.createElement('input');\n this.secondHiddenChild = this.createElement('input');\n }\n if (!isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n this.inputElement.setAttribute('data-name', this.inputElement.getAttribute('name'));\n this.inputElement.removeAttribute('name');\n }\n attributes(this.firstHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n attributes(this.secondHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n var format = { type: 'datetime', skeleton: isBlazor() ? 'd' : 'yMd' };\n this.firstHiddenChild.value = this.startDate && this.globalize.formatDate(this.startDate, format);\n this.secondHiddenChild.value = this.endDate && this.globalize.formatDate(this.endDate, format);\n this.inputElement.parentElement.appendChild(this.firstHiddenChild);\n this.inputElement.parentElement.appendChild(this.secondHiddenChild);\n };\n DateRangePicker.prototype.setMinMaxDays = function () {\n if (this.isPopupOpen()) {\n this.removeClassDisabled();\n this.checkMinMaxDays();\n if (this.isMobile) {\n this.selectableDates();\n }\n if (!this.strictMode && (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n this.removeSelection();\n }\n else {\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n this.updateHeader();\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n DateRangePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var format = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['maxDays', 'minDays', 'value'];\n if (openPopup.indexOf(prop) < 0) {\n this.hide(null);\n }\n switch (prop) {\n case 'width':\n this.setEleWidth(this.width);\n break;\n case 'separator':\n this.previousEleValue = this.inputElement.value;\n this.setProperties({ separator: newProp.separator }, true);\n this.updateInput();\n this.changeTrigger();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.setProperties({ placeholder: newProp.placeholder }, true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n this.inputElement.setAttribute('aria-readonly', '' + this.readonly);\n this.setRangeAllowEdit();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'allowEdit':\n this.setRangeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.updateInput();\n this.changeTrigger();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.setLocale();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.setDataAttribute(true);\n this.checkHtmlAttributes(true);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'startDate':\n if (typeof newProp.startDate === 'string') {\n newProp.startDate = this.globalize.parseDate(newProp.startDate, format);\n }\n if (+this.initStartDate !== +newProp.startDate) {\n this.startValue = this.checkDateValue(new Date(this.checkValue(newProp.startDate)));\n this.setDate();\n this.setValue();\n }\n break;\n case 'endDate':\n if (typeof newProp.endDate === 'string') {\n newProp.endDate = this.globalize.parseDate(newProp.endDate, format);\n }\n if (+this.initEndDate !== +newProp.endDate) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(newProp.endDate)));\n this.setDate();\n this.setValue();\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidRange(newProp.value);\n if (typeof (newProp.value) === 'string') {\n if (!this.invalidValueString) {\n var rangeArray = newProp.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n this.updateValue();\n this.setDate();\n }\n else {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else {\n if ((!isNullOrUndefined(newProp.value) && newProp.value.length > 0)\n || !isNullOrUndefined(newProp.value) && newProp.value.start) {\n this.valueType = newProp.value;\n if (newProp.value[0] === null || (newProp.value.start === null)) {\n if (newProp.value.length === 1 || (newProp.value.start)) {\n this.clearModelvalue(newProp, oldProp);\n }\n else if (newProp.value[1] === null ||\n (newProp.value.start === null)) {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else if ((+this.initStartDate !== +newProp.value[0]\n || +this.initEndDate !== +newProp.value[1]) ||\n (+this.initStartDate !== +(newProp.value.start\n || +this.initEndDate !== +newProp.value.start))) {\n if (newProp.value.length === 1) {\n this.modelValue = newProp.value;\n }\n else if (newProp.value.start) {\n this.modelValue = newProp.value;\n }\n this.updateValue();\n this.setDate();\n }\n }\n else {\n if (isNullOrUndefined(this.value)\n || newProp.value.start == null) {\n this.valueType = newProp.value;\n this.startValue = null;\n this.endValue = null;\n this.clearModelvalue(newProp, oldProp);\n }\n }\n }\n if (this.isPopupOpen()) {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.removeSelection();\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n return;\n }\n if (this.isMobile) {\n this.navigate(this.deviceCalendar, this.startValue, this.currentView());\n this.deviceHeaderUpdate();\n }\n else {\n this.navigate(this.leftCalendar, this.startValue, this.currentView());\n this.updateControl(this.leftCalendar);\n this.navigate(this.rightCalendar, this.endValue, this.currentView());\n this.updateControl(this.rightCalendar);\n }\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n this.updateHeader();\n this.applyButton.disabled = this.applyButton.element.disabled = false;\n }\n break;\n case 'minDays':\n this.setProperties({ minDays: newProp.minDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'maxDays':\n this.setProperties({ maxDays: newProp.maxDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'min':\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n this.previousEleValue = this.inputElement.value;\n this.enableInput();\n this.refreshChange();\n break;\n case 'max':\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.enableInput();\n this.refreshChange();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.refreshChange();\n break;\n case 'presets':\n this.setProperties({ presets: newProp.presets }, true);\n this.processPresets();\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'start':\n this.setProperties({ start: newProp.start }, true);\n this.refreshChange();\n break;\n case 'depth':\n this.setProperties({ depth: newProp.depth }, true);\n this.refreshChange();\n break;\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n }\n };\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateRangePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateRangePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"locale\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateRangePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"renderDayCell\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"startDate\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"endDate\", void 0);\n __decorate([\n Collection([{}], Presets)\n ], DateRangePicker.prototype, \"presets\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DateRangePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"depth\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property('-')\n ], DateRangePicker.prototype, \"separator\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"minDays\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"maxDays\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property('Never')\n ], DateRangePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], DateRangePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"blur\", void 0);\n DateRangePicker = __decorate([\n NotifyPropertyChanges\n ], DateRangePicker);\n return DateRangePicker;\n}(CalendarBase));\nexport { DateRangePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar PresetsDirective = /** @class */ (function (_super) {\n __extends(PresetsDirective, _super);\n function PresetsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PresetsDirective.prototype.render = function () {\n return;\n };\n PresetsDirective = __decorate([\n EJComponentDecorator({})\n ], PresetsDirective);\n return PresetsDirective;\n}(Vue));\nexport { PresetsDirective };\nexport var PresetsPlugin = {\n name: 'e-presets',\n install: function (Vue) {\n Vue.component(PresetsPlugin.name, PresetsDirective);\n }\n};\n/**\n * 'e-presets' directive represent a presets of VueJS daterangepicker\n * It must be contained in a daterangepicker component(`ej-daterangepicker`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar PresetDirective = /** @class */ (function (_super) {\n __extends(PresetDirective, _super);\n function PresetDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PresetDirective.prototype.render = function () {\n return;\n };\n PresetDirective = __decorate([\n EJComponentDecorator({})\n ], PresetDirective);\n return PresetDirective;\n}(Vue));\nexport { PresetDirective };\nexport var PresetPlugin = {\n name: 'e-preset',\n install: function (Vue) {\n Vue.component(PresetPlugin.name, PresetDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { DateRangePicker } from '@syncfusion/ej2-calendars';\nimport { PresetsDirective, PresetDirective, PresetsPlugin, PresetPlugin } from './presets.directive';\nexport var properties = ['allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enablePersistence', 'enableRtl', 'enabled', 'endDate', 'firstDayOfWeek', 'floatLabelType', 'format', 'htmlAttributes', 'keyConfigs', 'locale', 'max', 'maxDays', 'min', 'minDays', 'openOnFocus', 'placeholder', 'presets', 'readonly', 'separator', 'serverTimezoneOffset', 'showClearButton', 'start', 'startDate', 'strictMode', 'value', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell', 'select'];\nexport var modelProps = ['startDate', 'endDate', 'value'];\n/**\n * Represents the Essential JS 2 VueJS DateRangePicker Component.\n * ```html\n * \n * ```\n */\nvar DateRangePickerComponent = /** @class */ (function (_super) {\n __extends(DateRangePickerComponent, _super);\n function DateRangePickerComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = false;\n _this.tagMapper = { \"e-presets\": \"e-preset\" };\n _this.tagNameMapper = {};\n _this.ej2Instances = new DateRangePicker({});\n _this.ej2Instances._trigger = _this.ej2Instances.trigger;\n _this.ej2Instances.trigger = _this.trigger;\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n DateRangePickerComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n DateRangePickerComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n DateRangePickerComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n DateRangePickerComponent.prototype.focusIn = function () {\n return this.ej2Instances.focusIn();\n };\n DateRangePickerComponent.prototype.focusOut = function () {\n return this.ej2Instances.focusOut();\n };\n DateRangePickerComponent.prototype.getSelectedRange = function () {\n return this.ej2Instances.getSelectedRange();\n };\n DateRangePickerComponent.prototype.hide = function (event) {\n return this.ej2Instances.hide(event);\n };\n DateRangePickerComponent.prototype.requiredModules = function () {\n return this.ej2Instances.requiredModules();\n };\n DateRangePickerComponent.prototype.show = function (element, event) {\n return this.ej2Instances.show(element, event);\n };\n DateRangePickerComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], DateRangePickerComponent);\n return DateRangePickerComponent;\n}(ComponentBase));\nexport { DateRangePickerComponent };\nexport var DateRangePickerPlugin = {\n name: 'ejs-daterangepicker',\n install: function (Vue) {\n Vue.component(DateRangePickerPlugin.name, DateRangePickerComponent);\n Vue.component(PresetPlugin.name, PresetDirective);\n Vue.component(PresetsPlugin.name, PresetsDirective);\n }\n};\n"],"sourceRoot":""}