{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/renderer.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/timezone/timezone.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/quick-info-templates.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/resources.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-tooltip.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-window.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/header-rows.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/time-scale.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/work-hours.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/quick-popups.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/form-validator.js"],"names":["Render","parent","this","prototype","render","viewName","isDataRefresh","initializeLayout","activeView","crudModule","refreshDataManager","templates","resetTemplates","removeEventListener","destroy","dayModule","weekModule","workWeekModule","monthModule","yearModule","agendaModule","monthAgendaModule","timelineViewsModule","viewClass","timelineMonthModule","timelineYearModule","firstView","viewCollections","option","setProperties","currentView","headerModule","updateActiveView","setCalendarView","Error","viewIndex","updateLabelText","addEventListener","getRenderDates","uiStateValues","isGroupAdaptive","activeViewOptions","group","resources","length","enableAdaptiveUI","isAdaptive","enableCompactView","virtualScrollModule","indexOf","orientation","allowVirtualScrolling","isTimelineView","top","isHorizontalScroll","left","updateHeader","currentTimezoneDate","getCurrentTime","renderLayout","renderTemplates","eventTooltip","eventSettings","enableTooltip","headerTooltipTemplate","setDayOfWeek","firstDayOfWeek","readonly","element","classList","contains","updateDateRange","updateHeaderItems","view","content","getLabelText","setAttribute","Timezone","timezoneData","getTimezoneData","offset","date","timezone","localOffset","getTimezoneOffset","convertedDate","Date","toLocaleString","timeZone","isNaN","getTime","error","convert","fromOffset","toOffset","fromLocalOffset","toLocalOffset","add","remove","removeLocalOffset","getLocalTimezoneName","window","Intl","DateTimeFormat","resolvedOptions","Value","Text","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","create","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","QuickInfoTemplates","_super","apply","Resources","EventTooltip","tooltipObj","animation","close","effect","position","offsetY","mouseTrail","showTipPointer","cssClass","getTargets","beforeRender","onBeforeRender","bind","beforeClose","onBeforeClose","enableRtl","enableHtmlSanitizer","appendTo","targets","push","join","args","getAttribute","resCollection","index","parseInt","resourceBase","lastResourceLevel","toString","rowIndex","parentNode","sectionRowIndex","cellIndex","getColumnLevels","data","resource","resourceData","contentContainer","templateId","id","tooltipTemplate","slice","call","getHeaderTooltipTemplate","setContent","record","eventBase","getEventByGuid","globalize","fields","eventFields","eventStart","startTime","eventEnd","endTime","getHours","getMinutes","setMilliseconds","startDate","endDate","tooltipSubject","subject","default","localeObj","getConstant","tooltipLocation","location","startMonthDate","startMonthYearDate","endMonthYearDate","formatDate","type","skeleton","calendar","getCalendarMode","getTimeString","tooltipDetails","getFullYear","tooltipTime","isAllDay","getEventTooltipTemplate","EVENT_FIELD","REPEAT_CONTAINER_CLASS","REPEAT_BUTTON_ICON_CLASS","REPEAT_BUTTON_CLASS","REPEAT_DIALOG_CLASS","HIDE_STYLE_CLASS","EventWindow","l10n","eventWindowTime","renderEventWindow","appendChild","dialogModel","animationSettings","getEventWindowContent","height","minHeight","isModal","showCloseIcon","document","body","visible","width","beforeOpen","onBeforeOpen","header","buttons","buttonModel","disabled","allowDeleting","click","eventDelete","isPrimary","allowAdding","eventSave","dialogClose","dialogObject","querySelector","parentElement","preventEventSave","applyFormValidation","refresh","refreshRecurrenceEditor","recurrenceEditor","createRecurrenceEditor","setRecurrenceEditor","editorTemplate","openEditor","isEventData","repeatType","currentAction","removeNewEventElement","quickPopup","quickPopupHide","inlineModule","removeInlineAppointmentElement","eventObj","cellClickAction","activeCellsData","event_1","convertToEventData","groupIndex","renderFormElements","onCellDetailsUpdate","onEventDetailsUpdate","setDialogContent","dataBind","e","allowKeyboardInteraction","code","isEnterKey","_this","eventProp","eventData","cancel","activeEventData","duration","getSlotDuration","saveObj","getInstance","allowEditing","deleteObj","callBackPromise","trigger","popupArgs","refreshDateTimePicker","startObj","endObj","value","resolve","isInteracted","isCrudAction","event","dialogEvent","eventCrudData","processCrudActions","resetForm","focusElement","container","className","form","attrs","onsubmit","getDefaultEventWindowContent","fieldValidator","destroyComponents","formElements","children","_i","formElements_1","tempEle","getEditorTemplate","parentDiv","createDivElement","titleLocationDiv","renderTextBox","editorTitles","startEndDateTimeDiv","renderDateTimePicker","onTimeChange","allDayTimezoneDiv","renderCheckBox","timezoneParentDiv","renderDropDown","repeatParentDiv","repeatDiv","repeatEditContainer","button","buttonObj","iconCss","loadRecurrenceEditor","resourceCollection","resourceParentDiv","_a","renderResourceDetails","description","submit","title","style","renderRecurrenceEditor","updateMinMaxDateToEditor","createInputElement","fieldName","name","charAt","toLowerCase","timeScale","interval","slotCount","changeEvent","dateTimeDiv","getFieldName","dateTimeInput","dateTimePicker","change","calendarMode","min","minDate","max","maxDate","setHours","locale","floatLabelType","timeFormat","format","dateFormat","getFormat","placeholder","getFieldLabel","step","elementSelector","startEndElement","querySelectorAll","startEndElement_1","instance","ej2_instances","updateRuleUntilDate","field","labelValue","resourceDiv","resourceInput","resourceTemplate","colorField","textField","allowMultiple","listObj","dataSource","onMultiselectResourceChange","itemTemplate","text","idField","htmlAttributes","popupHeight","popupWidth","mode","dropDownList","onDropdownResourceChange","timezoneDiv","timezoneInput","allowFiltering","onTimezoneChange","timezoneDataSource","filterBarPlaceholder","noRecordsTemplate","filtering","query","where","updateData","role","byGroupID","getColumnName","resObject","createInstance","datasource","_loop_1","j","resourceModel","filter","groupIDField","groupId","filterRes","this_1","filterDatasource","concat","clear","resObj","itemData","resValue","startTimezone","startTimezoneObj","endTimezoneObj","checkBoxDiv","checkBoxInput","checkBox","onChange","label","repeatStatus","textBoxDiv","elementType","textBoxInput","createInput","properties","endTimezone","labelText","recurrenceRule","targetSelector","onAllDayChange","checked","timezoneChangeStyle","onRepeatChange","renderRepeatDialog","repeatDialogObject","closeOnEscape","repeatSaveDialog","repeatCancelDialog","open","repeatOpenDialog","show","repeatRule","setRecurrenceRule","state","repeatStartDate","selectedType","hide","updateRepeatLabel","getRecurrenceRule","closeRepeatDialog","repeatTempRule","removeAttribute","innerHTML","showDetails","deleteButton","saveButton","disableButton","cellsData","RecurrenceRule","setResourceValues","getValidationRule","rules","keys","undefined","subjectRule","validation","locationRule","startTimeRule","endTimeRule","descriptionRule","renderFormValidator","trimAllDay","getFormElements","keyNames","formElements_2","curElement","columnName","setValueToElement","setDefaultValueToElement","timezoneObj","attrName","isDropDowns","fieldSelector","classSelector","control","attrEle","allDayStatus","updateDateTime","temp","start","getSeconds","startHour","getStartEndTime","workHours","formatType","timezoneValue","timezoneConvert","isDisable","isReadonly","saveIcon","untilDate","untilObj","getRuleSummary","destroyToolTip","resetFormFields","isDestroyed","resetFields","localTimezoneName","tzModule","found","some","tz","formElement","formElement_1","currentElement","alert","validate","dataCollection","getEventDataFromEditor","processEventValidation","tempData","getObjectFromFormData","Repeat","setDefaultValueToObject","tempObj","alertType","openValidationError","recurrenceValidation","isShowAlert","isIgnoreOccurrence","enableRecurrenceValidation","openRecurrenceValidationAlert","isBlock","getResourceData","isResourceEventExpand","allowGroupEdit","eventId","getEventIdFromForm","resourceSaveEvent","getEventMaxID","addEvent","eveId_1","getEventIDType","editedData","eventsData","blockData","Guid","recurrenceID","editOccurrenceValidation","followingID","saveEvent","lastResourceData","formElement_2","getValueFromElement","alertMessage","recEditor","activeEvent","excludedEvents","eventStartTime","seriesEvents","getSeriesEvents","getEditedOccurrences","event_2","getEventById","recurrenceException","types","split","obj","tempDiff","tempValue","sort","a","Math","setMonth","getMonth","setFullYear","quickDialog","getRecurrenceIndex","recColl","recIndex","valueOf","currentData","editData","recurColl","getOccurrencesByID","excludedDatas","map","recurColl_1","sortByTime","nextStartTime","nextEndTime","currentStartTime","currentEndTime","lastEndTime","previousStartTime","previousEndTime","action","reverse","lastLevel","eventList","_loop_2","events","this_2","addValues","k","lastResource","resCol","groupId_1","groupOrder","index_1","event_3","l","state_1","eventList_1","event_4","elements","sanitize","dateValue","openDeleteAlert","getRecurrenceEditorInstance","formElements_3","detachComponents","formElements_4","isIgnore","HeaderRows","HeaderRenderer","renderHeader","on","closeHeaderPopup","off","closestEle","closestPop","contentWrap","popupEle","popupObj","hideHeaderPopup","headerPopup","toolbarEle","insertBefore","firstElementChild","renderToolbar","items","getItems","requestType","toolbarObj","overflowMode","clicked","toolbarClickHandler","prevNavEle","nextNavEle","updateAddIcon","updateItems","getPopUpRelativeElement","headerCalendar","setCalendarDate","setCalendarMinMaxDate","getCalendarView","calendarView","depth","selEle","textEle","dateRangeTemplate","textContent","getStartDate","getEndDate","dateRangeTemplateName","dateTemplate","getDateRangeTemplate","getDateRangeText","refreshOverflow","addEle","dateString","selectedDate","align","prefixIcon","tooltipText","overflow","suffixIcon","showAlwaysInPopup","views","item","getItemObject","displayName","orientationClass","isItemInsidePopup","renderHeaderPopup","headerPopupEle","headerCalendarEle","actionOnScroll","targetType","relateTo","X","Y","isDisplayDate","displayDate","hasSelectedDate","calendarChange","setCalendarTimezone","calendarDate","changeDate","calculateViewIndex","originalEvent","isSameTime","currentTime","strClass","replace","changeView","isSelectedDate","numberOfWeeks","getNextPreviousDate","msInterval","currentTime_1","round","getMilliseconds","eventWindow","toolbarPopUp","selectedTime","getHeaderElement","classType","dateRangeEle","previousNextIconHandler","dates","getCurrentViewDates","firstDate","lastDate","isCustomMonth","enableItems","getModuleName","TimeScale","WorkHours","QuickPopups","isMultipleEventSelect","renderQuickPopup","renderMorePopup","renderQuickDialog","quickPopupWrapper","quickPopupOpen","quickPopupClose","hideAnimation","showAnimation","collision","viewPortElement","zIndex","moreEventPopup","moreEventWrapper","morePopup","morePopupOpen","morePopupClose","closeButton","renderButton","closeClick","navigationClick","dialogButtonClick","editFollowingEvents","followingSeriesButton","splice","beforeQuickDialogClose","dialogElement","okButton","cancelButton","iconName","isDisabled","clickEvent","quickDialogClass","followingEventButton","openRecurrenceAlert","editDeleteOnly","editFollowingEventsOnly","editDeleteSeries","showQuickDialog","dialogCancel","popupType","createMoreEventList","eventCollection","moreEventContentEle","moreEventWrapperEle","eventText","appointmentElement","getReadonlyAttribute","getAnnouncementString","templateElement","eventTemplate","tempId","eventTemplateName","getAppointmentTemplate","iconClass","eventArgs","isPreventCrud","wireAppointmentEvents","applyResourceColor","eventCollection_1","tapHoldEventPopup","selectedElements","getSelectedEventElements","getSelectedEvents","guid","eventTitle","closeIcon","editAction","deleteAction","editIcon","editClick","deleteIcon","deleteClick","beforeQuickPopupOpen","getPageCoordinates","isCellBlocked","targetCell","isBlockRange","cellClick","showQuickInfo","isMinMaxDate","targetEle","newEventClone","isSameTarget","subjectElement_1","focus","destroyPopupButtons","quickCellPopup","getPopupHeader","getPopupContent","getPopupFooter","subjectElement","popupClose","moreButton","detailsClick","saveClick","isSameEventClick","editButton","isQuickTemplate","quickInfoTemplates","templateType","eventClick","updateTapHoldEventPopup","quickEventPopup","buttonClass","headerType","headerData","headerTemplate","headerArgs","headerTemp","getQuickInfoTemplatesHeader","getFormattedString","eventSubject","replaceAll","templateWrapper","subjectText","childNodes","contentTemplate","contentArgs","contentTemp","getQuickInfoTemplatesContent","cellDetails","argsData","resourceText","getResourceText","details","getRecurrenceSummary","getTimezone","locationDetails","descriptionDetails","resourceDetails","footerType","footerData","footerTemplate","footer","footerArgs","footerTemp","getQuickInfoTemplatesFooter","resourceValue","resourceCollection_1","resourceId","id_1","resourceData_1","lastResource_1","isArray","resNames_1","lastResourceData_1","forEach","startDateDetails","getDateFormat","endDateDetails","startTimeDetail","endTimeDetail","spanLength","getDate","moreEventClick","day","dateElement","moreEventElements","gIndex","tdDate","workCells","subjectEle","updateMoreEventContent","filterEvents","eventsProcessed","moreElement","selectCell","cancelBtn","deleteEvent","getParentEvent","titleContent","zoneDetails","ruleSummary","toUpperCase","skeletonString","getDataFromTarget","popupCloseArgs","isEventPopup","display","innerHeight","isVirtualScroll","conTable","offsetX","refreshPosition","collide","offsetWidth","leftCollide","translateY","clientX","clientY","targetRect","getBoundingClientRect","ceil","y","previousOffset","popupRect","elementFromPoint","applyEventColor","color","colorEle","footerEle","offsetParent","borderLeftColor","match","backgroundColor","editElement","moreWrapper","popupData","isCellPopup","formvalidator","navigateEle","getDateFromElement","currentTarget","getNavigateView","documentClick","classNames","popupWrap","childElementCount","tar","allowInline","onClosePopup","popupName","popup","buttonCollections","buttonCollections_1","refreshQuickDialog","destroyQuickDialog","refreshQuickPopup","destroyQuickPopup","refreshMorePopup","destroyMorePopup","FieldValidator","formObj","customPlacement","inputElement","errorPlacement","validationComplete","focusout","focusOut","relatedTarget","ignoreError","elem","inputName","status","createTooltip","dlgContent","client","inputClient","div","styles","bottom","scrollTop","scrollLeft","arrow","elements_1","reset"],"mappings":"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","file":"js/chunk-vendors~8eab3777.14b8f6f6.4.2.0.js","sourcesContent":["import { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { VirtualScroll } from '../actions/virtual-scroll';\nimport { EventTooltip } from '../popups/event-tooltip';\nimport * as cls from '../base/css-constant';\n/**\n * Schedule DOM rendering\n */\nvar Render = /** @class */ (function () {\n function Render(parent) {\n this.parent = parent;\n }\n Render.prototype.render = function (viewName, isDataRefresh) {\n if (isDataRefresh === void 0) { isDataRefresh = true; }\n this.initializeLayout(viewName);\n if (this.parent.activeView && isDataRefresh) {\n this.parent.crudModule.refreshDataManager();\n }\n };\n Render.prototype.initializeLayout = function (viewName) {\n if (this.parent.activeView) {\n var templates = [\n 'cellTemplate', 'eventTemplate', 'tooltipTemplate', 'majorSlotTemplate', 'minorSlotTemplate',\n 'headerTooltipTemplate', 'dateHeaderTemplate', 'dayHeaderTemplate', 'monthHeaderTemplate',\n 'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate', 'dateRangeTemplate'\n ];\n this.parent.resetTemplates(templates);\n this.parent.activeView.removeEventListener();\n this.parent.activeView.destroy();\n }\n switch (viewName) {\n case 'Day':\n this.parent.activeView = this.parent.dayModule;\n break;\n case 'Week':\n this.parent.activeView = this.parent.weekModule;\n break;\n case 'WorkWeek':\n this.parent.activeView = this.parent.workWeekModule;\n break;\n case 'Month':\n this.parent.activeView = this.parent.monthModule;\n break;\n case 'Year':\n this.parent.activeView = this.parent.yearModule;\n break;\n case 'Agenda':\n this.parent.activeView = this.parent.agendaModule;\n break;\n case 'MonthAgenda':\n this.parent.activeView = this.parent.monthAgendaModule;\n break;\n case 'TimelineDay':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-day-view';\n break;\n case 'TimelineWorkWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-work-week-view';\n break;\n case 'TimelineWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-week-view';\n break;\n case 'TimelineMonth':\n this.parent.activeView = this.parent.timelineMonthModule;\n break;\n case 'TimelineYear':\n this.parent.activeView = this.parent.timelineYearModule;\n break;\n }\n if (isNullOrUndefined(this.parent.activeView)) {\n var firstView = this.parent.viewCollections[0].option;\n if (firstView) {\n this.parent.setProperties({ currentView: firstView }, true);\n if (this.parent.headerModule) {\n this.parent.headerModule.updateActiveView();\n this.parent.headerModule.setCalendarView();\n }\n return this.initializeLayout(firstView);\n }\n throw Error('Inject required modules');\n }\n this.parent.activeView.viewIndex = this.parent.viewIndex;\n this.updateLabelText(viewName);\n this.parent.activeView.addEventListener();\n this.parent.activeView.getRenderDates();\n this.parent.uiStateValues.isGroupAdaptive = this.parent.activeViewOptions.group.resources.length > 0 &&\n (this.parent.enableAdaptiveUI && !this.parent.isAdaptive ||\n this.parent.isAdaptive && this.parent.activeViewOptions.group.enableCompactView);\n if (this.parent.virtualScrollModule) {\n this.parent.virtualScrollModule.destroy();\n this.parent.virtualScrollModule = null;\n }\n if ((['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(this.parent.currentView) === -1 ||\n (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical'))\n && this.parent.activeViewOptions.allowVirtualScrolling\n && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.parent.virtualScrollModule = new VirtualScroll(this.parent);\n if (this.parent.activeView.isTimelineView()) {\n this.parent.uiStateValues.top = 0;\n }\n else {\n this.parent.virtualScrollModule.isHorizontalScroll = true;\n this.parent.uiStateValues.left = 0;\n }\n }\n this.updateHeader();\n this.parent.currentTimezoneDate = this.parent.getCurrentTime();\n this.parent.activeView.renderLayout(cls.CURRENT_PANEL_CLASS);\n this.parent.renderTemplates();\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.destroy();\n this.parent.eventTooltip = null;\n }\n if (this.parent.eventSettings.enableTooltip || (this.parent.activeViewOptions.group.resources.length > 0\n && this.parent.activeViewOptions.group.headerTooltipTemplate)) {\n this.parent.eventTooltip = new EventTooltip(this.parent);\n }\n };\n Render.prototype.updateHeader = function () {\n if (this.parent.headerModule) {\n this.parent.headerModule.setDayOfWeek(this.parent.activeViewOptions.firstDayOfWeek);\n if (this.parent.activeViewOptions.readonly) {\n addClass([this.parent.element], cls.READ_ONLY);\n }\n else if (this.parent.element.classList.contains(cls.READ_ONLY)) {\n removeClass([this.parent.element], cls.READ_ONLY);\n }\n this.parent.headerModule.updateDateRange();\n this.parent.headerModule.updateHeaderItems('remove');\n }\n };\n Render.prototype.updateLabelText = function (view) {\n var content = this.parent.activeView.getLabelText(view);\n this.parent.element.setAttribute('role', 'main');\n this.parent.element.setAttribute('aria-label', content);\n };\n return Render;\n}());\nexport { Render };\n","/**\n * Time zone\n */\nvar Timezone = /** @class */ (function () {\n function Timezone() {\n this.timezoneData = [];\n this.timezoneData = this.getTimezoneData();\n }\n Timezone.prototype.offset = function (date, timezone) {\n var localOffset = date.getTimezoneOffset();\n try {\n var convertedDate = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n if (!isNaN(convertedDate.getTime())) {\n return ((date.getTime() - convertedDate.getTime()) / 60000) + localOffset;\n }\n return 0;\n }\n catch (error) {\n return 0;\n }\n };\n Timezone.prototype.convert = function (date, fromOffset, toOffset) {\n if (typeof fromOffset === 'string') {\n fromOffset = this.offset(date, fromOffset);\n }\n if (typeof toOffset === 'string') {\n toOffset = this.offset(date, toOffset);\n }\n var fromLocalOffset = date.getTimezoneOffset();\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n };\n Timezone.prototype.add = function (date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n };\n Timezone.prototype.remove = function (date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n };\n Timezone.prototype.removeLocalOffset = function (date) {\n return new Date(date.getTime() - (date.getTimezoneOffset() * 60000));\n };\n Timezone.prototype.getLocalTimezoneName = function () {\n return window.Intl ? Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC' : 'UTC';\n };\n Timezone.prototype.getTimezoneData = function () {\n return timezoneData;\n };\n return Timezone;\n}());\nexport { Timezone };\nexport var timezoneData = [\n { Value: 'Pacific/Niue', Text: '(UTC-11:00) Niue' },\n { Value: 'Pacific/Pago_Pago', Text: '(UTC-11:00) Pago Pago' },\n { Value: 'Pacific/Honolulu', Text: '(UTC-10:00) Hawaii Time' },\n { Value: 'Pacific/Rarotonga', Text: '(UTC-10:00) Rarotonga' },\n { Value: 'Pacific/Tahiti', Text: '(UTC-10:00) Tahiti' },\n { Value: 'Pacific/Marquesas', Text: '(UTC-09:30) Marquesas' },\n { Value: 'America/Anchorage', Text: '(UTC-09:00) Alaska Time' },\n { Value: 'Pacific/Gambier', Text: '(UTC-09:00) Gambier' },\n { Value: 'America/Los_Angeles', Text: '(UTC-08:00) Pacific Time' },\n { Value: 'America/Tijuana', Text: '(UTC-08:00) Pacific Time - Tijuana' },\n { Value: 'America/Vancouver', Text: '(UTC-08:00) Pacific Time - Vancouver' },\n { Value: 'America/Whitehorse', Text: '(UTC-08:00) Pacific Time - Whitehorse' },\n { Value: 'Pacific/Pitcairn', Text: '(UTC-08:00) Pitcairn' },\n { Value: 'America/Denver', Text: '(UTC-07:00) Mountain Time' },\n { Value: 'America/Phoenix', Text: '(UTC-07:00) Mountain Time - Arizona' },\n { Value: 'America/Mazatlan', Text: '(UTC-07:00) Mountain Time - Chihuahua, Mazatlan' },\n { Value: 'America/Dawson_Creek', Text: '(UTC-07:00) Mountain Time - Dawson Creek' },\n { Value: 'America/Edmonton', Text: '(UTC-07:00) Mountain Time - Edmonton' },\n { Value: 'America/Hermosillo', Text: '(UTC-07:00) Mountain Time - Hermosillo' },\n { Value: 'America/Yellowknife', Text: '(UTC-07:00) Mountain Time - Yellowknife' },\n { Value: 'America/Belize', Text: '(UTC-06:00) Belize' },\n { Value: 'America/Chicago', Text: '(UTC-06:00) Central Time' },\n { Value: 'America/Mexico_City', Text: '(UTC-06:00) Central Time - Mexico City' },\n { Value: 'America/Regina', Text: '(UTC-06:00) Central Time - Regina' },\n { Value: 'America/Tegucigalpa', Text: '(UTC-06:00) Central Time - Tegucigalpa' },\n { Value: 'America/Winnipeg', Text: '(UTC-06:00) Central Time - Winnipeg' },\n { Value: 'America/Costa_Rica', Text: '(UTC-06:00) Costa Rica' },\n { Value: 'America/El_Salvador', Text: '(UTC-06:00) El Salvador' },\n { Value: 'Pacific/Galapagos', Text: '(UTC-06:00) Galapagos' },\n { Value: 'America/Guatemala', Text: '(UTC-06:00) Guatemala' },\n { Value: 'America/Managua', Text: '(UTC-06:00) Managua' },\n { Value: 'America/Cancun', Text: '(UTC-05:00) America Cancun' },\n { Value: 'America/Bogota', Text: '(UTC-05:00) Bogota' },\n { Value: 'Pacific/Easter', Text: '(UTC-05:00) Easter Island' },\n { Value: 'America/New_York', Text: '(UTC-05:00) Eastern Time' },\n { Value: 'America/Iqaluit', Text: '(UTC-05:00) Eastern Time - Iqaluit' },\n { Value: 'America/Toronto', Text: '(UTC-05:00) Eastern Time - Toronto' },\n { Value: 'America/Guayaquil', Text: '(UTC-05:00) Guayaquil' },\n { Value: 'America/Havana', Text: '(UTC-05:00) Havana' },\n { Value: 'America/Jamaica', Text: '(UTC-05:00) Jamaica' },\n { Value: 'America/Lima', Text: '(UTC-05:00) Lima' },\n { Value: 'America/Nassau', Text: '(UTC-05:00) Nassau' },\n { Value: 'America/Panama', Text: '(UTC-05:00) Panama' },\n { Value: 'America/Port-au-Prince', Text: '(UTC-05:00) Port-au-Prince' },\n { Value: 'America/Rio_Branco', Text: '(UTC-05:00) Rio Branco' },\n { Value: 'America/Halifax', Text: '(UTC-04:00) Atlantic Time - Halifax' },\n { Value: 'America/Barbados', Text: '(UTC-04:00) Barbados' },\n { Value: 'Atlantic/Bermuda', Text: '(UTC-04:00) Bermuda' },\n { Value: 'America/Boa_Vista', Text: '(UTC-04:00) Boa Vista' },\n { Value: 'America/Caracas', Text: '(UTC-04:00) Caracas' },\n { Value: 'America/Curacao', Text: '(UTC-04:00) Curacao' },\n { Value: 'America/Grand_Turk', Text: '(UTC-04:00) Grand Turk' },\n { Value: 'America/Guyana', Text: '(UTC-04:00) Guyana' },\n { Value: 'America/La_Paz', Text: '(UTC-04:00) La Paz' },\n { Value: 'America/Manaus', Text: '(UTC-04:00) Manaus' },\n { Value: 'America/Martinique', Text: '(UTC-04:00) Martinique' },\n { Value: 'America/Port_of_Spain', Text: '(UTC-04:00) Port of Spain' },\n { Value: 'America/Porto_Velho', Text: '(UTC-04:00) Porto Velho' },\n { Value: 'America/Puerto_Rico', Text: '(UTC-04:00) Puerto Rico' },\n { Value: 'America/Santo_Domingo', Text: '(UTC-04:00) Santo Domingo' },\n { Value: 'America/Thule', Text: '(UTC-04:00) Thule' },\n { Value: 'America/St_Johns', Text: '(UTC-03:30) Newfoundland Time - St. Johns' },\n { Value: 'America/Araguaina', Text: '(UTC-03:00) Araguaina' },\n { Value: 'America/Asuncion', Text: '(UTC-03:00) Asuncion' },\n { Value: 'America/Belem', Text: '(UTC-03:00) Belem' },\n { Value: 'America/Argentina/Buenos_Aires', Text: '(UTC-03:00) Buenos Aires' },\n { Value: 'America/Campo_Grande', Text: '(UTC-03:00) Campo Grande' },\n { Value: 'America/Cayenne', Text: '(UTC-03:00) Cayenne' },\n { Value: 'America/Cuiaba', Text: '(UTC-03:00) Cuiaba' },\n { Value: 'America/Fortaleza', Text: '(UTC-03:00) Fortaleza' },\n { Value: 'America/Godthab', Text: '(UTC-03:00) Godthab' },\n { Value: 'America/Maceio', Text: '(UTC-03:00) Maceio' },\n { Value: 'America/Miquelon', Text: '(UTC-03:00) Miquelon' },\n { Value: 'America/Montevideo', Text: '(UTC-03:00) Montevideo' },\n { Value: 'Antarctica/Palmer', Text: '(UTC-03:00) Palmer' },\n { Value: 'America/Paramaribo', Text: '(UTC-03:00) Paramaribo' },\n { Value: 'America/Punta_Arenas', Text: '(UTC-03:00) Punta Arenas' },\n { Value: 'America/Recife', Text: '(UTC-03:00) Recife' },\n { Value: 'Antarctica/Rothera', Text: '(UTC-03:00) Rothera' },\n { Value: 'America/Bahia', Text: '(UTC-03:00) Salvador' },\n { Value: 'America/Santiago', Text: '(UTC-03:00) Santiago' },\n { Value: 'Atlantic/Stanley', Text: '(UTC-03:00) Stanley' },\n { Value: 'America/Noronha', Text: '(UTC-02:00) Noronha' },\n { Value: 'America/Sao_Paulo', Text: '(UTC-02:00) Sao Paulo' },\n { Value: 'Atlantic/South_Georgia', Text: '(UTC-02:00) South Georgia' },\n { Value: 'Atlantic/Azores', Text: '(UTC-01:00) Azores' },\n { Value: 'Atlantic/Cape_Verde', Text: '(UTC-01:00) Cape Verde' },\n { Value: 'America/Scoresbysund', Text: '(UTC-01:00) Scoresbysund' },\n { Value: 'Africa/Abidjan', Text: '(UTC+00:00) Abidjan' },\n { Value: 'Africa/Accra', Text: '(UTC+00:00) Accra' },\n { Value: 'Africa/Bissau', Text: '(UTC+00:00) Bissau' },\n { Value: 'Atlantic/Canary', Text: '(UTC+00:00) Canary Islands' },\n { Value: 'Africa/Casablanca', Text: '(UTC+00:00) Casablanca' },\n { Value: 'America/Danmarkshavn', Text: '(UTC+00:00) Danmarkshavn' },\n { Value: 'Europe/Dublin', Text: '(UTC+00:00) Dublin' },\n { Value: 'Africa/El_Aaiun', Text: '(UTC+00:00) El Aaiun' },\n { Value: 'Atlantic/Faroe', Text: '(UTC+00:00) Faeroe' },\n { Value: 'Etc/UTC', Text: '(UTC+00:00) UTC (no daylight saving)' },\n { Value: 'Europe/Lisbon', Text: '(UTC+00:00) Lisbon' },\n { Value: 'Europe/London', Text: '(UTC+00:00) London' },\n { Value: 'Africa/Monrovia', Text: '(UTC+00:00) Monrovia' },\n { Value: 'Atlantic/Reykjavik', Text: '(UTC+00:00) Reykjavik' },\n { Value: 'UTC', Text: 'UTC' },\n { Value: 'Africa/Algiers', Text: '(UTC+01:00) Algiers' },\n { Value: 'Europe/Amsterdam', Text: '(UTC+01:00) Amsterdam' },\n { Value: 'Europe/Andorra', Text: '(UTC+01:00) Andorra' },\n { Value: 'Europe/Berlin', Text: '(UTC+01:00) Berlin' },\n { Value: 'Europe/Brussels', Text: '(UTC+01:00) Brussels' },\n { Value: 'Europe/Budapest', Text: '(UTC+01:00) Budapest' },\n { Value: 'Europe/Belgrade', Text: '(UTC+01:00) Central European Time - Belgrade' },\n { Value: 'Europe/Prague', Text: '(UTC+01:00) Central European Time - Prague' },\n { Value: 'Africa/Ceuta', Text: '(UTC+01:00) Ceuta' },\n { Value: 'Europe/Copenhagen', Text: '(UTC+01:00) Copenhagen' },\n { Value: 'Europe/Gibraltar', Text: '(UTC+01:00) Gibraltar' },\n { Value: 'Africa/Lagos', Text: '(UTC+01:00) Lagos' },\n { Value: 'Europe/Luxembourg', Text: '(UTC+01:00) Luxembourg' },\n { Value: 'Europe/Madrid', Text: '(UTC+01:00) Madrid' },\n { Value: 'Europe/Malta', Text: '(UTC+01:00) Malta' },\n { Value: 'Europe/Monaco', Text: '(UTC+01:00) Monaco' },\n { Value: 'Africa/Ndjamena', Text: '(UTC+01:00) Ndjamena' },\n { Value: 'Europe/Oslo', Text: '(UTC+01:00) Oslo' },\n { Value: 'Europe/Paris', Text: '(UTC+01:00) Paris' },\n { Value: 'Europe/Rome', Text: '(UTC+01:00) Rome' },\n { Value: 'Europe/Stockholm', Text: '(UTC+01:00) Stockholm' },\n { Value: 'Europe/Tirane', Text: '(UTC+01:00) Tirane' },\n { Value: 'Africa/Tunis', Text: '(UTC+01:00) Tunis' },\n { Value: 'Europe/Vienna', Text: '(UTC+01:00) Vienna' },\n { Value: 'Europe/Warsaw', Text: '(UTC+01:00) Warsaw' },\n { Value: 'Europe/Zurich', Text: '(UTC+01:00) Zurich' },\n { Value: 'Asia/Amman', Text: '(UTC+02:00) Amman' },\n { Value: 'Europe/Athens', Text: '(UTC+02:00) Athens' },\n { Value: 'Asia/Beirut', Text: '(UTC+02:00) Beirut' },\n { Value: 'Europe/Bucharest', Text: '(UTC+02:00) Bucharest' },\n { Value: 'Africa/Cairo', Text: '(UTC+02:00) Cairo' },\n { Value: 'Europe/Chisinau', Text: '(UTC+02:00) Chisinau' },\n { Value: 'Asia/Damascus', Text: '(UTC+02:00) Damascus' },\n { Value: 'Asia/Gaza', Text: '(UTC+02:00) Gaza' },\n { Value: 'Europe/Helsinki', Text: '(UTC+02:00) Helsinki' },\n { Value: 'Asia/Jerusalem', Text: '(UTC+02:00) Jerusalem' },\n { Value: 'Africa/Johannesburg', Text: '(UTC+02:00) Johannesburg' },\n { Value: 'Africa/Khartoum', Text: '(UTC+02:00) Khartoum' },\n { Value: 'Europe/Kiev', Text: '(UTC+02:00) Kiev' },\n { Value: 'Africa/Maputo', Text: '(UTC+02:00) Maputo' },\n { Value: 'Europe/Kaliningrad', Text: '(UTC+02:00) Moscow-01 - Kaliningrad' },\n { Value: 'Asia/Nicosia', Text: '(UTC+02:00) Nicosia' },\n { Value: 'Europe/Riga', Text: '(UTC+02:00) Riga' },\n { Value: 'Europe/Sofia', Text: '(UTC+02:00) Sofia' },\n { Value: 'Europe/Tallinn', Text: '(UTC+02:00) Tallinn' },\n { Value: 'Africa/Tripoli', Text: '(UTC+02:00) Tripoli' },\n { Value: 'Europe/Vilnius', Text: '(UTC+02:00) Vilnius' },\n { Value: 'Africa/Windhoek', Text: '(UTC+02:00) Windhoek' },\n { Value: 'Asia/Baghdad', Text: '(UTC+03:00) Baghdad' },\n { Value: 'Europe/Istanbul', Text: '(UTC+03:00) Istanbul' },\n { Value: 'Europe/Minsk', Text: '(UTC+03:00) Minsk' },\n { Value: 'Europe/Moscow', Text: '(UTC+03:00) Moscow+00 - Moscow' },\n { Value: 'Africa/Nairobi', Text: '(UTC+03:00) Nairobi' },\n { Value: 'Asia/Qatar', Text: '(UTC+03:00) Qatar' },\n { Value: 'Asia/Riyadh', Text: '(UTC+03:00) Riyadh' },\n { Value: 'Antarctica/Syowa', Text: '(UTC+03:00) Syowa' },\n { Value: 'Asia/Tehran', Text: '(UTC+03:30) Tehran' },\n { Value: 'Asia/Baku', Text: '(UTC+04:00) Baku' },\n { Value: 'Asia/Dubai', Text: '(UTC+04:00) Dubai' },\n { Value: 'Indian/Mahe', Text: '(UTC+04:00) Mahe' },\n { Value: 'Indian/Mauritius', Text: '(UTC+04:00) Mauritius' },\n { Value: 'Europe/Samara', Text: '(UTC+04:00) Moscow+01 - Samara' },\n { Value: 'Indian/Reunion', Text: '(UTC+04:00) Reunion' },\n { Value: 'Asia/Tbilisi', Text: '(UTC+04:00) Tbilisi' },\n { Value: 'Asia/Yerevan', Text: '(UTC+04:00) Yerevan' },\n { Value: 'Asia/Kabul', Text: '(UTC+04:30) Kabul' },\n { Value: 'Asia/Aqtau', Text: '(UTC+05:00) Aqtau' },\n { Value: 'Asia/Aqtobe', Text: '(UTC+05:00) Aqtobe' },\n { Value: 'Asia/Ashgabat', Text: '(UTC+05:00) Ashgabat' },\n { Value: 'Asia/Dushanbe', Text: '(UTC+05:00) Dushanbe' },\n { Value: 'Asia/Karachi', Text: '(UTC+05:00) Karachi' },\n { Value: 'Indian/Kerguelen', Text: '(UTC+05:00) Kerguelen' },\n { Value: 'Indian/Maldives', Text: '(UTC+05:00) Maldives' },\n { Value: 'Antarctica/Mawson', Text: '(UTC+05:00) Mawson' },\n { Value: 'Asia/Yekaterinburg', Text: '(UTC+05:00) Moscow+02 - Yekaterinburg' },\n { Value: 'Asia/Tashkent', Text: '(UTC+05:00) Tashkent' },\n { Value: 'Asia/Colombo', Text: '(UTC+05:30) Colombo' },\n { Value: 'Asia/Kolkata', Text: '(UTC+05:30) India Standard Time' },\n { Value: 'Asia/Katmandu', Text: '(UTC+05:45) Katmandu' },\n { Value: 'Asia/Almaty', Text: '(UTC+06:00) Almaty' },\n { Value: 'Asia/Bishkek', Text: '(UTC+06:00) Bishkek' },\n { Value: 'Indian/Chagos', Text: '(UTC+06:00) Chagos' },\n { Value: 'Asia/Dhaka', Text: '(UTC+06:00) Dhaka' },\n { Value: 'Asia/Omsk', Text: '(UTC+06:00) Moscow+03 - Omsk' },\n { Value: 'Asia/Thimphu', Text: '(UTC+06:00) Thimphu' },\n { Value: 'Antarctica/Vostok', Text: '(UTC+06:00) Vostok' },\n { Value: 'Indian/Cocos', Text: '(UTC+06:30) Cocos' },\n { Value: 'Asia/Yangon', Text: '(UTC+06:30) Rangoon' },\n { Value: 'Asia/Bangkok', Text: '(UTC+07:00) Bangkok' },\n { Value: 'Indian/Christmas', Text: '(UTC+07:00) Christmas' },\n { Value: 'Antarctica/Davis', Text: '(UTC+07:00) Davis' },\n { Value: 'Asia/Saigon', Text: '(UTC+07:00) Hanoi' },\n { Value: 'Asia/Hovd', Text: '(UTC+07:00) Hovd' },\n { Value: 'Asia/Jakarta', Text: '(UTC+07:00) Jakarta' },\n { Value: 'Asia/Krasnoyarsk', Text: '(UTC+07:00) Moscow+04 - Krasnoyarsk' },\n { Value: 'Asia/Brunei', Text: '(UTC+08:00) Brunei' },\n { Value: 'Asia/Shanghai', Text: '(UTC+08:00) China Time - Beijing' },\n { Value: 'Asia/Choibalsan', Text: '(UTC+08:00) Choibalsan' },\n { Value: 'Asia/Hong_Kong', Text: '(UTC+08:00) Hong Kong' },\n { Value: 'Asia/Kuala_Lumpur', Text: '(UTC+08:00) Kuala Lumpur' },\n { Value: 'Asia/Macau', Text: '(UTC+08:00) Macau' },\n { Value: 'Asia/Makassar', Text: '(UTC+08:00) Makassar' },\n { Value: 'Asia/Manila', Text: '(UTC+08:00) Manila' },\n { Value: 'Asia/Irkutsk', Text: '(UTC+08:00) Moscow+05 - Irkutsk' },\n { Value: 'Asia/Singapore', Text: '(UTC+08:00) Singapore' },\n { Value: 'Asia/Taipei', Text: '(UTC+08:00) Taipei' },\n { Value: 'Asia/Ulaanbaatar', Text: '(UTC+08:00) Ulaanbaatar' },\n { Value: 'Australia/Perth', Text: '(UTC+08:00) Western Time - Perth' },\n { Value: 'Asia/Pyongyang', Text: '(UTC+08:30) Pyongyang' },\n { Value: 'Asia/Dili', Text: '(UTC+09:00) Dili' },\n { Value: 'Asia/Jayapura', Text: '(UTC+09:00) Jayapura' },\n { Value: 'Asia/Yakutsk', Text: '(UTC+09:00) Moscow+06 - Yakutsk' },\n { Value: 'Pacific/Palau', Text: '(UTC+09:00) Palau' },\n { Value: 'Asia/Seoul', Text: '(UTC+09:00) Seoul' },\n { Value: 'Asia/Tokyo', Text: '(UTC+09:00) Tokyo' },\n { Value: 'Australia/Darwin', Text: '(UTC+09:30) Central Time - Darwin' },\n { Value: 'Antarctica/DumontDUrville', Text: '(UTC+10:00) Dumont D\"Urville' },\n { Value: 'Australia/Brisbane', Text: '(UTC+10:00) Eastern Time - Brisbane' },\n { Value: 'Pacific/Guam', Text: '(UTC+10:00) Guam' },\n { Value: 'Asia/Vladivostok', Text: '(UTC+10:00) Moscow+07 - Vladivostok' },\n { Value: 'Pacific/Port_Moresby', Text: '(UTC+10:00) Port Moresby' },\n { Value: 'Pacific / Chuuk', Text: '(UTC+10:00) Truk' },\n { Value: 'Australia/Adelaide', Text: '(UTC+10:30) Central Time - Adelaide' },\n { Value: 'Antarctica/Casey', Text: '(UTC+11:00) Casey' },\n { Value: 'Australia/Hobart', Text: '(UTC+11:00) Eastern Time - Hobart' },\n { Value: 'Australia/Sydney', Text: '(UTC+11:00) Eastern Time - Melbourne, Sydney' },\n { Value: 'Pacific/Efate', Text: '(UTC+11:00) Efate' },\n { Value: 'Pacific/Guadalcanal', Text: '(UTC+11:00) Guadalcanal' },\n { Value: 'Pacific/Kosrae', Text: '(UTC+11:00) Kosrae' },\n { Value: 'Asia/Magadan', Text: '(UTC+11:00) Moscow+08 - Magadan' },\n { Value: 'Pacific / Norfolk', Text: '(UTC+11:00) Norfolk' },\n { Value: 'Pacific/Noumea', Text: '(UTC+11:00) Noumea' },\n { Value: 'Pacific/Pohnpei', Text: '(UTC+11:00) Ponape' },\n { Value: 'Pacific/Funafuti', Text: '(UTC+12:00) Funafuti' },\n { Value: 'Pacific/Kwajalein', Text: '(UTC+12:00) Kwajalein' },\n { Value: 'Pacific/Majuro', Text: '(UTC+12:00) Majuro' },\n { Value: 'Asia/Kamchatka', Text: '(UTC+12:00) Moscow+09 - Petropavlovsk - Kamchatskiy' },\n { Value: 'Pacific / Nauru', Text: '(UTC+12:00) Nauru' },\n { Value: 'Pacific/Tarawa', Text: '(UTC+12:00) Tarawa' },\n { Value: 'Pacific/Wake', Text: '(UTC+12:00) Wake' },\n { Value: 'Pacific/Wallis', Text: '(UTC+12:00) Wallis' },\n { Value: 'Pacific/Auckland', Text: '(UTC+13:00) Auckland' },\n { Value: 'Pacific/Enderbury', Text: '(UTC+13:00) Enderbury' },\n { Value: 'Pacific/Fakaofo', Text: '(UTC+13:00) Fakaofo' },\n { Value: 'Pacific/Fiji', Text: '(UTC+13:00) Fiji' },\n { Value: 'Pacific/Tongatapu', Text: '(UTC+13:00) Tongatapu' },\n { Value: 'Pacific/Apia', Text: '(UTC+14:00) Apia' },\n { Value: 'Pacific/Kiritimati', Text: '(UTC+14:00) Kiritimati' }\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that defines the template options available to customize the quick popup of scheduler.\n */\nvar QuickInfoTemplates = /** @class */ (function (_super) {\n __extends(QuickInfoTemplates, _super);\n function QuickInfoTemplates() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], QuickInfoTemplates.prototype, \"templateType\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"header\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"footer\", void 0);\n return QuickInfoTemplates;\n}(ChildProperty));\nexport { QuickInfoTemplates };\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the resource related configurations and its data binding options.\n */\nvar Resources = /** @class */ (function (_super) {\n __extends(Resources, _super);\n function Resources() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Resources.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], Resources.prototype, \"allowMultiple\", void 0);\n __decorate([\n Property([])\n ], Resources.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"query\", void 0);\n __decorate([\n Property('Id')\n ], Resources.prototype, \"idField\", void 0);\n __decorate([\n Property('Text')\n ], Resources.prototype, \"textField\", void 0);\n __decorate([\n Property('Expanded')\n ], Resources.prototype, \"expandedField\", void 0);\n __decorate([\n Property('GroupID')\n ], Resources.prototype, \"groupIDField\", void 0);\n __decorate([\n Property('Color')\n ], Resources.prototype, \"colorField\", void 0);\n __decorate([\n Property('StartHour')\n ], Resources.prototype, \"startHourField\", void 0);\n __decorate([\n Property('EndHour')\n ], Resources.prototype, \"endHourField\", void 0);\n __decorate([\n Property('WorkDays')\n ], Resources.prototype, \"workDaysField\", void 0);\n __decorate([\n Property('CssClass')\n ], Resources.prototype, \"cssClassField\", void 0);\n return Resources;\n}(ChildProperty));\nexport { Resources };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, append, createElement, addClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Tooltip for Schedule\n */\nvar EventTooltip = /** @class */ (function () {\n function EventTooltip(parent) {\n this.parent = parent;\n this.tooltipObj = new Tooltip({\n animation: { close: { effect: 'FadeOut' } },\n content: 'No title',\n position: 'BottomRight',\n offsetY: 10,\n mouseTrail: this.parent.isAdaptive ? false : true,\n showTipPointer: false,\n cssClass: this.parent.cssClass + ' ' + cls.EVENT_TOOLTIP_ROOT_CLASS,\n target: this.getTargets(),\n beforeRender: this.onBeforeRender.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.parent.element);\n }\n EventTooltip.prototype.getTargets = function () {\n var targets = [];\n if (this.parent.activeViewOptions.group.headerTooltipTemplate) {\n targets.push('.' + cls.RESOURCE_CELLS_CLASS);\n }\n if (this.parent.eventSettings.enableTooltip) {\n targets.push('.' + cls.APPOINTMENT_CLASS);\n }\n return targets.join(',');\n };\n EventTooltip.prototype.onBeforeRender = function (args) {\n if (!isNullOrUndefined(args.target.getAttribute('data-tooltip-id'))) {\n return;\n }\n if (args.target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeViewOptions.group.resources.length > 0) {\n var resCollection = void 0;\n if (this.parent.activeView.isTimelineView()) {\n var index = parseInt(args.target.getAttribute('data-group-index'), 10);\n resCollection = this.parent.resourceBase.lastResourceLevel[parseInt(index.toString(), 10)];\n }\n else {\n var rowIndex = args.target.parentNode.sectionRowIndex;\n var cellIndex = args.target.cellIndex;\n resCollection =\n this.parent.activeView.getColumnLevels()[parseInt(rowIndex.toString(), 10)][parseInt(cellIndex.toString(), 10)];\n }\n var data = {\n resource: resCollection.resource,\n resourceData: resCollection.resourceData\n };\n var contentContainer = createElement('div');\n var templateId = this.parent.element.id + '_headerTooltipTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getHeaderTooltipTemplate()(data, this.parent, 'headerTooltipTemplate', templateId, false));\n append(tooltipTemplate, contentContainer);\n this.setContent(contentContainer);\n this.parent.renderTemplates();\n return;\n }\n var record = this.parent.eventBase.getEventByGuid(args.target.getAttribute('data-guid'));\n if (isNullOrUndefined(record)) {\n return;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.tooltipTemplate)) {\n var contentContainer = createElement('div');\n var templateId = this.parent.element.id + '_tooltipTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getEventTooltipTemplate()(record, this.parent, 'tooltipTemplate', templateId, false));\n append(tooltipTemplate, contentContainer);\n this.setContent(contentContainer);\n }\n else {\n var globalize = this.parent.globalize;\n var fields = this.parent.eventFields;\n var eventStart = new Date('' + record[fields.startTime]);\n var eventEnd = new Date('' + record[fields.endTime]);\n eventEnd = (eventEnd.getHours() === 0 && eventEnd.getMinutes() === 0) ? new Date(eventEnd.setMilliseconds(-1000)) : eventEnd;\n var startDate = util.resetTime(new Date('' + eventStart));\n var endDate = util.resetTime(new Date('' + eventEnd));\n var tooltipSubject = (record[fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var tooltipLocation = !isNullOrUndefined(record[fields.location]) ? record[fields.location] : '';\n var startMonthDate = '';\n var startMonthYearDate = '';\n var endMonthYearDate = '';\n startMonthDate = globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'MMMd', calendar: this.parent.getCalendarMode()\n });\n startMonthYearDate = globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'medium', calendar: this.parent.getCalendarMode()\n });\n endMonthYearDate = globalize.formatDate(eventEnd, {\n type: 'date', skeleton: 'medium', calendar: this.parent.getCalendarMode()\n });\n startMonthDate = util.capitalizeFirstWord(startMonthDate, 'single');\n startMonthYearDate = util.capitalizeFirstWord(startMonthYearDate, 'single');\n endMonthYearDate = util.capitalizeFirstWord(endMonthYearDate, 'single');\n var startTime = this.parent.getTimeString(eventStart);\n var endTime = this.parent.getTimeString(eventEnd);\n var tooltipDetails = void 0;\n if (startDate.getTime() === endDate.getTime()) {\n tooltipDetails =\n globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'long', calendar: this.parent.getCalendarMode()\n });\n tooltipDetails = util.capitalizeFirstWord(tooltipDetails, 'single');\n }\n else {\n tooltipDetails = (startDate.getFullYear() === endDate.getFullYear()) ? (startMonthDate + ' - ' + endMonthYearDate) :\n (startMonthYearDate + ' - ' + endMonthYearDate);\n }\n var tooltipTime = (record[fields.isAllDay]) ? this.parent.localeObj.getConstant('allDay') :\n (startTime + ' - ' + endTime);\n var content = '
' + tooltipSubject + '
' +\n '
' + tooltipLocation + '
' +\n '
' + tooltipDetails + '
' +\n '
' + tooltipTime + '
';\n this.setContent(content);\n }\n this.parent.renderTemplates();\n };\n EventTooltip.prototype.onBeforeClose = function () {\n this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);\n };\n EventTooltip.prototype.setContent = function (content) {\n this.tooltipObj.setProperties({ content: content }, true);\n };\n EventTooltip.prototype.close = function () {\n this.tooltipObj.close();\n };\n EventTooltip.prototype.destroy = function () {\n this.tooltipObj.destroy();\n addClass([this.parent.element], 'e-control');\n this.tooltipObj = null;\n this.parent = null;\n };\n return EventTooltip;\n}());\nexport { EventTooltip };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, isNullOrUndefined, addClass, remove, EventHandler, extend, append, detach } from '@syncfusion/ej2-base';\nimport { cldrData, removeClass, getValue, getDefaultDateObject, closest, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Query, Deferred } from '@syncfusion/ej2-data';\nimport { CheckBox, Button } from '@syncfusion/ej2-buttons';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { FieldValidator } from './form-validator';\nimport { RecurrenceEditor } from '../../recurrence-editor/recurrence-editor';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\nvar EVENT_FIELD = 'e-field';\nvar REPEAT_CONTAINER_CLASS = 'e-recurrence-container';\nvar REPEAT_BUTTON_ICON_CLASS = 'e-recurrence-edit';\nvar REPEAT_BUTTON_CLASS = 'e-recurrence-edit-button';\nvar REPEAT_DIALOG_CLASS = 'e-recurrence-dialog';\nvar HIDE_STYLE_CLASS = 'e-hide';\n/**\n * Event editor window\n */\nvar EventWindow = /** @class */ (function () {\n function EventWindow(parent) {\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.fields = this.parent.eventFields;\n this.eventWindowTime = { startTime: new Date(), endTime: new Date() };\n this.renderEventWindow();\n }\n EventWindow.prototype.renderEventWindow = function () {\n this.element = createElement('div', { id: this.parent.element.id + '_dialog_wrapper' });\n this.parent.element.appendChild(this.element);\n var dialogModel = {\n animationSettings: { effect: 'Zoom' },\n content: this.getEventWindowContent(),\n cssClass: cls.EVENT_WINDOW_DIALOG_CLASS,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n height: this.parent.isAdaptive ? '100%' : 'auto',\n minHeight: '300px',\n isModal: true,\n showCloseIcon: this.parent.isAdaptive ? false : true,\n target: document.body,\n visible: false,\n width: '500px',\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n };\n if (this.parent.isAdaptive) {\n dialogModel.cssClass = cls.EVENT_WINDOW_DIALOG_CLASS + ' ' + cls.DEVICE_CLASS;\n dialogModel.header = '
' +\n this.l10n.getConstant('newEvent') + '
';\n }\n else {\n dialogModel.buttons = [{\n buttonModel: {\n content: this.l10n.getConstant('deleteButton'), cssClass: cls.DELETE_EVENT_CLASS,\n disabled: !this.parent.eventSettings.allowDeleting || this.parent.readonly\n },\n click: this.eventDelete.bind(this)\n }, {\n buttonModel: {\n content: this.l10n.getConstant('saveButton'), cssClass: 'e-primary ' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS,\n isPrimary: true, disabled: !this.parent.eventSettings.allowAdding || this.parent.readonly\n },\n click: this.eventSave.bind(this)\n }, {\n buttonModel: { cssClass: cls.EVENT_WINDOW_CANCEL_BUTTON_CLASS, content: this.l10n.getConstant('cancelButton') },\n click: this.dialogClose.bind(this)\n }];\n dialogModel.header = '
' + this.l10n.getConstant('newEvent') + '
';\n }\n this.dialogObject = new Dialog(dialogModel, this.element);\n if (this.dialogObject.element.querySelector('.e-dlg-closeicon-btn')) {\n this.dialogObject.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));\n }\n addClass([this.element.parentElement], cls.EVENT_WINDOW_DIALOG_CLASS + '-container');\n if (this.parent.isAdaptive) {\n EventHandler.add(this.element.querySelector('.' + cls.EVENT_WINDOW_BACK_ICON_CLASS), 'click', this.dialogClose, this);\n EventHandler.add(this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_ICON_CLASS), 'click', this.eventSave, this);\n }\n EventHandler.add(this.dialogObject.element, 'keydown', this.preventEventSave, this);\n this.applyFormValidation();\n };\n EventWindow.prototype.refresh = function () {\n this.destroy(true);\n this.renderEventWindow();\n };\n EventWindow.prototype.refreshRecurrenceEditor = function () {\n if (this.recurrenceEditor) {\n var recurrenceEditor = this.recurrenceEditor.element;\n this.recurrenceEditor.destroy();\n this.createRecurrenceEditor(recurrenceEditor);\n }\n };\n EventWindow.prototype.setRecurrenceEditor = function (recurrenceEditor) {\n if (this.parent.editorTemplate) {\n this.recurrenceEditor = recurrenceEditor;\n }\n };\n EventWindow.prototype.openEditor = function (data, type, isEventData, repeatType) {\n this.parent.currentAction = type;\n this.parent.removeNewEventElement();\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n this.parent.inlineModule.removeInlineAppointmentElement();\n if (type === 'Add') {\n var eventObj = {};\n this.cellClickAction = !isEventData;\n this.parent.activeCellsData = data;\n var event_1 = data;\n if (this.cellClickAction) {\n this.convertToEventData(event_1, eventObj);\n }\n else {\n this.parent.activeCellsData = {\n startTime: (event_1.startTime || event_1[this.fields.startTime]),\n endTime: (event_1.endTime || event_1[this.fields.endTime]),\n isAllDay: (event_1.isAllDay || event_1[this.fields.isAllDay]),\n element: event_1.element,\n groupIndex: event_1.groupIndex\n };\n eventObj = event_1;\n }\n data = eventObj;\n }\n if (!isNullOrUndefined(this.parent.editorTemplate)) {\n this.renderFormElements(this.element.querySelector('.e-schedule-form'), data);\n }\n if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n removeClass([this.dialogObject.element.querySelector('.e-recurrenceeditor')], cls.DISABLE_CLASS);\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.firstDayOfWeek = this.parent.activeViewOptions.firstDayOfWeek;\n }\n switch (type) {\n case 'Add':\n this.onCellDetailsUpdate(data, repeatType);\n break;\n case 'Save':\n case 'EditOccurrence':\n case 'EditSeries':\n case 'EditFollowingEvents':\n if (type === 'EditOccurrence' && !this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n addClass([this.dialogObject.element.querySelector('.e-recurrenceeditor')], cls.DISABLE_CLASS);\n }\n this.cellClickAction = false;\n this.onEventDetailsUpdate(data);\n break;\n }\n };\n EventWindow.prototype.setDialogContent = function () {\n this.dialogObject.content = this.getEventWindowContent();\n this.dialogObject.dataBind();\n this.applyFormValidation();\n };\n EventWindow.prototype.preventEventSave = function (e) {\n if (this.parent && !this.parent.allowKeyboardInteraction && e.code === 'Enter') {\n this.isEnterKey = true;\n }\n };\n EventWindow.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var eventProp = {\n type: 'Editor',\n data: this.eventData,\n cancel: false,\n element: this.element,\n target: (this.cellClickAction ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n if (this.cellClickAction) {\n eventProp.duration = this.getSlotDuration();\n }\n var saveObj = this.getInstance(cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n if (saveObj) {\n saveObj.disabled = !(this.cellClickAction ? this.parent.eventSettings.allowAdding : this.parent.eventSettings.allowEditing);\n saveObj.dataBind();\n }\n var deleteObj = this.getInstance(cls.DELETE_EVENT_CLASS);\n if (deleteObj) {\n deleteObj.disabled = !this.parent.eventSettings.allowDeleting;\n deleteObj.dataBind();\n }\n var callBackPromise = new Deferred();\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n args.cancel = popupArgs.cancel;\n _this.duration = _this.cellClickAction ? popupArgs.duration : null;\n _this.refreshDateTimePicker(_this.duration);\n if (_this.cellClickAction && popupArgs.duration !== _this.getSlotDuration() && isNullOrUndefined(_this.parent.editorTemplate)) {\n var startObj = _this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n var endObj = _this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n endObj.value = new Date(startObj.value.getTime() + (util.MS_PER_MINUTE * popupArgs.duration));\n endObj.dataBind();\n }\n if (_this.parent.editorTemplate && _this.element.querySelector('.e-recurrenceeditor') && !_this.recurrenceEditor) {\n _this.recurrenceEditor = _this.getInstance('e-recurrenceeditor');\n }\n callBackPromise.resolve(args);\n });\n return callBackPromise;\n };\n EventWindow.prototype.onBeforeClose = function (args) {\n var _this = this;\n if (args.isInteracted) {\n this.isCrudAction = false;\n }\n var eventProp = {\n type: 'Editor',\n event: args.event || this.dialogEvent,\n data: this.eventCrudData,\n cancel: false,\n element: this.element,\n target: (this.cellClickAction ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n var callBackPromise = new Deferred();\n this.parent.trigger(event.popupClose, eventProp, function (popupArgs) {\n args.cancel = popupArgs.cancel;\n if (!popupArgs.cancel) {\n if (_this.isCrudAction) {\n args.cancel = _this.processCrudActions(popupArgs.data);\n _this.isCrudAction = args.cancel;\n }\n if (!_this.isCrudAction) {\n _this.resetForm();\n _this.parent.eventBase.focusElement(true);\n _this.eventCrudData = null;\n }\n }\n callBackPromise.resolve(args);\n });\n return callBackPromise;\n };\n EventWindow.prototype.getEventWindowContent = function () {\n var container = createElement('div', { className: cls.FORM_CONTAINER_CLASS });\n var form = createElement('form', {\n id: this.parent.element.id + 'EditForm',\n className: cls.FORM_CLASS,\n attrs: { onsubmit: 'return false;' }\n });\n this.renderFormElements(form);\n container.appendChild(form);\n return container;\n };\n EventWindow.prototype.renderFormElements = function (form, args) {\n var _this = this;\n if (!isNullOrUndefined(this.parent.editorTemplate)) {\n if (args) {\n if (this.fieldValidator) {\n this.fieldValidator.destroy();\n this.fieldValidator = null;\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.destroy();\n this.recurrenceEditor = null;\n }\n this.destroyComponents();\n var formElements = [].slice.call(form.children);\n for (var _i = 0, formElements_1 = formElements; _i < formElements_1.length; _i++) {\n var element = formElements_1[_i];\n remove(element);\n }\n this.parent.resetTemplates(['editorTemplate']);\n }\n var templateId = this.parent.element.id + '_editorTemplate';\n var tempEle = [].slice.call(this.parent.getEditorTemplate()(args || {}, this.parent, 'editorTemplate', templateId, false));\n append(tempEle, form);\n this.parent.renderTemplates(function () {\n if (_this.element) {\n _this.applyFormValidation();\n }\n });\n }\n else {\n form.appendChild(this.getDefaultEventWindowContent());\n }\n };\n EventWindow.prototype.getDefaultEventWindowContent = function () {\n var parentDiv = this.createDivElement(cls.EVENT_WINDOW_DIALOG_PARENT_CLASS);\n var titleLocationDiv = this.createDivElement(cls.EVENT_WINDOW_TITLE_LOCATION_DIV_CLASS);\n parentDiv.appendChild(titleLocationDiv);\n titleLocationDiv.appendChild(this.renderTextBox(cls.SUBJECT_CLASS));\n titleLocationDiv.querySelector('.' + cls.SUBJECT_CLASS).setAttribute('title', this.parent.editorTitles.subject);\n titleLocationDiv.appendChild(this.renderTextBox(cls.LOCATION_CLASS));\n titleLocationDiv.querySelector('.' + cls.LOCATION_CLASS).setAttribute('title', this.parent.editorTitles.location);\n var startEndDateTimeDiv = this.createDivElement(cls.EVENT_WINDOW_START_END_DIV_CLASS);\n parentDiv.appendChild(startEndDateTimeDiv);\n startEndDateTimeDiv.appendChild(this.renderDateTimePicker(cls.EVENT_WINDOW_START_CLASS, this.onTimeChange.bind(this)));\n startEndDateTimeDiv.querySelector('.' + cls.EVENT_WINDOW_START_CLASS).setAttribute('title', this.parent.editorTitles.startTime);\n startEndDateTimeDiv.appendChild(this.renderDateTimePicker(cls.EVENT_WINDOW_END_CLASS));\n startEndDateTimeDiv.querySelector('.' + cls.EVENT_WINDOW_END_CLASS).setAttribute('title', this.parent.editorTitles.endTime);\n var allDayTimezoneDiv = this.createDivElement(cls.EVENT_WINDOW_ALLDAY_TZ_DIV_CLASS);\n parentDiv.appendChild(allDayTimezoneDiv);\n allDayTimezoneDiv.appendChild(this.renderCheckBox(cls.EVENT_WINDOW_ALL_DAY_CLASS));\n allDayTimezoneDiv.appendChild(this.renderCheckBox(cls.TIME_ZONE_CLASS));\n var timezoneParentDiv = this.createDivElement(cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS);\n parentDiv.appendChild(timezoneParentDiv);\n timezoneParentDiv.appendChild(this.renderDropDown(cls.EVENT_WINDOW_START_TZ_CLASS));\n timezoneParentDiv.appendChild(this.renderDropDown(cls.EVENT_WINDOW_END_TZ_CLASS));\n var repeatParentDiv = this.createDivElement(cls.EVENT_WINDOW_REPEAT_DIV_CLASS);\n parentDiv.appendChild(repeatParentDiv);\n var repeatDiv = this.renderCheckBox(cls.EVENT_WINDOW_REPEAT_CLASS);\n var repeatEditContainer = createElement('span', { className: REPEAT_CONTAINER_CLASS });\n var button = createElement('button', {\n className: REPEAT_BUTTON_CLASS,\n attrs: { type: 'button', 'title': this.l10n.getConstant('editRecurrence') }\n });\n this.buttonObj = new Button({ iconCss: REPEAT_BUTTON_ICON_CLASS + ' e-icons', cssClass: 'e-medium ' + this.parent.cssClass });\n repeatEditContainer.appendChild(button);\n this.buttonObj.appendTo(button);\n repeatDiv.appendChild(repeatEditContainer);\n repeatParentDiv.appendChild(repeatDiv);\n if (this.parent.isAdaptive) {\n EventHandler.add(button, 'click', this.loadRecurrenceEditor, this);\n }\n else {\n this.createRecurrenceEditor(parentDiv);\n }\n if (this.parent.resourceCollection.length > 0) {\n var resourceParentDiv = this.createDivElement(cls.EVENT_WINDOW_RESOURCES_DIV_CLASS);\n for (var _i = 0, _a = this.parent.resourceBase.resourceCollection; _i < _a.length; _i++) {\n var resource = _a[_i];\n resourceParentDiv.appendChild(this.renderResourceDetails(resource));\n }\n parentDiv.appendChild(resourceParentDiv);\n }\n var description = this.createDivElement(cls.DESCRIPTION_CLASS + '-row');\n description.appendChild(this.renderTextBox(cls.DESCRIPTION_CLASS));\n description.querySelector('.' + cls.DESCRIPTION_CLASS).setAttribute('title', this.parent.editorTitles.description);\n parentDiv.appendChild(description);\n var submit = createElement('button', { attrs: { type: 'hidden', title: 'submit', style: 'display:none' } });\n parentDiv.appendChild(submit);\n return parentDiv;\n };\n EventWindow.prototype.createRecurrenceEditor = function (parentDiv) {\n var recurrenceEditor = createElement('div', { id: this.parent.element.id + '_recurrence_editor' });\n parentDiv.appendChild(recurrenceEditor);\n this.recurrenceEditor = this.renderRecurrenceEditor();\n this.recurrenceEditor.appendTo(recurrenceEditor);\n this.updateMinMaxDateToEditor();\n };\n EventWindow.prototype.createDivElement = function (className) {\n return createElement('div', { className: className });\n };\n EventWindow.prototype.createInputElement = function (className, fieldName, type) {\n return createElement(type || 'input', {\n className: className, attrs: {\n type: 'text', name: fieldName, value: '', id: fieldName,\n title: ((this.l10n.getConstant(fieldName.charAt(0).toLowerCase() + fieldName.slice(1))) === '') ?\n fieldName : this.l10n.getConstant(fieldName.charAt(0).toLowerCase() + fieldName.slice(1))\n }\n });\n };\n EventWindow.prototype.getSlotDuration = function () {\n return this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;\n };\n EventWindow.prototype.renderDateTimePicker = function (value, changeEvent) {\n var dateTimeDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var dateTimeInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n dateTimeDiv.appendChild(dateTimeInput);\n var dateTimePicker = new DateTimePicker({\n change: changeEvent,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n calendarMode: this.parent.calendarMode,\n min: this.parent.minDate,\n max: new Date(new Date(+this.parent.maxDate).setHours(23, 59, 59)),\n cssClass: this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n floatLabelType: 'Always',\n timeFormat: this.parent.activeViewOptions.timeFormat,\n format: (isNullOrUndefined(this.parent.dateFormat) ?\n this.getFormat('dateFormats') : this.parent.dateFormat) + ' ' + this.parent.activeViewOptions.timeFormat,\n placeholder: this.getFieldLabel(value),\n step: this.getSlotDuration(),\n width: '100%'\n });\n dateTimePicker.appendTo(dateTimeInput);\n return dateTimeDiv;\n };\n EventWindow.prototype.refreshDateTimePicker = function (duration) {\n var elementSelector = '.' + cls.EVENT_WINDOW_START_CLASS + ',.' + cls.EVENT_WINDOW_END_CLASS;\n var startEndElement = [].slice.call(this.element.querySelectorAll(elementSelector));\n for (var _i = 0, startEndElement_1 = startEndElement; _i < startEndElement_1.length; _i++) {\n var element = startEndElement_1[_i];\n var instance = element.ej2_instances[0];\n instance.firstDayOfWeek = this.parent.activeViewOptions.firstDayOfWeek;\n instance.timeFormat = this.parent.activeViewOptions.timeFormat;\n instance.step = duration || this.getSlotDuration();\n instance.dataBind();\n }\n };\n EventWindow.prototype.onTimeChange = function () {\n var startObj = this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n if (startObj.element.parentElement.classList.contains('e-input-focus')) {\n var endObj = this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n var duration = 0;\n if (this.cellClickAction) {\n duration = util.MS_PER_MINUTE * this.duration;\n this.eventWindowTime.startTime = startObj.value;\n }\n else {\n duration = this.eventData[this.fields.endTime].getTime() - this.eventData[this.fields.startTime].getTime();\n }\n var endDate = (isNullOrUndefined(startObj.value)) ? null : new Date(startObj.value.getTime() + duration);\n if (this.cellClickAction) {\n this.eventWindowTime.endTime = endDate;\n }\n endObj.value = endDate;\n endObj.dataBind();\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.updateRuleUntilDate(this.eventWindowTime.startTime);\n }\n };\n EventWindow.prototype.renderResourceDetails = function (resourceData) {\n var fieldName = resourceData.field;\n var value = 'e-' + fieldName;\n var labelValue = resourceData.title;\n var resourceDiv = this.createDivElement(value + '-container' + ' ' + 'e-resources');\n var resourceInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n resourceDiv.appendChild(resourceInput);\n var resourceTemplate = '
${' + resourceData.textField + '}
';\n if (resourceData.allowMultiple) {\n var listObj = new MultiSelect({\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n cssClass: this.parent.cssClass || '',\n dataSource: resourceData.dataSource,\n change: this.onMultiselectResourceChange.bind(this),\n itemTemplate: resourceTemplate,\n fields: {\n text: resourceData.textField,\n value: resourceData.idField\n },\n htmlAttributes: { 'title': labelValue, 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: labelValue,\n popupHeight: '230px',\n popupWidth: '447px',\n mode: 'Box'\n });\n listObj.appendTo(resourceInput);\n }\n else {\n var dropDownList = new DropDownList({\n cssClass: this.parent.cssClass || '',\n change: this.onDropdownResourceChange.bind(this),\n dataSource: resourceData.dataSource,\n enableRtl: this.parent.enableRtl,\n fields: {\n text: resourceData.textField,\n value: resourceData.idField\n },\n htmlAttributes: { 'title': labelValue, 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: labelValue,\n popupHeight: '230px',\n popupWidth: '447px',\n itemTemplate: resourceTemplate\n });\n dropDownList.appendTo(resourceInput);\n }\n return resourceDiv;\n };\n EventWindow.prototype.renderDropDown = function (value) {\n var _this = this;\n var fieldName = this.getFieldName(value);\n var timezoneDiv = this.createDivElement(value + '-container');\n var timezoneInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n timezoneDiv.appendChild(timezoneInput);\n var dropDownList = new DropDownList({\n allowFiltering: true,\n change: this.onTimezoneChange.bind(this),\n cssClass: this.parent.cssClass || '',\n dataSource: this.parent.timezoneDataSource,\n enableRtl: this.parent.enableRtl,\n fields: { text: 'Text', value: 'Value' },\n filterBarPlaceholder: this.parent.localeObj.getConstant('searchTimezone'),\n noRecordsTemplate: this.parent.localeObj.getConstant('noRecords'),\n filtering: function (e) {\n var query = new Query();\n query = (e.text !== '') ? query.where('Text', 'contains', e.text, true) : query;\n e.updateData(_this.parent.timezoneDataSource, query);\n },\n htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName, role: 'option' },\n floatLabelType: 'Always',\n placeholder: this.getFieldLabel(value),\n popupHeight: '230px'\n });\n dropDownList.appendTo(timezoneInput);\n return timezoneDiv;\n };\n EventWindow.prototype.onMultiselectResourceChange = function (args) {\n if (!args.value || !this.parent.activeViewOptions.group.byGroupID || this.parent.resourceCollection.length <= 1) {\n return;\n }\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n for (var i = 0; i < resourceCollection.length; i++) {\n if (resourceCollection[parseInt(i.toString(), 10)].field === fieldName && i < resourceCollection.length - 1) {\n var resObject = this.createInstance(i);\n var datasource = [];\n var _loop_1 = function (j) {\n var resourceModel = resourceCollection[i + 1];\n // eslint-disable-next-line max-len\n var filter = resourceModel.dataSource.filter(function (data) {\n return data[resourceModel.groupIDField] === args.value[parseInt(j.toString(), 10)];\n })[0];\n var groupId = (!isNullOrUndefined(filter)) ?\n filter[resourceCollection[i + 1].groupIDField] : null;\n var filterRes = this_1.filterDatasource(i, groupId);\n datasource = datasource.concat(filterRes);\n };\n var this_1 = this;\n for (var j = 0; j < args.value.length; j++) {\n _loop_1(j);\n }\n resObject.dataSource = datasource;\n resObject.dataBind();\n }\n }\n };\n EventWindow.prototype.createInstance = function (index) {\n var resourceData = this.parent.resourceBase.resourceCollection[index + 1];\n var resObject = this.element.querySelector('.e-' + resourceData.field).\n ej2_instances[0];\n resObject.clear();\n return resObject;\n };\n EventWindow.prototype.onDropdownResourceChange = function (args) {\n if (!args.value || this.parent.resourceCollection.length <= 1 || !this.parent.activeViewOptions.group.byGroupID) {\n return;\n }\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n for (var i = 0; i < resourceCollection.length; i++) {\n if ((i < resourceCollection.length - 1) && resourceCollection[parseInt(i.toString(), 10)].field === fieldName) {\n var resObj = this.createInstance(i);\n var groupId = args.itemData[resourceCollection[parseInt(i.toString(), 10)].idField];\n resObj.dataSource = this.filterDatasource(i, groupId);\n resObj.dataBind();\n var resValue = (resObj.dataSource.length > 0) ?\n resObj.dataSource[0][resourceCollection[i + 1].idField] : null;\n resObj.value = (resourceCollection[i + 1].allowMultiple) ? [resValue] : resValue;\n resObj.dataBind();\n }\n }\n };\n EventWindow.prototype.filterDatasource = function (index, groupId) {\n var resourceData = this.parent.resourceBase.resourceCollection[index + 1];\n return resourceData.dataSource.filter(function (data) {\n return data[resourceData.groupIDField] === groupId;\n });\n };\n EventWindow.prototype.onTimezoneChange = function (args) {\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n if (fieldName === this.parent.eventFields.startTimezone) {\n var startTimezoneObj = this.getInstance(cls.EVENT_WINDOW_START_TZ_CLASS);\n var endTimezoneObj = this.getInstance(cls.EVENT_WINDOW_END_TZ_CLASS);\n endTimezoneObj.value = startTimezoneObj.value;\n endTimezoneObj.dataBind();\n }\n };\n EventWindow.prototype.renderCheckBox = function (value) {\n var checkBoxDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var checkBoxInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n checkBoxDiv.appendChild(checkBoxInput);\n var checkBox = new CheckBox({\n change: this.onChange.bind(this),\n cssClass: value + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n label: this.getFieldLabel(value)\n });\n checkBox.appendTo(checkBoxInput);\n checkBoxInput.setAttribute('name', fieldName);\n if (fieldName === 'Repeat') {\n this.repeatStatus = checkBox;\n }\n return checkBoxDiv;\n };\n EventWindow.prototype.renderTextBox = function (value) {\n var textBoxDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var elementType = (value === cls.DESCRIPTION_CLASS) ? 'textarea' : 'input';\n var textBoxInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName, elementType);\n textBoxDiv.appendChild(textBoxInput);\n Input.createInput({\n element: textBoxInput,\n floatLabelType: 'Always',\n properties: {\n enableRtl: this.parent.enableRtl,\n placeholder: this.getFieldLabel(value)\n }\n });\n return textBoxDiv;\n };\n EventWindow.prototype.getFieldName = function (name) {\n var fieldName = '';\n switch (name) {\n case cls.SUBJECT_CLASS:\n fieldName = this.fields.subject;\n break;\n case cls.LOCATION_CLASS:\n fieldName = this.fields.location;\n break;\n case cls.EVENT_WINDOW_START_CLASS:\n fieldName = this.fields.startTime;\n break;\n case cls.EVENT_WINDOW_END_CLASS:\n fieldName = this.fields.endTime;\n break;\n case cls.DESCRIPTION_CLASS:\n fieldName = this.fields.description;\n break;\n case cls.EVENT_WINDOW_ALL_DAY_CLASS:\n fieldName = this.fields.isAllDay;\n break;\n case cls.EVENT_WINDOW_START_TZ_CLASS:\n fieldName = this.fields.startTimezone;\n break;\n case cls.EVENT_WINDOW_END_TZ_CLASS:\n fieldName = this.fields.endTimezone;\n break;\n case cls.TIME_ZONE_CLASS:\n fieldName = 'Timezone';\n break;\n case cls.EVENT_WINDOW_REPEAT_CLASS:\n fieldName = 'Repeat';\n break;\n }\n return fieldName;\n };\n EventWindow.prototype.getFieldLabel = function (fieldName) {\n var labelText = '';\n switch (fieldName) {\n case cls.SUBJECT_CLASS:\n labelText = this.parent.editorTitles.subject;\n break;\n case cls.LOCATION_CLASS:\n labelText = this.parent.editorTitles.location;\n break;\n case cls.DESCRIPTION_CLASS:\n labelText = this.parent.editorTitles.description;\n break;\n case cls.EVENT_WINDOW_START_CLASS:\n labelText = this.parent.editorTitles.startTime;\n break;\n case cls.EVENT_WINDOW_END_CLASS:\n labelText = this.parent.editorTitles.endTime;\n break;\n case cls.EVENT_WINDOW_START_TZ_CLASS:\n labelText = this.parent.editorTitles.startTimezone;\n break;\n case cls.EVENT_WINDOW_END_TZ_CLASS:\n labelText = this.parent.editorTitles.endTimezone;\n break;\n case cls.EVENT_WINDOW_REPEAT_CLASS:\n labelText = this.parent.editorTitles.recurrenceRule;\n break;\n case cls.EVENT_WINDOW_ALL_DAY_CLASS:\n labelText = this.parent.editorTitles.isAllDay;\n break;\n case cls.TIME_ZONE_CLASS:\n labelText = this.l10n.getConstant('timezone');\n break;\n }\n return labelText;\n };\n EventWindow.prototype.onChange = function (args) {\n var targetSelector = \".\" + cls.EVENT_WINDOW_ALL_DAY_CLASS + \",.\" + cls.TIME_ZONE_CLASS + \",.\" + cls.EVENT_WINDOW_REPEAT_CLASS;\n var target = closest(args.event.target, targetSelector);\n if (target.classList.contains(cls.EVENT_WINDOW_ALL_DAY_CLASS)) {\n this.onAllDayChange(args.checked);\n }\n else if (target.classList.contains(cls.TIME_ZONE_CLASS)) {\n this.timezoneChangeStyle(args.checked);\n }\n else if (target.classList.contains(cls.EVENT_WINDOW_REPEAT_CLASS)) {\n this.onRepeatChange(args.checked);\n }\n };\n EventWindow.prototype.renderRepeatDialog = function () {\n var element = createElement('div');\n this.repeatDialogObject = new Dialog({\n header: this.l10n.getConstant('recurrence'),\n visible: false,\n content: '
',\n closeOnEscape: true,\n width: '90%',\n buttons: [{\n click: this.repeatSaveDialog.bind(this),\n buttonModel: { content: this.l10n.getConstant('save'), cssClass: 'e-save', isPrimary: true }\n },\n { click: this.repeatCancelDialog.bind(this), buttonModel: { cssClass: 'e-cancel', content: this.l10n.getConstant('cancel') } }],\n target: this.element,\n animationSettings: { effect: 'Zoom' },\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n isModal: true,\n cssClass: REPEAT_DIALOG_CLASS,\n open: this.repeatOpenDialog.bind(this)\n });\n this.element.appendChild(element);\n this.repeatDialogObject.appendTo(element);\n this.createRecurrenceEditor(this.repeatDialogObject.element.querySelector('.e-rec-editor'));\n };\n EventWindow.prototype.loadRecurrenceEditor = function () {\n this.repeatDialogObject.show();\n if (this.recurrenceEditor && this.repeatRule) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatRule);\n }\n };\n EventWindow.prototype.onRepeatChange = function (state) {\n if (state) {\n if (!this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n this.recurrenceEditor.setProperties({ startDate: this.repeatStartDate, selectedType: 0 });\n this.loadRecurrenceEditor();\n }\n else {\n if (this.repeatDialogObject) {\n this.repeatDialogObject.hide();\n }\n this.repeatRule = '';\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatRule);\n this.updateRepeatLabel(this.repeatRule);\n }\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n addClass([element], HIDE_STYLE_CLASS);\n }\n };\n EventWindow.prototype.repeatSaveDialog = function () {\n this.repeatRule = this.recurrenceEditor.getRecurrenceRule();\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (this.recurrenceEditor.getRecurrenceRule()) {\n removeClass([element], HIDE_STYLE_CLASS);\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n this.closeRepeatDialog();\n };\n EventWindow.prototype.closeRepeatDialog = function () {\n this.repeatDialogObject.hide();\n };\n EventWindow.prototype.repeatCancelDialog = function () {\n this.closeRepeatDialog();\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatTempRule);\n }\n if (!this.repeatTempRule) {\n this.repeatStatus.setProperties({ checked: false });\n }\n };\n EventWindow.prototype.repeatOpenDialog = function () {\n this.repeatTempRule = this.recurrenceEditor.getRecurrenceRule();\n };\n EventWindow.prototype.onCellDetailsUpdate = function (eventObj, repeatType) {\n if (!this.parent.eventSettings.allowAdding) {\n return;\n }\n if (this.parent.isAdaptive && repeatType && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n this.element.querySelector('.' + cls.FORM_CLASS).removeAttribute('data-id');\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');\n eventObj.Timezone = false;\n this.repeatStartDate = eventObj[this.fields.startTime];\n this.repeatRule = '';\n if (!isNullOrUndefined(this.parent.eventSettings.fields.subject.default)) {\n eventObj[this.fields.subject] = this.parent.eventSettings.fields.subject.default;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.location.default)) {\n eventObj[this.fields.location] = this.parent.eventSettings.fields.location.default;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.description.default)) {\n eventObj[this.fields.description] = this.parent.eventSettings.fields.description.default;\n }\n this.showDetails(eventObj);\n if (eventObj[this.fields.recurrenceRule] && this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n this.repeatRule = eventObj[this.fields.recurrenceRule];\n }\n var deleteButton = this.element.querySelector('.' + cls.DELETE_EVENT_CLASS);\n if (deleteButton) {\n addClass([deleteButton], cls.DISABLE_CLASS);\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setProperties({\n startDate: eventObj[this.fields.startTime],\n selectedType: !isNullOrUndefined(repeatType) ? repeatType : !isNullOrUndefined(eventObj[this.fields.recurrenceRule]) ?\n this.recurrenceEditor.selectedType : 0\n });\n this.repeatRule = this.recurrenceEditor.value;\n }\n if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (eventObj[this.fields.recurrenceRule] || repeatType) {\n removeClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: true });\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n }\n else {\n var saveButton = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n this.disableButton(saveButton, false);\n }\n this.dialogObject.show();\n };\n EventWindow.prototype.convertToEventData = function (cellsData, eventObj) {\n if (cellsData.subject) {\n eventObj[this.fields.subject] = cellsData.subject;\n }\n eventObj[this.fields.startTime] = cellsData.startTime;\n eventObj[this.fields.endTime] = cellsData.endTime;\n eventObj[this.fields.isAllDay] = cellsData.isAllDay;\n if (cellsData.RecurrenceRule) {\n eventObj[this.fields.recurrenceRule] = cellsData.RecurrenceRule;\n }\n if (this.parent.resourceCollection.length > 0 || this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.resourceBase.setResourceValues(eventObj);\n }\n };\n EventWindow.prototype.applyFormValidation = function () {\n var form = this.element.querySelector('.' + cls.FORM_CLASS);\n if (!form) {\n return;\n }\n var getValidationRule = function (rules) {\n return (rules && Object.keys(rules).length > 0) ? rules : undefined;\n };\n var rules = {};\n var subjectRule = getValidationRule(this.parent.eventSettings.fields.subject.validation);\n if (!isNullOrUndefined(subjectRule)) {\n rules[this.parent.eventSettings.fields.subject.name] = subjectRule;\n }\n var locationRule = getValidationRule(this.parent.eventSettings.fields.location.validation);\n if (!isNullOrUndefined(locationRule)) {\n rules[this.parent.eventSettings.fields.location.name] = locationRule;\n }\n var startTimeRule = getValidationRule(this.parent.eventSettings.fields.startTime.validation);\n if (!isNullOrUndefined(startTimeRule)) {\n rules[this.parent.eventSettings.fields.startTime.name] = startTimeRule;\n }\n var endTimeRule = getValidationRule(this.parent.eventSettings.fields.endTime.validation);\n if (!isNullOrUndefined(endTimeRule)) {\n rules[this.parent.eventSettings.fields.endTime.name] = endTimeRule;\n }\n var descriptionRule = getValidationRule(this.parent.eventSettings.fields.description.validation);\n if (!isNullOrUndefined(descriptionRule)) {\n rules[this.parent.eventSettings.fields.description.name] = descriptionRule;\n }\n this.fieldValidator = new FieldValidator();\n this.fieldValidator.renderFormValidator(form, rules, this.element, this.parent.locale);\n };\n EventWindow.prototype.showDetails = function (eventData) {\n var eventObj = extend({}, eventData, null, true);\n if ((!this.cellClickAction || this.cellClickAction && !isNullOrUndefined(this.parent.editorTemplate)) &&\n eventObj[this.fields.endTime].getHours() === 0 && eventObj[this.fields.endTime].getMinutes() === 0) {\n this.trimAllDay(eventObj);\n }\n this.eventData = eventObj;\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n var keyNames = Object.keys(eventObj);\n for (var _i = 0, formElements_2 = formElements; _i < formElements_2.length; _i++) {\n var curElement = formElements_2[_i];\n var columnName = curElement.name || this.getColumnName(curElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n if (keyNames.indexOf(columnName) !== -1) {\n this.setValueToElement(curElement, eventObj[\"\" + columnName]);\n }\n else {\n this.setDefaultValueToElement(curElement);\n }\n }\n }\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n this.onAllDayChange(eventObj[this.fields.isAllDay]);\n var timezoneObj = this.getInstance(cls.TIME_ZONE_CLASS + '.' + EVENT_FIELD);\n if (!(isNullOrUndefined(eventObj[this.fields.startTimezone]) && isNullOrUndefined(eventObj[this.fields.endTimezone]))) {\n timezoneObj.checked = true;\n timezoneObj.dataBind();\n }\n this.timezoneChangeStyle(timezoneObj.checked);\n delete eventObj.Timezone;\n }\n };\n EventWindow.prototype.getColumnName = function (element) {\n var attrName = element.getAttribute('data-name') || '';\n if (attrName === '') {\n var isDropDowns = false;\n var fieldSelector = '';\n if (element.classList.contains('e-dropdownlist')) {\n fieldSelector = 'e-ddl';\n isDropDowns = true;\n }\n else if (element.classList.contains('e-multiselect')) {\n fieldSelector = 'e-multiselect';\n isDropDowns = true;\n }\n else if (element.classList.contains('e-datetimepicker')) {\n fieldSelector = 'e-datetimepicker';\n }\n else if (element.classList.contains('e-datepicker')) {\n fieldSelector = 'e-datepicker';\n }\n else if (element.classList.contains('e-checkbox')) {\n fieldSelector = 'e-checkbox';\n }\n var classSelector = isDropDowns ? \".\" + fieldSelector + \":not(.e-control)\" : \".\" + fieldSelector;\n var control = closest(element, classSelector) || element.querySelector(\".\" + fieldSelector);\n if (control) {\n var attrEle = control.querySelector('[name]');\n if (attrEle) {\n attrName = attrEle.name;\n }\n }\n }\n return attrName;\n };\n EventWindow.prototype.onAllDayChange = function (allDayStatus) {\n var startObj = this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n var endObj = this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n var timezoneDiv = this.element.querySelector('.e-time-zone-container');\n var format;\n if (allDayStatus) {\n format = (isNullOrUndefined(this.parent.dateFormat)) ? this.getFormat('dateFormats') : this.parent.dateFormat;\n addClass(this.element.querySelectorAll('.e-time-icon'), cls.EVENT_WINDOW_ICON_DISABLE_CLASS);\n addClass([timezoneDiv], cls.DISABLE_CLASS);\n if (this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)) {\n removeClass([this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)], cls.ENABLE_CLASS);\n }\n startObj.format = endObj.format = format;\n }\n else {\n format = (isNullOrUndefined(this.parent.dateFormat)) ? this.getFormat('dateFormats') + ' ' +\n this.parent.activeViewOptions.timeFormat : this.parent.dateFormat + ' ' + this.parent.activeViewOptions.timeFormat;\n removeClass(this.element.querySelectorAll('.e-time-icon'), cls.EVENT_WINDOW_ICON_DISABLE_CLASS);\n removeClass([timezoneDiv], cls.DISABLE_CLASS);\n if (this.element.querySelector('.e-checkbox-wrapper .e-time-zone').checked) {\n addClass([this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)], cls.ENABLE_CLASS);\n }\n startObj.format = endObj.format = format;\n }\n if (this.cellClickAction) {\n this.updateDateTime(allDayStatus, startObj, endObj);\n }\n startObj.dataBind();\n endObj.dataBind();\n if (!isNullOrUndefined(this.recurrenceEditor)) {\n this.recurrenceEditor.updateRuleUntilDate(startObj.value);\n }\n };\n EventWindow.prototype.updateDateTime = function (allDayStatus, startObj, endObj) {\n var startDate;\n var endDate;\n if (allDayStatus) {\n startDate = util.resetTime(new Date(this.eventWindowTime.startTime.getTime()));\n if (this.parent.activeCellsData.isAllDay) {\n var temp = util.addDays(new Date(this.eventWindowTime.endTime.getTime()), -1).getTime();\n endDate = (+this.eventWindowTime.startTime > temp) ? this.eventWindowTime.endTime : new Date(temp);\n }\n else {\n endDate = util.resetTime(new Date(this.eventWindowTime.endTime.getTime()));\n }\n }\n else {\n var start = this.parent.activeCellsData.startTime;\n startDate = new Date(this.eventWindowTime.startTime.getTime());\n startDate.setHours(start.getHours(), start.getMinutes(), start.getSeconds());\n if (this.parent.activeCellsData.isAllDay) {\n var startHour = this.parent.getStartEndTime(this.parent.workHours.start);\n startDate.setHours(startHour.getHours(), startHour.getMinutes(), startHour.getSeconds());\n endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(util.MS_PER_MINUTE * this.getSlotDuration());\n }\n else {\n endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(this.parent.activeCellsData.endTime.getTime() - this.parent.activeCellsData.startTime.getTime());\n }\n }\n this.eventWindowTime = { startTime: new Date(startDate.getTime()), endTime: new Date(endDate.getTime()) };\n startObj.value = startDate;\n endObj.value = endDate;\n startObj.dataBind();\n endObj.dataBind();\n };\n EventWindow.prototype.getFormat = function (formatType) {\n var format;\n if (this.parent.locale === 'en' || this.parent.locale === 'en-US') {\n format = getValue(formatType + '.short', getDefaultDateObject(this.parent.getCalendarMode()));\n }\n else {\n format = getValue(\"main.\" + this.parent.locale + \".dates.calendars.\" + this.parent.getCalendarMode() + \".\" + formatType + \".short\", cldrData);\n }\n return format;\n };\n EventWindow.prototype.onEventDetailsUpdate = function (eventObj) {\n if (!this.parent.eventSettings.allowEditing) {\n return;\n }\n if (!this.parent.isAdaptive) {\n removeClass([this.element.querySelector('.' + cls.DELETE_EVENT_CLASS)], cls.DISABLE_CLASS);\n }\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');\n this.element.querySelector('.' + cls.FORM_CLASS).setAttribute('data-id', eventObj[this.fields.id].toString());\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n eventObj = extend({}, eventObj, null, true);\n var timezoneObj = this.getInstance(cls.TIME_ZONE_CLASS + '.' + EVENT_FIELD);\n var timezoneValue = void 0;\n if (eventObj[this.fields.startTimezone] || eventObj[this.fields.endTimezone]) {\n timezoneValue = true;\n this.parent.eventBase.timezoneConvert(eventObj);\n }\n else {\n timezoneValue = false;\n }\n eventObj.Timezone = timezoneValue;\n timezoneObj.checked = timezoneValue;\n timezoneObj.dataBind();\n }\n this.showDetails(eventObj);\n if (eventObj[this.fields.recurrenceRule] && this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n }\n else if (!this.parent.isAdaptive && this.recurrenceEditor) {\n this.recurrenceEditor.setProperties({ startDate: eventObj[this.fields.startTime] });\n this.recurrenceEditor.setRecurrenceRule('');\n }\n this.repeatStartDate = eventObj[this.fields.startTime];\n this.repeatRule = '';\n if (eventObj[this.fields.recurrenceRule]) {\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n }\n this.repeatRule = eventObj[this.fields.recurrenceRule];\n }\n if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (eventObj[this.fields.recurrenceRule]) {\n removeClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: true });\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n }\n var isDisable = (this.parent.readonly || eventObj[this.fields.isReadonly]);\n if (!this.parent.isAdaptive) {\n var saveButton = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n var deleteButton = this.element.querySelector('.' + cls.DELETE_EVENT_CLASS);\n this.disableButton(saveButton, isDisable);\n this.disableButton(deleteButton, isDisable);\n }\n else {\n var saveIcon = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_ICON_CLASS);\n if (saveIcon) {\n if (isDisable) {\n addClass([saveIcon], cls.ICON_DISABLE_CLASS);\n }\n else {\n removeClass([saveIcon], cls.ICON_DISABLE_CLASS);\n }\n }\n }\n this.dialogObject.show();\n };\n EventWindow.prototype.disableButton = function (element, value) {\n if (element) {\n element.ej2_instances[0].disabled = value;\n }\n };\n EventWindow.prototype.renderRecurrenceEditor = function () {\n return new RecurrenceEditor({\n calendarMode: this.parent.calendarMode,\n cssClass: this.parent.cssClass,\n dateFormat: this.parent.dateFormat,\n enableRtl: this.parent.enableRtl,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n locale: this.parent.locale\n });\n };\n EventWindow.prototype.updateMinMaxDateToEditor = function () {\n var startDate = this.element.querySelector('.e-start');\n var endDate = this.element.querySelector('.e-end');\n if (startDate && endDate) {\n var startObj = startDate.ej2_instances[0];\n var endObj = endDate.ej2_instances[0];\n startObj.min = this.parent.minDate;\n startObj.max = this.parent.maxDate;\n endObj.min = this.parent.minDate;\n endObj.max = this.parent.maxDate;\n startObj.dataBind();\n endObj.dataBind();\n }\n if (this.recurrenceEditor) {\n var untilDate = this.recurrenceEditor.element.querySelector('.e-until-date');\n if (untilDate) {\n var untilObj = untilDate.ej2_instances[0];\n untilObj.min = this.parent.minDate;\n untilObj.max = this.parent.maxDate;\n untilObj.dataBind();\n }\n }\n };\n EventWindow.prototype.updateRepeatLabel = function (repeatRule) {\n if (this.parent.isAdaptive && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n var data = repeatRule ?\n (this.l10n.getConstant('repeats') + ' ' + this.recurrenceEditor.getRuleSummary(repeatRule)) : this.l10n.getConstant('repeat');\n this.repeatStatus.setProperties({ label: data });\n };\n EventWindow.prototype.dialogClose = function (event) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.parent.activeEventData = { event: undefined, element: undefined };\n this.parent.currentAction = null;\n this.dialogObject.hide();\n };\n EventWindow.prototype.resetForm = function () {\n this.fieldValidator.destroyToolTip();\n this.resetFormFields();\n if (!this.parent.isAdaptive && this.recurrenceEditor && !this.recurrenceEditor.isDestroyed) {\n this.recurrenceEditor.resetFields();\n }\n };\n EventWindow.prototype.timezoneChangeStyle = function (value) {\n var timezoneDiv = this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS);\n var localTimezoneName = this.parent.tzModule.getLocalTimezoneName();\n if (value) {\n addClass([timezoneDiv], cls.ENABLE_CLASS);\n var startTimezoneObj = this.getInstance(cls.EVENT_WINDOW_START_TZ_CLASS);\n var endTimezoneObj = this.getInstance(cls.EVENT_WINDOW_END_TZ_CLASS);\n var timezone = startTimezoneObj.dataSource;\n if (!startTimezoneObj.value || !this.parent.timezone) {\n var found = timezone.some(function (tz) { return tz.Value === localTimezoneName; });\n if (!found) {\n timezone.push({ Value: localTimezoneName, Text: localTimezoneName });\n startTimezoneObj.dataSource = timezone;\n endTimezoneObj.dataSource = timezone;\n startTimezoneObj.dataBind();\n endTimezoneObj.dataBind();\n }\n }\n startTimezoneObj.value = startTimezoneObj.value || this.parent.timezone || localTimezoneName;\n endTimezoneObj.value = endTimezoneObj.value || this.parent.timezone || localTimezoneName;\n startTimezoneObj.dataBind();\n endTimezoneObj.dataBind();\n }\n else {\n removeClass([timezoneDiv], cls.ENABLE_CLASS);\n }\n };\n EventWindow.prototype.resetFormFields = function () {\n var formElement = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElement_1 = formElement; _i < formElement_1.length; _i++) {\n var currentElement = formElement_1[_i];\n var columnName = currentElement.name || this.getColumnName(currentElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n this.setDefaultValueToElement(currentElement);\n }\n }\n };\n EventWindow.prototype.eventSave = function (event, alert) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n var formElement = this.element.querySelector('.' + cls.FORM_CLASS);\n if (formElement && formElement.classList.contains('e-formvalidator') &&\n !formElement.ej2_instances[0].validate()) {\n return;\n }\n var dataCollection = this.getEventDataFromEditor();\n if (this.processEventValidation(dataCollection.tempData, alert)) {\n return;\n }\n this.eventCrudData = dataCollection.eventData;\n this.dialogEvent = event;\n this.isCrudAction = true;\n this.dialogObject.hide();\n };\n EventWindow.prototype.getEventDataFromEditor = function () {\n var eventObj = extend({}, this.getObjectFromFormData(cls.EVENT_WINDOW_DIALOG_CLASS));\n if (!eventObj.Timezone) {\n eventObj[this.fields.startTimezone] = null;\n eventObj[this.fields.endTimezone] = null;\n }\n delete eventObj.Timezone;\n delete eventObj.Repeat;\n this.setDefaultValueToObject(eventObj);\n eventObj[this.fields.recurrenceRule] = this.recurrenceEditor ? this.recurrenceEditor.getRecurrenceRule() || null : undefined;\n var tempObj = extend({}, eventObj, null, true);\n if (eventObj[this.fields.isAllDay]) {\n eventObj[this.fields.startTime] = (isNullOrUndefined(eventObj[this.fields.startTime])) ? null\n : util.resetTime(new Date(eventObj[this.fields.startTime].getTime()));\n eventObj[this.fields.endTime] = (isNullOrUndefined(eventObj[this.fields.endTime])) ? null\n : util.addDays(util.resetTime(new Date(eventObj[this.fields.endTime].getTime())), 1);\n }\n return { eventData: eventObj, tempData: tempObj };\n };\n EventWindow.prototype.processEventValidation = function (eventObj, alert) {\n var alertType;\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n if (!eventObj[this.fields.startTime] || !eventObj[this.fields.endTime]) {\n this.parent.quickPopup.openValidationError('invalidDateError');\n return true;\n }\n if (eventObj[this.fields.startTime] > eventObj[this.fields.endTime]) {\n this.parent.quickPopup.openValidationError('startEndError');\n return true;\n }\n }\n if (this.recurrenceEditor && this.recurrenceEditor.value && this.recurrenceEditor.value !== '') {\n if (this.parent.currentAction !== 'EditOccurrence') {\n alertType = this.recurrenceValidation(eventObj[this.fields.startTime], eventObj[this.fields.endTime], alert);\n }\n var isShowAlert = true;\n if (alertType === 'seriesChangeAlert' && this.parent.uiStateValues.isIgnoreOccurrence) {\n isShowAlert = false;\n }\n if (!isNullOrUndefined(alertType) && isShowAlert\n && ((!this.parent.enableRecurrenceValidation && alertType === 'wrongPattern') || this.parent.enableRecurrenceValidation)) {\n this.parent.quickPopup.openRecurrenceValidationAlert(alertType);\n return true;\n }\n }\n return false;\n };\n EventWindow.prototype.processCrudActions = function (eventObj) {\n var _this = this;\n this.parent.uiStateValues.isBlock = false;\n var resourceData = this.getResourceData(eventObj);\n var isResourceEventExpand = (this.parent.activeViewOptions.group.resources.length > 0 ||\n this.parent.resourceCollection.length > 0) && !this.parent.activeViewOptions.group.allowGroupEdit\n && !isNullOrUndefined(resourceData);\n var eventId = this.getEventIdFromForm();\n if (!isNullOrUndefined(eventId)) {\n var eveId_1 = this.parent.eventBase.getEventIDType() === 'string' ? eventId : parseInt(eventId, 10);\n var editedData = this.parent.eventsData.filter(function (data) {\n return data[_this.fields.id] === eveId_1;\n })[0];\n if (isNullOrUndefined(editedData)) {\n editedData = this.parent.blockData.filter(function (data) {\n return data[_this.fields.id] === eveId_1;\n })[0];\n }\n eventObj = extend({}, editedData, eventObj);\n if (eventObj[this.fields.isReadonly]) {\n return false;\n }\n var currentAction = void 0;\n if (!isNullOrUndefined(editedData[this.fields.recurrenceRule])) {\n currentAction = this.parent.currentAction;\n eventObj.Guid = this.parent.activeEventData.event.Guid;\n if (this.parent.currentAction === 'EditOccurrence') {\n if (!eventObj[this.fields.recurrenceID]) {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n eventObj.Guid = this.parent.activeEventData.event.Guid;\n }\n else {\n eveId_1 = eventObj[this.fields.recurrenceID];\n currentAction = null;\n }\n if (this.parent.enableRecurrenceValidation && this.editOccurrenceValidation(eveId_1, eventObj)) {\n return true;\n }\n }\n if (this.parent.currentAction === 'EditSeries' || eventObj[this.fields.id] !== editedData[this.fields.id]) {\n eventObj[this.fields.recurrenceID] = editedData[this.fields.id];\n }\n else if (this.parent.currentAction === 'EditFollowingEvents') {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n eventObj[this.fields.followingID] = editedData[this.fields.id];\n }\n }\n if (isResourceEventExpand) {\n this.resourceSaveEvent(eventObj, 'Save', currentAction);\n }\n else {\n this.parent.saveEvent(eventObj, currentAction);\n }\n }\n else {\n this.parent.currentAction = 'Add';\n if (isResourceEventExpand) {\n this.resourceSaveEvent(eventObj, this.parent.currentAction);\n }\n else {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n this.parent.addEvent(eventObj);\n }\n }\n return this.parent.uiStateValues.isBlock;\n };\n EventWindow.prototype.getResourceData = function (eventObj) {\n var resourceData = null;\n if (!isNullOrUndefined(this.parent.resourceBase) && !isNullOrUndefined(this.parent.resourceBase.resourceCollection)\n && this.parent.resourceBase.resourceCollection.length > 0) {\n var lastResourceData = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n resourceData = eventObj[lastResourceData.field];\n }\n return resourceData;\n };\n EventWindow.prototype.getObjectFromFormData = function (className) {\n var formElement = this.getFormElements(className);\n var eventObj = {};\n for (var _i = 0, formElement_2 = formElement; _i < formElement_2.length; _i++) {\n var currentElement = formElement_2[_i];\n var columnName = currentElement.name || this.getColumnName(currentElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n eventObj[\"\" + columnName] = this.getValueFromElement(currentElement);\n }\n }\n return eventObj;\n };\n EventWindow.prototype.setDefaultValueToObject = function (eventObj) {\n if (!isNullOrUndefined(eventObj[this.fields.subject])) {\n eventObj[this.fields.subject] = eventObj[this.fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.l10n.getConstant('addTitle');\n }\n if (!isNullOrUndefined(eventObj[this.fields.location])) {\n eventObj[this.fields.location] = eventObj[this.fields.location] || this.parent.eventSettings.fields.location.default;\n }\n if (!isNullOrUndefined(eventObj[this.fields.description])) {\n eventObj[this.fields.description] = eventObj[this.fields.description] || this.parent.eventSettings.fields.description.default;\n }\n };\n EventWindow.prototype.recurrenceValidation = function (startDate, endDate, alert) {\n var alertMessage;\n var recEditor = this.recurrenceEditor;\n var interval = this.getInstance('e-repeat-interval.e-numerictextbox').value;\n if (alert !== this.l10n.getConstant('ok')) {\n var activeEvent = this.parent.activeEventData.event;\n var excludedEvents = [];\n if ((this.parent.currentAction === 'EditSeries' || this.parent.currentAction === 'EditFollowingEvents')\n && !isNullOrUndefined(activeEvent)) {\n var eventStartTime = activeEvent[this.parent.eventFields.startTime];\n var seriesEvents = this.parent.eventBase.getSeriesEvents(this.eventData, eventStartTime);\n if (seriesEvents.length > 0) {\n excludedEvents = this.parent.eventBase.getEditedOccurrences(seriesEvents, eventStartTime);\n }\n else {\n var event_2 = this.parent.eventBase.getEventById(activeEvent[this.parent.eventFields.id]);\n excludedEvents = this.parent.eventBase.getEditedOccurrences([event_2], eventStartTime);\n }\n if (this.parent.currentAction === 'EditSeries'\n && !isNullOrUndefined(this.eventData[this.parent.eventFields.recurrenceException])) {\n excludedEvents.push(this.eventData);\n }\n }\n if (excludedEvents.length > 0) {\n alertMessage = 'seriesChangeAlert';\n }\n if (this.getInstance('e-end-on-left .e-ddl .e-dropdownlist').value === 'until' &&\n this.getInstance('e-end-on-date .e-datepicker').value < startDate) {\n alertMessage = 'wrongPattern';\n }\n if (isNullOrUndefined(alertMessage)) {\n var types = recEditor.value.split(';')[1].split('=')[1].split(',');\n var obj = { 'SU': 0, 'MO': 1, 'TU': 2, 'WE': 3, 'TH': 4, 'FR': 5, 'SA': 6 };\n var temp = [];\n var tempDiff = [];\n var tempValue = void 0;\n switch (recEditor.value.split(';')[0].split('=')[1]) {\n case 'DAILY':\n if ((((endDate.getTime() - startDate.getTime()) / (1000 * 3600)) > (interval * 24))) {\n alertMessage = 'createError';\n }\n break;\n case 'WEEKLY':\n types = recEditor.value.split(';')[1].split('=')[1].split(',');\n for (var index = 0; index < types.length * (interval + 1); index++) {\n temp[parseInt(index.toString(), 10)] =\n (types.length > index) ? obj[types[parseInt(index.toString(), 10)]] :\n temp[index - types.length] + (7 * interval);\n }\n tempValue = temp.sort(function (a, b) { return a - b; });\n for (var index = 1; index < tempValue.length; index++) {\n tempDiff.push(tempValue[parseInt(index.toString(), 10)] - tempValue[index - 1]);\n }\n if ((((endDate.getTime() - startDate.getTime()) / (1000 * 3600)) >= Math.min.apply(Math, tempDiff) * 24)\n || isNullOrUndefined(interval)) {\n alertMessage = 'createError';\n }\n break;\n case 'MONTHLY':\n if (endDate.getTime() >= new Date(+startDate).setMonth(startDate.getMonth() + interval)) {\n alertMessage = 'createError';\n }\n break;\n case 'YEARLY':\n if (endDate.getTime() >= new Date(+startDate).setFullYear(startDate.getFullYear() + interval)) {\n alertMessage = 'createError';\n }\n break;\n }\n }\n }\n else {\n if (endDate.getTime() >= new Date(+startDate).setMonth(startDate.getMonth() + interval)) {\n alertMessage = 'createError';\n }\n if (isNullOrUndefined(alertMessage)) {\n this.parent.quickPopup.quickDialog.hide();\n }\n }\n if (isNullOrUndefined(interval)) {\n alertMessage = 'createError';\n }\n return alertMessage;\n };\n EventWindow.prototype.getRecurrenceIndex = function (recColl, event) {\n var recIndex;\n for (var index = 0; index < recColl.length; index++) {\n if (event[this.fields.startTime].valueOf() === recColl[parseInt(index.toString(), 10)][this.fields.startTime].valueOf()) {\n recIndex = index;\n break;\n }\n }\n return recIndex;\n };\n EventWindow.prototype.trimAllDay = function (data) {\n if (data[this.fields.isAllDay]) {\n var temp = util.addDays(new Date(+data[this.fields.endTime]), -1).getTime();\n data[this.fields.endTime] = (+data[this.fields.startTime] > temp) ? data[this.fields.endTime] : new Date(temp);\n }\n };\n EventWindow.prototype.editOccurrenceValidation = function (eventId, currentData, editData) {\n var _this = this;\n if (editData === void 0) {\n editData = this.eventData;\n }\n var recurColl = this.parent.getOccurrencesByID(eventId);\n var excludedDatas = this.parent.eventsData.filter(function (data) {\n return data[_this.fields.recurrenceID] === eventId;\n });\n excludedDatas.map(function (data) { return recurColl.push(extend({}, data)); });\n currentData = extend({}, currentData);\n this.trimAllDay(currentData);\n for (var _i = 0, recurColl_1 = recurColl; _i < recurColl_1.length; _i++) {\n var data = recurColl_1[_i];\n this.trimAllDay(data);\n }\n this.parent.eventBase.sortByTime(recurColl);\n var index = this.getRecurrenceIndex(recurColl, editData);\n if (isNullOrUndefined(index)) {\n return false;\n }\n var currentStartTime = new Date(+currentData[this.fields.startTime]);\n var currentEndTime = new Date(+currentData[this.fields.endTime]);\n var nextStartTime;\n var nextEndTime;\n if (index !== recurColl.length - 1) {\n nextStartTime = new Date(+recurColl[index + 1][this.fields.startTime]);\n nextEndTime = new Date(+recurColl[index + 1][this.fields.endTime]);\n }\n var lastEndTime = new Date(+recurColl[recurColl.length - 1][this.fields.endTime]);\n if (index === 0) {\n if (!isNullOrUndefined(recurColl[index + 1])) {\n if (!(nextStartTime.getTime() >= currentEndTime.getTime()) &&\n (util.resetTime(lastEndTime).getTime() >=\n util.resetTime(currentStartTime).getTime()) ||\n util.resetTime(lastEndTime).getTime() < util.resetTime(currentStartTime).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n else if (!(util.resetTime(currentStartTime).getTime() <\n util.resetTime(nextStartTime).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n }\n return false;\n }\n else {\n var previousStartTime = new Date(+recurColl[index - 1][this.fields.startTime]);\n var previousEndTime = new Date(+recurColl[index - 1][this.fields.endTime]);\n if (index === recurColl.length - 1) {\n if (util.resetTime(new Date(+recurColl[(recurColl.length - 1) - index][this.fields.startTime])).getTime() >\n util.resetTime(currentStartTime).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n else if (!((previousEndTime.getTime() <= currentStartTime.getTime()) &&\n (util.resetTime(currentStartTime).getTime() > util.resetTime(previousStartTime).getTime()))) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n }\n else if (!(((util.resetTime(previousStartTime).getTime() < util.resetTime(currentStartTime).getTime()) ||\n util.resetTime(new Date(+recurColl[0][this.fields.startTime])).getTime() >\n util.resetTime(currentStartTime).getTime()) &&\n ((util.resetTime(nextStartTime).getTime() > util.resetTime(currentStartTime).getTime()) ||\n (lastEndTime.getTime() < currentStartTime.getTime())))) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n else if (!(previousEndTime.getTime() <= currentStartTime.getTime() && nextStartTime.getTime() >\n currentEndTime.getTime()) || (util.resetTime(nextEndTime).getTime() <\n util.resetTime(currentStartTime).getTime()) ||\n (util.resetTime(previousStartTime).getTime() > util.resetTime(currentEndTime).getTime()) ||\n !(util.resetTime(currentStartTime).getTime() < util.resetTime(nextStartTime).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n }\n return false;\n };\n EventWindow.prototype.resourceSaveEvent = function (eventObj, action, currentAction) {\n var _this = this;\n var lastResourceData = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n var resourceData = eventObj[lastResourceData.field];\n resourceData = (resourceData instanceof Array) ? resourceData.reverse() : [resourceData].reverse();\n var lastLevel = this.parent.resourceBase.lastResourceLevel;\n var eventList = [];\n var _loop_2 = function (i) {\n var events = extend({}, eventObj, null, true);\n events[this_2.fields.id] = this_2.parent.eventBase.getEventMaxID();\n var temp = [];\n var addValues = function () {\n if (action === 'Save' && i === resourceData.length - 1) {\n if (temp.length > 0) {\n temp[0][_this.fields.id] = eventObj[_this.fields.id];\n for (var k = 1; k < temp.length; k++) {\n temp[parseInt(k.toString(), 10)][_this.fields.id] = _this.parent.eventBase.getEventMaxID(i);\n eventList.push(temp[parseInt(k.toString(), 10)]);\n _this.parent.saveEvent(temp[0], currentAction);\n }\n }\n else {\n events[_this.fields.id] = eventObj[_this.fields.id];\n _this.parent.saveEvent(events, currentAction);\n }\n }\n else {\n if (temp.length > 0) {\n for (var j = 0; j < temp.length; j++) {\n temp[parseInt(j.toString(), 10)][_this.fields.id] = _this.parent.eventBase.getEventMaxID(j);\n eventList.push(temp[parseInt(j.toString(), 10)]);\n }\n }\n else {\n events[_this.fields.id] = _this.parent.eventBase.getEventMaxID(i);\n eventList.push(events);\n }\n }\n };\n if (this_2.parent.activeViewOptions.group.byGroupID && (!isNullOrUndefined(lastLevel))) {\n var lastResource = lastResourceData.dataSource;\n var resCol = this_2.parent.resourceCollection;\n var index = void 0;\n if (resCol.length > 1) {\n index =\n util.findIndexInData(lastResource, lastResourceData.idField, resourceData[parseInt(i.toString(), 10)], events, resCol);\n }\n else {\n index =\n util.findIndexInData(lastResource, lastResourceData.idField, resourceData[parseInt(i.toString(), 10)]);\n }\n if (index < 0) {\n return { value: void 0 };\n }\n var groupId_1 = lastResource[parseInt(index.toString(), 10)][lastResourceData.groupIDField];\n var filter = lastLevel.filter(function (obj) { return obj.resourceData[lastResourceData.idField] ===\n resourceData[parseInt(i.toString(), 10)]; }).\n filter(function (obj) { return obj.resourceData[lastResourceData.groupIDField] === groupId_1; })[0];\n var groupOrder = filter.groupOrder;\n for (var index_1 = 0; index_1 < this_2.parent.resourceBase.resourceCollection.length; index_1++) {\n var field = this_2.parent.resourceBase.resourceCollection[parseInt(index_1.toString(), 10)].field;\n events[\"\" + field] = (groupOrder[parseInt(index_1.toString(), 10)] instanceof Array) ? groupOrder[parseInt(index_1.toString(), 10)][0] :\n groupOrder[parseInt(index_1.toString(), 10)];\n }\n addValues();\n }\n else {\n for (var index = 0; index < this_2.parent.resourceBase.resourceCollection.length - 1; index++) {\n var field = this_2.parent.resourceBase.resourceCollection[parseInt(index.toString(), 10)].field;\n if (events[\"\" + field] instanceof Array && events[\"\" + field].length > 1) {\n for (var k = 0; k < events[\"\" + field].length; k++) {\n var event_3 = extend({}, events, null, true);\n event_3[\"\" + field] = eventObj[\"\" + field][parseInt(k.toString(), 10)];\n event_3[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\n temp.push(event_3);\n }\n }\n else {\n if (temp.length === 0) {\n events[\"\" + field] = (eventObj[\"\" + field] instanceof Array) ?\n eventObj[\"\" + field][0] : eventObj[\"\" + field];\n events[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\n }\n else {\n for (var l = 0; l < temp.length; l++) {\n temp[parseInt(l.toString(), 10)][\"\" + field] = (eventObj[\"\" + field] instanceof Array) ?\n eventObj[\"\" + field][0] : eventObj[\"\" + field];\n }\n }\n }\n }\n events[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\n addValues();\n }\n };\n var this_2 = this;\n for (var i = 0; i < resourceData.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n if (eventList.length > 0) {\n for (var _i = 0, eventList_1 = eventList; _i < eventList_1.length; _i++) {\n var event_4 = eventList_1[_i];\n event_4[this.fields.recurrenceException] = null;\n event_4[this.fields.recurrenceID] = null;\n }\n this.parent.addEvent(eventList);\n }\n };\n EventWindow.prototype.getEventIdFromForm = function () {\n return this.element.querySelector('.' + cls.FORM_CLASS).getAttribute('data-id');\n };\n EventWindow.prototype.getFormElements = function (className) {\n var elements = [];\n if (className === cls.EVENT_WINDOW_DIALOG_CLASS) {\n elements = [].slice.call(this.element.querySelectorAll('.' + EVENT_FIELD));\n }\n else {\n elements = [].slice.call(this.parent.element.querySelectorAll('.' + className + ' .' + EVENT_FIELD));\n }\n return elements;\n };\n EventWindow.prototype.getValueFromElement = function (element) {\n var value;\n if (element.classList.contains('e-datepicker')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-datetimepicker')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-dropdownlist')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-multiselect')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-checkbox')) {\n value = element.ej2_instances[0].checked;\n }\n else {\n if (element.type === 'checkbox') {\n value = element.checked;\n }\n else {\n value = this.parent.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(element.value) : element.value;\n }\n }\n return value;\n };\n EventWindow.prototype.setValueToElement = function (element, value) {\n if (element.classList.contains('e-datepicker')) {\n var instance = element.ej2_instances[0];\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-datetimepicker')) {\n var instance = element.ej2_instances[0];\n if (instance.element.classList.contains(cls.EVENT_WINDOW_START_CLASS)) {\n this.eventWindowTime.startTime = new Date('' + value);\n }\n else {\n this.eventWindowTime.endTime = new Date('' + value);\n }\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-dropdownlist')) {\n var instance = element.ej2_instances[0];\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-multiselect')) {\n var instance = element.ej2_instances[0];\n instance.value = [];\n instance.value = ((value instanceof Array) ? value : [value]);\n instance.dataBind();\n }\n else if (element.classList.contains('e-checkbox')) {\n var instance = element.ej2_instances[0];\n instance.checked = value;\n instance.dataBind();\n }\n else {\n if (element.type !== 'checkbox') {\n element.value = value || '';\n }\n else {\n element.checked = value;\n }\n }\n };\n EventWindow.prototype.setDefaultValueToElement = function (element) {\n if (element.classList.contains('e-datepicker')) {\n var instance = element.ej2_instances[0];\n instance.value = this.parent.getCurrentTime();\n instance.dataBind();\n }\n else if (element.classList.contains('e-datetimepicker')) {\n var instance = element.ej2_instances[0];\n var dateValue = this.parent.getCurrentTime();\n this.eventWindowTime = { startTime: dateValue, endTime: dateValue };\n instance.value = dateValue;\n instance.dataBind();\n }\n else if (element.classList.contains('e-dropdownlist')) {\n var instance = element.ej2_instances[0];\n instance.value = null;\n instance.dataBind();\n }\n else if (element.classList.contains('e-multiselect')) {\n var instance = element.ej2_instances[0];\n instance.value = [];\n instance.dataBind();\n }\n else if (element.classList.contains('e-checkbox')) {\n var instance = element.ej2_instances[0];\n instance.checked = false;\n instance.dataBind();\n }\n else {\n if (element.type === 'checkbox') {\n element.checked = false;\n }\n else {\n element.value = '';\n }\n }\n };\n EventWindow.prototype.getInstance = function (className) {\n var element = this.element.querySelector('.' + className);\n return element ? element.ej2_instances[0] : null;\n };\n EventWindow.prototype.eventDelete = function (event) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n switch (this.parent.currentAction) {\n case 'EditOccurrence':\n if (!isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'DeleteOccurrence';\n }\n else {\n this.parent.currentAction = 'Delete';\n }\n break;\n case 'EditSeries':\n this.parent.currentAction = 'DeleteSeries';\n break;\n case 'Save':\n this.parent.currentAction = 'Delete';\n break;\n case 'EditFollowingEvents':\n if (!isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'DeleteFollowingEvents';\n }\n break;\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.dialogObject.hide();\n this.parent.quickPopup.openDeleteAlert();\n };\n EventWindow.prototype.getRecurrenceEditorInstance = function () {\n if (this.parent.isAdaptive && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n return this.recurrenceEditor;\n };\n EventWindow.prototype.destroyComponents = function () {\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElements_3 = formElements; _i < formElements_3.length; _i++) {\n var element = formElements_3[_i];\n var instance = void 0;\n if (element.classList.contains('e-datetimepicker')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-datepicker')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-checkbox')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-dropdownlist')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-multiselect')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-numerictextbox')) {\n instance = element.ej2_instances;\n }\n if (instance && instance[0]) {\n instance[0].destroy();\n }\n }\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n };\n EventWindow.prototype.detachComponents = function () {\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElements_4 = formElements; _i < formElements_4.length; _i++) {\n var element = formElements_4[_i];\n detach(element);\n }\n };\n EventWindow.prototype.destroy = function (isIgnore) {\n if (this.parent && !this.parent.isDestroyed) {\n this.parent.resetTemplates(['editorTemplate']);\n }\n this.destroyComponents();\n if (this.recurrenceEditor) {\n this.recurrenceEditor.destroy();\n detach(this.recurrenceEditor.element);\n this.recurrenceEditor = null;\n }\n if (this.fieldValidator) {\n this.fieldValidator.destroy();\n this.fieldValidator = null;\n }\n if (this.repeatDialogObject) {\n this.repeatDialogObject.destroy();\n this.repeatDialogObject = null;\n }\n this.detachComponents();\n if (this.dialogObject) {\n if (this.dialogObject.element) {\n var form = this.dialogObject.element.querySelector('form');\n util.removeChildren(form);\n detach(form);\n EventHandler.remove(this.dialogObject.element, 'keydown', this.preventEventSave);\n }\n this.dialogObject.destroy();\n this.dialogObject = null;\n }\n if (this.element) {\n remove(this.element);\n this.element = null;\n }\n if (!isIgnore) {\n this.l10n = null;\n this.parent = null;\n this.fields = null;\n this.buttonObj = null;\n this.repeatStatus = null;\n this.eventWindowTime = null;\n this.dialogEvent = null;\n }\n };\n return EventWindow;\n}());\nexport { EventWindow };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the header rows related configurations on timeline views.\n */\nvar HeaderRows = /** @class */ (function (_super) {\n __extends(HeaderRows, _super);\n function HeaderRows() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], HeaderRows.prototype, \"option\", void 0);\n __decorate([\n Property()\n ], HeaderRows.prototype, \"template\", void 0);\n return HeaderRows;\n}(ChildProperty));\nexport { HeaderRows };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, createElement, remove, closest, addClass, removeClass, extend, append } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { Calendar } from '@syncfusion/ej2-calendars';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\n/**\n * Header module\n */\nvar HeaderRenderer = /** @class */ (function () {\n function HeaderRenderer(parent) {\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.renderHeader();\n this.addEventListener();\n }\n HeaderRenderer.prototype.addEventListener = function () {\n this.parent.on(events.documentClick, this.closeHeaderPopup, this);\n };\n HeaderRenderer.prototype.removeEventListener = function () {\n this.parent.off(events.documentClick, this.closeHeaderPopup);\n };\n HeaderRenderer.prototype.closeHeaderPopup = function (e) {\n var closestEle = closest(e.event.target, '.e-date-range,.e-header-popup,.e-day,.e-selected');\n var closestPop = closest(e.event.target, '.e-hor-nav,.e-toolbar-pop');\n var contentWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.isAdaptive) {\n if (!isNullOrUndefined(closestPop) && (closestPop.classList.contains('e-toolbar-pop') ||\n closestPop.classList.contains('e-hor-nav')) && !(closestPop.classList.contains('e-hor-nav') &&\n this.element.querySelector('.e-toolbar-pop').classList.contains(cls.POPUP_OPEN))) {\n addClass([contentWrap], cls.SCROLL_HIDDEN);\n }\n else {\n removeClass([contentWrap], cls.SCROLL_HIDDEN);\n var popupEle = this.element.querySelector('.e-toolbar-pop');\n if (!isNullOrUndefined(popupEle)) {\n var popupObj = popupEle.ej2_instances[0];\n if (popupObj && !(!isNullOrUndefined(closestPop) && closestPop.classList.contains('e-hor-nav') &&\n popupEle.classList.contains(cls.POPUP_OPEN))) {\n popupObj.hide();\n }\n }\n }\n }\n if (!isNullOrUndefined(closestEle)) {\n return;\n }\n this.hideHeaderPopup();\n };\n HeaderRenderer.prototype.hideHeaderPopup = function () {\n if (this.headerPopup) {\n this.headerPopup.hide();\n }\n };\n HeaderRenderer.prototype.renderHeader = function () {\n this.element = createElement('div', { className: cls.TOOLBAR_CONTAINER });\n var toolbarEle = createElement('div', { className: cls.HEADER_TOOLBAR });\n this.element.appendChild(toolbarEle);\n this.parent.element.insertBefore(this.element, this.parent.element.firstElementChild);\n this.renderToolbar();\n };\n HeaderRenderer.prototype.renderToolbar = function () {\n var _this = this;\n var items = this.getItems();\n this.parent.trigger(events.actionBegin, { requestType: 'toolbarItemRendering', items: items }, function (args) {\n _this.toolbarObj = new Toolbar({\n items: args.items,\n overflowMode: 'Popup',\n clicked: _this.toolbarClickHandler.bind(_this),\n enableRtl: _this.parent.enableRtl,\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n locale: _this.parent.locale\n });\n _this.toolbarObj.appendTo(_this.parent.element.querySelector('.' + cls.HEADER_TOOLBAR));\n var prevNavEle = _this.toolbarObj.element.querySelector('.e-prev');\n if (prevNavEle) {\n prevNavEle.firstElementChild.setAttribute('title', _this.l10n.getConstant('previous'));\n }\n var nextNavEle = _this.toolbarObj.element.querySelector('.e-next');\n if (nextNavEle) {\n nextNavEle.firstElementChild.setAttribute('title', _this.l10n.getConstant('next'));\n }\n _this.updateAddIcon();\n _this.updateActiveView();\n _this.parent.trigger(events.actionComplete, { requestType: 'toolBarItemRendered', items: _this.toolbarObj.items });\n });\n };\n HeaderRenderer.prototype.updateItems = function () {\n var _this = this;\n if (this.toolbarObj) {\n var items = this.getItems();\n this.parent.trigger(events.actionBegin, { requestType: 'toolbarItemRendering', items: items }, function (args) {\n _this.toolbarObj.items = args.items;\n _this.toolbarObj.dataBind();\n _this.parent.trigger(events.actionComplete, { requestType: 'toolBarItemRendered', items: _this.toolbarObj.items });\n });\n }\n };\n HeaderRenderer.prototype.getPopUpRelativeElement = function () {\n if (this.parent.isAdaptive) {\n return this.toolbarObj.element;\n }\n return this.element.querySelector('.e-date-range');\n };\n HeaderRenderer.prototype.setDayOfWeek = function (index) {\n if (this.headerCalendar) {\n this.headerCalendar.firstDayOfWeek = index;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.setCalendarDate = function (date) {\n if (this.headerCalendar) {\n this.headerCalendar.value = date;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.setCalendarMinMaxDate = function () {\n if (this.headerCalendar) {\n this.headerCalendar.min = this.parent.minDate;\n this.headerCalendar.max = this.parent.maxDate;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.getCalendarView = function () {\n if (['Month', 'MonthAgenda', 'TimelineMonth'].indexOf(this.parent.currentView) > -1) {\n return 'Year';\n }\n else if (['Year', 'TimelineYear'].indexOf(this.parent.currentView) > -1) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n HeaderRenderer.prototype.setCalendarView = function () {\n if (this.headerCalendar) {\n var calendarView = this.getCalendarView();\n this.headerCalendar.depth = calendarView;\n this.headerCalendar.start = calendarView;\n this.headerCalendar.refresh();\n }\n };\n HeaderRenderer.prototype.updateActiveView = function () {\n var selEle = [].slice.call(this.toolbarObj.element.querySelectorAll('.e-views'));\n removeClass(selEle, ['e-active-view']);\n if (selEle.length > 0 && selEle[this.parent.viewIndex]) {\n addClass([selEle[this.parent.viewIndex]], ['e-active-view']);\n }\n };\n HeaderRenderer.prototype.updateDateRange = function (date) {\n var selEle = this.toolbarObj.element.querySelector('.e-date-range');\n if (!selEle) {\n return;\n }\n var textEle = selEle.querySelector('.e-tbar-btn-text');\n if (this.parent.activeViewOptions.dateRangeTemplate) {\n textEle.textContent = '';\n var args = {\n startDate: this.parent.activeView.getStartDate(),\n endDate: this.parent.activeView.getEndDate(), currentView: this.parent.currentView\n };\n var viewName = this.parent.activeViewOptions.dateRangeTemplateName;\n var templateId = this.parent.element.id + '_' + viewName + 'dateRangeTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateRangeTemplate()(args, this.parent, 'dateRangeTemplate', templateId, false));\n append(dateTemplate, textEle);\n }\n else {\n var text = this.parent.activeView.getDateRangeText(date);\n selEle.setAttribute('aria-label', text);\n textEle.textContent = text;\n }\n this.refresh();\n };\n HeaderRenderer.prototype.refresh = function () {\n if (this.toolbarObj) {\n this.toolbarObj.refreshOverflow();\n }\n };\n HeaderRenderer.prototype.updateAddIcon = function () {\n var addEle = this.toolbarObj.element.querySelector('.e-add');\n if (addEle) {\n if (!this.parent.eventSettings.allowAdding) {\n addClass([addEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([addEle], cls.HIDDEN_CLASS);\n }\n }\n };\n HeaderRenderer.prototype.getDateRangeText = function () {\n var dateString = this.parent.globalize.formatDate(this.parent.selectedDate, {\n format: 'MMMM y', calendar: this.parent.getCalendarMode()\n });\n return util.capitalizeFirstWord(dateString, 'single');\n };\n HeaderRenderer.prototype.getItems = function () {\n var items = [];\n items.push({\n align: 'Left', prefixIcon: 'e-icon-prev', tooltipText: 'Previous', overflow: 'Show',\n cssClass: 'e-prev', htmlAttributes: { 'aria-label': 'previous period', 'role': 'navigation' }\n });\n items.push({\n align: 'Left', prefixIcon: 'e-icon-next', tooltipText: 'Next', overflow: 'Show',\n cssClass: 'e-next', htmlAttributes: { 'aria-label': 'next period', 'role': 'navigation' }\n });\n items.push({\n align: 'Left', text: this.getDateRangeText(), suffixIcon: 'e-icon-down-arrow', cssClass: 'e-date-range',\n overflow: 'Show',\n htmlAttributes: { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title', 'role': 'navigation' }\n });\n if (this.parent.isAdaptive || this.parent.enableAdaptiveUI) {\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-add',\n text: this.l10n.getConstant('newEvent'), cssClass: 'e-add', overflow: 'Show'\n });\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-today',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n });\n }\n else {\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-day',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n });\n if (this.parent.views.length > 1) {\n items.push({ align: 'Right', type: 'Separator', cssClass: 'e-schedule-seperator' });\n }\n }\n if (this.parent.views.length > 1) {\n for (var _i = 0, _a = this.parent.views; _i < _a.length; _i++) {\n var item = _a[_i];\n items.push(this.getItemObject(item));\n }\n }\n return items;\n };\n HeaderRenderer.prototype.getItemObject = function (item) {\n var viewName;\n var displayName;\n if (typeof (item) === 'string') {\n viewName = item.toLowerCase();\n displayName = null;\n }\n else {\n viewName = item.option.toLowerCase();\n displayName = item.displayName;\n }\n var view;\n var orientationClass;\n var isItemInsidePopup = this.parent.isAdaptive || this.parent.enableAdaptiveUI;\n switch (viewName) {\n case 'day':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-day',\n text: displayName || this.l10n.getConstant('day'), cssClass: 'e-views e-day'\n };\n break;\n case 'week':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-week',\n text: displayName || this.l10n.getConstant('week'), cssClass: 'e-views e-week'\n };\n break;\n case 'workweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-workweek',\n text: displayName || this.l10n.getConstant('workWeek'), cssClass: 'e-views e-work-week'\n };\n break;\n case 'month':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-month',\n text: displayName || this.l10n.getConstant('month'), cssClass: 'e-views e-month'\n };\n break;\n case 'year':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-year',\n text: displayName || this.l10n.getConstant('year'), cssClass: 'e-views e-year'\n };\n break;\n case 'agenda':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-agenda',\n text: displayName || this.l10n.getConstant('agenda'), cssClass: 'e-views e-agenda'\n };\n break;\n case 'monthagenda':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-month-agenda',\n text: displayName || this.l10n.getConstant('monthAgenda'), cssClass: 'e-views e-month-agenda'\n };\n break;\n case 'timelineday':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-day',\n text: displayName || this.l10n.getConstant('timelineDay'), cssClass: 'e-views e-timeline-day'\n };\n break;\n case 'timelineweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-week',\n text: displayName || this.l10n.getConstant('timelineWeek'), cssClass: 'e-views e-timeline-week'\n };\n break;\n case 'timelineworkweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-workweek',\n text: displayName || this.l10n.getConstant('timelineWorkWeek'), cssClass: 'e-views e-timeline-work-week'\n };\n break;\n case 'timelinemonth':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-month',\n text: displayName || this.l10n.getConstant('timelineMonth'), cssClass: 'e-views e-timeline-month'\n };\n break;\n case 'timelineyear':\n orientationClass = (item.orientation === 'Vertical') ? 'vertical' : 'horizontal';\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-year-' + orientationClass,\n text: displayName || this.l10n.getConstant('timelineYear'), cssClass: 'e-views e-timeline-year'\n };\n break;\n }\n return view;\n };\n HeaderRenderer.prototype.renderHeaderPopup = function () {\n var headerPopupEle = createElement('div', { className: cls.HEADER_POPUP_CLASS });\n var headerCalendarEle = createElement('div', { className: cls.HEADER_CALENDAR_CLASS });\n headerPopupEle.appendChild(headerCalendarEle);\n this.element.appendChild(headerPopupEle);\n this.headerPopup = new Popup(headerPopupEle, {\n actionOnScroll: 'hide',\n targetType: 'relative',\n relateTo: this.getPopUpRelativeElement(),\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl\n });\n var calendarView = this.getCalendarView();\n var isDisplayDate = this.parent.currentView === 'Month' &&\n !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && !this.hasSelectedDate();\n this.headerCalendar = new Calendar({\n value: isDisplayDate ? this.parent.activeViewOptions.displayDate : this.parent.selectedDate,\n min: this.parent.minDate,\n max: this.parent.maxDate,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n depth: calendarView,\n start: calendarView,\n calendarMode: this.parent.calendarMode,\n change: this.calendarChange.bind(this)\n });\n this.setCalendarTimezone();\n this.headerCalendar.appendTo(headerCalendarEle);\n this.headerPopup.hide();\n };\n HeaderRenderer.prototype.calendarChange = function (args) {\n if (args.value.getTime() !== this.parent.selectedDate.getTime()) {\n var calendarDate = util.resetTime(new Date(args.value));\n this.parent.changeDate(calendarDate);\n }\n this.headerPopup.hide();\n };\n HeaderRenderer.prototype.setCalendarTimezone = function () {\n if (this.headerCalendar) {\n this.headerCalendar.timezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();\n }\n };\n HeaderRenderer.prototype.calculateViewIndex = function (args) {\n var target = closest(args.originalEvent.target, '.e-views');\n var views = [].slice.call(this.element.querySelectorAll('.e-views'));\n return views.indexOf(target);\n };\n HeaderRenderer.prototype.toolbarClickHandler = function (args) {\n if (!args.item) {\n return;\n }\n var strClass = args.item.cssClass.replace('e-views ', '');\n var data;\n var isSameTime;\n var currentTime;\n switch (strClass) {\n case 'e-date-range':\n if (!this.headerPopup) {\n this.renderHeaderPopup();\n }\n if (this.headerPopup.element.classList.contains(cls.POPUP_OPEN)) {\n this.headerPopup.hide();\n }\n else {\n this.headerPopup.show();\n }\n break;\n case 'e-day':\n this.parent.changeView('Day', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-week':\n this.parent.changeView('Week', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-work-week':\n this.parent.changeView('WorkWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-month':\n this.parent.changeView('Month', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-year':\n this.parent.changeView('Year', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-agenda':\n this.parent.changeView('Agenda', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-month-agenda':\n this.parent.changeView('MonthAgenda', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-day':\n this.parent.changeView('TimelineDay', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-week':\n this.parent.changeView('TimelineWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-work-week':\n this.parent.changeView('TimelineWorkWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-month':\n this.parent.changeView('TimelineMonth', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-year':\n this.parent.changeView('TimelineYear', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-today':\n currentTime = util.resetTime(this.parent.getCurrentTime());\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda' || !this.parent.isSelectedDate(currentTime) ||\n this.parent.currentView === 'Month' && this.parent.activeViewOptions.displayDate && !this.hasSelectedDate() &&\n util.resetTime(this.parent.activeViewOptions.displayDate) !== currentTime || this.parent.currentView === 'Month' &&\n this.parent.activeViewOptions.numberOfWeeks > 0 && !this.hasSelectedDate()\n && util.resetTime(util.firstDateOfMonth(this.parent.selectedDate)) !== currentTime) {\n this.parent.changeDate(currentTime, args.originalEvent);\n }\n break;\n case 'e-prev':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), args.originalEvent);\n break;\n case 'e-next':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), args.originalEvent);\n break;\n case 'e-add':\n isSameTime = this.parent.activeCellsData.startTime.getTime() === this.parent.activeCellsData.endTime.getTime();\n if (this.parent.activeCellsData && !isSameTime) {\n data = this.parent.activeCellsData;\n }\n else {\n var interval = this.parent.activeViewOptions.timeScale.interval;\n var slotCount = this.parent.activeViewOptions.timeScale.slotCount;\n var msInterval = (interval * util.MS_PER_MINUTE) / slotCount;\n var startTime = new Date(this.parent.selectedDate.getTime());\n var currentTime_1 = this.parent.getCurrentTime();\n startTime.setHours(currentTime_1.getHours(), (Math.round(startTime.getMinutes() / msInterval) * msInterval), 0);\n var endTime = new Date(new Date(startTime.getTime()).setMilliseconds(startTime.getMilliseconds() + msInterval));\n data = { startTime: startTime, endTime: endTime, isAllDay: false };\n }\n this.parent.eventWindow.openEditor(extend(data, { cancel: false, event: args.originalEvent }), 'Add');\n break;\n }\n if (isNullOrUndefined(this.toolbarObj)) {\n return;\n }\n var toolbarPopUp = this.toolbarObj.element.querySelector('.e-toolbar-pop');\n if (toolbarPopUp && args.item.type !== 'Input') {\n toolbarPopUp.ej2_instances[0].hide({ name: 'SlideUp', duration: 100 });\n }\n };\n HeaderRenderer.prototype.hasSelectedDate = function () {\n var selectedTime = util.resetTime(this.parent.selectedDate).getTime();\n return selectedTime >= this.parent.activeView.getStartDate().getTime() &&\n selectedTime <= this.parent.activeView.getEndDate().getTime();\n };\n HeaderRenderer.prototype.getHeaderElement = function () {\n return this.toolbarObj.element;\n };\n HeaderRenderer.prototype.updateHeaderItems = function (classType) {\n var prevNavEle = this.toolbarObj.element.querySelector('.e-prev');\n var nextNavEle = this.toolbarObj.element.querySelector('.e-next');\n var dateRangeEle = this.toolbarObj.element.querySelector('.e-date-range');\n if (prevNavEle) {\n if (classType === 'add') {\n addClass([prevNavEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([prevNavEle], cls.HIDDEN_CLASS);\n }\n }\n if (nextNavEle) {\n if (classType === 'add') {\n addClass([nextNavEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([nextNavEle], cls.HIDDEN_CLASS);\n }\n }\n if (dateRangeEle) {\n if (classType === 'add') {\n addClass([dateRangeEle], cls.TEXT_ELLIPSIS);\n }\n else {\n removeClass([dateRangeEle], cls.TEXT_ELLIPSIS);\n }\n }\n };\n HeaderRenderer.prototype.previousNextIconHandler = function () {\n var dates = (this.parent.currentView === 'Agenda' ?\n [this.parent.getCurrentViewDates()[0]] : this.parent.getCurrentViewDates());\n var prevNavEle = this.toolbarObj.element.querySelector('.' + cls.PREVIOUS_DATE_CLASS);\n var nextNavEle = this.toolbarObj.element.querySelector('.' + cls.NEXT_DATE_CLASS);\n var firstDate = new Date(dates[0].getTime());\n var lastDate = new Date(dates[dates.length - 1].getTime());\n if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {\n firstDate = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.firstDayOfWeek);\n lastDate = util.addDays(firstDate, 7 * this.parent.activeViewOptions.interval);\n }\n else if (this.parent.currentView === 'Month') {\n var isCustomMonth = !isNullOrUndefined(this.parent.activeViewOptions.displayDate) ||\n this.parent.activeViewOptions.numberOfWeeks > 0;\n firstDate = isCustomMonth ? this.parent.activeView.getStartDate() : util.firstDateOfMonth(this.parent.selectedDate);\n lastDate = isCustomMonth ? this.parent.activeView.getEndDate() :\n util.lastDateOfMonth(util.addMonths(firstDate, this.parent.activeViewOptions.interval - 1));\n }\n if (!isNullOrUndefined(prevNavEle)) {\n this.toolbarObj.enableItems(prevNavEle, firstDate > util.resetTime(this.parent.minDate));\n }\n if (!isNullOrUndefined(nextNavEle)) {\n this.toolbarObj.enableItems(nextNavEle, lastDate < util.resetTime(this.parent.maxDate));\n }\n this.setCalendarMinMaxDate();\n };\n HeaderRenderer.prototype.getModuleName = function () {\n return 'headerbar';\n };\n HeaderRenderer.prototype.destroy = function () {\n if (this.headerPopup && !this.headerPopup.isDestroyed) {\n this.headerPopup.destroy();\n this.headerPopup = null;\n }\n if (this.headerCalendar && !this.headerCalendar.isDestroyed) {\n this.headerCalendar.destroy();\n this.headerCalendar = null;\n }\n if (this.toolbarObj && !this.toolbarObj.isDestroyed) {\n this.toolbarObj.destroy();\n this.removeEventListener();\n remove(this.element);\n this.toolbarObj = null;\n }\n this.element = null;\n this.parent = null;\n this.l10n = null;\n };\n return HeaderRenderer;\n}());\nexport { HeaderRenderer };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the configuration of options related to timescale on scheduler.\n */\nvar TimeScale = /** @class */ (function (_super) {\n __extends(TimeScale, _super);\n function TimeScale() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], TimeScale.prototype, \"enable\", void 0);\n __decorate([\n Property(60)\n ], TimeScale.prototype, \"interval\", void 0);\n __decorate([\n Property(2)\n ], TimeScale.prototype, \"slotCount\", void 0);\n __decorate([\n Property()\n ], TimeScale.prototype, \"minorSlotTemplate\", void 0);\n __decorate([\n Property()\n ], TimeScale.prototype, \"majorSlotTemplate\", void 0);\n return TimeScale;\n}(ChildProperty));\nexport { TimeScale };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the configuration of working hours related options of scheduler.\n */\nvar WorkHours = /** @class */ (function (_super) {\n __extends(WorkHours, _super);\n function WorkHours() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], WorkHours.prototype, \"highlight\", void 0);\n __decorate([\n Property('09:00')\n ], WorkHours.prototype, \"start\", void 0);\n __decorate([\n Property('18:00')\n ], WorkHours.prototype, \"end\", void 0);\n return WorkHours;\n}(ChildProperty));\nexport { WorkHours };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { closest, EventHandler, isNullOrUndefined, formatUnit, append } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, createElement, remove, extend } from '@syncfusion/ej2-base';\nimport { Dialog, Popup, isCollide } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { FieldValidator } from './form-validator';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\nvar EVENT_FIELD = 'e-field';\n/**\n * Quick Popups interactions\n */\nvar QuickPopups = /** @class */ (function () {\n function QuickPopups(parent) {\n this.isMultipleEventSelect = false;\n this.isCrudAction = false;\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.fieldValidator = new FieldValidator();\n this.render();\n this.addEventListener();\n }\n QuickPopups.prototype.render = function () {\n this.renderQuickPopup();\n this.renderMorePopup();\n this.renderQuickDialog();\n };\n QuickPopups.prototype.renderQuickPopup = function () {\n var quickPopupWrapper = createElement('div', { className: cls.POPUP_WRAPPER_CLASS + ' e-popup-close' });\n if (this.parent.isAdaptive) {\n document.body.appendChild(quickPopupWrapper);\n addClass([quickPopupWrapper], cls.DEVICE_CLASS);\n }\n else {\n this.parent.element.appendChild(quickPopupWrapper);\n }\n this.quickPopup = new Popup(quickPopupWrapper, {\n targetType: (this.parent.isAdaptive ? 'container' : 'relative'),\n enableRtl: this.parent.enableRtl,\n open: this.quickPopupOpen.bind(this),\n close: this.quickPopupClose.bind(this),\n hideAnimation: (this.parent.isAdaptive ? { name: 'ZoomOut' } : { name: 'FadeOut', duration: 150 }),\n showAnimation: (this.parent.isAdaptive ? { name: 'ZoomIn' } : { name: 'FadeIn', duration: 150 }),\n collision: (this.parent.isAdaptive ? { X: 'fit', Y: 'fit' } :\n (this.parent.enableRtl ? { X: 'flip', Y: 'fit' } : { X: 'none', Y: 'fit' })),\n position: (this.parent.isAdaptive || this.parent.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }),\n viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),\n zIndex: (this.parent.isAdaptive ? 1004 : 3)\n });\n };\n QuickPopups.prototype.renderMorePopup = function () {\n var moreEventPopup = \"
\" +\n (\"
\") +\n (\"
\") +\n (\"
\");\n var moreEventWrapper = createElement('div', {\n className: cls.MORE_POPUP_WRAPPER_CLASS + ' e-popup-close',\n innerHTML: moreEventPopup\n });\n if (this.parent.isAdaptive) {\n document.body.appendChild(moreEventWrapper);\n addClass([moreEventWrapper], cls.DEVICE_CLASS);\n }\n else {\n this.parent.element.appendChild(moreEventWrapper);\n }\n this.morePopup = new Popup(moreEventWrapper, {\n targetType: (this.parent.isAdaptive ? 'container' : 'relative'),\n enableRtl: this.parent.enableRtl,\n hideAnimation: { name: 'ZoomOut', duration: 300 },\n showAnimation: { name: 'ZoomIn', duration: 300 },\n open: this.morePopupOpen.bind(this),\n close: this.morePopupClose.bind(this),\n collision: (this.parent.isAdaptive ? { X: 'fit', Y: 'fit' } :\n (this.parent.enableRtl ? { X: 'flip', Y: 'fit' } : { X: 'flip', Y: 'flip' })),\n viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),\n zIndex: (this.parent.isAdaptive ? 1002 : 2)\n });\n var closeButton = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CLOSE_CLASS);\n this.renderButton('e-round', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeButton, this.closeClick);\n EventHandler.add(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS), 'click', this.navigationClick, this);\n };\n QuickPopups.prototype.renderQuickDialog = function () {\n var buttonModel = [\n { buttonModel: { cssClass: 'e-quick-alertok e-flat', isPrimary: true }, click: this.dialogButtonClick.bind(this) },\n { buttonModel: { cssClass: 'e-quick-alertcancel e-flat', isPrimary: false }, click: this.dialogButtonClick.bind(this) },\n {\n buttonModel: { cssClass: 'e-quick-dialog-cancel e-disable e-flat', isPrimary: false },\n click: this.dialogButtonClick.bind(this)\n }\n ];\n if (this.parent.eventSettings.editFollowingEvents) {\n var followingSeriesButton = {\n buttonModel: { cssClass: 'e-quick-alertfollowing e-flat', isPrimary: false }, click: this.dialogButtonClick.bind(this)\n };\n buttonModel.splice(1, 0, followingSeriesButton);\n }\n this.quickDialog = new Dialog({\n animationSettings: { effect: 'Zoom' },\n buttons: buttonModel,\n cssClass: cls.QUICK_DIALOG_CLASS,\n closeOnEscape: true,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeClose: this.beforeQuickDialogClose.bind(this),\n isModal: true,\n position: { X: 'center', Y: 'center' },\n showCloseIcon: true,\n target: document.body,\n visible: false,\n width: 'auto'\n });\n var dialogElement = createElement('div', { id: this.parent.element.id + 'QuickDialog' });\n this.parent.element.appendChild(dialogElement);\n this.quickDialog.appendTo(dialogElement);\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.setAttribute('aria-label', this.l10n.getConstant('occurrence'));\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.setAttribute('aria-label', this.l10n.getConstant('series'));\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n if (this.quickDialog.element.querySelector('.e-dlg-closeicon-btn')) {\n this.quickDialog.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));\n }\n };\n // eslint-disable-next-line max-len\n QuickPopups.prototype.renderButton = function (className, iconName, isDisabled, element, clickEvent) {\n var buttonObj = new Button({\n cssClass: className,\n disabled: isDisabled,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n iconCss: iconName\n });\n buttonObj.appendTo(element);\n EventHandler.add(element, 'click', clickEvent, this);\n removeClass([element], cls.ICON);\n };\n QuickPopups.prototype.quickDialogClass = function (action) {\n var classList = [\n cls.QUICK_DIALOG_OCCURRENCE_CLASS, cls.QUICK_DIALOG_SERIES_CLASS, cls.QUICK_DIALOG_DELETE_CLASS,\n cls.QUICK_DIALOG_CANCEL_CLASS, cls.QUICK_DIALOG_ALERT_BTN_CLASS, cls.DISABLE_CLASS\n ];\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n var followingEventButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_FOLLOWING);\n removeClass([okButton, cancelButton], classList);\n addClass([this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_CANCEL_CLASS)], cls.DISABLE_CLASS);\n if (this.parent.eventSettings.editFollowingEvents) {\n addClass([followingEventButton], cls.DISABLE_CLASS);\n removeClass([this.quickDialog.element], cls.FOLLOWING_EVENTS_DIALOG);\n }\n switch (action) {\n case 'Recurrence':\n addClass([okButton], cls.QUICK_DIALOG_OCCURRENCE_CLASS);\n addClass([cancelButton], cls.QUICK_DIALOG_SERIES_CLASS);\n if (this.parent.eventSettings.editFollowingEvents) {\n removeClass([followingEventButton], cls.DISABLE_CLASS);\n addClass([this.quickDialog.element], cls.FOLLOWING_EVENTS_DIALOG);\n addClass([followingEventButton], cls.QUICK_DIALOG_FOLLOWING_EVENTS_CLASS);\n }\n break;\n case 'Delete':\n addClass([okButton], cls.QUICK_DIALOG_DELETE_CLASS);\n addClass([cancelButton], cls.QUICK_DIALOG_CANCEL_CLASS);\n break;\n case 'Alert':\n addClass([okButton], [cls.QUICK_DIALOG_ALERT_OK, cls.QUICK_DIALOG_ALERT_BTN_CLASS]);\n addClass([cancelButton], [cls.QUICK_DIALOG_ALERT_CANCEL, cls.DISABLE_CLASS]);\n break;\n }\n };\n QuickPopups.prototype.applyFormValidation = function () {\n var form = this.quickPopup.element.querySelector('.' + cls.FORM_CLASS);\n var rules = {};\n rules[this.parent.eventSettings.fields.subject.name] = this.parent.eventSettings.fields.subject.validation;\n this.fieldValidator.renderFormValidator(form, rules, this.quickPopup.element, this.parent.locale);\n };\n QuickPopups.prototype.openRecurrenceAlert = function () {\n var editDeleteOnly = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (editDeleteOnly) {\n editDeleteOnly.innerHTML = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteEvent' : 'editEvent');\n editDeleteOnly.setAttribute('aria-label', editDeleteOnly.innerHTML);\n }\n var editFollowingEventsOnly = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_FOLLOWING);\n if (editFollowingEventsOnly) {\n editFollowingEventsOnly.innerHTML = this.l10n.getConstant('editFollowingEvent');\n editFollowingEventsOnly.setAttribute('aria-label', editFollowingEventsOnly.innerHTML);\n }\n var editDeleteSeries = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (editDeleteSeries) {\n editDeleteSeries.innerHTML = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteSeries' : 'editSeries');\n editDeleteSeries.setAttribute('aria-label', editDeleteSeries.innerHTML);\n }\n this.quickDialog.content = this.l10n.getConstant('editContent');\n this.quickDialog.header = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteTitle' : 'editTitle');\n this.quickDialogClass('Recurrence');\n this.showQuickDialog('RecurrenceAlert');\n };\n QuickPopups.prototype.openRecurrenceValidationAlert = function (type) {\n this.quickDialogClass('Alert');\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n okButton.innerHTML = this.l10n.getConstant('ok');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n this.quickDialog.header = this.l10n.getConstant('alert');\n var dialogCancel;\n switch (type) {\n case 'wrongPattern':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('wrongPattern');\n break;\n case 'createError':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('createError');\n break;\n case 'sameDayAlert':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('sameDayAlert');\n break;\n case 'seriesChangeAlert':\n dialogCancel = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_CANCEL_CLASS);\n removeClass([cancelButton, dialogCancel], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('seriesChangeAlert');\n okButton.innerHTML = this.l10n.getConstant('yes');\n cancelButton.innerHTML = this.l10n.getConstant('no');\n dialogCancel.innerHTML = this.l10n.getConstant('cancel');\n break;\n case 'occurrenceAlert':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('occurenceAlert');\n break;\n }\n if ((!this.parent.enableRecurrenceValidation && type === 'wrongPattern') || this.parent.enableRecurrenceValidation) {\n this.showQuickDialog('RecurrenceValidationAlert');\n }\n };\n QuickPopups.prototype.openDeleteAlert = function () {\n if (this.parent.activeViewOptions.readonly) {\n return;\n }\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.innerHTML = this.l10n.getConstant('delete');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n this.quickDialog.content = (this.parent.activeEventData.event.length > 1) ?\n this.l10n.getConstant('deleteMultipleContent') : this.l10n.getConstant('deleteContent');\n this.quickDialog.header = (this.parent.activeEventData.event.length > 1) ?\n this.l10n.getConstant('deleteMultipleEvent') : this.l10n.getConstant('deleteEvent');\n this.quickDialogClass('Delete');\n this.showQuickDialog('DeleteAlert');\n };\n QuickPopups.prototype.openValidationError = function (type, eventData) {\n this.quickDialog.header = this.l10n.getConstant('alert');\n this.quickDialog.content = this.l10n.getConstant(type);\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.innerHTML = this.l10n.getConstant('ok');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n okButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n this.quickDialogClass('Alert');\n this.showQuickDialog('ValidationAlert', eventData);\n };\n QuickPopups.prototype.showQuickDialog = function (popupType, eventData) {\n var _this = this;\n this.quickDialog.dataBind();\n var eventProp = {\n type: popupType, cancel: false, element: this.quickDialog.element,\n data: extend({}, (eventData || this.parent.activeEventData.event), null, true)\n };\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (!popupArgs.cancel) {\n _this.quickDialog.show();\n }\n });\n };\n QuickPopups.prototype.createMoreEventList = function (eventCollection, groupOrder, groupIndex) {\n var _this = this;\n var fields = this.parent.eventFields;\n var moreEventContentEle = createElement('div', { className: cls.MORE_EVENT_CONTENT_CLASS });\n var moreEventWrapperEle = createElement('div', { className: cls.MORE_EVENT_WRAPPER_CLASS });\n if (eventCollection.length === 0) {\n moreEventWrapperEle = createElement('div', {\n className: cls.MORE_EVENT_CONTENT_CLASS,\n innerHTML: this.l10n.getConstant('emptyContainer')\n });\n }\n else {\n var _loop_1 = function (eventData) {\n var eventText = (eventData[fields.subject] || this_1.parent.eventSettings.fields.subject.default\n || this_1.parent.localeObj.getConstant('addTitle'));\n var appointmentElement = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': '' + eventData[fields.id],\n 'data-guid': eventData.Guid, 'role': 'button', 'tabindex': '0',\n 'aria-disabled': this_1.parent.eventBase.getReadonlyAttribute(eventData),\n 'aria-label': this_1.parent.getAnnouncementString(eventData)\n }\n });\n var templateElement = void 0;\n if (!isNullOrUndefined(this_1.parent.activeViewOptions.eventTemplate)) {\n var tempId = this_1.parent.element.id + '_' + this_1.parent.activeViewOptions.eventTemplateName + 'eventTemplate';\n templateElement = this_1.parent.getAppointmentTemplate()(eventData, this_1.parent, 'eventTemplate', tempId, false);\n append(templateElement, appointmentElement);\n }\n else {\n appointmentElement.appendChild(createElement('div', { className: cls.SUBJECT_CLASS }));\n this_1.parent.sanitize(eventText, appointmentElement.firstElementChild);\n }\n if (!isNullOrUndefined(groupIndex)) {\n appointmentElement.setAttribute('data-group-index', groupIndex);\n }\n if (!isNullOrUndefined(eventData[fields.recurrenceRule])) {\n var iconClass = (eventData[fields.id] === eventData[fields.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appointmentElement.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n var args = {\n data: extend({}, eventData, null, true),\n element: appointmentElement, cancel: false\n };\n this_1.parent.trigger(event.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n moreEventWrapperEle.appendChild(appointmentElement);\n var isPreventCrud = _this.parent.isAdaptive || _this.parent.currentView === 'Year';\n _this.parent.eventBase.wireAppointmentEvents(appointmentElement, eventData, isPreventCrud);\n _this.parent.eventBase.applyResourceColor(appointmentElement, eventData, 'backgroundColor', groupOrder);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {\n var eventData = eventCollection_1[_i];\n _loop_1(eventData);\n }\n }\n moreEventContentEle.appendChild(moreEventWrapperEle);\n return moreEventContentEle;\n };\n QuickPopups.prototype.tapHoldEventPopup = function (e) {\n var target = closest(e.target, '.' + cls.APPOINTMENT_CLASS);\n this.isMultipleEventSelect = false;\n this.parent.selectedElements = [];\n this.isMultipleEventSelect = true;\n this.parent.eventBase.getSelectedEventElements(target);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n var guid = target.getAttribute('data-guid');\n var eventObj = this.parent.eventBase.getEventByGuid(guid);\n if (isNullOrUndefined(eventObj)) {\n return;\n }\n var eventTitle = (eventObj[this.parent.eventFields.subject] || this.l10n.getConstant('noTitle'));\n var eventTemplate = \"
\" +\n (\"\") +\n (\"
\" + eventTitle + \"
\") +\n (\"\") +\n (\"
\");\n this.quickPopup.element.innerHTML = eventTemplate;\n var closeIcon = this.quickPopup.element.querySelector('.' + cls.CLOSE_CLASS);\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.closeClick);\n var readonly = this.parent.activeViewOptions.readonly || eventObj[this.parent.eventFields.isReadonly];\n var editAction = !this.parent.eventSettings.allowEditing || readonly;\n var deleteAction = !this.parent.eventSettings.allowDeleting || readonly;\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.EDIT_ICON_CLASS, editAction, editIcon, this.editClick);\n }\n var deleteIcon = this.quickPopup.element.querySelector('.' + cls.DELETE_CLASS);\n if (deleteIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.DELETE_ICON_CLASS, deleteAction, deleteIcon, this.deleteClick);\n }\n this.beforeQuickPopupOpen(target, this.parent.eventBase.getPageCoordinates(e));\n };\n QuickPopups.prototype.isCellBlocked = function (args) {\n var tempObj = {};\n tempObj[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n tempObj[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n tempObj[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var targetCell = args.element instanceof Array ? args.element[0] : args.element;\n var groupIndex = parseInt(targetCell.getAttribute('data-group-index'), 10);\n this.parent.resourceBase.setResourceValues(tempObj, isNaN(groupIndex) ? null : groupIndex);\n }\n return this.parent.eventBase.isBlockRange(tempObj);\n };\n QuickPopups.prototype.cellClick = function (args) {\n var date = new Date(args.startTime.getTime());\n if (!this.parent.showQuickInfo || !this.parent.eventSettings.allowAdding ||\n this.parent.currentView === 'MonthAgenda' || this.isCellBlocked(args) ||\n !this.parent.isMinMaxDate(new Date(date.setHours(0, 0, 0, 0)))) {\n this.quickPopupHide();\n return;\n }\n var targetEle = !isNullOrUndefined(args.event) ? args.event.target : args.element;\n if (this.parent.isAdaptive) {\n this.quickPopupHide();\n var newEventClone = this.parent.element.querySelector('.' + cls.NEW_EVENT_CLASS);\n if (isNullOrUndefined(newEventClone)) {\n newEventClone = createElement('div', {\n className: cls.NEW_EVENT_CLASS,\n innerHTML: \"
+ \" + this.l10n.getConstant('newEvent') + \"
\"\n });\n }\n var targetCell = closest(targetEle, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS);\n if (targetCell) {\n targetCell.appendChild(newEventClone);\n }\n return;\n }\n var target = closest(targetEle, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' +\n cls.HEADER_CELLS_CLASS);\n if (isNullOrUndefined(target) || targetEle.classList.contains(cls.MORE_INDICATOR_CLASS)) {\n return;\n }\n var isSameTarget = this.quickPopup.relateTo === target;\n if (isSameTarget && this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n var subjectElement_1 = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement_1) {\n subjectElement_1.focus();\n }\n return;\n }\n else if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\n }\n var temp = {};\n temp[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n temp[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n temp[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n var quickCellPopup = createElement('div', { className: cls.CELL_POPUP_CLASS });\n quickCellPopup.appendChild(this.getPopupHeader('Cell', temp));\n quickCellPopup.appendChild(this.getPopupContent('Cell', args, temp));\n quickCellPopup.appendChild(this.getPopupFooter('Cell', temp));\n var subjectElement = quickCellPopup.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement) {\n Input.createInput({ element: subjectElement, properties: { placeholder: this.l10n.getConstant('addTitle') } });\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.subject.default)) {\n subjectElement.value = this.parent.eventSettings.fields.subject.default;\n }\n var closeIcon = quickCellPopup.querySelector('.' + cls.CLOSE_CLASS);\n if (closeIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.popupClose);\n }\n var moreButton = quickCellPopup.querySelector('.' + cls.QUICK_POPUP_EVENT_DETAILS_CLASS);\n if (moreButton) {\n this.renderButton('e-flat', '', false, moreButton, this.detailsClick);\n }\n var saveButton = quickCellPopup.querySelector('.' + cls.EVENT_CREATE_CLASS);\n if (saveButton) {\n this.renderButton('e-flat e-primary', '', this.parent.activeViewOptions.readonly, saveButton, this.saveClick);\n }\n if (this.morePopup) {\n this.morePopup.hide();\n }\n this.quickPopup.content = quickCellPopup;\n this.quickPopup.relateTo = target;\n this.quickPopup.dataBind();\n this.beforeQuickPopupOpen(target, this.parent.eventBase.getPageCoordinates(args.event));\n };\n QuickPopups.prototype.isSameEventClick = function (events) {\n var isSameTarget = this.quickPopup.relateTo === closest(events.element, '.' + cls.APPOINTMENT_CLASS);\n if (isSameTarget && this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n editIcon.focus();\n }\n if (!this.parent.isAdaptive) {\n var editButton = this.quickPopup.element.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editButton) {\n editButton.focus();\n }\n }\n return true;\n }\n return false;\n };\n QuickPopups.prototype.isQuickTemplate = function (type) {\n return this.parent.quickInfoTemplates.templateType === 'Both' || this.parent.quickInfoTemplates.templateType === type;\n };\n QuickPopups.prototype.eventClick = function (events) {\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.close();\n }\n if (!this.parent.showQuickInfo) {\n return;\n }\n if (this.parent.isAdaptive && this.isMultipleEventSelect) {\n this.updateTapHoldEventPopup(closest(events.element, '.' + cls.APPOINTMENT_CLASS));\n }\n else {\n var isSameTarget = this.isSameEventClick(events);\n this.parent.selectedElements = [];\n if (isSameTarget) {\n return;\n }\n else if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\n }\n var eventData = events.event;\n var quickEventPopup = createElement('div', { className: cls.EVENT_POPUP_CLASS });\n quickEventPopup.appendChild(this.getPopupHeader('Event', eventData));\n quickEventPopup.appendChild(this.getPopupContent('Event', events, eventData));\n quickEventPopup.appendChild(this.getPopupFooter('Event', eventData));\n var readonly = this.parent.activeViewOptions.readonly || eventData[this.parent.eventFields.isReadonly];\n var editAction = !this.parent.eventSettings.allowEditing || readonly;\n var deleteAction = !this.parent.eventSettings.allowDeleting || readonly;\n var editIcon = quickEventPopup.querySelector('.' + cls.EDIT_CLASS);\n var buttonClass = 'e-flat e-round e-small';\n if (editIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.EDIT_ICON_CLASS, editAction, editIcon, this.editClick);\n }\n var deleteIcon = quickEventPopup.querySelector('.' + cls.DELETE_CLASS);\n if (deleteIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.DELETE_ICON_CLASS, deleteAction, deleteIcon, this.deleteClick);\n }\n var closeIcon = quickEventPopup.querySelector('.' + cls.CLOSE_CLASS);\n if (closeIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.popupClose);\n }\n var editButton = quickEventPopup.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editButton) {\n this.renderButton('e-flat e-primary', '', editAction, editButton, this.editClick);\n }\n var deleteButton = quickEventPopup.querySelector('.' + cls.DELETE_EVENT_CLASS);\n if (deleteButton) {\n this.renderButton('e-flat', '', deleteAction, deleteButton, this.deleteClick);\n }\n if (this.morePopup && !closest(events.element, '.' + cls.MORE_EVENT_WRAPPER_CLASS)) {\n this.morePopup.hide();\n }\n this.quickPopup.content = quickEventPopup;\n this.quickPopup.relateTo = this.parent.isAdaptive ? document.body :\n closest(events.element, '.' + cls.APPOINTMENT_CLASS);\n this.quickPopup.dataBind();\n this.beforeQuickPopupOpen(events.element, this.parent.eventBase.getPageCoordinates(events.originalEvent));\n }\n };\n QuickPopups.prototype.getPopupHeader = function (headerType, headerData) {\n var headerTemplate = createElement('div', { className: cls.POPUP_HEADER_CLASS });\n if (this.isQuickTemplate(headerType) && this.parent.quickInfoTemplates.header) {\n var headerArgs = extend({}, headerData, { elementType: headerType.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var headerTemp = [].slice.call(this.parent.getQuickInfoTemplatesHeader()(headerArgs, this.parent, 'header', templateId + '_headerTemplate', false));\n append([].slice.call(headerTemp), headerTemplate);\n }\n else {\n var header = void 0;\n var args = void 0;\n switch (headerType) {\n case 'Cell':\n header = \"
\");\n break;\n case 'Event':\n args = this.getFormattedString(headerData);\n header = \"
\" +\n (\"\") +\n (\"\") +\n (\"
\") +\n (\"
\");\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: header });\n if (headerType === 'Event') {\n var subjectText = templateWrapper.querySelector('.' + cls.SUBJECT_CLASS);\n this.parent.sanitize(args.eventSubject, subjectText);\n }\n append([].slice.call(templateWrapper.childNodes), headerTemplate);\n }\n return headerTemplate;\n };\n QuickPopups.prototype.getPopupContent = function (type, args, data) {\n var contentTemplate = createElement('div', { className: cls.POPUP_CONTENT_CLASS });\n if (this.isQuickTemplate(type) && this.parent.quickInfoTemplates.content) {\n var contentArgs = extend({}, data, { elementType: type.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var contentTemp = [].slice.call(this.parent.getQuickInfoTemplatesContent()(contentArgs, this.parent, 'content', templateId + '_contentTemplate', false));\n append([].slice.call(contentTemp), contentTemplate);\n }\n else {\n var content = void 0;\n var cellDetails = void 0;\n var argsData = void 0;\n var resourceText = this.getResourceText(args, type.toLowerCase());\n switch (type) {\n case 'Cell':\n cellDetails = this.getFormattedString(data);\n content = \"
\") +\n (\"
\" + cellDetails.details + \"
\") +\n ((this.parent.activeViewOptions.group.resources.length > 0 ? \"
\" +\n (\"
\") : '') + \"
\");\n break;\n case 'Event':\n argsData = this.getFormattedString(data);\n content = '
' + argsData.details + '
';\n if (data[this.parent.eventFields.recurrenceRule]) {\n content += '
' +\n this.getRecurrenceSummary(data) + '
';\n }\n content += '
';\n if (data[this.parent.eventFields.location]) {\n content += '
';\n }\n if (data[this.parent.eventFields.startTimezone] || data[this.parent.eventFields.endTimezone]) {\n content += '
' +\n this.getTimezone(data) + '
';\n }\n if (data[this.parent.eventFields.description]) {\n content += '
';\n }\n if (this.parent.resourceCollection.length > 0) {\n content += '
';\n }\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: content });\n if (data[this.parent.eventFields.location]) {\n var locationDetails = templateWrapper.querySelector('.' + cls.LOCATION_DETAILS_CLASS);\n if (!isNullOrUndefined(locationDetails)) {\n this.parent.sanitize(data[this.parent.eventFields.location], locationDetails);\n }\n }\n if (data[this.parent.eventFields.description]) {\n var descriptionDetails = templateWrapper.querySelector('.' + cls.DESCRIPTION_DETAILS_CLASS);\n if (!isNullOrUndefined(descriptionDetails)) {\n this.parent.sanitize(data[this.parent.eventFields.description], descriptionDetails);\n }\n }\n if (resourceText) {\n var resourceDetails = templateWrapper.querySelector('.' + cls.RESOURCE_DETAILS_CLASS);\n if (!isNullOrUndefined(resourceDetails)) {\n this.parent.sanitize(resourceText, resourceDetails);\n }\n }\n append([].slice.call(templateWrapper.childNodes), contentTemplate);\n }\n return contentTemplate;\n };\n QuickPopups.prototype.getPopupFooter = function (footerType, footerData) {\n var footerTemplate = createElement('div', { className: cls.POPUP_FOOTER_CLASS });\n if (this.isQuickTemplate(footerType) && this.parent.quickInfoTemplates.footer) {\n var footerArgs = extend({}, footerData, { elementType: footerType.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var footerTemp = [].slice.call(this.parent.getQuickInfoTemplatesFooter()(footerArgs, this.parent, 'footer', templateId + '_footerTemplate', false));\n append([].slice.call(footerTemp), footerTemplate);\n }\n else {\n var footer = void 0;\n switch (footerType) {\n case 'Cell':\n footer = \"\") +\n (\"\");\n break;\n case 'Event':\n footer = \"\" + (this.parent.isAdaptive ? '' : \"\") +\n (\"\"));\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: footer });\n append([].slice.call(templateWrapper.childNodes), footerTemplate);\n }\n return footerTemplate;\n };\n QuickPopups.prototype.getResourceText = function (args, type) {\n if (this.parent.resourceCollection.length === 0) {\n return null;\n }\n var resourceValue = '';\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n var resourceCollection_1 = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n var resourceData = resourceCollection_1.dataSource;\n if (type === 'event') {\n var eventData = args.event;\n var _loop_2 = function (data) {\n var resourceId = eventData[resourceCollection_1.field];\n if (resourceId instanceof Array) {\n if (resourceId.indexOf(data[resourceCollection_1.idField]) > -1) {\n var id_1 = resourceId[resourceId.indexOf(data[resourceCollection_1.idField])];\n var resource = resourceData.filter(function (e) {\n return e[resourceCollection_1.idField] === id_1;\n })[0];\n resourceValue += (resourceValue === '') ? resource[resourceCollection_1.textField] :\n ', ' + resource[resourceCollection_1.textField];\n }\n }\n else if (data[resourceCollection_1.idField] === resourceId) {\n resourceValue = data[resourceCollection_1.textField].toString();\n }\n };\n for (var _i = 0, resourceData_1 = resourceData; _i < resourceData_1.length; _i++) {\n var data = resourceData_1[_i];\n _loop_2(data);\n }\n }\n else {\n resourceValue = resourceData[0][resourceCollection_1.textField].toString();\n }\n }\n else {\n if (type === 'event') {\n var eventData = args.event;\n var resourceData = void 0;\n var lastResource_1;\n for (var i = this.parent.resourceBase.resourceCollection.length - 1; i >= 0; i--) {\n resourceData = eventData[this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)].field];\n if (!isNullOrUndefined(resourceData)) {\n lastResource_1 = this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (!Array.isArray(resourceData)) {\n resourceData = [resourceData];\n }\n var resNames_1 = [];\n var lastResourceData_1 = lastResource_1.dataSource;\n resourceData.forEach(function (value) {\n var text;\n var i = util.findIndexInData(lastResourceData_1, lastResource_1.idField, value);\n if (i > -1) {\n text = lastResourceData_1[parseInt(i.toString(), 10)][lastResource_1.textField];\n }\n if (text) {\n resNames_1.push(text);\n }\n });\n resourceValue = resNames_1.join(', ');\n }\n else {\n var argsData = args;\n var groupIndex = !isNullOrUndefined(argsData.groupIndex) ? argsData.groupIndex : 0;\n var resourceDetails = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex.toString(), 10)];\n resourceValue = resourceDetails.resourceData[resourceDetails.resource.textField];\n }\n }\n return resourceValue;\n };\n QuickPopups.prototype.getFormattedString = function (eventData) {\n var fields = this.parent.eventFields;\n var eventSubject = (eventData[fields.subject] || this.l10n.getConstant('noTitle'));\n var startDate = eventData[fields.startTime];\n var endDate = eventData[fields.endTime];\n var startDateDetails = this.getDateFormat(startDate, 'long');\n var endDateDetails = (eventData[fields.isAllDay] && endDate.getHours() === 0 && endDate.getMinutes() === 0) ?\n this.getDateFormat(util.addDays(new Date(endDate.getTime()), -1), 'long') :\n this.getDateFormat(endDate, 'long');\n var startTimeDetail = this.parent.getTimeString(startDate);\n var endTimeDetail = this.parent.getTimeString(endDate);\n var details = '';\n var spanLength = endDate.getDate() !== startDate.getDate() &&\n (endDate.getTime() - startDate.getTime()) / (60 * 60 * 1000) < 24 ? 1 : 0;\n if (eventData[fields.isAllDay]) {\n details = startDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';\n if (((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) / util.MS_PER_DAY) > 1) {\n details += ' - ' + endDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';\n }\n }\n else if ((((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) / util.MS_PER_DAY) >= 1) || spanLength > 0) {\n details = startDateDetails + ' (' + startTimeDetail + ')' + ' - ' + endDateDetails + ' (' + endTimeDetail + ')';\n }\n else {\n details = startDateDetails + ' (' + (startTimeDetail + ' - ' + endTimeDetail) + ')';\n }\n return { eventSubject: eventSubject, details: details };\n };\n QuickPopups.prototype.moreEventClick = function (data, endDate, groupIndex) {\n var _this = this;\n this.quickPopupHide(true);\n var moreEventContentEle = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CONTENT_CLASS);\n if (moreEventContentEle) {\n remove(moreEventContentEle);\n }\n var selectedDate = ((data.date).getTime()).toString();\n var target = closest(data.element, '.' + cls.MORE_INDICATOR_CLASS + ',.' + cls.WORK_CELLS_CLASS);\n var day = this.parent.globalize.formatDate(data.date, { format: 'E', calendar: this.parent.getCalendarMode() });\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DAY_CLASS).innerHTML = util.capitalizeFirstWord(day, 'single');\n var dateElement = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS);\n dateElement.innerHTML = this.getDateFormat(data.date, 'd');\n dateElement.setAttribute('data-date', selectedDate);\n dateElement.setAttribute('data-end-date', endDate.getTime().toString());\n var groupOrder;\n if (!isNullOrUndefined(groupIndex)) {\n dateElement.setAttribute('data-group-index', groupIndex);\n groupOrder = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)].groupOrder;\n }\n var moreEventElements = this.createMoreEventList(data.event, groupOrder, groupIndex);\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_POPUP_CLASS).appendChild(moreEventElements);\n removeClass(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_DATE_HEADER_CLASS).childNodes, cls.CURRENTDATE_CLASS);\n if (util.resetTime(data.date).getTime() === util.resetTime(this.parent.getCurrentTime()).getTime()) {\n addClass(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_DATE_HEADER_CLASS).childNodes, cls.CURRENTDATE_CLASS);\n }\n if (!this.parent.isAdaptive) {\n if (this.parent.currentView.indexOf('Timeline') !== -1) {\n var gIndex = target.getAttribute('data-group-index');\n var startDate = new Date(parseInt(target.getAttribute('data-start-date'), 10));\n startDate.setHours(startDate.getHours(), startDate.getMinutes(), 0);\n var tdDate = startDate.getTime().toString();\n if (isNullOrUndefined(gIndex)) {\n this.morePopup.relateTo = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-date=\"' + tdDate + '\"]');\n }\n else {\n this.morePopup.relateTo = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-group-index=\"' + gIndex + '\"][data-date=\"' + tdDate + '\"]');\n if (isNullOrUndefined(this.morePopup.relateTo)) {\n var workCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-group-index=\"' + gIndex + '\"]'));\n for (var i = 0; i < workCells.length; i++) {\n var date = workCells[parseInt(i.toString(), 10)].getAttribute('data-date');\n if (date < tdDate) {\n this.morePopup.relateTo = workCells[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n else {\n this.morePopup.relateTo = closest(target, '.' + cls.WORK_CELLS_CLASS);\n }\n }\n this.parent.renderTemplates(function () {\n var eventProp = {\n type: 'EventContainer', cancel: false,\n element: _this.morePopup.element, data: data\n };\n _this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (!popupArgs.cancel) {\n _this.morePopup.show();\n }\n });\n });\n };\n QuickPopups.prototype.saveClick = function (event) {\n this.applyFormValidation();\n this.dialogEvent = event;\n this.isCrudAction = true;\n this.quickPopupHide();\n };\n QuickPopups.prototype.detailsClick = function (event) {\n var subjectEle = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectEle && subjectEle.value !== '') {\n extend(this.parent.activeCellsData, { subject: subjectEle.value });\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.fieldValidator.destroyToolTip();\n this.quickPopupHide();\n this.parent.eventWindow.openEditor(this.parent.activeCellsData, 'Add');\n };\n QuickPopups.prototype.editClick = function (event) {\n this.dialogEvent = event;\n this.quickPopupHide(true);\n var data = this.parent.activeEventData.event;\n this.parent.currentAction = 'EditSeries';\n if (!isNullOrUndefined(data[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'EditOccurrence';\n this.openRecurrenceAlert();\n }\n else {\n this.parent.eventWindow.openEditor(data, this.parent.currentAction);\n }\n };\n QuickPopups.prototype.deleteClick = function (event) {\n this.dialogEvent = event;\n this.quickPopupHide(true);\n this.parent.currentAction = 'Delete';\n if (this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule]) {\n this.openRecurrenceAlert();\n }\n else {\n this.openDeleteAlert();\n }\n };\n QuickPopups.prototype.updateMoreEventContent = function () {\n if (this.morePopup.element.classList.contains('e-popup-close')) {\n return;\n }\n var moreEventContentEle = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CONTENT_CLASS);\n if (moreEventContentEle) {\n remove(moreEventContentEle);\n }\n var dateElement = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS);\n var startDate = new Date(parseInt(dateElement.getAttribute('data-date'), 10));\n var endDate = new Date(parseInt(dateElement.getAttribute('data-end-date'), 10));\n var groupIndex = dateElement.getAttribute('data-group-index');\n var data;\n var groupOrder;\n if (!isNullOrUndefined(groupIndex)) {\n data = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)];\n groupOrder = data.groupOrder;\n }\n var events = this.parent.eventBase.filterEvents(startDate, endDate, this.parent.eventsProcessed, data);\n var moreElement = this.createMoreEventList(events, groupOrder, groupIndex);\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_POPUP_CLASS).appendChild(moreElement);\n };\n QuickPopups.prototype.closeClick = function (event) {\n this.dialogEvent = event;\n if (this.parent.currentView === 'Year' && this.parent.activeCellsData && this.parent.activeCellsData.element) {\n this.parent.selectCell(this.parent.activeCellsData.element);\n }\n this.quickPopupHide();\n this.morePopup.hide();\n };\n QuickPopups.prototype.dialogButtonClick = function (event) {\n this.dialogEvent = event;\n this.quickDialog.hide();\n var target = event.target;\n var cancelBtn = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n var eventData = this.parent.activeEventData.event;\n if (target.classList.contains(cls.QUICK_DIALOG_OCCURRENCE_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteOccurrence' : 'EditOccurrence';\n switch (this.parent.currentAction) {\n case 'EditOccurrence':\n this.parent.eventWindow.openEditor(eventData, this.parent.currentAction);\n break;\n case 'DeleteOccurrence':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_FOLLOWING_EVENTS_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteFollowingEvents' : 'EditFollowingEvents';\n switch (this.parent.currentAction) {\n case 'EditFollowingEvents':\n this.parent.eventWindow.openEditor(eventData, this.parent.currentAction);\n break;\n case 'DeleteFollowingEvents':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_SERIES_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteSeries' : 'EditSeries';\n switch (this.parent.currentAction) {\n case 'EditSeries':\n this.parent.eventWindow.openEditor(this.parent.eventBase.getParentEvent(eventData, true), this.parent.currentAction);\n break;\n case 'DeleteSeries':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_DELETE_CLASS)) {\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n }\n else if (!cancelBtn.classList.contains(cls.DISABLE_CLASS) && (target.classList.contains(cls.QUICK_DIALOG_ALERT_OK) ||\n (target.classList.contains(cls.QUICK_DIALOG_ALERT_CANCEL) && !cancelBtn.classList.contains(cls.QUICK_DIALOG_CANCEL_CLASS)))) {\n this.parent.uiStateValues.isIgnoreOccurrence = target.classList.contains(cls.QUICK_DIALOG_ALERT_CANCEL);\n this.parent.eventWindow.eventSave(event, this.l10n.getConstant('ok'));\n }\n };\n QuickPopups.prototype.updateTapHoldEventPopup = function (target) {\n var selectedElements = this.parent.eventBase.getSelectedEventElements(target);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n if (selectedElements.length > 0) {\n var eventObj = this.parent.eventBase.getEventByGuid(selectedElements[0].getAttribute('data-guid'));\n var titleContent = (selectedElements.length === 1) ?\n (eventObj[this.parent.eventFields.subject] || this.l10n.getConstant('noTitle')) :\n '(' + selectedElements.length + ')' + ' ' + this.l10n.getConstant('selectedItems');\n this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS).innerHTML = titleContent;\n if (selectedElements.length > 1) {\n addClass([this.quickPopup.element.querySelector('.' + cls.EDIT_ICON_CLASS)], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([this.quickPopup.element.querySelector('.' + cls.EDIT_ICON_CLASS)], cls.HIDDEN_CLASS);\n }\n }\n else {\n this.parent.selectedElements = [];\n this.quickPopupHide();\n }\n };\n QuickPopups.prototype.getTimezone = function (event) {\n var zoneDetails = '';\n zoneDetails += event[this.parent.eventFields.startTimezone] || '';\n zoneDetails += zoneDetails === '' ? '' : ' - ';\n zoneDetails += event[this.parent.eventFields.endTimezone] || '';\n return zoneDetails;\n };\n QuickPopups.prototype.getRecurrenceSummary = function (event) {\n var recurrenceEditor = this.parent.eventWindow.getRecurrenceEditorInstance();\n if (recurrenceEditor) {\n var ruleSummary = recurrenceEditor.getRuleSummary(event[this.parent.eventFields.recurrenceRule]);\n return ruleSummary.charAt(0).toUpperCase() + ruleSummary.slice(1);\n }\n return '';\n };\n QuickPopups.prototype.getDateFormat = function (date, skeletonString) {\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(date, { skeleton: skeletonString, calendar: this.parent.getCalendarMode() }), 'single');\n };\n QuickPopups.prototype.getDataFromTarget = function (target) {\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n return this.parent.activeEventData.event;\n }\n // Deprecated cells data in quick popups\n var eventObj = {\n startTime: this.parent.activeCellsData.startTime,\n endTime: this.parent.activeCellsData.endTime,\n isAllDay: this.parent.activeCellsData.isAllDay,\n groupIndex: this.parent.activeCellsData.groupIndex\n };\n var cellsData = this.parent.activeCellsData;\n this.parent.eventWindow.convertToEventData(cellsData, eventObj);\n return eventObj;\n };\n QuickPopups.prototype.beforeQuickDialogClose = function (e) {\n var _this = this;\n var args = {\n event: e.event || this.dialogEvent,\n type: (isNullOrUndefined(this.parent.activeEventData.event)) ? 'ValidationAlert' :\n !isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])\n ? 'RecurrenceAlert' : 'DeleteAlert', cancel: false, data: this.parent.activeEventData.event,\n element: this.quickDialog.element\n };\n this.parent.trigger(event.popupClose, args, function (popupCloseArgs) {\n if (!popupCloseArgs.cancel) {\n _this.parent.eventBase.focusElement(true);\n }\n });\n };\n QuickPopups.prototype.beforeQuickPopupOpen = function (target, originalEvent) {\n var _this = this;\n this.parent.renderTemplates(function () {\n var isEventPopup = _this.quickPopup.element.querySelector('.' + cls.EVENT_POPUP_CLASS);\n var popupType = _this.parent.isAdaptive ? isEventPopup ? 'ViewEventInfo' : 'EditEventInfo' : 'QuickInfo';\n var eventProp = {\n type: popupType, cancel: false, data: extend({}, _this.getDataFromTarget(target), null, true),\n target: target, element: _this.quickPopup.element\n };\n _this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (popupArgs.cancel) {\n _this.quickPopupHide();\n _this.destroyPopupButtons('quickPopup');\n if (popupArgs.element.classList.contains(cls.POPUP_OPEN)) {\n _this.quickPopupClose();\n }\n util.removeChildren(_this.quickPopup.element);\n _this.isMultipleEventSelect = false;\n }\n else {\n var display = _this.quickPopup.element.style.display;\n _this.quickPopup.element.style.display = 'block';\n if (_this.parent.isAdaptive) {\n _this.quickPopup.element.removeAttribute('style');\n _this.quickPopup.element.style.display = 'block';\n _this.quickPopup.element.style.height = formatUnit((popupType === 'EditEventInfo') ? 65 : window.innerHeight);\n }\n else {\n var isVirtualScroll = _this.parent.virtualScrollModule && _this.parent.virtualScrollModule.isHorizontalScroll\n && !isNullOrUndefined(closest(target, '.' + cls.CONTENT_TABLE_CLASS));\n var conTable = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' table');\n _this.quickPopup.offsetX = isVirtualScroll && !_this.parent.enableRtl ? (util.getTranslateX(conTable) + 10) : 10;\n _this.quickPopup.offsetY = _this.parent.virtualScrollModule && !_this.parent.virtualScrollModule.isHorizontalScroll ?\n _this.quickPopup.offsetY : 0;\n _this.quickPopup.collision = { X: _this.parent.enableRtl ? 'flip' : 'none', Y: 'fit' };\n _this.quickPopup.position = { X: _this.parent.enableRtl ? 'left' : 'right', Y: _this.parent.enableRtl ? 'bottom' : 'top' };\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n var collide = isCollide(_this.quickPopup.element, _this.parent.element);\n if (collide.indexOf(_this.parent.enableRtl ? 'left' : 'right') > -1) {\n _this.quickPopup.offsetX = -target.offsetWidth - 10 - _this.quickPopup.element.offsetWidth;\n if (isVirtualScroll && !_this.parent.enableRtl) {\n _this.quickPopup.offsetX = util.getTranslateX(conTable) + _this.quickPopup.offsetX;\n }\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n var leftCollide = isCollide(_this.quickPopup.element, _this.parent.element);\n if (leftCollide.indexOf('left') > -1) {\n _this.quickPopup.position = { X: 'center', Y: 'center' };\n _this.quickPopup.collision = { X: 'fit', Y: 'fit' };\n _this.quickPopup.offsetX = -(_this.quickPopup.element.offsetWidth / 2);\n _this.quickPopup.dataBind();\n }\n }\n if (_this.parent.virtualScrollModule && !_this.parent.virtualScrollModule.isHorizontalScroll && (collide.indexOf('top') > -1 || collide.indexOf('bottom') > -1)) {\n var translateY = util.getTranslateY(conTable);\n _this.quickPopup.offsetY = translateY;\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n }\n if (_this.quickPopup.position.X === 'center' && _this.quickPopup.position.Y === 'center' && !isNullOrUndefined(originalEvent) &&\n originalEvent.clientX && originalEvent.clientY) {\n var clientX = originalEvent.clientX;\n var clientY = originalEvent.clientY;\n var targetRect = target.getBoundingClientRect();\n var offsetY = originalEvent.offsetY || Math.ceil(clientY - targetRect.y);\n var previousOffset = _this.quickPopup.offsetY;\n var collision = isCollide(_this.quickPopup.element, target);\n var popupRect = _this.quickPopup.element.getBoundingClientRect();\n var targetEle = document.elementFromPoint(clientX, clientY);\n if (collision.indexOf('top') > -1 || collision.indexOf('bottom') > -1 || closest(targetEle, '.' + cls.POPUP_WRAPPER_CLASS)) {\n if (popupRect.top <= clientY &&\n clientY <= popupRect.top + popupRect.height) {\n _this.quickPopup.offsetY = previousOffset - popupRect.height - 10;\n _this.quickPopup.dataBind();\n collision = isCollide(_this.quickPopup.element, _this.parent.element);\n if (collision.indexOf('top') > -1) {\n _this.quickPopup.offsetY = previousOffset + offsetY + 10;\n _this.quickPopup.dataBind();\n }\n }\n else if (isCollide(_this.quickPopup.element, _this.parent.element).indexOf('bottom') > -1) {\n _this.quickPopup.offsetY =\n previousOffset - offsetY - Math.ceil(popupRect.height) - 10;\n _this.quickPopup.dataBind();\n }\n }\n }\n }\n if (isEventPopup) {\n _this.applyEventColor();\n }\n _this.quickPopup.element.style.display = display;\n _this.quickPopup.dataBind();\n _this.quickPopup.show();\n }\n });\n });\n };\n QuickPopups.prototype.applyEventColor = function () {\n var colorField = '';\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n colorField = this.parent.enableRtl ? 'border-right-color' : 'border-left-color';\n }\n else {\n colorField = 'background-color';\n }\n var color = this.parent.activeEventData.element.style[colorField];\n if (color === '') {\n return;\n }\n var colorEle = this.quickPopup.element.querySelector('.' + cls.POPUP_HEADER_CLASS);\n var footerEle = this.quickPopup.element.querySelector('.' + cls.POPUP_FOOTER_CLASS);\n if (footerEle && footerEle.offsetParent) {\n colorEle = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (colorEle) {\n colorEle.style.borderLeftColor = color;\n color = \"rgba(\" + color.match(/\\d+/g).join() + \",0.3)\";\n }\n }\n if (colorEle) {\n colorEle.style.backgroundColor = color;\n }\n };\n QuickPopups.prototype.quickPopupOpen = function () {\n if (this.parent.isAdaptive) {\n this.quickPopup.element.style.top = '0px';\n return;\n }\n if (this.quickPopup.element.querySelector('.' + cls.CELL_POPUP_CLASS)) {\n var subjectElement = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement) {\n subjectElement.focus();\n }\n }\n else {\n var editElement = this.quickPopup.element.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editElement) {\n editElement.focus();\n }\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n editIcon.focus();\n }\n }\n };\n QuickPopups.prototype.quickPopupClose = function () {\n this.parent.eventBase.focusElement();\n this.quickPopup.relateTo = '.' + cls.WORK_CELLS_CLASS;\n this.fieldValidator.destroyToolTip();\n if (this.quickPopup.element.querySelectorAll('.e-formvalidator').length) {\n this.fieldValidator.destroy();\n }\n this.destroyPopupButtons('quickPopup');\n util.removeChildren(this.quickPopup.element);\n };\n QuickPopups.prototype.morePopupOpen = function () {\n if (this.parent.isAdaptive) {\n this.morePopup.element.style.top = '0px';\n this.morePopup.element.style.left = '0px';\n this.morePopup.element.style.height = formatUnit(window.innerHeight);\n return;\n }\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS).focus();\n this.morePopup.refreshPosition();\n };\n QuickPopups.prototype.morePopupClose = function () {\n var moreWrapper = this.parent.element.querySelector('.' + cls.MORE_EVENT_WRAPPER_CLASS);\n if (moreWrapper) {\n remove(moreWrapper);\n }\n };\n QuickPopups.prototype.popupClose = function (event) {\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.quickPopupHide(true);\n };\n QuickPopups.prototype.quickPopupHide = function (hideAnimation) {\n var _this = this;\n if (!this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n return;\n }\n var isCellPopup = this.quickPopup.element.querySelector('.' + cls.CELL_POPUP_CLASS);\n var popupData;\n if (isCellPopup) {\n var formvalidator = this.quickPopup.element.querySelector('.e-formvalidator');\n if (this.isCrudAction && formvalidator &&\n !formvalidator.ej2_instances[0].validate()) {\n return;\n }\n var fields = this.parent.eventFields;\n var saveObj = this.parent.eventWindow.getObjectFromFormData(cls.POPUP_WRAPPER_CLASS);\n this.parent.eventWindow.setDefaultValueToObject(saveObj);\n saveObj[fields.id] = this.parent.eventBase.getEventMaxID();\n saveObj[fields.startTime] = this.parent.activeCellsData.startTime;\n saveObj[fields.endTime] = this.parent.activeCellsData.endTime;\n saveObj[fields.isAllDay] = this.parent.activeCellsData.isAllDay;\n if (this.parent.resourceBase) {\n this.parent.resourceBase.setResourceValues(saveObj);\n }\n popupData = saveObj;\n }\n else {\n popupData = this.parent.activeEventData.event;\n }\n var isEventPopup = this.quickPopup.element.querySelector('.' + cls.EVENT_POPUP_CLASS);\n var args = {\n event: this.dialogEvent,\n type: this.parent.isAdaptive ? isEventPopup ? 'ViewEventInfo' : 'EditEventInfo' : 'QuickInfo',\n cancel: false, data: popupData, element: this.quickPopup.element,\n target: (isCellPopup ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n this.parent.trigger(event.popupClose, args, function (popupCloseArgs) {\n if (!popupCloseArgs.cancel) {\n if (_this.quickPopup.element.classList.contains('e-popup-open')) {\n if (isCellPopup && _this.isCrudAction) {\n _this.parent.currentAction = 'Add';\n _this.parent.crudModule.addEvent(popupCloseArgs.data);\n }\n if (hideAnimation) {\n var animation = _this.quickPopup.hideAnimation;\n _this.quickPopup.hideAnimation = null;\n _this.quickPopup.hide();\n _this.quickPopup.hideAnimation = animation;\n }\n else {\n _this.quickPopup.hide();\n }\n _this.isMultipleEventSelect = false;\n _this.isCrudAction = false;\n }\n }\n });\n };\n QuickPopups.prototype.navigationClick = function (e) {\n var navigateEle = closest(e.target, '.' + cls.NAVIGATE_CLASS);\n if (!isNullOrUndefined(navigateEle)) {\n var date = this.parent.getDateFromElement(e.currentTarget);\n if (!isNullOrUndefined(date)) {\n this.closeClick(e);\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView(this.parent.getNavigateView(), e);\n }\n }\n };\n QuickPopups.prototype.documentClick = function (e) {\n var target = e.event.target;\n var classNames = '.' + cls.POPUP_WRAPPER_CLASS + ',.' + cls.HEADER_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS +\n ',.' + cls.WORK_CELLS_CLASS + ',.' + cls.APPOINTMENT_CLASS + ',.e-popup';\n var popupWrap = this.parent.element.querySelector('.' + cls.POPUP_WRAPPER_CLASS);\n if ((popupWrap && popupWrap.childElementCount > 0 && !closest(target, classNames)) || !closest(target, classNames)) {\n this.quickPopupHide();\n this.parent.removeNewEventElement();\n }\n var tar = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (tar && tar !== target && this.parent.allowInline) {\n this.parent.inlineModule.documentClick();\n }\n if (closest(target, '.' + cls.APPOINTMENT_CLASS + ',.' + cls.HEADER_CELLS_CLASS)) {\n this.parent.removeNewEventElement();\n }\n if (!closest(target, '.' + cls.MORE_POPUP_WRAPPER_CLASS) && (target.classList &&\n !target.classList.contains(cls.MORE_INDICATOR_CLASS))\n && (!closest(target, '.' + cls.POPUP_OPEN)) && !closest(target, '.' + cls.WORK_CELLS_CLASS)) {\n this.morePopup.hide();\n }\n };\n QuickPopups.prototype.onClosePopup = function (event) {\n if (!isNullOrUndefined(event)) {\n this.dialogEvent = event;\n }\n this.quickPopupHide();\n this.parent.eventBase.focusElement();\n };\n QuickPopups.prototype.addEventListener = function () {\n this.parent.on(event.cellClick, this.cellClick, this);\n this.parent.on(event.eventClick, this.eventClick, this);\n this.parent.on(event.documentClick, this.documentClick, this);\n this.parent.on(event.dataReady, this.updateMoreEventContent, this);\n };\n QuickPopups.prototype.removeEventListener = function () {\n this.parent.off(event.cellClick, this.cellClick);\n this.parent.off(event.eventClick, this.eventClick);\n this.parent.off(event.documentClick, this.documentClick);\n this.parent.off(event.dataReady, this.updateMoreEventContent);\n };\n QuickPopups.prototype.destroyPopupButtons = function (popupName) {\n var popup = popupName === 'quickPopup' ? this.quickPopup : this.morePopup;\n var buttonCollections = [].slice.call(popup.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = button.ej2_instances[0];\n if (instance) {\n instance.destroy();\n }\n }\n };\n QuickPopups.prototype.refreshQuickDialog = function () {\n this.destroyQuickDialog();\n this.renderQuickDialog();\n };\n QuickPopups.prototype.refreshQuickPopup = function () {\n this.destroyQuickPopup();\n this.renderQuickPopup();\n };\n QuickPopups.prototype.refreshMorePopup = function () {\n this.destroyMorePopup();\n this.renderMorePopup();\n };\n QuickPopups.prototype.destroyQuickDialog = function () {\n if (this.quickDialog.element) {\n this.quickDialog.destroy();\n remove(this.quickDialog.element);\n this.quickDialog = null;\n }\n };\n QuickPopups.prototype.destroyQuickPopup = function () {\n if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\n this.quickPopup.destroy();\n remove(this.quickPopup.element);\n this.quickPopup = null;\n }\n };\n QuickPopups.prototype.destroyMorePopup = function () {\n if (this.morePopup.element) {\n this.destroyPopupButtons('morePopup');\n this.morePopup.destroy();\n remove(this.morePopup.element);\n this.morePopup = null;\n }\n };\n QuickPopups.prototype.destroy = function () {\n if (this.quickPopup.element.querySelectorAll('.e-formvalidator').length) {\n this.fieldValidator.destroy();\n }\n this.removeEventListener();\n this.destroyQuickPopup();\n this.destroyMorePopup();\n this.destroyQuickDialog();\n this.dialogEvent = null;\n this.parent = null;\n this.l10n = null;\n this.isCrudAction = null;\n this.fieldValidator = null;\n this.isMultipleEventSelect = null;\n };\n return QuickPopups;\n}());\nexport { QuickPopups };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport * as cls from '../base/css-constant';\n/**\n * Appointment window field validation\n */\nvar FieldValidator = /** @class */ (function () {\n function FieldValidator() {\n }\n FieldValidator.prototype.renderFormValidator = function (form, rules, element, locale) {\n var _this = this;\n this.element = element;\n this.formObj = new FormValidator(form, {\n locale: locale,\n customPlacement: function (inputElement, error) {\n _this.errorPlacement(inputElement, error);\n },\n rules: rules,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n focusout: function (args) {\n _this.focusOut(args);\n }\n });\n };\n FieldValidator.prototype.focusOut = function (args) {\n var target = args.relatedTarget;\n if (target && (target.classList.contains('e-dlg-closeicon-btn') || target.classList.contains('e-close')\n || target.classList.contains(cls.ALLDAY_CELLS_CLASS) || target.classList.contains(cls.HEADER_CELLS_CLASS)\n || target.classList.contains(cls.QUICK_POPUP_EVENT_DETAILS_CLASS) || target.classList.contains(cls.WORK_CELLS_CLASS)\n || target.classList.contains(cls.EVENT_WINDOW_CANCEL_BUTTON_CLASS))) {\n this.ignoreError = true;\n }\n else {\n this.ignoreError = false;\n }\n };\n FieldValidator.prototype.validationComplete = function (args) {\n var elem = this.element.querySelector('#' + args.inputName + '_Error');\n if (elem) {\n elem.style.display = (args.status === 'failure') ? '' : 'none';\n }\n };\n FieldValidator.prototype.errorPlacement = function (inputElement, error) {\n var id = error.getAttribute('for');\n var elem = this.element.querySelector('#' + id + '_Error');\n if (!elem && !this.ignoreError) {\n this.createTooltip(inputElement, error, id, '');\n }\n if (!isNullOrUndefined(elem)) {\n elem.querySelector('.e-error').innerHTML = error.innerHTML;\n }\n };\n FieldValidator.prototype.createTooltip = function (element, error, name, display) {\n var dlgContent;\n var client;\n var inputClient = element.getBoundingClientRect();\n if (this.element.classList.contains(cls.POPUP_WRAPPER_CLASS)) {\n dlgContent = this.element;\n client = this.element.getBoundingClientRect();\n }\n else {\n dlgContent = this.element.querySelector('.e-schedule-dialog .e-dlg-content');\n client = dlgContent.getBoundingClientRect();\n }\n var div = createElement('div', {\n className: 'e-tooltip-wrap e-popup ' + cls.ERROR_VALIDATION_CLASS,\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n (inputClient.bottom - client.top + dlgContent.scrollTop + 9) + 'px;left:' +\n (inputClient.left - client.left + dlgContent.scrollLeft + inputClient.width / 2) + 'px;'\n });\n var content = createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow = createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n div.appendChild(content);\n div.appendChild(arrow);\n dlgContent.appendChild(div);\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n };\n FieldValidator.prototype.destroyToolTip = function () {\n if (this.element) {\n var elements = [].slice.call(this.element.querySelectorAll('.' + cls.ERROR_VALIDATION_CLASS));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n }\n if (this.formObj && this.formObj.element) {\n this.formObj.reset();\n }\n };\n FieldValidator.prototype.destroy = function () {\n if (this.formObj && this.formObj.element && !this.formObj.isDestroyed) {\n this.formObj.destroy();\n }\n this.formObj = null;\n this.element = null;\n };\n return FieldValidator;\n}());\nexport { FieldValidator };\n"],"sourceRoot":""}